[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "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": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "amountStaked", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseExtension", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "burnContract", "outputs": [ { "internalType": "contract IEggBurnPartner", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "burnFert", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "compoundEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cost", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "dividendTokenBalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dividendTracker", "outputs": [ { "internalType": "contract DividendTracker", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "divisor", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eggBurnPercent", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eggToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eggVaultAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "destination", "type": "address" } ], "name": "emergencyWithdrawFarmland", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "emergencyWithdrawLP", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "accountToExclude", "type": "address" } ], "name": "excludeFromDividends", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "farmlandToken", "outputs": [ { "internalType": "contract IERC721", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feedToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fertBurnContract", "outputs": [ { "internalType": "contract IChiknLpStaking", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fertToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "forceStake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getAccountDividendsInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "int256", "name": "", "type": "int256" }, { "internalType": "int256", "name": "", "type": "int256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getNumberOfDividendTokenHolders", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getNumberOfDividends", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTotalDividendsDistributed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "harvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "heldFarmId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "accountToInclude", "type": "address" } ], "name": "includeInDividends", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "joeRouter", "outputs": [ { "internalType": "contract IJoeRouter", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "levelUpEdgyEggs", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "levelingEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "liquidityAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "liquidityPercent", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lpToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxMintAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mintAmount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "notRevealedUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "operationsAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "operationsPercent", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_state", "type": "bool" } ], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reveal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "revealed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_newBaseExtension", "type": "string" } ], "name": "setBaseExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_newBaseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "setCompoundEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newCost", "type": "uint256" } ], "name": "setCost", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "amount", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newmaxMintAmount", "type": "uint256" } ], "name": "setMaxMintAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_notRevealedURI", "type": "string" } ], "name": "setNotRevealedURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_operationsAddress", "type": "address" }, { "internalType": "address", "name": "_eggVaultAddress", "type": "address" } ], "name": "setReceivers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newAmount", "type": "uint256" } ], "name": "setWhiteListMintAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_whitelist", "type": "bool" } ], "name": "setWhitelistEnforced", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stakingContract", "outputs": [ { "internalType": "contract IChiknLpStaking", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokenLastLevelUpTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokenLevel", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "percent", "type": "uint256" } ], "name": "updateEggBurnPercent", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "farmId", "type": "uint256" } ], "name": "updateFarmId", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "updateLevelingEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "percent", "type": "uint256" } ], "name": "updateOperationsPercent", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "percent", "type": "uint256" } ], "name": "updateWormEggVaultPercent", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "usdcToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "walletOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "wallets", "type": "address[]" }, { "internalType": "bool", "name": "whitelistEnabled", "type": "bool" } ], "name": "whitelistAddresses", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "whitelistEnforced", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "whitelistMintAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "whitelistOver", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "whitelistedMintAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdrawFert", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "withdrawableDividendOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "wormEggVaultPercent", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "wormToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60c0604052600060a0908152600e906200001a9082620005d0565b50612710600f55600c60105560036011556013805461ffff1990811690915560158054909116600117905563053ec600601955603c601c556000601d556101f4601e553480156200006a57600080fd5b5060405180604001604052806008815260200167456467794567677360c01b815250604051806040016040528060078152602001664544475945474760c81b8152508160009081620000bd9190620005d0565b506001620000cc8282620005d0565b505050620000e9620000e36200027260201b60201c565b62000276565b601a80546001600160a01b03199081167323973f233c1863ac56076872f382c4edd5973ea8179091557315e51b3bed300c92bc92b2a990dae790f702dc98608052601b805490911673ed133a27a3fddd1ff8835ef1193eeafd49f57daa1790556040805160208101909152600081526200016390620002c8565b6040805160208101909152600081526200017d9062000329565b7381adaa2b115c4921f3cc412a05f9caa521b4e1ac63507e7888620001a162000382565b6040518263ffffffff1660e01b8152600401620001bf91906200069c565b600060405180830381600087803b158015620001da57600080fd5b505af1925050508015620001ec575060015b507379ba10485ae46a9436d560d9664369176ec2eb2b60405162000210906200051d565b6001600160a01b039091168152602001604051809103906000f0801580156200023d573d6000803e3d6000fd5b50601880546001600160a01b0319166001600160a01b03928316179055601a546200026c91166102586200041c565b620006ec565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600a546001600160a01b03163314620003175760405162461bcd60e51b8152602060048201819052602482015260008051602062007f3a83398151915260448201526064015b60405180910390fd5b600d620003258282620005d0565b5050565b600a546001600160a01b03163314620003745760405162461bcd60e51b8152602060048201819052602482015260008051602062007f3a83398151915260448201526064016200030e565b6014620003258282620005d0565b606060008054620003939062000541565b80601f0160208091040260200160405190810160405280929190818152602001828054620003c19062000541565b8015620004125780601f10620003e65761010080835404028352916020019162000412565b820191906000526020600020905b815481529060010190602001808311620003f457829003601f168201915b5050505050905090565b6127106001600160601b03821611156200048c5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016200030e565b6001600160a01b038216620004e45760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016200030e565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600b55565b61194a80620065f083390190565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200055657607f821691505b6020821081036200057757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005cb57600081815260208120601f850160051c81016020861015620005a65750805b601f850160051c820191505b81811015620005c757828155600101620005b2565b5050505b505050565b81516001600160401b03811115620005ec57620005ec6200052b565b6200060481620005fd845462000541565b846200057d565b602080601f8311600181146200063c5760008415620006235750858301515b600019600386901b1c1916600185901b178555620005c7565b600085815260208120601f198616915b828110156200066d578886015182559484019460019091019084016200064c565b50858210156200068c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b81811015620006cb57858101830151858201604001528201620006ad565b506000604082860101526040601f19601f8301168501019250505092915050565b608051615eda62000716600039600081816108d10152818161319001526138100152615eda6000f3fe6080604052600436106105115760003560e01c806364b0f65311610297578063b3c04de711610165578063d34cb61e116100cc578063ee99205c11610085578063ee99205c14611072578063f00f087f1461109a578063f2c4ce1e146110b0578063f2fde38b146110d0578063f4ec0b6a146110f0578063fab1e7471461110657600080fd5b8063d34cb61e14610f93578063d5abeb0114610fb3578063da3ef23f14610fc9578063dc1b895614610fe9578063e985e9c514611009578063ea4cfe121461105257600080fd5b8063c87b56dd1161011e578063c87b56dd14610ee8578063cc3c70eb14610f08578063cc5a2eb114610f28578063ce0fc88f14610f3e578063cfb89aba14610f5e578063d27b400d14610f7457600080fd5b8063b3c04de714610e1e578063b88d4fde14610e3e578063beb73b3114610e5e578063c0f306ef14610e8b578063c27308a814610eab578063c668286214610ed357600080fd5b80638f2d388a11610209578063a22cb465116101c2578063a22cb46514610d22578063a475b5dd14610d42578063a8b9d24014610d57578063ab8ece8b14610d77578063ad56c13c14610da3578063b068375514610e0857600080fd5b80638f2d388a14610c7657806395d89b4114610c8b57806399119d2214610ca05780639ebc1a8e14610cc8578063a0712d6814610ce2578063a18cc0fc14610d0257600080fd5b8063784173981161025b5780637841739814610bcd5780637e46e6b714610be2578063857eb80c14610bf757806389f91ece14610c175780638da5cb5b14610c315780638dc9649414610c4f57600080fd5b806364b0f65314610b4e5780636843cd8414610b6357806370a0823114610b83578063715018a614610ba357806371778e7d14610bb857600080fd5b80632a910af3116103df5780634e71d92d116103465780635a345481116102ff5780635a34548114610a895780635c0216a514610a9f5780635c975abb14610acc5780635fcbd28514610ae657806362e7707e14610b0e5780636352211e14610b2e57600080fd5b80634e71d92d146109cd5780634f6ccce7146109e25780635183022714610a02578063555503b114610a2157806355f804b314610a4157806359f571e814610a6157600080fd5b806334ad4b511161039857806334ad4b51146108f35780633af32abf1461091b57806342842e0e1461094b578063438b63001461096b57806344a0d68a146109985780634641257d146109b857600080fd5b80632a910af3146108225780632c1f52161461084a5780632f745c591461086a57806330bb4cff1461088a57806331e79db01461089f5780633221c93f146108bf57600080fd5b80630c80778d116104835780631c0973a41161043c5780631c0973a4146107605780631f2dc5ef14610788578063239c70ae1461079e57806323b872dd146107b457806326d74563146107d45780632a55205a146107f457600080fd5b80630c80778d146106ab57806311db2bbe146106cb57806311eac855146106ea57806313faede614610712578063140946851461073657806318160ddd1461074b57600080fd5b8063048b2f6c116104d5578063048b2f6c146105f457806306fdde0314610614578063081812fc14610636578063081c8c4414610656578063088a4ed01461066b578063095ea7b31461068b57600080fd5b806301ffc9a71461051d57806302329a2914610552578063029e99e21461057457806304634d8d146105ac5780630467ef0e146105cc57600080fd5b3661051857005b600080fd5b34801561052957600080fd5b5061053d6105383660046152dc565b61111c565b60405190151581526020015b60405180910390f35b34801561055e57600080fd5b5061057261056d366004615307565b61112d565b005b34801561058057600080fd5b50601b54610594906001600160a01b031681565b6040516001600160a01b039091168152602001610549565b3480156105b857600080fd5b506105726105c7366004615339565b611173565b3480156105d857600080fd5b5061059473160f701ab5bc84dd65ce1174d2022edc1b128c5f81565b34801561060057600080fd5b5061057261060f3660046153c5565b611204565b34801561062057600080fd5b50610629611853565b60405161054991906154bb565b34801561064257600080fd5b506105946106513660046154ce565b6118e5565b34801561066257600080fd5b5061062961197a565b34801561067757600080fd5b506105726106863660046154ce565b611a08565b34801561069757600080fd5b506105726106a63660046154e7565b611a45565b3480156106b757600080fd5b506105726106c6366004615513565b611b5a565b3480156106d757600080fd5b5060155461053d90610100900460ff1681565b3480156106f657600080fd5b5061059473b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e81565b34801561071e57600080fd5b5061072860195481565b604051908152602001610549565b34801561074257600080fd5b50610572611c09565b34801561075757600080fd5b50600854610728565b34801561076c57600080fd5b506105947381adaa2b115c4921f3cc412a05f9caa521b4e1ac81565b34801561079457600080fd5b506107286103e881565b3480156107aa57600080fd5b5061072860105481565b3480156107c057600080fd5b506105726107cf366004615530565b611dbc565b3480156107e057600080fd5b506105726107ef3660046154ce565b611ded565b34801561080057600080fd5b5061081461080f366004615571565b611e57565b604051610549929190615593565b34801561082e57600080fd5b506105947379ba10485ae46a9436d560d9664369176ec2eb2b81565b34801561085657600080fd5b50601854610594906001600160a01b031681565b34801561087657600080fd5b506107286108853660046154e7565b611f03565b34801561089657600080fd5b50610728611f99565b3480156108ab57600080fd5b506105726108ba366004615513565b61200c565b3480156108cb57600080fd5b506105947f000000000000000000000000000000000000000000000000000000000000000081565b3480156108ff57600080fd5b50610594739c846d808a41328a209e235b5e3c4e626dab169e81565b34801561092757600080fd5b5061053d610936366004615513565b60166020526000908152604090205460ff1681565b34801561095757600080fd5b50610572610966366004615530565b612092565b34801561097757600080fd5b5061098b610986366004615513565b6120ad565b60405161054991906155ac565b3480156109a457600080fd5b506105726109b33660046154ce565b61214f565b3480156109c457600080fd5b50610572612216565b3480156109d957600080fd5b50610572612bc3565b3480156109ee57600080fd5b506107286109fd3660046154ce565b612c3c565b348015610a0e57600080fd5b5060135461053d90610100900460ff1681565b348015610a2d57600080fd5b50610572610a3c3660046154ce565b612ccf565b348015610a4d57600080fd5b50610572610a5c366004615648565b612d0c565b348015610a6d57600080fd5b506105947360ae616a2155ee3d9a68541ba4544862310933d481565b348015610a9557600080fd5b50610728601d5481565b348015610aab57600080fd5b50610728610aba3660046154ce565b60216020526000908152604090205481565b348015610ad857600080fd5b5060135461053d9060ff1681565b348015610af257600080fd5b50610594733052a75dfd7a9d9b0f81e510e01d3fe80a9e7ec781565b348015610b1a57600080fd5b50610572610b29366004615691565b612d42565b348015610b3a57600080fd5b50610594610b493660046154ce565b612ddd565b348015610b5a57600080fd5b50610728612e54565b348015610b6f57600080fd5b50610728610b7e366004615513565b612e9e565b348015610b8f57600080fd5b50610728610b9e366004615513565b612f0e565b348015610baf57600080fd5b50610572612f95565b348015610bc457600080fd5b50610728612fcb565b348015610bd957600080fd5b50610572613015565b348015610bee57600080fd5b506105726131fd565b348015610c0357600080fd5b50610572610c123660046154ce565b613341565b348015610c2357600080fd5b5060155461053d9060ff1681565b348015610c3d57600080fd5b50600a546001600160a01b0316610594565b348015610c5b57600080fd5b5061059472f5d01d86008d14d04e29efe88dffc75a9cac4781565b348015610c8257600080fd5b506105726133b7565b348015610c9757600080fd5b506106296135c6565b348015610cac57600080fd5b50610594737761e2338b35bceb6bda6ce477ef012bde7ae61181565b348015610cd457600080fd5b5060225461053d9060ff1681565b348015610cee57600080fd5b50610572610cfd3660046154ce565b6135d5565b348015610d0e57600080fd5b50610572610d1d3660046154ce565b613958565b348015610d2e57600080fd5b50610572610d3d366004615717565b6139c1565b348015610d4e57600080fd5b50610572613a85565b348015610d6357600080fd5b50610728610d72366004615513565b613ac0565b348015610d8357600080fd5b50610728610d923660046154ce565b602080526000908152604090205481565b348015610daf57600080fd5b50610dc3610dbe366004615513565b613af3565b604080516001600160a01b0390991689526020890197909752958701949094526060860192909252608085015260a084015260c083015260e082015261010001610549565b348015610e1457600080fd5b506107286101c281565b348015610e2a57600080fd5b50610572610e39366004615307565b613b8d565b348015610e4a57600080fd5b50610572610e59366004615745565b613bca565b348015610e6a57600080fd5b50610728610e79366004615513565b60176020526000908152604090205481565b348015610e9757600080fd5b50610572610ea6366004615513565b613bfc565b348015610eb757600080fd5b5061059473ab592d197acc575d16c3346f4eb70c703f308d1e81565b348015610edf57600080fd5b50610629613cbf565b348015610ef457600080fd5b50610629610f033660046154ce565b613ccc565b348015610f1457600080fd5b50610572610f23366004615307565b613e2c565b348015610f3457600080fd5b50610728601e5481565b348015610f4a57600080fd5b50610572610f593660046157c5565b613e69565b348015610f6a57600080fd5b5061072860115481565b348015610f8057600080fd5b5060225461053d90610100900460ff1681565b348015610f9f57600080fd5b50610572610fae366004615307565b613ee7565b348015610fbf57600080fd5b50610728600f5481565b348015610fd557600080fd5b50610572610fe4366004615648565b613f2b565b348015610ff557600080fd5b506105726110043660046154ce565b613f61565b34801561101557600080fd5b5061053d6110243660046157c5565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561105e57600080fd5b50601a54610594906001600160a01b031681565b34801561107e57600080fd5b506105947385fdca3741395b7f9faa70bf7cc40f4ac89127ff81565b3480156110a657600080fd5b50610728601c5481565b3480156110bc57600080fd5b506105726110cb366004615648565b614077565b3480156110dc57600080fd5b506105726110eb366004615513565b6140ad565b3480156110fc57600080fd5b5061072860125481565b34801561111257600080fd5b50610728601f5481565b600061112782614145565b92915050565b600a546001600160a01b031633146111605760405162461bcd60e51b8152600401611157906157f3565b60405180910390fd5b6013805460ff1916911515919091179055565b600a546001600160a01b0316331461119d5760405162461bcd60e51b8152600401611157906157f3565b610258816001600160601b031611156111e35760405162461bcd60e51b81526020600482015260086024820152670e8dede40d0d2ced60c31b6044820152606401611157565b6001600160a01b0382166111f657600080fd5b611200828261416a565b5050565b602254610100900460ff166112465760405162461bcd60e51b8152602060048201526008602482015267111a5cd8589b195960c21b6044820152606401611157565b60008080805b84518110156114b3576020600086838151811061126b5761126b615828565b60200260200101518152602001908152602001600020549350602484101561131d57737761e2338b35bceb6bda6ce477ef012bde7ae6116001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611303919061583e565b61130e90600a61595b565b611318908561596a565b6113a9565b737761e2338b35bceb6bda6ce477ef012bde7ae6116001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561136f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611393919061583e565b61139e90600a61595b565b6113a990602461596a565b6113b39083615989565b9150602160008683815181106113cb576113cb615828565b602002602001015181526020019081526020016000205492504283620151806113f49190615989565b111561142d5760405162461bcd60e51b81526020600482015260086024820152672a37b79029b7b7b760c11b6044820152606401611157565b426021600087848151811061144457611444615828565b602002602001015181526020019081526020016000208190555060016020600087848151811061147657611476615828565b60200260200101518152602001908152602001600020600082825461149b9190615989565b909155508190506114ab8161599c565b91505061124c565b506040516370a0823160e01b81523360048201528190737761e2338b35bceb6bda6ce477ef012bde7ae611906370a0823190602401602060405180830381865afa158015611505573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152991906159b5565b10156115615760405162461bcd60e51b81526020600482015260076024820152664e6f204567677360c81b6044820152606401611157565b6040516323b872dd60e01b8152737761e2338b35bceb6bda6ce477ef012bde7ae611906323b872dd9061159c903390309086906004016159ce565b6020604051808303816000875af11580156115bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115df91906159f2565b50601c541561169057601a54601c54737761e2338b35bceb6bda6ce477ef012bde7ae6119163a9059cbb916001600160a01b03909116906103e890611624908661596a565b61162e9190615a25565b6040518363ffffffff1660e01b815260040161164b929190615593565b6020604051808303816000875af115801561166a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168e91906159f2565b505b601e541561177457604080518082019091526004815263313ab93760e11b60208201527381adaa2b115c4921f3cc412a05f9caa521b4e1ac6307ab7b6f6116d5611853565b6103e8601e54866116e6919061596a565b6116f09190615a25565b846040518463ffffffff1660e01b815260040161170f93929190615a39565b600060405180830381600087803b15801561172957600080fd5b505af192505050801561173a575060015b6117725760405162461bcd60e51b8152602060048201526009602482015268189d5c9b8819985a5b60ba1b6044820152606401611157565b505b6103e8601e54601c546117879190615989565b101561184d57601b54601e54601c54737761e2338b35bceb6bda6ce477ef012bde7ae6119263a9059cbb926001600160a01b03909116916103e891906117cd9083615a6e565b6117d79190615a6e565b6117e1908661596a565b6117eb9190615a25565b6040518363ffffffff1660e01b8152600401611808929190615593565b6020604051808303816000875af1158015611827573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184b91906159f2565b505b50505050565b60606000805461186290615a81565b80601f016020809104026020016040519081016040528092919081815260200182805461188e90615a81565b80156118db5780601f106118b0576101008083540402835291602001916118db565b820191906000526020600020905b8154815290600101906020018083116118be57829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b031661195e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401611157565b506000908152600460205260409020546001600160a01b031690565b6014805461198790615a81565b80601f01602080910402602001604051908101604052809291908181526020018280546119b390615a81565b8015611a005780601f106119d557610100808354040283529160200191611a00565b820191906000526020600020905b8154815290600101906020018083116119e357829003601f168201915b505050505081565b600a546001600160a01b03163314611a325760405162461bcd60e51b8152600401611157906157f3565b6032811115611a4057600080fd5b601055565b6000611a5082612ddd565b9050806001600160a01b0316836001600160a01b031603611abd5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401611157565b336001600160a01b0382161480611ad95750611ad98133611024565b611b4b5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401611157565b611b558383614267565b505050565b600a546001600160a01b03163314611b845760405162461bcd60e51b8152600401611157906157f3565b601254600003611b9357600080fd5b6012546040516323b872dd60e01b815272f5d01d86008d14d04e29efe88dffc75a9cac47916323b872dd91611bcf9130918691906004016159ce565b600060405180830381600087803b158015611be957600080fd5b505af1158015611bfd573d6000803e3d6000fd5b50506000601255505050565b600a546001600160a01b03163314611c335760405162461bcd60e51b8152600401611157906157f3565b6040516370a0823160e01b8152306004820152600090733052a75dfd7a9d9b0f81e510e01d3fe80a9e7ec7906370a0823190602401602060405180830381865afa158015611c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca991906159b5565b60405163095ea7b360e01b8152909150733052a75dfd7a9d9b0f81e510e01d3fe80a9e7ec79063095ea7b390611cf9907385fdca3741395b7f9faa70bf7cc40f4ac89127ff908590600401615593565b6020604051808303816000875af1158015611d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3c91906159f2565b50604051630edd951160e11b8152600481018290527385fdca3741395b7f9faa70bf7cc40f4ac89127ff90631dbb2a2290602401600060405180830381600087803b158015611d8a57600080fd5b505af1158015611d9e573d6000803e3d6000fd5b5050505080601f6000828254611db49190615989565b909155505050565b611dc633826142d5565b611de25760405162461bcd60e51b815260040161115790615abb565b611b558383836143cc565b600a546001600160a01b03163314611e175760405162461bcd60e51b8152600401611157906157f3565b6103e8811115611e525760405162461bcd60e51b81526020600482015260066024820152653e203130302560d01b6044820152606401611157565b601d55565b6000828152600c602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291611ecc575060408051808201909152600b546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090611eeb906001600160601b03168761596a565b611ef59190615a25565b915196919550909350505050565b6000611f0e83612f0e565b8210611f705760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401611157565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b601854604080516342d359d760e11b815290516000926001600160a01b0316916385a6b3ae9160048083019260209291908290030181865afa158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200791906159b5565b905090565b600a546001600160a01b031633146120365760405162461bcd60e51b8152600401611157906157f3565b60185460405163031e79db60e41b81526001600160a01b038381166004830152909116906331e79db0906024015b600060405180830381600087803b15801561207e57600080fd5b505af115801561184b573d6000803e3d6000fd5b611b5583838360405180602001604052806000815250613bca565b606060006120ba83612f0e565b905060008167ffffffffffffffff8111156120d7576120d761537e565b604051908082528060200260200182016040528015612100578160200160208202803683370190505b50905060005b82811015612147576121188582611f03565b82828151811061212a5761212a615828565b60209081029190910101528061213f8161599c565b915050612106565b509392505050565b600a546001600160a01b031633146121795760405162461bcd60e51b8152600401611157906157f3565b73b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ef919061583e565b6121fa90600a61595b565b61220590605861596a565b81111561221157600080fd5b601955565b7385fdca3741395b7f9faa70bf7cc40f4ac89127ff6001600160a01b031663b88a802f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561226557600080fd5b505af1158015612279573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526000925073ab592d197acc575d16c3346f4eb70c703f308d1e91506370a0823190602401602060405180830381865afa1580156122cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f391906159b5565b11156123e557601b546040516370a0823160e01b815230600482015273ab592d197acc575d16c3346f4eb70c703f308d1e9163a9059cbb916001600160a01b039091169083906370a0823190602401602060405180830381865afa15801561235f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238391906159b5565b6040518363ffffffff1660e01b81526004016123a0929190615593565b6020604051808303816000875af11580156123bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e391906159f2565b505b6040516370a0823160e01b81523060048201526000907379ba10485ae46a9436d560d9664369176ec2eb2b906370a0823190602401602060405180830381865afa158015612437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245b91906159b5565b1115612bc357601c541561257157601a54601c546040516370a0823160e01b81523060048201527379ba10485ae46a9436d560d9664369176ec2eb2b9263a9059cbb926001600160a01b03909116916103e8919085906370a0823190602401602060405180830381865afa1580156124d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fb91906159b5565b612505919061596a565b61250f9190615a25565b6040518363ffffffff1660e01b815260040161252c929190615593565b6020604051808303816000875af115801561254b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256f91906159f2565b505b60225460ff166127fc57601d541561268b57601b54601d546040516370a0823160e01b81523060048201527379ba10485ae46a9436d560d9664369176ec2eb2b9263a9059cbb926001600160a01b03909116916103e8919085906370a0823190602401602060405180830381865afa1580156125f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261591906159b5565b61261f919061596a565b6126299190615a25565b6040518363ffffffff1660e01b8152600401612646929190615593565b6020604051808303816000875af1158015612665573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268991906159f2565b505b6040516370a0823160e01b81523060048201526000907379ba10485ae46a9436d560d9664369176ec2eb2b906370a0823190602401602060405180830381865afa1580156126dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270191906159b5565b60185460405163a9059cbb60e01b81529192507379ba10485ae46a9436d560d9664369176ec2eb2b9163a9059cbb9161274a916001600160a01b03909116908590600401615593565b6020604051808303816000875af1158015612769573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278d91906159f2565b50601860009054906101000a90046001600160a01b03166001600160a01b031663b51312916040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127de57600080fd5b505af11580156127f2573d6000803e3d6000fd5b5050505050612bc3565b6040516370a0823160e01b81523060048201526000906002907379ba10485ae46a9436d560d9664369176ec2eb2b906370a0823190602401602060405180830381865afa158015612851573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287591906159b5565b61287f9190615a25565b6040516370a0823160e01b815230600482015290915060009082907379ba10485ae46a9436d560d9664369176ec2eb2b906370a0823190602401602060405180830381865afa1580156128d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128fa91906159b5565b6129049190615a6e565b6040516370a0823160e01b8152306004820152909150600090737761e2338b35bceb6bda6ce477ef012bde7ae611906370a0823190602401602060405180830381865afa158015612959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297d91906159b5565b9050612988836144ba565b6040516370a0823160e01b81523060048201526000908290737761e2338b35bceb6bda6ce477ef012bde7ae611906370a0823190602401602060405180830381865afa1580156129dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0091906159b5565b612a0a9190615a6e565b905047612a1684614715565b6000612a228247615a6e565b90508215612bbc57612a3483826148f0565b6040516370a0823160e01b8152306004820152600090733052a75dfd7a9d9b0f81e510e01d3fe80a9e7ec7906370a0823190602401602060405180830381865afa158015612a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aaa91906159b5565b60405163095ea7b360e01b8152909150733052a75dfd7a9d9b0f81e510e01d3fe80a9e7ec79063095ea7b390612afa907385fdca3741395b7f9faa70bf7cc40f4ac89127ff908590600401615593565b6020604051808303816000875af1158015612b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3d91906159f2565b50604051630edd951160e11b8152600481018290527385fdca3741395b7f9faa70bf7cc40f4ac89127ff90631dbb2a2290602401600060405180830381600087803b158015612b8b57600080fd5b505af1158015612b9f573d6000803e3d6000fd5b5050505080601f6000828254612bb59190615989565b9091555050505b5050505050505b60185460405163bc4c4b3760e01b8152336004820152600060248201526001600160a01b039091169063bc4c4b37906044015b6020604051808303816000875af1158015612c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3991906159f2565b50565b6000612c4760085490565b8210612caa5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401611157565b60088281548110612cbd57612cbd615828565b90600052602060002001549050919050565b600a546001600160a01b03163314612cf95760405162461bcd60e51b8152600401611157906157f3565b6032811115612d0757600080fd5b601155565b600a546001600160a01b03163314612d365760405162461bcd60e51b8152600401611157906157f3565b600d6112008282615b52565b600a546001600160a01b03163314612d6c5760405162461bcd60e51b8152600401611157906157f3565b60005b8281101561184d578160166000868685818110612d8e57612d8e615828565b9050602002016020810190612da39190615513565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580612dd58161599c565b915050612d6f565b6000818152600260205260408120546001600160a01b0316806111275760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401611157565b601854604080516304ddf6ef60e11b815290516000926001600160a01b0316916309bbedde9160048083019260209291908290030181865afa158015611fe3573d6000803e3d6000fd5b60185460405163156dbbf560e31b81526001600160a01b038381166004830152600092169063ab6ddfa8906024015b602060405180830381865afa158015612eea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112791906159b5565b60006001600160a01b038216612f795760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401611157565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b03163314612fbf5760405162461bcd60e51b8152600401611157906157f3565b612fc96000614a2d565b565b6018546040805163ad7a672f60e01b815290516000926001600160a01b03169163ad7a672f9160048083019260209291908290030181865afa158015611fe3573d6000803e3d6000fd5b600a546001600160a01b0316331461303f5760405162461bcd60e51b8152600401611157906157f3565b6000601f54116130795760405162461bcd60e51b815260206004820152600560248201526406e6f204c560dc1b6044820152606401611157565b601f54604051632e1a7d4d60e01b815260048101919091527385fdca3741395b7f9faa70bf7cc40f4ac89127ff90632e1a7d4d90602401600060405180830381600087803b1580156130ca57600080fd5b505af11580156130de573d6000803e3d6000fd5b50506000601f8190556040516370a0823160e01b8152306004820152909250733052a75dfd7a9d9b0f81e510e01d3fe80a9e7ec791506370a0823190602401602060405180830381865afa15801561313a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315e91906159b5565b60405163a9059cbb60e01b8152909150733052a75dfd7a9d9b0f81e510e01d3fe80a9e7ec79063a9059cbb906131ba907f0000000000000000000000000000000000000000000000000000000000000000908590600401615593565b6020604051808303816000875af11580156131d9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120091906159f2565b600a546001600160a01b031633146132275760405162461bcd60e51b8152600401611157906157f3565b6040516370a0823160e01b8152306004820152600090739c846d808a41328a209e235b5e3c4e626dab169e906370a0823190602401602060405180830381865afa158015613279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329d91906159b5565b116132a757600080fd5b6040516370a0823160e01b8152306004820152739c846d808a41328a209e235b5e3c4e626dab169e9063a9059cbb90339083906370a0823190602401602060405180830381865afa158015613300573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332491906159b5565b6040518363ffffffff1660e01b8152600401612bf6929190615593565b600a546001600160a01b0316331461336b5760405162461bcd60e51b8152600401611157906157f3565b601c5461337a906103e8615a6e565b8111156133b25760405162461bcd60e51b81526020600482015260066024820152653e203130302560d01b6044820152606401611157565b601e55565b600a546001600160a01b031633146133e15760405162461bcd60e51b8152600401611157906157f3565b6012546000036133f057600080fd5b6040516370a0823160e01b8152306004820152739c846d808a41328a209e235b5e3c4e626dab169e9063095ea7b39073160f701ab5bc84dd65ce1174d2022edc1b128c5f9083906370a0823190602401602060405180830381865afa15801561345d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348191906159b5565b6040518363ffffffff1660e01b815260040161349e929190615593565b6020604051808303816000875af11580156134bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e191906159f2565b506012546040516370a0823160e01b815230600482015273160f701ab5bc84dd65ce1174d2022edc1b128c5f9163371b678f91739c846d808a41328a209e235b5e3c4e626dab169e906370a0823190602401602060405180830381865afa158015613550573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061357491906159b5565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401600060405180830381600087803b1580156135b257600080fd5b505af115801561184d573d6000803e3d6000fd5b60606001805461186290615a81565b60006135e060085490565b60135490915060ff16156135f357600080fd5b600082601954613603919061596a565b60155490915060ff161561367b573360009081526016602052604090205460ff1661362d57600080fd5b6011543360009081526017602052604090205461364b908590615989565b111561365657600080fd5b3360009081526017602052604081208054859290613675908490615989565b90915550505b6000831161368857600080fd5b60105483111561369757600080fd5b600f546136a48484615989565b11156136af57600080fd5b6040516370a0823160e01b8152336004820152819073b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e906370a0823190602401602060405180830381865afa158015613700573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372491906159b5565b101561372f57600080fd5b60015b83811161377f5761374c336137478386615989565b614a7f565b60016020600061375c8487615989565b8152602081019190915260400160002055806137778161599c565b915050613732565b506018546001600160a01b031663e30443bc3361379b81612f0e565b6040518363ffffffff1660e01b81526004016137b8929190615593565b600060405180830381600087803b1580156137d257600080fd5b505af11580156137e6573d6000803e3d6000fd5b505050506000811115611b555773b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e6323b872dd337f00000000000000000000000000000000000000000000000000000000000000006103e861383e6101c28761596a565b6138489190615a25565b6040518463ffffffff1660e01b8152600401613866939291906159ce565b6020604051808303816000875af1158015613885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138a991906159f2565b50601a5473b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e906323b872dd9033906001600160a01b03166103e86138e36101c28761596a565b6138ed9190615a25565b6138f79086615a6e565b6040518463ffffffff1660e01b8152600401613915939291906159ce565b6020604051808303816000875af1158015613934573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184d91906159f2565b600a546001600160a01b031633146139825760405162461bcd60e51b8152600401611157906157f3565b603c8111156139bc5760405162461bcd60e51b8152600401611157906020808252600490820152633e20362560e01b604082015260600190565b601c55565b336001600160a01b03831603613a195760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401611157565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600a546001600160a01b03163314613aaf5760405162461bcd60e51b8152600401611157906157f3565b6013805461ff001916610100179055565b6018546040516302a2e74960e61b81526001600160a01b038381166004830152600092169063a8b9d24090602401612ecd565b60185460405163fbcbc0f160e01b81526001600160a01b038381166004830152600092839283928392839283928392839291169063fbcbc0f19060240161010060405180830381865afa158015613b4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b729190615c12565b97509750975097509750975097509750919395975091939597565b600a546001600160a01b03163314613bb75760405162461bcd60e51b8152600401611157906157f3565b6022805460ff1916911515919091179055565b613bd433836142d5565b613bf05760405162461bcd60e51b815260040161115790615abb565b61184d84848484614a99565b600a546001600160a01b03163314613c265760405162461bcd60e51b8152600401611157906157f3565b60185460405163c0f306ef60e01b81526001600160a01b0383811660048301529091169063c0f306ef90602401600060405180830381600087803b158015613c6d57600080fd5b505af1158015613c81573d6000803e3d6000fd5b50506018546001600160a01b0316915063e30443bc905082613ca281612f0e565b6040518363ffffffff1660e01b8152600401612064929190615593565b600e805461198790615a81565b6000818152600260205260409020546060906001600160a01b0316613d275760405162461bcd60e51b81526020600482015260116024820152703737b732bc34b9ba32b73a103a37b5b2b760791b6044820152606401611157565b601354610100900460ff161515600003613dcd5760148054613d4890615a81565b80601f0160208091040260200160405190810160405280929190818152602001828054613d7490615a81565b8015613dc15780601f10613d9657610100808354040283529160200191613dc1565b820191906000526020600020905b815481529060010190602001808311613da457829003601f168201915b50505050509050919050565b6000613dd7614acc565b90506000815111613df75760405180602001604052806000815250613e25565b80613e0184614adb565b600e604051602001613e1593929190615c7c565b6040516020818303038152906040525b9392505050565b600a546001600160a01b03163314613e565760405162461bcd60e51b8152600401611157906157f3565b6015805460ff1916911515919091179055565b600a546001600160a01b03163314613e935760405162461bcd60e51b8152600401611157906157f3565b6001600160a01b038216613ea657600080fd5b6001600160a01b038116613eb957600080fd5b601a80546001600160a01b039384166001600160a01b031991821617909155601b8054929093169116179055565b600a546001600160a01b03163314613f115760405162461bcd60e51b8152600401611157906157f3565b602280549115156101000261ff0019909216919091179055565b600a546001600160a01b03163314613f555760405162461bcd60e51b8152600401611157906157f3565b600e6112008282615b52565b600a546001600160a01b03163314613f8b5760405162461bcd60e51b8152600401611157906157f3565b6040516331a9108f60e11b815260048101829052309072f5d01d86008d14d04e29efe88dffc75a9cac4790636352211e90602401602060405180830381865afa158015613fdc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140009190615d1c565b6001600160a01b03161461401357600080fd5b60405163410cf1e760e11b8152600481018290527385fdca3741395b7f9faa70bf7cc40f4ac89127ff90638219e3ce90602401600060405180830381600087803b15801561406057600080fd5b505af1925050508015614071575060015b50601255565b600a546001600160a01b031633146140a15760405162461bcd60e51b8152600401611157906157f3565b60146112008282615b52565b600a546001600160a01b031633146140d75760405162461bcd60e51b8152600401611157906157f3565b6001600160a01b03811661413c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611157565b612c3981614a2d565b60006001600160e01b0319821663152a902d60e11b1480611127575061112782614bdc565b6127106001600160601b03821611156141d85760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401611157565b6001600160a01b03821661422e5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401611157565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600b55565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061429c82612ddd565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661434e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401611157565b600061435983612ddd565b9050806001600160a01b0316846001600160a01b031614806143945750836001600160a01b0316614389846118e5565b6001600160a01b0316145b806143c457506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b6143d4612216565b6143df838383614c01565b6018546001600160a01b031663e30443bc846143fa81612f0e565b6040518363ffffffff1660e01b8152600401614417929190615593565b600060405180830381600087803b15801561443157600080fd5b505af1158015614445573d6000803e3d6000fd5b50506018546001600160a01b0316915063e30443bc90508361446681612f0e565b6040518363ffffffff1660e01b8152600401614483929190615593565b600060405180830381600087803b15801561449d57600080fd5b505af11580156144b1573d6000803e3d6000fd5b50505050505050565b60408051600380825260808201909252600091602082016060803683370190505090507379ba10485ae46a9436d560d9664369176ec2eb2b8160008151811061450557614505615828565b60200260200101906001600160a01b031690816001600160a01b0316815250507360ae616a2155ee3d9a68541ba4544862310933d46001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015614577573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061459b9190615d1c565b816001815181106145ae576145ae615828565b60200260200101906001600160a01b031690816001600160a01b031681525050737761e2338b35bceb6bda6ce477ef012bde7ae611816002815181106145f6576145f6615828565b6001600160a01b039092166020928302919091019091015260405163095ea7b360e01b81527379ba10485ae46a9436d560d9664369176ec2eb2b9063095ea7b39061465b907360ae616a2155ee3d9a68541ba4544862310933d4908690600401615593565b6020604051808303816000875af115801561467a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061469e91906159f2565b50604051635c11d79560e01b81527360ae616a2155ee3d9a68541ba4544862310933d490635c11d795906146df908590600090869030904290600401615d39565b600060405180830381600087803b1580156146f957600080fd5b505af115801561470d573d6000803e3d6000fd5b505050505050565b6040805160028082526060820183526000926020830190803683370190505090507379ba10485ae46a9436d560d9664369176ec2eb2b8160008151811061475e5761475e615828565b60200260200101906001600160a01b031690816001600160a01b0316815250507360ae616a2155ee3d9a68541ba4544862310933d46001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156147d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147f49190615d1c565b8160018151811061480757614807615828565b6001600160a01b039092166020928302919091019091015260405163095ea7b360e01b81527379ba10485ae46a9436d560d9664369176ec2eb2b9063095ea7b39061486c907360ae616a2155ee3d9a68541ba4544862310933d4908690600401615593565b6020604051808303816000875af115801561488b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148af91906159f2565b50604051633b158ab160e11b81527360ae616a2155ee3d9a68541ba4544862310933d49063762b1562906146df908590600090869030904290600401615d39565b60405163095ea7b360e01b8152737761e2338b35bceb6bda6ce477ef012bde7ae6119063095ea7b39061493d907360ae616a2155ee3d9a68541ba4544862310933d4908690600401615593565b6020604051808303816000875af115801561495c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061498091906159f2565b50604051637c8d9fb960e11b8152737761e2338b35bceb6bda6ce477ef012bde7ae61160048201526024810183905260006044820181905260648201523060848201524260a48201527360ae616a2155ee3d9a68541ba4544862310933d49063f91b3f7290839060c40160606040518083038185885af1158015614a08573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061184b9190615daa565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611200828260405180602001604052806000815250614dac565b614aa48484846143cc565b614ab084848484614ddf565b61184d5760405162461bcd60e51b815260040161115790615dd8565b6060600d805461186290615a81565b606081600003614b025750506040805180820190915260018152600360fc1b602082015290565b8160005b8115614b2c5780614b168161599c565b9150614b259050600a83615a25565b9150614b06565b60008167ffffffffffffffff811115614b4757614b4761537e565b6040519080825280601f01601f191660200182016040528015614b71576020820181803683370190505b5090505b84156143c457614b86600183615a6e565b9150614b93600a86615e2a565b614b9e906030615989565b60f81b818381518110614bb357614bb3615828565b60200101906001600160f81b031916908160001a905350614bd5600a86615a25565b9450614b75565b60006001600160e01b0319821663780e9d6360e01b1480611127575061112782614ee0565b826001600160a01b0316614c1482612ddd565b6001600160a01b031614614c7c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401611157565b6001600160a01b038216614cde5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401611157565b614ce9838383614f30565b614cf4600082614267565b6001600160a01b0383166000908152600360205260408120805460019290614d1d908490615a6e565b90915550506001600160a01b0382166000908152600360205260408120805460019290614d4b908490615989565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b614db68383614fe8565b614dc36000848484614ddf565b611b555760405162461bcd60e51b815260040161115790615dd8565b60006001600160a01b0384163b15614ed557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614e23903390899088908890600401615e3e565b6020604051808303816000875af1925050508015614e5e575060408051601f3d908101601f19168201909252614e5b91810190615e71565b60015b614ebb573d808015614e8c576040519150601f19603f3d011682016040523d82523d6000602084013e614e91565b606091505b508051600003614eb35760405162461bcd60e51b815260040161115790615dd8565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506143c4565b506001949350505050565b60006001600160e01b031982166380ac58cd60e01b1480614f1157506001600160e01b03198216635b5e139f60e01b145b8061112757506301ffc9a760e01b6001600160e01b0319831614611127565b6001600160a01b038316614f8b57614f8681600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b614fae565b816001600160a01b0316836001600160a01b031614614fae57614fae8382615136565b6001600160a01b038216614fc557611b55816151d3565b826001600160a01b0316826001600160a01b031614611b5557611b558282615282565b6001600160a01b03821661503e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401611157565b6000818152600260205260409020546001600160a01b0316156150a35760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401611157565b6150af60008383614f30565b6001600160a01b03821660009081526003602052604081208054600192906150d8908490615989565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000600161514384612f0e565b61514d9190615a6e565b6000838152600760205260409020549091508082146151a0576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906151e590600190615a6e565b6000838152600960205260408120546008805493945090928490811061520d5761520d615828565b90600052602060002001549050806008838154811061522e5761522e615828565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061526657615266615e8e565b6001900381819060005260206000200160009055905550505050565b600061528d83612f0e565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160e01b031981168114612c3957600080fd5b6000602082840312156152ee57600080fd5b8135613e25816152c6565b8015158114612c3957600080fd5b60006020828403121561531957600080fd5b8135613e25816152f9565b6001600160a01b0381168114612c3957600080fd5b6000806040838503121561534c57600080fd5b823561535781615324565b915060208301356001600160601b038116811461537357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156153bd576153bd61537e565b604052919050565b600060208083850312156153d857600080fd5b823567ffffffffffffffff808211156153f057600080fd5b818501915085601f83011261540457600080fd5b8135818111156154165761541661537e565b8060051b9150615427848301615394565b818152918301840191848101908884111561544157600080fd5b938501935b8385101561545f57843582529385019390850190615446565b98975050505050505050565b60005b8381101561548657818101518382015260200161546e565b50506000910152565b600081518084526154a781602086016020860161546b565b601f01601f19169290920160200192915050565b602081526000613e25602083018461548f565b6000602082840312156154e057600080fd5b5035919050565b600080604083850312156154fa57600080fd5b823561550581615324565b946020939093013593505050565b60006020828403121561552557600080fd5b8135613e2581615324565b60008060006060848603121561554557600080fd5b833561555081615324565b9250602084013561556081615324565b929592945050506040919091013590565b6000806040838503121561558457600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156155e4578351835292840192918401916001016155c8565b50909695505050505050565b600067ffffffffffffffff83111561560a5761560a61537e565b61561d601f8401601f1916602001615394565b905082815283838301111561563157600080fd5b828260208301376000602084830101529392505050565b60006020828403121561565a57600080fd5b813567ffffffffffffffff81111561567157600080fd5b8201601f8101841361568257600080fd5b6143c4848235602084016155f0565b6000806000604084860312156156a657600080fd5b833567ffffffffffffffff808211156156be57600080fd5b818601915086601f8301126156d257600080fd5b8135818111156156e157600080fd5b8760208260051b85010111156156f657600080fd5b6020928301955093505084013561570c816152f9565b809150509250925092565b6000806040838503121561572a57600080fd5b823561573581615324565b91506020830135615373816152f9565b6000806000806080858703121561575b57600080fd5b843561576681615324565b9350602085013561577681615324565b925060408501359150606085013567ffffffffffffffff81111561579957600080fd5b8501601f810187136157aa57600080fd5b6157b9878235602084016155f0565b91505092959194509250565b600080604083850312156157d857600080fd5b82356157e381615324565b9150602083013561537381615324565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561585057600080fd5b815160ff81168114613e2557600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156158b257816000190482111561589857615898615861565b808516156158a557918102915b93841c939080029061587c565b509250929050565b6000826158c957506001611127565b816158d657506000611127565b81600181146158ec57600281146158f657615912565b6001915050611127565b60ff84111561590757615907615861565b50506001821b611127565b5060208310610133831016604e8410600b8410161715615935575081810a611127565b61593f8383615877565b806000190482111561595357615953615861565b029392505050565b6000613e2560ff8416836158ba565b600081600019048311821515161561598457615984615861565b500290565b8082018082111561112757611127615861565b6000600182016159ae576159ae615861565b5060010190565b6000602082840312156159c757600080fd5b5051919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615a0457600080fd5b8151613e25816152f9565b634e487b7160e01b600052601260045260246000fd5b600082615a3457615a34615a0f565b500490565b606081526000615a4c606083018661548f565b8460208401528281036040840152615a64818561548f565b9695505050505050565b8181038181111561112757611127615861565b600181811c90821680615a9557607f821691505b602082108103615ab557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b601f821115611b5557600081815260208120601f850160051c81016020861015615b335750805b601f850160051c820191505b8181101561470d57828155600101615b3f565b815167ffffffffffffffff811115615b6c57615b6c61537e565b615b8081615b7a8454615a81565b84615b0c565b602080601f831160018114615bb55760008415615b9d5750858301515b600019600386901b1c1916600185901b17855561470d565b600085815260208120601f198616915b82811015615be457888601518255948401946001909101908401615bc5565b5085821015615c025787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600080600080600080600080610100898b031215615c2f57600080fd5b8851615c3a81615324565b809850506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915060e089015190509295985092959890939650565b600084516020615c8f8285838a0161546b565b855191840191615ca28184848a0161546b565b8554920191600090615cb381615a81565b60018281168015615ccb5760018114615ce057615d0c565b60ff1984168752821515830287019450615d0c565b896000528560002060005b84811015615d0457815489820152908301908701615ceb565b505082870194505b50929a9950505050505050505050565b600060208284031215615d2e57600080fd5b8151613e2581615324565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015615d895784516001600160a01b031683529383019391830191600101615d64565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215615dbf57600080fd5b8351925060208401519150604084015190509250925092565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600082615e3957615e39615a0f565b500690565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615a649083018461548f565b600060208284031215615e8357600080fd5b8151613e25816152c6565b634e487b7160e01b600052603160045260246000fdfea26469706673582212200a9605e5a1c080f79916bb9d0cb789c648d17302b60f9bdb240dc2c420549f7c64736f6c6343000810003360a060405234801561001057600080fd5b5060405161194a38038061194a83398101604081905261002f916100b7565b61003833610067565b60016010819055608052600280546001600160a01b0319166001600160a01b03929092169190911790556100e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100c957600080fd5b81516001600160a01b03811681146100e057600080fd5b9392505050565b608051611841610109600039600081816104b60152610ae701526118416000f3fe6080604052600436106101c65760003560e01c8063a8b9d240116100f7578063c0f306ef11610095578063f2fde38b11610064578063f2fde38b14610543578063fbcbc0f114610563578063fc0c546a14610583578063ffb2c479146105a357600080fd5b8063c0f306ef146104d8578063e30443bc146104f8578063e7841ec014610518578063f2e65d6f1461052d57600080fd5b8063ad7a672f116100d1578063ad7a672f14610459578063b51312911461046f578063bc4c4b3714610484578063be10b614146104a457600080fd5b8063a8b9d240146103d6578063aafd847a146103f6578063ab6ddfa81461042c57600080fd5b80635183d6fd11610164578063715018a61161013e578063715018a61461035957806385a6b3ae1461036e5780638da5cb5b1461038457806391b89fba146103b657600080fd5b80635183d6fd146102c95780636a4740021461032e5780636f2789ec1461034357600080fd5b806327ce0147116101a057806327ce0147146102335780633009a6091461025357806331e79db0146102695780634e7b827f1461028957600080fd5b806303c83302146101da57806309bbedde146101e2578063226cfa3d1461020657600080fd5b366101d5576101d36105de565b005b600080fd5b6101d36105de565b3480156101ee57600080fd5b506009545b6040519081526020015b60405180910390f35b34801561021257600080fd5b506101f361022136600461159f565b600f6020526000908152604090205481565b34801561023f57600080fd5b506101f361024e36600461159f565b610653565b34801561025f57600080fd5b506101f3600d5481565b34801561027557600080fd5b506101d361028436600461159f565b6106b6565b34801561029557600080fd5b506102b96102a436600461159f565b600e6020526000908152604090205460ff1681565b60405190151581526020016101fd565b3480156102d557600080fd5b506102e96102e43660046115bc565b61074e565b604080516001600160a01b0390991689526020890197909752958701949094526060860192909252608085015260a084015260c083015260e0820152610100016101fd565b34801561033a57600080fd5b506101d36107bb565b34801561034f57600080fd5b506101f360105481565b34801561036557600080fd5b506101d36107c7565b34801561037a57600080fd5b506101f360075481565b34801561039057600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101fd565b3480156103c257600080fd5b506101f36103d136600461159f565b6107fb565b3480156103e257600080fd5b506101f36103f136600461159f565b610802565b34801561040257600080fd5b506101f361041136600461159f565b6001600160a01b031660009081526004602052604090205490565b34801561043857600080fd5b506101f361044736600461159f565b60056020526000908152604090205481565b34801561046557600080fd5b506101f360065481565b34801561047b57600080fd5b506101d361082e565b34801561049057600080fd5b506102b961049f3660046115e3565b610957565b3480156104b057600080fd5b506101f37f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e457600080fd5b506101d36104f336600461159f565b610a03565b34801561050457600080fd5b506101d361051336600461161c565b610a9b565b34801561052457600080fd5b50600d546101f3565b34801561053957600080fd5b506101f360085481565b34801561054f57600080fd5b506101d361055e36600461159f565b610b49565b34801561056f57600080fd5b506102e961057e36600461159f565b610be1565b34801561058f57600080fd5b5060025461039e906001600160a01b031681565b3480156105af57600080fd5b506105c36105be3660046115bc565b610cc8565b604080519384526020840192909252908201526060016101fd565b60405162461bcd60e51b815260206004820152603a60248201527f43616e6e6f742073656e6420424e42206469726563746c7920746f207472616360448201527f6b657220617320697420697320756e7265636f76657261626c6500000000000060648201526084015b60405180910390fd5b565b6001600160a01b0381166000908152600360209081526040808320546005909252822054600154600160801b926106a6926106a19261069b916106969190610de5565b610e6e565b90610e7e565b610ebc565b6106b0919061165e565b92915050565b6000546001600160a01b031633146106e05760405162461bcd60e51b815260040161064890611680565b6001600160a01b0381166000908152600e60205260408120805460ff1916600117905561070e908290610ecf565b61071781610f68565b6040516001600160a01b038216907fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2590600090a250565b60008060008060008060008061076360095490565b89106107885750600096506000199550859450869350839250829150819050806107b0565b60006107938a61109b565b905061079e81610be1565b98509850985098509850985098509850505b919395975091939597565b6107c4336110ce565b50565b6000546001600160a01b031633146107f15760405162461bcd60e51b815260040161064890611680565b6106516000611264565b60006106b0825b6001600160a01b0381166000908152600460205260408120546106b09061082884610653565b906112b4565b60065415610651576002546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610883573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a791906116b5565b90508060085410156108c7576008546108c090826116ce565b91506108cc565b600091505b8115610953576006546108fa906108e784600160801b610de5565b6108f1919061165e565b600154906112f6565b60015560405182815233907fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d784541165119060200160405180910390a260075461093f90836112f6565b60075560085461094f90836112f6565b6008555b5050565b600080546001600160a01b031633146109825760405162461bcd60e51b815260040161064890611680565b600061098d846110ce565b905080156109f9576001600160a01b0384166000818152600f6020526040908190204290555184151591907fa2c38e2d2fb7e3e1912d937fd1ca11ed6d51864dee4cfa7a7bf02becd7acf092906109e79085815260200190565b60405180910390a360019150506106b0565b5060009392505050565b6000546001600160a01b03163314610a2d5760405162461bcd60e51b815260040161064890611680565b6001600160a01b0381166000908152600e602052604090205460ff16610a5257600080fd5b6001600160a01b0381166000818152600e6020526040808220805460ff19169055517f40a78dcf8526b72f2eaf598af1c7e49c8d5fc577f6c8f1bed887f3e4dfa289329190a250565b6000546001600160a01b03163314610ac55760405162461bcd60e51b815260040161064890611680565b6001600160a01b0382166000908152600e602052604090205460ff16610953577f00000000000000000000000000000000000000000000000000000000000000008110610b2557610b168282610ecf565b610b208282611355565b610b39565b610b30826000610ecf565b610b3982610f68565b610b44826001610957565b505050565b6000546001600160a01b03163314610b735760405162461bcd60e51b815260040161064890611680565b6001600160a01b038116610bd85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610648565b6107c481611264565b806000808080808080610bf388611413565b9650600019955060008712610c5557600d54871115610c2157600d54610c1a908890611458565b9550610c55565b600d5460095460009110610c36576000610c45565b600d54600954610c45916112b4565b9050610c518882610e7e565b9650505b610c5e88610802565b9450610c6988610653565b6001600160a01b0389166000908152600f6020526040902054909450925082610c93576000610ca1565b601054610ca19084906112f6565b9150428211610cb1576000610cbb565b610cbb82426112b4565b9050919395975091939597565b60095460009081908190808203610cea575050600d5460009250829150610dde565b600d546000805a90506000805b8984108015610d0557508582105b15610dcd5784610d14816116e1565b60095490965086109050610d2757600094505b600060096000018681548110610d3f57610d3f6116fa565b60009182526020808320909101546001600160a01b0316808352600f909152604090912054909150610d7090611495565b15610d9357610d80816001610957565b15610d935781610d8f816116e1565b9250505b82610d9d816116e1565b93505060005a905080851115610dc457610dc1610dba86836112b4565b87906112f6565b95505b9350610cf79050565b600d85905590975095509193505050505b9193909250565b600082600003610df7575060006106b0565b6000610e038385611710565b905082610e10858361165e565b14610e675760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610648565b9392505050565b600081818112156106b057600080fd5b600080610e8b838561172f565b905060008312158015610e9e5750838112155b80610eb35750600083128015610eb357508381125b610e6757600080fd5b600080821215610ecb57600080fd5b5090565b6001600160a01b038216600090815260056020526040902080549082905580821115610f2b576000610f0183836112b4565b9050610f0d84826114bc565b8060066000828254610f1f9190611757565b90915550610b44915050565b80821015610b44576000610f3f82846112b4565b9050610f4b8482611516565b8060066000828254610f5d91906116ce565b909155505050505050565b6001600160a01b0381166000908152600c602052604090205460ff16610f8b5750565b6001600160a01b0381166000908152600c60209081526040808320805460ff19169055600a8252808320839055600b909152812054600954909190610fd2906001906116ce565b9050600060096000018281548110610fec57610fec6116fa565b60009182526020808320909101546001600160a01b03908116808452600b9092526040808420879055908716835282209190915560098054919250829185908110611039576110396116fa565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905560098054806110735761107361176a565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000600960000182815481106110b3576110b36116fa565b6000918252602090912001546001600160a01b031692915050565b6000806110da83610802565b9050801561125b576001600160a01b03831660009081526004602052604090205461110590826112f6565b6001600160a01b038416600090815260046020526040902055600854811161114457806008600082825461113991906116ce565b9091555061114a9050565b60006008555b826001600160a01b03167fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d8260405161118591815260200190565b60405180910390a260025460405163a9059cbb60e01b81526001600160a01b03858116600483015260248201849052600092169063a9059cbb906044016020604051808303816000875af11580156111e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112059190611780565b905080611254576001600160a01b03841660009081526004602052604090205461122f90836112b4565b6001600160a01b03909416600090815260046020526040812094909455509192915050565b5092915050565b50600092915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610e6783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611550565b6000806113038385611757565b905083811015610e675760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610648565b6001600160a01b0382166000908152600c602052604090205460ff1615611393576001600160a01b03919091166000908152600a6020526040902055565b6001600160a01b0382166000818152600c60209081526040808320805460ff19166001908117909155600a835281842086905560098054600b909452918420839055820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b03191690911790555050565b6001600160a01b0381166000908152600c602052604081205460ff1661143c5750600019919050565b506001600160a01b03166000908152600b602052604090205490565b600080611465838561179d565b9050600083121580156114785750838113155b80610eb35750600083128015610eb35750838113610e6757600080fd5b6000428211156114a757506000919050565b6010546114b442846112b4565b101592915050565b6114f66114d761069683600154610de590919063ffffffff16565b6001600160a01b03841660009081526003602052604090205490611458565b6001600160a01b0390921660009081526003602052604090209190915550565b6114f661153161069683600154610de590919063ffffffff16565b6001600160a01b03841660009081526003602052604090205490610e7e565b600081848411156115745760405162461bcd60e51b815260040161064891906117bd565b50600061158184866116ce565b95945050505050565b6001600160a01b03811681146107c457600080fd5b6000602082840312156115b157600080fd5b8135610e678161158a565b6000602082840312156115ce57600080fd5b5035919050565b80151581146107c457600080fd5b600080604083850312156115f657600080fd5b82356116018161158a565b91506020830135611611816115d5565b809150509250929050565b6000806040838503121561162f57600080fd5b823561163a8161158a565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b60008261167b57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156116c757600080fd5b5051919050565b818103818111156106b0576106b0611648565b6000600182016116f3576116f3611648565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600081600019048311821515161561172a5761172a611648565b500290565b808201828112600083128015821682158216171561174f5761174f611648565b505092915050565b808201808211156106b0576106b0611648565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561179257600080fd5b8151610e67816115d5565b818103600083128015838313168383128216171561125457611254611648565b600060208083528351808285015260005b818110156117ea578581018301518582016040015282016117ce565b506000604082860101526040601f19601f830116850101925050509291505056fea26469706673582212204c375670a5b0354c1056b0a17b848bae2489b9b5e879eb998b82c04bb27a1a2364736f6c634300081000334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572