[ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint256", "name": "totalSupply_", "type": "uint256" }, { "internalType": "address payable", "name": "_treasury", "type": "address" }, { "internalType": "uint256", "name": "_reflectionCooldown", "type": "uint256" }, { "internalType": "uint256", "name": "maxTxLimit_", "type": "uint256" }, { "internalType": "uint256", "name": "maxWalletLimit_", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "addedTreasury", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "autoLpadded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burned", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "previousBuyTax", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newBuyTax", "type": "uint256" } ], "name": "buyTaxStatus", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "Type", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "functionType", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "reflected", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "reflectionClaimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "previousSellTax", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newSellTax", "type": "uint256" } ], "name": "sellTaxStatus", "type": "event" }, { "inputs": [], "name": "addReflection", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "autoLpFlag", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "burnFlag", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyTax", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "claimETHReflection", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dexRouter", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ethReflectionBasis", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "excludeFromReflection", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "excludeFromTax", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "includeInReflection", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "includeInTax", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isExcludedFromTax", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isReflectionExcluded", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "lastReflectionBasis", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "lastReflectionCooldown", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "limitsInEffect", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lpPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "lpPairs", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTxLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxWalletLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "recoverAllERC20Tokens", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "recoverETH", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reduceTaxFirstStep", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reduceTaxSecondStep", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reflectionCooldown", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reflectionFlag", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "removeAllTax", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "removeLimits", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sellTax", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_buyTax", "type": "uint256" } ], "name": "setBuyTax", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "LpAddress", "type": "address" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "setLpPair", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setMaxTxLimit", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setMaxWalletLimit", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "unixTime", "type": "uint256" } ], "name": "setReflectionCooldown", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_sellTax", "type": "uint256" } ], "name": "setSellTax", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "account", "type": "address" } ], "name": "setTreasuryAddress", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stopAutoLp", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stopBurn", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stopReflection", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stopTreasury", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "swapReflection", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "swapTreasury", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapableRefection", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapableTreasury", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAdded", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalBurned", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "totalClaimedReflection", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalLpAdded", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalReflected", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalTreasury", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tradingActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "treasury", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "treasuryFlag", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "trunOnTrading", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "unclaimedReflection", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unstopAutoLp", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unstopBurn", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unstopReflection", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unstopTreasury", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b5060405162004c0f38038062004c0f8339810160408190526200003491620006ee565b6200003f33620004ab565b60016200004d888262000824565b5060026200005c878262000824565b506003805460ff1916601290811790915562000087906200007f90600a62000a03565b8690620004fb565b6004819055620000c99060176000620000a86000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020549062000512565b60176000620000e06000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160002093909355600780549388166001600160a01b0319948516179055600a60095560146008556006859055600584905560168690556010805460ff60201b191664010000000017905560138054909316737a250d5630b4cf539739df2c5dacb4c659f2488d908117909355805163c45a015560e01b8152905163c45a0155926004838101939192918290030181865afa1580156200019e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c4919062000a14565b6001600160a01b031663c9c6539630601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024d919062000a14565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200029b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c1919062000a14565b601480546001600160a01b0319166001600160a01b039283169081179091556000908152601e60205260408120805460ff19166001179055546200031591166013546001600160a01b031660001962000520565b601354620003319030906001600160a01b031660001962000520565b6001601f60006200034a6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152601f909352818320805485166001908117909155601454821684528284208054861682179055600754909116835291208054909216179055620003c66000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516200040e91815260200190565b60405180910390a36013546001600160a01b0316620004356000546001600160a01b031690565b6001600160a01b031660008051602062004bef8339815191526000196040516200046191815260200190565b60405180910390a360135460405160001981526001600160a01b0390911690309060008051602062004bef8339815191529060200160405180910390a35050505050505062000a6b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600062000509828462000a3b565b90505b92915050565b600062000509828462000a55565b6001600160a01b038316620005725760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620005c05760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000569565b6001600160a01b03838116600081815260186020908152604080832094871680845294825291829020859055905184815260008051602062004bef833981519152910160405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200063857600080fd5b81516001600160401b038082111562000655576200065562000610565b604051601f8301601f19908116603f0116810190828211818310171562000680576200068062000610565b816040528381526020925086838588010111156200069d57600080fd5b600091505b83821015620006c15785820183015181830184015290820190620006a2565b600093810190920192909252949350505050565b6001600160a01b0381168114620006eb57600080fd5b50565b600080600080600080600060e0888a0312156200070a57600080fd5b87516001600160401b03808211156200072257600080fd5b620007308b838c0162000626565b985060208a01519150808211156200074757600080fd5b50620007568a828b0162000626565b9650506040880151945060608801516200077081620006d5565b809450506080880151925060a0880151915060c0880151905092959891949750929550565b600181811c90821680620007aa57607f821691505b602082108103620007cb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200081f57600081815260208120601f850160051c81016020861015620007fa5750805b601f850160051c820191505b818110156200081b5782815560010162000806565b5050505b505050565b81516001600160401b0381111562000840576200084062000610565b620008588162000851845462000795565b84620007d1565b602080601f831160018114620008905760008415620008775750858301515b600019600386901b1c1916600185901b1785556200081b565b600085815260208120601f198616915b82811015620008c157888601518255948401946001909101908401620008a0565b5085821015620008e05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620009475781600019048211156200092b576200092b620008f0565b808516156200093957918102915b93841c93908002906200090b565b509250929050565b60008262000960575060016200050c565b816200096f575060006200050c565b81600181146200098857600281146200099357620009b3565b60019150506200050c565b60ff841115620009a757620009a7620008f0565b50506001821b6200050c565b5060208310610133831016604e8410600b8410161715620009d8575081810a6200050c565b620009e4838362000906565b8060001904821115620009fb57620009fb620008f0565b029392505050565b60006200050960ff8416836200094f565b60006020828403121562000a2757600080fd5b815162000a3481620006d5565b9392505050565b80820281158282048414176200050c576200050c620008f0565b808201808211156200050c576200050c620008f0565b6141748062000a7b6000396000f3fe60806040526004361061041f5760003560e01c8063715018a61161021e578063b35012e311610123578063dae1820d116100ab578063ddd043bc1161007a578063ddd043bc14610c32578063e17c4c7414610c47578063f2fde38b14610c67578063f3131da714610c87578063f9d50bf514610c9c57600080fd5b8063dae1820d14610b95578063dc1052e214610bab578063dc651e2d14610bcb578063dd62ed3e14610bec57600080fd5b8063bbc0c742116100f2578063bbc0c74214610b01578063cb4ca63114610b1b578063cc1776d314610b54578063d8485d5514610b6a578063d89135cd14610b7f57600080fd5b8063b35012e314610a97578063b4fe8f6a14610ab7578063b747b12714610acc578063ba53b52214610ae157600080fd5b80638da5cb5b116101a657806395d89b411161017557806395d89b4114610a2257806398c8537d14610a37578063a5332f2d14610a4c578063a9059cbb14610a62578063b29288b914610a8257600080fd5b80638da5cb5b146109895780638f3d309f146109a75780639045be58146109bc5780639579d514146109f557600080fd5b806380c581d1116101ed57806380c581d1146108f957806386285bb414610919578063897534a9146109335780638cd09d50146109495780638ce311c71461096957600080fd5b8063715018a614610897578063728d41c9146108ae578063751039fc146108ce5780638036d590146108e357600080fd5b80634a62bb651161032457806361d027b3116102ac5780636605bfda1161027b5780636605bfda146107f557806366a88d9614610815578063688d12ed1461082b5780636ebec2671461084157806370a082311461086157600080fd5b806361d027b31461078a57806361db2446146107aa57806363748679146107c057806364f5a5bb146107d557600080fd5b80634f7041a5116102f35780634f7041a5146106f2578063588d5189146107085780635facf12e1461073557806360d1259e1461075557806361b79a7e1461077557600080fd5b80634a62bb651461067b5780634cac88f41461069d5780634cb36a9b146106ca5780634e6be544146106ea57600080fd5b806325fd4f5e116103a75780633732e214116103765780633732e214146105d55780633e8c4873146105eb57806342966c681461060b57806343cc8c2a1461062b578063452ed4f11461065b57600080fd5b806325fd4f5e1461056957806327334a081461057e578063313ce5671461059e57806335acaf40146105c057600080fd5b806309b98866116103ee57806309b98866146104da578063134dfcd8146104fe578063136a6be11461051e57806318160ddd1461053457806323b872dd1461054957600080fd5b806305f82a451461042b57806306fdde03146104605780630758d92414610482578063095ea7b3146104ba57600080fd5b3661042657005b600080fd5b34801561043757600080fd5b5061044b610446366004613c53565b610cbb565b60405190151581526020015b60405180910390f35b34801561046c57600080fd5b50610475610d6e565b6040516104579190613c70565b34801561048e57600080fd5b506013546104a2906001600160a01b031681565b6040516001600160a01b039091168152602001610457565b3480156104c657600080fd5b5061044b6104d5366004613cbe565b610e00565b3480156104e657600080fd5b506104f060165481565b604051908152602001610457565b34801561050a57600080fd5b5061044b610519366004613c53565b610e17565b34801561052a57600080fd5b506104f060125481565b34801561054057600080fd5b506004546104f0565b34801561055557600080fd5b5061044b610564366004613cea565b610e79565b34801561057557600080fd5b5061044b61109e565b34801561058a57600080fd5b5061044b610599366004613c53565b611170565b3480156105aa57600080fd5b5060035460405160ff9091168152602001610457565b3480156105cc57600080fd5b5061044b611227565b3480156105e157600080fd5b506104f0600d5481565b3480156105f757600080fd5b5061044b610606366004613d2b565b61129f565b34801561061757600080fd5b5061044b610626366004613d2b565b6113af565b34801561063757600080fd5b5061044b610646366004613c53565b601e6020526000908152604090205460ff1681565b34801561066757600080fd5b506014546104a2906001600160a01b031681565b34801561068757600080fd5b5060105461044b90640100000000900460ff1681565b3480156106a957600080fd5b506104f06106b8366004613c53565b601b6020526000908152604090205481565b3480156106d657600080fd5b5061044b6106e5366004613d2b565b6114ba565b61044b611535565b3480156106fe57600080fd5b506104f060085481565b34801561071457600080fd5b506104f0610723366004613c53565b601a6020526000908152604090205481565b34801561074157600080fd5b506104f0610750366004613c53565b61154e565b34801561076157600080fd5b5061044b610770366004613c53565b6115fe565b34801561078157600080fd5b5061044b6116a6565b34801561079657600080fd5b506007546104a2906001600160a01b031681565b3480156107b657600080fd5b506104f060155481565b3480156107cc57600080fd5b5061044b611717565b3480156107e157600080fd5b5061044b6107f0366004613d2b565b6117e8565b34801561080157600080fd5b5061044b610810366004613c53565b6117fb565b34801561082157600080fd5b506104f060055481565b34801561083757600080fd5b506104f0600c5481565b34801561084d57600080fd5b5061044b61085c366004613d2b565b611893565b34801561086d57600080fd5b506104f061087c366004613c53565b6001600160a01b031660009081526017602052604090205490565b3480156108a357600080fd5b506108ac6118ff565b005b3480156108ba57600080fd5b5061044b6108c9366004613d2b565b611913565b3480156108da57600080fd5b5061044b611926565b3480156108ef57600080fd5b506104f060065481565b34801561090557600080fd5b5061044b610914366004613d52565b611944565b34801561092557600080fd5b5060105461044b9060ff1681565b34801561093f57600080fd5b506104f0600e5481565b34801561095557600080fd5b5061044b610964366004613d2b565b611993565b34801561097557600080fd5b5061044b610984366004613cea565b611a4b565b34801561099557600080fd5b506000546001600160a01b03166104a2565b3480156109b357600080fd5b5061044b611ad3565b3480156109c857600080fd5b5061044b6109d7366004613c53565b6001600160a01b03166000908152601d602052604090205460ff1690565b348015610a0157600080fd5b506104f0610a10366004613c53565b60196020526000908152604090205481565b348015610a2e57600080fd5b50610475611b63565b348015610a4357600080fd5b5061044b611b72565b348015610a5857600080fd5b506104f060115481565b348015610a6e57600080fd5b5061044b610a7d366004613cbe565b611bf5565b348015610a8e57600080fd5b5061044b611d0d565b348015610aa357600080fd5b5060105461044b9062010000900460ff1681565b348015610ac357600080fd5b5061044b611de2565b348015610ad857600080fd5b5061044b611e87565b348015610aed57600080fd5b5061044b610afc366004613d2b565b611f5e565b348015610b0d57600080fd5b50600a5461044b9060ff1681565b348015610b2757600080fd5b5061044b610b36366004613c53565b6001600160a01b03166000908152601f602052604090205460ff1690565b348015610b6057600080fd5b506104f060095481565b348015610b7657600080fd5b5061044b612058565b348015610b8b57600080fd5b506104f0600b5481565b348015610ba157600080fd5b506104f0600f5481565b348015610bb757600080fd5b5061044b610bc6366004613d2b565b6120d3565b348015610bd757600080fd5b5060105461044b906301000000900460ff1681565b348015610bf857600080fd5b506104f0610c07366004613d8b565b6001600160a01b03918216600090815260186020908152604080832093909416825291909152205490565b348015610c3e57600080fd5b5061044b61216b565b348015610c5357600080fd5b5061044b610c62366004613c53565b6121e6565b348015610c7357600080fd5b506108ac610c82366004613c53565b612289565b348015610c9357600080fd5b5061044b612302565b348015610ca857600080fd5b5060105461044b90610100900460ff1681565b6000610cc5612347565b6001600160a01b0382166000908152601d602052604090205460ff16610d495760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204163636f756e74206973206e6f74206578636c75646564206660448201526d3937b6903932b33632b1ba34b7b760911b60648201526084015b60405180910390fd5b506001600160a01b03166000908152601d60205260409020805460ff19169055600190565b606060018054610d7d90613db9565b80601f0160208091040260200160405190810160405280929190818152602001828054610da990613db9565b8015610df65780601f10610dcb57610100808354040283529160200191610df6565b820191906000526020600020905b815481529060010190602001808311610dd957829003601f168201915b5050505050905090565b6000610e0d3384846123a1565b5060015b92915050565b6007546000906001600160a01b03163314610e445760405162461bcd60e51b8152600401610d4090613df3565b6040516001600160a01b038316904780156108fc02916000818181858888f19350505050158015610e0d573d6000803e3d6000fd5b60006001600160a01b038416610ea15760405162461bcd60e51b8152600401610d4090613e1b565b6001600160a01b038316610ec75760405162461bcd60e51b8152600401610d4090613e1b565b61deac196001600160a01b03841601610f185760405162461bcd60e51b815260206004820152601360248201527245524332303a2044656164204164647265737360681b6044820152606401610d40565b6001600160a01b0384166000908152601860209081526040808320338452909152902054821115610f8b5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20496e73756666696369656e7420616c6c6f77616e63652e00006044820152606401610d40565b6001600160a01b03841660009081526017602052604090205482111561100a5760405162461bcd60e51b815260206004820152602e60248201527f45524332303a20416d6f756e7420657863656564732073656e6465722773206160448201526d63636f756e742062616c616e636560901b6064820152608401610d40565b6001600160a01b038416600090815260186020908152604080832033845290915290205460001914611089576001600160a01b0384166000908152601860209081526040808320338452909152902054611064908361244f565b6001600160a01b03851660009081526018602090815260408083203384529091529020555b61109484848461245b565b5060019392505050565b60006110a8612347565b601054610100900460ff16156111005760405162461bcd60e51b815260206004820152601a60248201527f4175746f204c5020697320616c72656164792073746f707065640000000000006044820152606401610d40565b60105460ff1615156001148015611124575060105462010000900460ff1615156001145b801561113e57506010546301000000900460ff1615156001145b1561115b5760405162461bcd60e51b8152600401610d4090613e48565b6010805461ff00191661010017905550600190565b600061117a612347565b6001600160a01b0382166000908152601d602052604090205460ff16156111fe5760405162461bcd60e51b815260206004820152603260248201527f45524332303a204163636f756e7420697320616c7265616479206578636c756460448201527132b210333937b6903932b33632b1ba34b7b760711b6064820152608401610d40565b506001600160a01b03166000908152601d60205260409020805460ff1916600190811790915590565b6000611231612347565b60105460ff61010090910416151560011461128e5760405162461bcd60e51b815260206004820152601e60248201527f4175746f204c5020697320616c7265616479206e6f742073746f7070656400006044820152606401610d40565b506010805461ff0019169055600190565b6007546000906001600160a01b031633146112cc5760405162461bcd60e51b8152600401610d4090613df3565b60006011541161131e5760405162461bcd60e51b815260206004820152601b60248201527f546865726520617265206e6f20746f6b656e7320746f207377617000000000006044820152606401610d40565b81601154101561136a5760405162461bcd60e51b81526020600482015260176024820152762637bb9039bbb0b830b13632903932b33632b1ba34b7b760491b6044820152606401610d40565b476113753084612766565b826011546113839190613eb3565b6011556000611392478361244f565b6015549091506113a290826128be565b6015555060019392505050565b336000818152601760205260408120549091908311156114245760405162461bcd60e51b815260206004820152602a60248201527f45524332303a204275726e20416d6f756e742065786365656473206163636f756044820152696e742062616c616e636560b01b6064820152608401610d40565b600083116114745760405162461bcd60e51b815260206004820181905260248201527f45524332303a20456e74657220736f6d6520616d6f756e7420746f206275726e6044820152606401610d40565b6001600160a01b038116600090815260176020526040902054611497908461244f565b6001600160a01b038216600090815260176020526040902055610e0d81846128ca565b60006114c4612347565b816016540361152c5760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204e65772054696d657374616d702063616e277420626520746860448201526d652070726576696f7573206f6e6560901b6064820152608401610d40565b50601655600190565b60155460009061154590346128be565b60155550600190565b6014546000906001600160a01b038381169116148061157a57506013546001600160a01b038381169116145b1561158757506000919050565b6001600160a01b0382166000908152601960205260408120546015546115ad9190613eb3565b6001600160a01b0384166000908152601c6020908152604080832054600454601790935292205492935090916115e39084613ec6565b6115ed9190613ef3565b6115f79190613f07565b9392505050565b6000611608612347565b6001600160a01b0382166000908152601f602052604090205460ff161561167d5760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c7265616479206578636c756465642066726f6d604482015263040e8c2f60e31b6064820152608401610d40565b506001600160a01b03166000908152601f60205260409020805460ff1916600190811790915590565b60006116b0612347565b600a5460ff16156117035760405162461bcd60e51b815260206004820181905260248201527f45524332303a2054726164696e6720697320616c7265616479206163746976656044820152606401610d40565b50600a805460ff1916600190811790915590565b6000611721612347565b60105460ff16156117745760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e204275726e20697320616c72656164792073746f707065640000006044820152606401610d40565b60105460ff610100909104161515600114801561179e575060105462010000900460ff1615156001145b80156117b857506010546301000000900460ff1615156001145b156117d55760405162461bcd60e51b8152600401610d4090613e48565b6010805460ff1916600117905550600190565b60006117f2612347565b50600655600190565b6000611805612347565b6007546001600160a01b0380841691160361186e5760405162461bcd60e51b815260206004820152602360248201527f4163636f756e7420697320616c7265616479207472656173757279206164647260448201526265737360e81b6064820152608401610d40565b50600780546001600160a01b0383166001600160a01b03199091161790556001919050565b60003363ffffffff813b16156118f55760405162461bcd60e51b815260206004820152602160248201527f45524332303a2053656e6465722063616e2774206265206120636f6e747261636044820152601d60fa1b6064820152608401610d40565b610e0d8184612960565b611907612347565b6119116000612bdf565b565b600061191d612347565b50600555600190565b6000611930612347565b506010805464ff0000000019169055600190565b600061194e612347565b506001600160a01b0382166000908152601e60209081526040808320805485151560ff199182168117909255601f909352922080549091169091179055600192915050565b600061199d612347565b6005821115611a005760405162461bcd60e51b815260206004820152602960248201527f45524332303a205468652073656c6c207461782063616e2774206265206d6f7260448201526865207468656e20352560b81b6064820152608401610d40565b600980549083905560408051828152602081018590527f5e2deb0291797955e0066c5cebbc900e815e1099432b8f07462265a4f1c61b5191015b60405180910390a150600192915050565b6000611a55612347565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af1158015611aa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac89190613f1a565b506001949350505050565b6000611add612347565b6008805460098054600793849055600f9091556040805183815260208101949094529192909160008051602061411f83398151915291015b60405180910390a16009546040805183815260208101929092527f5e2deb0291797955e0066c5cebbc900e815e1099432b8f07462265a4f1c61b51910160405180910390a160019250505090565b606060028054610d7d90613db9565b6000611b7c612347565b60105462010000900460ff161515600114611be35760405162461bcd60e51b815260206004820152602160248201527f5265666c656374696f6e20697320616c7265616479206e6f742073746f7070656044820152601960fa1b6064820152608401610d40565b506010805462ff000019169055600190565b60003380611c155760405162461bcd60e51b8152600401610d4090613e1b565b6001600160a01b038416611c3b5760405162461bcd60e51b8152600401610d4090613e1b565b61deac196001600160a01b03851601611c8c5760405162461bcd60e51b815260206004820152601360248201527245524332303a2044656164204164647265737360681b6044820152606401610d40565b6001600160a01b038116600090815260176020526040902054831115611d025760405162461bcd60e51b815260206004820152602560248201527f45524332303a20416d6f756e742065786365656473206163636f756e742062616044820152646c616e636560d81b6064820152608401610d40565b61109481858561245b565b6000611d17612347565b60105462010000900460ff1615611d705760405162461bcd60e51b815260206004820152601d60248201527f5265666c656374696f6e20697320616c72656164792073746f707065640000006044820152606401610d40565b60105460ff1615156001148015611d94575060105460ff6101009091041615156001145b8015611dae57506010546301000000900460ff1615156001145b15611dcb5760405162461bcd60e51b8152600401610d4090613e48565b6010805462ff000019166201000017905550600190565b6000611dec612347565b6000600854118015611e0057506000600954115b611e4c5760405162461bcd60e51b815260206004820181905260248201527f45524332303a2054617865732061726520616c72656164792072656d6f7665646044820152606401610d40565b6008805460098054600093849055908390556040805183815260208101949094529192909160008051602061411f8339815191529101611b15565b6000611e91612347565b6010546301000000900460ff1615611eeb5760405162461bcd60e51b815260206004820152601b60248201527f547265617375727920697320616c72656164792073746f7070656400000000006044820152606401610d40565b60105460ff1615156001148015611f0f575060105460ff6101009091041615156001145b8015611f28575060105462010000900460ff1615156001145b15611f455760405162461bcd60e51b8152600401610d4090613e48565b6010805463ff0000001916630100000017905550600190565b6007546000906001600160a01b03163314611f8b5760405162461bcd60e51b8152600401610d4090613df3565b600060125411611fdd5760405162461bcd60e51b815260206004820152601b60248201527f546865726520617265206e6f20746f6b656e7320746f207377617000000000006044820152606401610d40565b8160125410156120295760405162461bcd60e51b81526020600482015260176024820152762637bb9039bbb0b830b13632903932b33632b1ba34b7b760491b6044820152606401610d40565b60075461203f906001600160a01b031683612766565b8160125461204d9190613eb3565b601255506001919050565b6000612062612347565b60105460ff1615156001146120c35760405162461bcd60e51b815260206004820152602160248201527f546f6b656e204275726e20697320616c7265616479206e6f742073746f7070656044820152601960fa1b6064820152608401610d40565b506010805460ff19169055600190565b60006120dd612347565b600582111561213f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a2054686520627579207461782063616e2774206265206d6f7265604482015267207468656e20352560c01b6064820152608401610d40565b6008805490839055604080518281526020810185905260008051602061411f8339815191529101611a3a565b6000612175612347565b6010546301000000900460ff1615156001146121d35760405162461bcd60e51b815260206004820152601b60248201527f547265617375727920697320616c72656164792073746f7070656400000000006044820152606401610d40565b506010805463ff00000019169055600190565b60006121f0612347565b6001600160a01b0382166000908152601f602052604090205460ff166122645760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c726561647920696e636c756465642066726f6d604482015263040e8c2f60e31b6064820152608401610d40565b506001600160a01b03166000908152601f60205260409020805460ff19169055600190565b612291612347565b6001600160a01b0381166122f65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d40565b6122ff81612bdf565b50565b600061230c612347565b6008805460098054600493849055908390556040805183815260208101949094529192909160008051602061411f8339815191529101611b15565b6000546001600160a01b031633146119115760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d40565b6001600160a01b0383166123c75760405162461bcd60e51b8152600401610d4090613e1b565b6001600160a01b0382166123ed5760405162461bcd60e51b8152600401610d4090613e1b565b6001600160a01b0383811660008181526018602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006115f78284613eb3565b6000546001600160a01b03848116911614801561249057506001600160a01b0382166000908152601e602052604090205460ff165b156124a5576124a0838383612c2f565b505050565b6001600160a01b0383166000908152601e602052604090205460ff16806124e457506001600160a01b0382166000908152601e602052604090205460ff165b1561270757600a5460ff1615156001146125405760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610d40565b6001600160a01b0383166000908152601f602052604090205460ff16801561258157506001600160a01b0382166000908152601f602052604090205460ff16155b156125b0576125908282612db0565b80156125a057506125a081612e37565b156124a0576124a0838383612ea7565b6001600160a01b0383166000908152601f602052604090205460ff161580156125f157506001600160a01b0382166000908152601f602052604090205460ff165b1561260f576125ff81612e37565b156124a0576124a0838383613195565b6001600160a01b0383166000908152601f602052604090205460ff16801561264f57506001600160a01b0382166000908152601f602052604090205460ff165b156124a0576000546001600160a01b038481169116148061267d57506000546001600160a01b038381169116145b8061269057506001600160a01b03831630145b806126a357506001600160a01b03821630145b156126b3576124a0838383612c2f565b6001600160a01b0382166000908152601e602052604090205460ff16156126ed576126dd81612e37565b156124a0576124a0838383612c2f565b6126f78282612db0565b80156126dd57506126dd81612e37565b6000546001600160a01b038481169116148061273057506000546001600160a01b038381169116145b8061274357506001600160a01b03831630145b8061275657506001600160a01b03821630145b156126ed576124a0838383612c2f565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061279b5761279b613f4d565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156127f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128189190613f63565b8160018151811061282b5761282b613f4d565b6001600160a01b0392831660209182029290920101526013546040516318cbafe560e01b81529116906318cbafe590612871908590600090869089904290600401613f80565b6000604051808303816000875af1158015612890573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128b89190810190613ff1565b50505050565b60006115f78284613f07565b6004546128d7908261244f565b600455600b546128e790826128be565b600b556040518181526000906001600160a01b038416906000805160206140ff8339815191529060200160405180910390a3816001600160a01b03167f8b1897d4e7a3b42570088bb1182eb6518c96a754d44bc9edd4669568bfa983268260405161295491815260200190565b60405180910390a25050565b600061296b8361154e565b905061298f836001600160a01b03166000908152601d602052604090205460ff1690565b156129f35760405162461bcd60e51b815260206004820152602e60248201527f45524332303a2041646472657373206973206578636c7564656420746f20636c60448201526d30b4b6903932b33632b1ba34b7b760911b6064820152608401610d40565b6129fd83836133ce565b156124a05760008111612a645760405162461bcd60e51b815260206004820152602960248201527f45524332303a20436c61696d20616d6f756e742073686f756c64206265206d6f60448201526807265207468656e20360bc1b6064820152608401610d40565b6016546001600160a01b0384166000908152601b60205260409020544291612a8b91613f07565b1115612aff5760405162461bcd60e51b815260206004820152603b60248201527f45524332303a205265666c656374696f6e20636f6f6c20646f776e206973206960448201527f6d706c656d656e7465642c2074727920616761696e206c6174657200000000006064820152608401610d40565b6015546001600160a01b038416600081815260196020908152604080832094909455601b8152838220429055601c90528281208190559151909183156108fc02918491818181858888f19350505050158015612b5f573d6000803e3d6000fd5b506001600160a01b0383166000908152601a6020526040902054612b8390826128be565b6001600160a01b0384166000818152601a6020526040908190209290925590517faba62311dcf381aba06c0e76b1bb8e427e7c715edb8c84fc169cc1d1f51ac84e90612bd29084815260200190565b60405180910390a2505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b0383811691161480612c5357506001600160a01b03821630145b15612cc8576001600160a01b038316600090815260176020526040902054612c7b908261244f565b6001600160a01b038085166000908152601760205260408082209390935590841681522054612caa90826128be565b6001600160a01b038316600090815260176020526040902055612d7d565b612cf3612cd483613579565b6001600160a01b0384166000908152601c6020526040902054906128be565b6001600160a01b038084166000908152601c60209081526040808320949094556015546019825284832055918616815260179091522054612d34908261244f565b6001600160a01b038085166000908152601760205260408082209390935590841681522054612d6390826128be565b6001600160a01b0383166000908152601760205260409020555b816001600160a01b0316836001600160a01b03166000805160206140ff8339815191528360405161244291815260200190565b601054600090640100000000900460ff1615610e0d57612def82612de9856001600160a01b031660009081526017602052604090205490565b906128be565b6005541015610e0d5760405162461bcd60e51b815260206004820152601460248201527357616c6c6574206c696d6974206578636565647360601b6044820152606401610d40565b601054600090640100000000900460ff1615612e9f57600654821115612e9f5760405162461bcd60e51b815260206004820152601960248201527f5472616e73616374696f6e206c696d69742065786365656473000000000000006044820152606401610d40565b506001919050565b6000612eb1613610565b90506000612ed56064612ecf60085486613b0c90919063ffffffff16565b90613b18565b90506000612ee3848361244f565b9050612f10612ef186613579565b6001600160a01b0387166000908152601c6020526040902054906128be565b6001600160a01b038087166000908152601c60209081526040808320949094556015546019825284832055918916815260179091522054612f51908561244f565b6001600160a01b038088166000908152601760205260408082209390935590871681522054612f8090826128be565b6001600160a01b038616600090815260176020526040808220929092553081522054612fac90836128be565b306000908152601760205260409020556001839003612ffe5730600090815260176020526040902054612fdf908361244f565b30600090815260176020526040902055612ff985836128ca565b61310e565b8260020361303a5730600090815260176020526040902054613020908361244f565b30600090815260176020526040902055612ff98583613b24565b826003036130a65760115461304f90836128be565b601155600d5461305f90836128be565b600d556040518281526001600160a01b038616907fb7489ef47c48c720c40f3a3d8ee43af2461787f8211836228289add459fd887c906020015b60405180910390a261310e565b8260040361310e576012546130bb90836128be565b601255600e546130cb90836128be565b600e556040518281526001600160a01b038616907f1929a4bace25a65ec09f6599a42b7e272b7b015dbf1ac423102375dc81d74e15906020015b60405180910390a25b60408051848152602081018490526001600160a01b038816917f43430960b1421ddf891d3754c233acfb8948fc4b9912cbd819ca4f09701fbf58910160405180910390a2846001600160a01b0316866001600160a01b03166000805160206140ff8339815191528660405161318591815260200190565b60405180910390a3505050505050565b600061319f613610565b905060006131bd6064612ecf60095486613b0c90919063ffffffff16565b905060006131cb848361244f565b6001600160a01b0387166000908152601760205260409020549091506131f1908561244f565b6001600160a01b03808816600090815260176020526040808220939093559087168152205461322090826128be565b6001600160a01b03861660009081526017602052604080822092909255308152205461324c90836128be565b30600090815260176020526040808220929092556001600160a01b0388168152908120549003613290576001600160a01b0385166000908152601c60205260408120555b826001036132cc57306000908152601760205260409020546132b2908361244f565b30600090815260176020526040902055612ff986836128ca565b8260020361330857306000908152601760205260409020546132ee908361244f565b30600090815260176020526040902055612ff98683613bff565b8260030361336b5760115461331d90836128be565b601155600d5461332d90836128be565b600d556040518281526001600160a01b038716907fb7489ef47c48c720c40f3a3d8ee43af2461787f8211836228289add459fd887c90602001613099565b8260040361310e5760125461338090836128be565b601255600e5461339090836128be565b600e556040518281526001600160a01b038716907f1929a4bace25a65ec09f6599a42b7e272b7b015dbf1ac423102375dc81d74e1590602001613105565b6001600160a01b0382166000908152601f6020526040812054819060ff166134dd5760006133fb8561154e565b9050600081116134585760405162461bcd60e51b815260206004820152602260248201527f436c61696d20616d6f756e742073686f756c64206265206d6f7265207468656e604482015261020360f41b6064820152608401610d40565b6001600160a01b0385166000908152601d602052604090205460ff16156134d15760405162461bcd60e51b815260206004820152602760248201527f41646472657373206973206578636c7564656420746f20636c61696d207265666044820152663632b1ba34b7b760c91b6064820152608401610d40565b5060019150610e119050565b6001600160a01b0384166000908152601760205260408120546010805463ff0000ff19166301000001179055906135138661154e565b6010805462ff000019166201000017905590508415613554576135368583613f07565b6001600160a01b03871660009081526017602052604090205561355a565b600f8290555b8015613569576001925061356e565b600092505b829350505050610e11565b6014546000906001600160a01b03838116911614806135a557506013546001600160a01b038381169116145b156135b257506000919050565b6001600160a01b0382166000908152601960205260408120546015546135d89190613eb3565b90506004546135fc846001600160a01b031660009081526017602052604090205490565b6136069083613ec6565b6115f79190613ef3565b6000806000600242444532433a604051602001613632969594939291906140af565b6040516020818303038152906040528051906020012060001c61365591906140ea565b90506000600342444532433a604051602001613676969594939291906140af565b6040516020818303038152906040528051906020012060001c61369991906140ea565b60105490915060ff16151560011480156136c0575060105460ff6101009091041615156001145b80156136d9575060105462010000900460ff1615156001145b156136e75760049250613b04565b60105460ff161515600114801561370b575060105460ff6101009091041615156001145b801561372557506010546301000000900460ff1615156001145b156137335760039250613b04565b60105460ff1615156001148015613757575060105462010000900460ff1615156001145b801561377157506010546301000000900460ff1615156001145b1561377f5760029250613b04565b60105460ff61010090910416151560011480156137a9575060105462010000900460ff1615156001145b80156137c357506010546301000000900460ff1615156001145b156137d15760019250613b04565b60105460ff16151560011480156137f5575060105460ff6101009091041615156001145b1561381d578160000361380b5760039250613b04565b8160010361381857600492505b613b04565b60105460ff1615156001148015613841575060105462010000900460ff1615156001145b15613857578160000361380b5760029250613b04565b60105460ff161515600114801561387c57506010546301000000900460ff1615156001145b156138a357816000036138925760029250613b04565b816001036138185760039250613b04565b60105460ff61010090910416151560011480156138cd575060105462010000900460ff1615156001145b156138e3578160000361380b5760019250613b04565b60105460ff610100909104161515600114801561390e57506010546301000000900460ff1615156001145b1561392457816000036138925760019250613b04565b60105462010000900460ff161515600114801561394f57506010546301000000900460ff1615156001145b1561397657816000036139655760019250613b04565b816001036138185760029250613b04565b60105460ff1615156001036139d757600342444532433a6040516020016139a2969594939291906140af565b6040516020818303038152906040528051906020012060001c6139c591906140ea565b6139d0906002613f07565b9250613b04565b601054610100900460ff161515600103613a1e57806000036139fc5760019250613b04565b80600103613a0d5760039250613b04565b806002036138185760049250613b04565b60105462010000900460ff161515600103613a555780600003613a445760019250613b04565b80600103613a0d5760029250613b04565b6010546301000000900460ff161515600103613ab657600342444532433a604051602001613a88969594939291906140af565b6040516020818303038152906040528051906020012060001c613aab91906140ea565b6139d0906001613f07565b600442444532433a604051602001613ad3969594939291906140af565b6040516020818303038152906040528051906020012060001c613af691906140ea565b613b01906001613f07565b92505b509092915050565b60006115f78284613ec6565b60006115f78284613ef3565b8015613bfb576014546001600160a01b0316600090815260176020526040812054829190613b5290836128be565b6014546001600160a01b03166000908152601760205260409020819055600c54909150613b7f90846128be565b600c556014546040518481526001600160a01b03918216918616906000805160206140ff8339815191529060200160405180910390a3836001600160a01b03167ffb42d133eca0812491d47088ea70321250d6ab9cfc23a318f640f7def1cb201c84604051613bf091815260200190565b60405180910390a250505b5050565b8015613bfb576000600f5482613c159190613eb3565b6014546001600160a01b031660009081526017602052604081205491925090613b5290836128be565b6001600160a01b03811681146122ff57600080fd5b600060208284031215613c6557600080fd5b81356115f781613c3e565b600060208083528351808285015260005b81811015613c9d57858101830151858201604001528201613c81565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215613cd157600080fd5b8235613cdc81613c3e565b946020939093013593505050565b600080600060608486031215613cff57600080fd5b8335613d0a81613c3e565b92506020840135613d1a81613c3e565b929592945050506040919091013590565b600060208284031215613d3d57600080fd5b5035919050565b80151581146122ff57600080fd5b60008060408385031215613d6557600080fd5b8235613d7081613c3e565b91506020830135613d8081613d44565b809150509250929050565b60008060408385031215613d9e57600080fd5b8235613da981613c3e565b91506020830135613d8081613c3e565b600181811c90821680613dcd57607f821691505b602082108103613ded57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600e908201526d547265617375727920726f6c652160901b604082015260600190565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b60208082526035908201527f416c6c20666f75722066756e6374696f6e732063616e2774206765742073746f60408201527470706564206174207468652073616d652074696d6560581b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e1157610e11613e9d565b8082028115828204841417610e1157610e11613e9d565b634e487b7160e01b600052601260045260246000fd5b600082613f0257613f02613edd565b500490565b80820180821115610e1157610e11613e9d565b600060208284031215613f2c57600080fd5b81516115f781613d44565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215613f7557600080fd5b81516115f781613c3e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613fd05784516001600160a01b031683529383019391830191600101613fab565b50506001600160a01b03969096166060850152505050608001529392505050565b6000602080838503121561400457600080fd5b825167ffffffffffffffff8082111561401c57600080fd5b818501915085601f83011261403057600080fd5b81518181111561404257614042613f37565b8060051b604051601f19603f8301168101818110858211171561406757614067613f37565b60405291825284820192508381018501918883111561408557600080fd5b938501935b828510156140a35784518452938501939285019261408a565b98975050505050505050565b95865260208601949094526040850192909252606090811b6bffffffffffffffffffffffff1916908401526074830152609482015260b40190565b6000826140f9576140f9613edd565b50069056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efcaf24a92738254645a1e260866df8998f2a8a7e4915fd123b906e5426e6e92c6a2646970667358221220dea8527cf14b331a0e7ec0f0029336ef687290000b5243fdf108f604e13ff47264736f6c634300081300338c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92500000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000001ecf1e25f44250d3e7c1529b2ba799119fbd209f000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000211654585005212800000000000000000000000000000000000000000000000021165458500521280000000000000000000000000000000000000000000000000000000000000000000084d616765436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034d47430000000000000000000000000000000000000000000000000000000000