[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "address", "name": "_depositToken", "type": "address" }, { "internalType": "address", "name": "_rewardToken", "type": "address" }, { "internalType": "address", "name": "_stakingContract", "type": "address" }, { "internalType": "address", "name": "_router", "type": "address" }, { "internalType": "address", "name": "_timelock", "type": "address" }, { "internalType": "uint256", "name": "_pid", "type": "uint256" }, { "internalType": "uint256", "name": "_minTokensToReinvest", "type": "uint256" }, { "internalType": "uint256", "name": "_adminFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "_devFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "_reinvestRewardBips", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "AllowDepositor", "type": "event" }, { "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": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "newValue", "type": "bool" } ], "name": "DepositsEnabled", "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": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Recovered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newTotalDeposits", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newTotalSupply", "type": "uint256" } ], "name": "Reinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "RemoveDepositor", "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": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateAdminFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldValue", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newValue", "type": "address" } ], "name": "UpdateDevAddr", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateDevFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateMaxTokensToDepositWithoutReinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateMinTokensToReinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateReinvestReward", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [], "name": "ADMIN_FEE_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEPOSITS_ENABLED", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEV_FEE_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_TOKENS_TO_DEPOSIT_WITHOUT_REINVEST", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MIN_TOKENS_TO_REINVEST", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PID", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "REINVEST_REWARD_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VERSION_HASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "depositor", "type": "address" } ], "name": "allowDepositor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "allowedDepositors", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "checkReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "depositFor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "depositToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "depositWithPermit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "devAddr", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "estimateDeployedBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "estimateReinvestReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getDepositTokensForShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDomainSeparator", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getSharesForDepositTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numberOfAllowedDepositors", "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": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "recoverAVAX", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "recoverERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "depositor", "type": "address" } ], "name": "removeDepositor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "minReturnAmountAccepted", "type": "uint256" }, { "internalType": "bool", "name": "disableDeposits", "type": "bool" } ], "name": "rescueDeployedFunds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "revokeAllowance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "router", "outputs": [ { "internalType": "contract IRouter", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "setAllowances", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stakingContract", "outputs": [ { "internalType": "contract IPenguinChef", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalDeposits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "src", "type": "address" }, { "internalType": "address", "name": "dst", "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": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateAdminFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "newValue", "type": "bool" } ], "name": "updateDepositsEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newValue", "type": "address" } ], "name": "updateDevAddr", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateDevFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateMaxTokensToDepositWithoutReinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateMinTokensToReinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateReinvestReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60c060405260096080819052685969656c642059616b60b81b60a09081526200002c916000919062000bd2565b506040805180820190915260038082526216549560ea1b6020909201918252620000599160019162000bd2565b503480156200006757600080fd5b5060405162004e7d38038062004e7d83398181016040526101608110156200008e57600080fd5b8101908080516040519392919084640100000000821115620000af57600080fd5b908301906020820185811115620000c557600080fd5b8251640100000000811182820188101715620000e057600080fd5b82525081516020918201929091019080838360005b838110156200010f578181015183820152602001620000f5565b50505050905090810190601f1680156200013d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c086015160e087015161010088015161012089015161014090990151979a509598509396929591949093929091600062000195620002db565b600680546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062004e5d833981519152908290a3508a51620001e79060009060208e019062000bd2565b50600a80546001600160a01b03808d166001600160a01b031992831617909255600b80548c8416908316179055601480548b841690831617905560138054928a16928216929092179091556015869055600c8054909116331790556200024c620002df565b62000257846200064f565b6200026283620006f9565b6200026d82620007e9565b6200027881620008c5565b620002846001620009a1565b6200028f8662000a67565b604080516000808252602082015281517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234929181900390910190a1505050505050505050505062000c6e565b3390565b620002e9620002db565b6001600160a01b0316620002fc62000b61565b6001600160a01b03161462000347576040805162461bcd60e51b8152602060048201819052602482015260008051602062004e3d833981519152604482015290519081900360640190fd5b600a546014546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b158015620003a257600080fd5b505af1158015620003b7573d6000803e3d6000fd5b505050506040513d6020811015620003ce57600080fd5b5050600b546013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156200042b57600080fd5b505af115801562000440573d6000803e3d6000fd5b505050506040513d60208110156200045757600080fd5b5050600a5460408051630dfe168160e01b815290516001600160a01b0390921691630dfe168191600480820192602092909190829003018186803b1580156200049f57600080fd5b505afa158015620004b4573d6000803e3d6000fd5b505050506040513d6020811015620004cb57600080fd5b50516013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156200052557600080fd5b505af11580156200053a573d6000803e3d6000fd5b505050506040513d60208110156200055157600080fd5b5050600a546040805163d21220a760e01b815290516001600160a01b039092169163d21220a791600480820192602092909190829003018186803b1580156200059957600080fd5b505afa158015620005ae573d6000803e3d6000fd5b505050506040513d6020811015620005c557600080fd5b50516013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156200061f57600080fd5b505af115801562000634573d6000803e3d6000fd5b505050506040513d60208110156200064b57600080fd5b5050565b62000659620002db565b6001600160a01b03166200066c62000b61565b6001600160a01b031614620006b7576040805162461bcd60e51b8152602060048201819052602482015260008051602062004e3d833981519152604482015290519081900360640190fd5b600d54604080519182526020820183905280517f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef8499011009281900390910190a1600d55565b62000703620002db565b6001600160a01b03166200071662000b61565b6001600160a01b03161462000761576040805162461bcd60e51b8152602060048201819052602482015260008051602062004e3d833981519152604482015290519081900360640190fd5b6127106200079b601054620007876012548562000b7060201b620027621790919060201c565b62000b7060201b620027621790919060201c565b1115620007a757600080fd5b601154604080519182526020820183905280517f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a9281900390910190a1601155565b620007f3620002db565b6001600160a01b03166200080662000b61565b6001600160a01b03161462000851576040805162461bcd60e51b8152602060048201819052602482015260008051602062004e3d833981519152604482015290519081900360640190fd5b61271062000877601054620007876011548562000b7060201b620027621790919060201c565b11156200088357600080fd5b601254604080519182526020820183905280517f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d6517261319281900390910190a1601255565b620008cf620002db565b6001600160a01b0316620008e262000b61565b6001600160a01b0316146200092d576040805162461bcd60e51b8152602060048201819052602482015260008051602062004e3d833981519152604482015290519081900360640190fd5b61271062000953601254620007876011548562000b7060201b620027621790919060201c565b11156200095f57600080fd5b601054604080519182526020820183905280517fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f29281900390910190a1601055565b620009ab620002db565b6001600160a01b0316620009be62000b61565b6001600160a01b03161462000a09576040805162461bcd60e51b8152602060048201819052602482015260008051602062004e3d833981519152604482015290519081900360640190fd5b600f5460ff161515811515141562000a2057600080fd5b600f805482151560ff19909116811790915560408051918252517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859181900360200190a150565b62000a71620002db565b6001600160a01b031662000a8462000b61565b6001600160a01b03161462000acf576040805162461bcd60e51b8152602060048201819052602482015260008051602062004e3d833981519152604482015290519081900360640190fd5b6001600160a01b03811662000b165760405162461bcd60e51b815260040180806020018281038252602681526020018062004e176026913960400191505060405180910390fd5b6006546040516001600160a01b0380841692169060008051602062004e5d83398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031690565b60008282018381101562000bcb576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000c1557805160ff191683800117855562000c45565b8280016001018555821562000c45579182015b8281111562000c4557825182559160200191906001019062000c28565b5062000c5392915062000c57565b5090565b5b8082111562000c53576000815560010162000c58565b6141998062000c7e6000396000f3fe608060405234801561001057600080fd5b50600436106103835760003560e01c80638b73e606116101de578063c89039c51161010f578063e21ac825116100ad578063f2fde38b1161007c578063f2fde38b1461093c578063f7c618c114610962578063f887ea401461096a578063fdb5a03e1461097257610383565b8063e21ac825146108f2578063eab89a5a1461090f578063ed24911d1461092c578063ee99205c1461093457610383565b8063da09c72c116100e9578063da09c72c14610897578063dbd9a4d41461089f578063dd62ed3e146108a7578063dd8ce4d6146108d557610383565b8063c89039c514610821578063cff1b6ef14610829578063d505accf1461084657610383565b8063a9059cbb1161017c578063b6b55f2511610156578063b6b55f25146107ec578063b9e57b8014610809578063bd079f5514610811578063c4b24a461461081957610383565b8063a9059cbb14610793578063ac0d31ff146107bf578063b52a321f146107e457610383565b806395d89b41116101b857806395d89b411461074957806399729ec1146107515780639e4e73181461076e578063a8ae2b7c1461077657610383565b80638b73e606146106d95780638da5cb5b146106ff5780639291d5631461072357610383565b80634bebd1e7116102b8578063789139bc116102565780637ecebe00116102305780637ecebe001461066257806381837230146106885780638980f11f146106a55780638aff733d146106d157610383565b8063789139bc146106245780637ae267731461062c5780637d8820971461065a57610383565b80635ea682ea116102925780635ea682ea146105e65780635eaec0e4146105ee57806370a08231146105f6578063715018a61461061c57610383565b80634bebd1e7146105845780634e77ace5146105aa5780634ebb7916146105c957610383565b80632e1a7d4d11610325578063313ce567116102ff578063313ce567146105005780633bdc6e721461051e578063483c2ef0146105265780634a970be71461054c57610383565b80632e1a7d4d146104ad5780632f4f21e2146104cc57806330adf81f146104f857610383565b80630f23475d116103615780630f23475d1461045f57806318160ddd1461046757806320606b701461046f57806323b872dd1461047757610383565b806306fdde03146103885780630767711114610405578063095ea7b31461041f575b600080fd5b61039061097a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ca5781810151838201526020016103b2565b50505050905090810190601f1680156103f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61040d610a08565b60408051918252519081900360200190f35b61044b6004803603604081101561043557600080fd5b506001600160a01b038135169060200135610a0e565b604080519115158252519081900360200190f35b61040d610a25565b61040d610b5d565b61040d610b63565b61044b6004803603606081101561048d57600080fd5b506001600160a01b03813581169160208101359091169060400135610b87565b6104ca600480360360208110156104c357600080fd5b5035610c69565b005b6104ca600480360360408110156104e257600080fd5b506001600160a01b038135169060200135610e54565b61040d610e5e565b610508610e82565b6040805160ff9092168252519081900360200190f35b61040d610e87565b61044b6004803603602081101561053c57600080fd5b50356001600160a01b0316610e8d565b6104ca600480360360a081101561056257600080fd5b5080359060208101359060ff6040820135169060608101359060800135610ea2565b6104ca6004803603602081101561059a57600080fd5b50356001600160a01b0316610f42565b6104ca600480360360208110156105c057600080fd5b5035151561107e565b6104ca600480360360208110156105df57600080fd5b503561113d565b61040d611219565b61040d61121f565b61040d6004803603602081101561060c57600080fd5b50356001600160a01b0316611225565b6104ca611244565b61040d6112f0565b6104ca6004803603604081101561064257600080fd5b506001600160a01b03813581169160200135166112f6565b61040d6113e5565b61040d6004803603602081101561067857600080fd5b50356001600160a01b03166113eb565b6104ca6004803603602081101561069e57600080fd5b50356113fd565b6104ca600480360360408110156106bb57600080fd5b506001600160a01b0381351690602001356114a1565b61040d6115dc565b6104ca600480360360208110156106ef57600080fd5b50356001600160a01b03166115e2565b610707611749565b604080516001600160a01b039092168252519081900360200190f35b6104ca6004803603602081101561073957600080fd5b50356001600160a01b0316611758565b6103906117d9565b6104ca6004803603602081101561076757600080fd5b5035611833565b61040d611906565b6104ca6004803603602081101561078c57600080fd5b503561192a565b61044b600480360360408110156107a957600080fd5b506001600160a01b0381351690602001356119f7565b6104ca600480360360408110156107d557600080fd5b50803590602001351515611a04565b61044b611c7c565b6104ca6004803603602081101561080257600080fd5b5035611c85565b61040d611c92565b61040d611cd3565b61040d611cd9565b610707611def565b6104ca6004803603602081101561083f57600080fd5b5035611dfe565b6104ca600480360360e081101561085c57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611ecb565b610707611fbd565b6104ca611fcc565b61040d600480360360408110156108bd57600080fd5b506001600160a01b0381358116916020013516612320565b61040d600480360360208110156108eb57600080fd5b503561234b565b6104ca6004803603602081101561090857600080fd5b503561238a565b61040d6004803603602081101561092557600080fd5b503561242e565b61040d61246e565b61070761257b565b6104ca6004803603602081101561095257600080fd5b50356001600160a01b031661258a565b61070761268d565b61070761269c565b6104ca6126ab565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a005780601f106109d557610100808354040283529160200191610a00565b820191906000526020600020905b8154815290600101906020018083116109e357829003601f168201915b505050505081565b60115481565b6000610a1b3384846127c3565b5060015b92915050565b601454601554604080516393f1a40b60e01b81526004810192909252306024830152805160009384936001600160a01b03909116926393f1a40b92604480840193829003018186803b158015610a7a57600080fd5b505afa158015610a8e573d6000803e3d6000fd5b505050506040513d6040811015610aa457600080fd5b505160145460155460408051631526fe2760e01b81526004810192909252519293506000926001600160a01b0390921691631526fe279160248082019260a092909190829003018186803b158015610afb57600080fd5b505afa158015610b0f573d6000803e3d6000fd5b505050506040513d60a0811015610b2557600080fd5b506080015161ffff1690506000610b48612710610b4285856128db565b90612934565b9050610b548382612976565b93505050505b90565b60025481565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6001600160a01b038316600081815260036020908152604080832033808552925282205491929091908214801590610bc157506000198114155b15610c52576000610bed856040518060600160405280602f8152602001614090602f91398491906129b4565b6001600160a01b0380891660008181526003602090815260408083209489168084529482529182902085905581518581529151949550929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592918290030190a3505b610c5d868686612a4b565b50600195945050505050565b6000610c748261242e565b90508015610e5057610c8581612b58565b60145460155460408051631526fe2760e01b81526004810192909252516000926001600160a01b031691631526fe279160248083019260a0929190829003018186803b158015610cd457600080fd5b505afa158015610ce8573d6000803e3d6000fd5b505050506040513d60a0811015610cfe57600080fd5b506080015161ffff1690506000610d1b612710610b4285856128db565b600a549091506001600160a01b031663a9059cbb33610d3a8685612976565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610d8057600080fd5b505af1158015610d94573d6000803e3d6000fd5b505050506040513d6020811015610daa57600080fd5b5051610dfd576040805162461bcd60e51b815260206004820152601e60248201527f50656e6775696e5374726174656779466f724c503a3a77697468647261770000604482015290519081900360640190fd5b610e073385612c02565b600954610e149084612976565b60095560408051848152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a250505b5050565b610e508282612cd7565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60075481565b60086020526000908152604090205460ff1681565b600a546040805163d505accf60e01b8152336004820152306024820152604481018890526064810187905260ff8616608482015260a4810185905260c4810184905290516001600160a01b039092169163d505accf9160e48082019260009290919082900301818387803b158015610f1957600080fd5b505af1158015610f2d573d6000803e3d6000fd5b50505050610f3b3386612cd7565b5050505050565b610f4a612e59565b6001600160a01b0316610f5b611749565b6001600160a01b031614610fa4576040805162461bcd60e51b81526020600482018190526024820152600080516020614016833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff1615611012576040805162461bcd60e51b815260206004820152601c60248201527f5065726d697373696f6e65643a3a616c6c6f774465706f7369746f7200000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600860205260409020805460ff1916600190811790915560075461104491612762565b6007556040516001600160a01b038216907fc0a1035c16faf8d1304056d92c00edf028f87e62b8235a938f00af9e3c0312c590600090a250565b611086612e59565b6001600160a01b0316611097611749565b6001600160a01b0316146110e0576040805162461bcd60e51b81526020600482018190526024820152600080516020614016833981519152604482015290519081900360640190fd5b600f5460ff16151581151514156110f657600080fd5b600f805482151560ff19909116811790915560408051918252517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859181900360200190a150565b611145612e59565b6001600160a01b0316611156611749565b6001600160a01b03161461119f576040805162461bcd60e51b81526020600482018190526024820152600080516020614016833981519152604482015290519081900360640190fd5b600081116111ac57600080fd5b604051339082156108fc029083906000818181858888f193505050501580156111d9573d6000803e3d6000fd5b5060408051600081526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a150565b60125481565b60155481565b6001600160a01b0381166000908152600460205260409020545b919050565b61124c612e59565b6001600160a01b031661125d611749565b6001600160a01b0316146112a6576040805162461bcd60e51b81526020600482018190526024820152600080516020614016833981519152604482015290519081900360640190fd5b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b600e5481565b6112fe612e59565b6001600160a01b031661130f611749565b6001600160a01b031614611358576040805162461bcd60e51b81526020600482018190526024820152600080516020614016833981519152604482015290519081900360640190fd5b816001600160a01b031663095ea7b38260006040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156113b057600080fd5b505af11580156113c4573d6000803e3d6000fd5b505050506040513d60208110156113da57600080fd5b5051610e5057600080fd5b60095481565b60056020526000908152604090205481565b611405612e59565b6001600160a01b0316611416611749565b6001600160a01b03161461145f576040805162461bcd60e51b81526020600482018190526024820152600080516020614016833981519152604482015290519081900360640190fd5b600d54604080519182526020820183905280517f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef8499011009281900390910190a1600d55565b6114a9612e59565b6001600160a01b03166114ba611749565b6001600160a01b031614611503576040805162461bcd60e51b81526020600482018190526024820152600080516020614016833981519152604482015290519081900360640190fd5b6000811161151057600080fd5b6040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b0384169163a9059cbb9160448083019260209291908290030181600087803b15801561155f57600080fd5b505af1158015611573573d6000803e3d6000fd5b505050506040513d602081101561158957600080fd5b505161159457600080fd5b604080516001600160a01b03841681526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a15050565b60105481565b6115ea612e59565b6001600160a01b03166115fb611749565b6001600160a01b031614611644576040805162461bcd60e51b81526020600482018190526024820152600080516020614016833981519152604482015290519081900360640190fd5b6000600754116116855760405162461bcd60e51b8152600401808060200182810382526034815260200180613ee76034913960400191505060405180910390fd5b6001600160a01b03811660009081526008602052604090205460ff1615156001146116e15760405162461bcd60e51b815260040180806020018281038252602a815260200180613fa4602a913960400191505060405180910390fd5b6001600160a01b0381166000908152600860205260409020805460ff1916905560075461170f906001612976565b6007556040516001600160a01b038216907f0e86f6608b536e5339a25b65ff531f5ea91e1313d056ecd4752b35cbd16137d490600090a250565b6006546001600160a01b031690565b600c546001600160a01b0316331461176f57600080fd5b600c54604080516001600160a01b039283168152918316602083015280517fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c009281900390910190a1600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a005780601f106109d557610100808354040283529160200191610a00565b61183b612e59565b6001600160a01b031661184c611749565b6001600160a01b031614611895576040805162461bcd60e51b81526020600482018190526024820152600080516020614016833981519152604482015290519081900360640190fd5b6127106118b96010546118b36011548561276290919063ffffffff16565b90612762565b11156118c457600080fd5b601254604080519182526020820183905280517f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d6517261319281900390910190a1601255565b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b611932612e59565b6001600160a01b0316611943611749565b6001600160a01b03161461198c576040805162461bcd60e51b81526020600482018190526024820152600080516020614016833981519152604482015290519081900360640190fd5b6127106119aa6012546118b36011548561276290919063ffffffff16565b11156119b557600080fd5b601054604080519182526020820183905280517fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f29281900390910190a1601055565b6000610a1b338484612a4b565b611a0c612e59565b6001600160a01b0316611a1d611749565b6001600160a01b031614611a66576040805162461bcd60e51b81526020600482018190526024820152600080516020614016833981519152604482015290519081900360640190fd5b600a54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611ab157600080fd5b505afa158015611ac5573d6000803e3d6000fd5b505050506040513d6020811015611adb57600080fd5b505160145460155460408051632989754760e11b81526004810192909252519293506001600160a01b0390911691635312ea8e9160248082019260009290919082900301818387803b158015611b3057600080fd5b505af1158015611b44573d6000803e3d6000fd5b5050600a54604080516370a0823160e01b81523060048201529051600094506001600160a01b0390921692506370a08231916024808301926020929190829003018186803b158015611b9557600080fd5b505afa158015611ba9573d6000803e3d6000fd5b505050506040513d6020811015611bbf57600080fd5b5051905083611bce8284612976565b1015611c0b5760405162461bcd60e51b8152600401808060200182810382526029815260200180613e746029913960400191505060405180910390fd5b600981905560025460408051838152602081019290925280517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2349281900390910190a1600f5460ff1615156001148015611c6757506001831515145b15611c7657611c76600061107e565b50505050565b600f5460ff1681565b611c8f3382612cd7565b50565b600080611c9d611cd9565b9050600d548110611ccb57611cc3612710610b42601054846128db90919063ffffffff16565b915050610b5a565b600091505090565b600d5481565b601454601554604080516362d3d03f60e01b815260048101929092523060248301525160009283926001600160a01b03909116916362d3d03f91604480820192602092909190829003018186803b158015611d3357600080fd5b505afa158015611d47573d6000803e3d6000fd5b505050506040513d6020811015611d5d57600080fd5b5051600b54604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611db057600080fd5b505afa158015611dc4573d6000803e3d6000fd5b505050506040513d6020811015611dda57600080fd5b50519050611de88282612762565b9250505090565b600a546001600160a01b031681565b611e06612e59565b6001600160a01b0316611e17611749565b6001600160a01b031614611e60576040805162461bcd60e51b81526020600482018190526024820152600080516020614016833981519152604482015290519081900360640190fd5b612710611e7e6010546118b36012548561276290919063ffffffff16565b1115611e8957600080fd5b601154604080519182526020820183905280517f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a9281900390910190a1601155565b42841015611f12576040805162461bcd60e51b815260206004820152600f60248201526e1c195c9b5a5d0e8e995e1c1a5c9959608a1b604482015290519081900360640190fd5b6001600160a01b0380881660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938a1660608401526080830189905260a083019390935260c08083018890528151808403909101815260e090920190528051910120611fa88882868686612e5d565b611fb38888886127c3565b5050505050505050565b600c546001600160a01b031681565b611fd4612e59565b6001600160a01b0316611fe5611749565b6001600160a01b03161461202e576040805162461bcd60e51b81526020600482018190526024820152600080516020614016833981519152604482015290519081900360640190fd5b600a546014546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561208857600080fd5b505af115801561209c573d6000803e3d6000fd5b505050506040513d60208110156120b257600080fd5b5050600b546013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561210e57600080fd5b505af1158015612122573d6000803e3d6000fd5b505050506040513d602081101561213857600080fd5b5050600a5460408051630dfe168160e01b815290516001600160a01b0390921691630dfe168191600480820192602092909190829003018186803b15801561217f57600080fd5b505afa158015612193573d6000803e3d6000fd5b505050506040513d60208110156121a957600080fd5b50516013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561220257600080fd5b505af1158015612216573d6000803e3d6000fd5b505050506040513d602081101561222c57600080fd5b5050600a546040805163d21220a760e01b815290516001600160a01b039092169163d21220a791600480820192602092909190829003018186803b15801561227357600080fd5b505afa158015612287573d6000803e3d6000fd5b505050506040513d602081101561229d57600080fd5b50516013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156122f657600080fd5b505af115801561230a573d6000803e3d6000fd5b505050506040513d6020811015610e5057600080fd5b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b60006123646009546002546128db90919063ffffffff16565b61236f57508061123f565b610a1f600954610b42600254856128db90919063ffffffff16565b612392612e59565b6001600160a01b03166123a3611749565b6001600160a01b0316146123ec576040805162461bcd60e51b81526020600482018190526024820152600080516020614016833981519152604482015290519081900360640190fd5b600e54604080519182526020820183905280517fa5dae50539d56dfe1fb5273d883b0c39bc76750a25d036fc5fbd09ad8fd5f57f9281900390910190a1600e55565b60006124476009546002546128db90919063ffffffff16565b6124535750600061123f565b610a1f600254610b42600954856128db90919063ffffffff16565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b600060405180828054600181600116156101000203166002900480156124f15780601f106124cf5761010080835404028352918201916124f1565b820191906000526020600020905b8154815290600101906020018083116124dd575b505091505060405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660001b61252a612f7a565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b6014546001600160a01b031681565b612592612e59565b6001600160a01b03166125a3611749565b6001600160a01b0316146125ec576040805162461bcd60e51b81526020600482018190526024820152600080516020614016833981519152604482015290519081900360640190fd5b6001600160a01b0381166126315760405162461bcd60e51b8152600401808060200182810382526026815260200180613e9d6026913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b031681565b6013546001600160a01b031681565b3233146126f6576040805162461bcd60e51b815260206004820152601460248201527359616b53747261746567793a3a6f6e6c79454f4160601b604482015290519081900360640190fd5b6000612700611cd9565b9050600d54811015612759576040805162461bcd60e51b815260206004820152601e60248201527f50656e6775696e5374726174656779466f724c503a3a7265696e766573740000604482015290519081900360640190fd5b611c8f81612f7e565b6000828201838110156127bc576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03831661281e576040805162461bcd60e51b815260206004820152601c60248201527f5f617070726f76653a3a6f776e6572207a65726f206164647265737300000000604482015290519081900360640190fd5b6001600160a01b038216612879576040805162461bcd60e51b815260206004820152601e60248201527f5f617070726f76653a3a7370656e646572207a65726f20616464726573730000604482015290519081900360640190fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000826128ea57506000610a1f565b828202828482816128f757fe5b04146127bc5760405162461bcd60e51b8152600401808060200182810382526021815260200180613ff56021913960400191505060405180910390fd5b60006127bc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061331f565b60006127bc83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152505b60008184841115612a435760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612a085781810151838201526020016129f0565b50505050905090810190601f168015612a355780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038216612a905760405162461bcd60e51b81526004018080602001828103825260348152602001806140366034913960400191505060405180910390fd5b612acd816040518060600160405280602e8152602001614136602e91396001600160a01b03861660009081526004602052604090205491906129b4565b6001600160a01b038085166000908152600460205260408082209390935590841681522054612afc9082612762565b6001600160a01b0380841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008111612b975760405162461bcd60e51b815260040180806020018281038252602c815260200180613f3f602c913960400191505060405180910390fd5b60145460155460408051630441a3e760e41b8152600481019290925260248201849052516001600160a01b039092169163441a3e709160448082019260009290919082900301818387803b158015612bee57600080fd5b505af1158015610f3b573d6000803e3d6000fd5b612c3f816040518060600160405280602781526020016140bf602791396001600160a01b03851660009081526004602052604090205491906129b4565b60046000846001600160a01b03166001600160a01b0316815260200190815260200160002081905550612c8f81604051806060016040528060278152602001613fce6027913960025491906129b4565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600f5460ff161515600114612d33576040805162461bcd60e51b815260206004820152601e60248201527f50656e6775696e5374726174656779466f724c503a3a5f6465706f7369740000604482015290519081900360640190fd5b600e5415612d5c576000612d45611cd9565b9050600e54811115612d5a57612d5a81612f7e565b505b600a54604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015612db657600080fd5b505af1158015612dca573d6000803e3d6000fd5b505050506040513d6020811015612de057600080fd5b5051612deb57600080fd5b612df481613384565b612e0682612e018361234b565b61341a565b600954612e139082612762565b6009556040805182815290516001600160a01b038416917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25050565b3390565b6000612e6761246e565b85604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612f00573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590612f365750866001600160a01b0316816001600160a01b0316145b612f715760405162461bcd60e51b8152600401808060200182810382526024815260200180613f1b6024913960400191505060405180910390fd5b50505050505050565b4690565b60145460155460408051631c57762b60e31b8152600481019290925260006024830181905290516001600160a01b039093169263e2bbb15892604480820193929182900301818387803b158015612fd457600080fd5b505af1158015612fe8573d6000803e3d6000fd5b505050506000613009612710610b42601254856128db90919063ffffffff16565b905080156130d157600b54600c546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b15801561306a57600080fd5b505af115801561307e573d6000803e3d6000fd5b505050506040513d602081101561309457600080fd5b50516130d15760405162461bcd60e51b8152600401808060200182810382526024815260200180613ec36024913960400191505060405180910390fd5b60006130ee612710610b42601154866128db90919063ffffffff16565b905080156131bd57600b546001600160a01b031663a9059cbb61310f611749565b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561315657600080fd5b505af115801561316a573d6000803e3d6000fd5b505050506040513d602081101561318057600080fd5b50516131bd5760405162461bcd60e51b815260040180806020018281038252602681526020018061406a6026913960400191505060405180910390fd5b60006131da612710610b42601054876128db90919063ffffffff16565b9050801561329d57600b546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561323657600080fd5b505af115801561324a573d6000803e3d6000fd5b505050506040513d602081101561326057600080fd5b505161329d5760405162461bcd60e51b815260040180806020018281038252602781526020018061410f6027913960400191505060405180910390fd5b60006132bd6132b8836132b286818a8a612976565b90612976565b6134a5565b90506132c881613384565b6009546132d59082612762565b600981905560025460408051928352602083019190915280517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2349281900390910190a15050505050565b6000818361336e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612a085781810151838201526020016129f0565b50600083858161337a57fe5b0495945050505050565b600081116133c35760405162461bcd60e51b81526004018080602001828103825260298152602001806140e66029913960400191505060405180910390fd5b60145460155460408051631c57762b60e31b8152600481019290925260248201849052516001600160a01b039092169163e2bbb1589160448082019260009290919082900301818387803b158015612bee57600080fd5b6002546134279082612762565b6002556001600160a01b03821660009081526004602052604090205461344d9082612762565b6001600160a01b03831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000806134b3836002612934565b9050600081116134f45760405162461bcd60e51b8152600401808060200182810382526039815260200180613f6b6039913960400191505060405180910390fd5b60408051600280825260608281019093529190828160200160208202803683375050600b5482519293506001600160a01b03169183915060009061353457fe5b6001600160a01b03928316602091820292909201810191909152600a5460408051630dfe168160e01b815290519190931692630dfe1681926004808301939192829003018186803b15801561358857600080fd5b505afa15801561359c573d6000803e3d6000fd5b505050506040513d60208110156135b257600080fd5b50518151829060019081106135c357fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060008390508160018403815181106135f757fe5b60200260200101516001600160a01b03168260008151811061361557fe5b60200260200101516001600160a01b031614613929576013546040805163d06ca61f60e01b815260048101878152602482019283528551604483015285516060946001600160a01b03169363d06ca61f938a938993909291606401906020808601910280838360005b8381101561369657818101518382015260200161367e565b50505050905001935050505060006040518083038186803b1580156136ba57600080fd5b505afa1580156136ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156136f757600080fd5b8101908080516040519392919084600160201b82111561371657600080fd5b90830190602082018581111561372b57600080fd5b82518660208202830111600160201b8211171561374757600080fd5b82525081516020918201928201910280838360005b8381101561377457818101518382015260200161375c565b5050505090500160405250505090508060018251038151811061379357fe5b60200260200101519150601360009054906101000a90046001600160a01b03166001600160a01b03166338ed173986848630426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561383657818101518382015260200161381e565b505050509050019650505050505050600060405180830381600087803b15801561385f57600080fd5b505af1158015613873573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561389c57600080fd5b8101908080516040519392919084600160201b8211156138bb57600080fd5b9083019060208201858111156138d057600080fd5b82518660208202830111600160201b821117156138ec57600080fd5b82525081516020918201928201910280838360005b83811015613919578181015183820152602001613901565b5050505090500160405250505050505b60408051600280825260608281019093529190828160200160208202803683370190505090508360008151811061395c57fe5b60200260200101518160008151811061397157fe5b6001600160a01b03928316602091820292909201810191909152600a546040805163d21220a760e01b81529051919093169263d21220a7926004808301939192829003018186803b1580156139c557600080fd5b505afa1580156139d9573d6000803e3d6000fd5b505050506040513d60208110156139ef57600080fd5b5051815182906001908110613a0057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506000869050816001840381518110613a3457fe5b60200260200101516001600160a01b031682600081518110613a5257fe5b60200260200101516001600160a01b031614613d66576013546040805163d06ca61f60e01b8152600481018a8152602482019283528551604483015285516060946001600160a01b03169363d06ca61f938d938993909291606401906020808601910280838360005b83811015613ad3578181015183820152602001613abb565b50505050905001935050505060006040518083038186803b158015613af757600080fd5b505afa158015613b0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613b3457600080fd5b8101908080516040519392919084600160201b821115613b5357600080fd5b908301906020820185811115613b6857600080fd5b82518660208202830111600160201b82111715613b8457600080fd5b82525081516020918201928201910280838360005b83811015613bb1578181015183820152602001613b99565b50505050905001604052505050905080600182510381518110613bd057fe5b60200260200101519150601360009054906101000a90046001600160a01b03166001600160a01b03166338ed173989848630426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613c73578181015183820152602001613c5b565b505050509050019650505050505050600060405180830381600087803b158015613c9c57600080fd5b505af1158015613cb0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613cd957600080fd5b8101908080516040519392919084600160201b821115613cf857600080fd5b908301906020820185811115613d0d57600080fd5b82518660208202830111600160201b82111715613d2957600080fd5b82525081516020918201928201910280838360005b83811015613d56578181015183820152602001613d3e565b5050505090500160405250505050505b60135485516000916001600160a01b03169063e8e337009088906000198b01908110613d8e57fe5b6020026020010151856001880381518110613da557fe5b6020026020010151888660008030426040518963ffffffff1660e01b815260040180896001600160a01b03168152602001886001600160a01b03168152602001878152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200198505050505050505050606060405180830381600087803b158015613e3657600080fd5b505af1158015613e4a573d6000803e3d6000fd5b505050506040513d6060811015613e6057600080fd5b50604001519a995050505050505050505056fe50656e6775696e5374726174656779466f724c503a3a7265736375654465706c6f79656446756e64734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737350656e6775696e5374726174656779466f724c503a3a5f7265696e766573742c206465765065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e6f20616c6c6f776564206465706f7369746f7273417263683a3a76616c69646174655369673a20696e76616c6964207369676e617475726550656e6775696e5374726174656779466f724c503a3a5f77697468647261774465706f736974546f6b656e7350656e6775696e5374726174656779466f724c503a3a5f636f6e76657274526577617264546f6b656e73546f4465706f736974546f6b656e735065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e6f7420616c6c6f7765645f6275726e3a206275726e20616d6f756e74206578636565647320746f74616c20737570706c79536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f206164647265737350656e6775696e5374726174656779466f724c503a3a5f7265696e766573742c2061646d696e7472616e7366657246726f6d3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655f6275726e3a206275726e20616d6f756e7420657863656564732066726f6d2062616c616e636550656e6775696e5374726174656779466f724c503a3a5f7374616b654465706f736974546f6b656e7350656e6775696e5374726174656779466f724c503a3a5f7265696e766573742c207265776172645f7472616e73666572546f6b656e733a207472616e7366657220657863656564732066726f6d2062616c616e6365a26469706673582212204b15231143b4f3b62043d669789c9092e70cfc6ee1d312e56af8f3a11f32b11164736f6c634300070300334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000000000000000000000000000000000000000000000000000000000001600000000000000000000000002656e72c5e07711e8d697c7b1009e31174c6df66000000000000000000000000e896cdeaac9615145c0ca09c8cd5c25bced6384c0000000000000000000000008ac8ed5839ba269be2619ffeb3507bab6275c257000000000000000000000000e54ca86531e17ef3616d22ca28b0d458b6c891060000000000000000000000008d36c5c6947adccd25ef49ea1aac2ceacfff0bd700000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000000185969656c642059616b3a2050474c20504546492d4c494e4b0000000000000000