[ { "inputs": [ { "internalType": "address", "name": "_stakingContract", "type": "address" }, { "internalType": "address", "name": "_pairTokenIn", "type": "address" }, { "components": [ { "internalType": "address", "name": "gasToken", "type": "address" }, { "internalType": "address[]", "name": "rewards", "type": "address[]" }, { "internalType": "address", "name": "simpleRouter", "type": "address" } ], "internalType": "struct BaseStrategy.BaseStrategySettings", "name": "_settings", "type": "tuple" }, { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "dev", "type": "address" }, { "internalType": "address", "name": "feeCollector", "type": "address" }, { "internalType": "address", "name": "depositToken", "type": "address" }, { "internalType": "address", "name": "rewardToken", "type": "address" }, { "internalType": "uint256", "name": "minTokensToReinvest", "type": "uint256" }, { "internalType": "uint256", "name": "devFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "reinvestRewardBips", "type": "uint256" } ], "internalType": "struct YakStrategyV3.StrategySettings", "name": "_strategySettings", "type": "tuple" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "rewardToken", "type": "address" } ], "name": "AddReward", "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": false, "internalType": "address", "name": "rewardToken", "type": "address" } ], "name": "RemoveReward", "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": "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": "address", "name": "oldValue", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newValue", "type": "address" } ], "name": "UpdateFeeCollector", "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": false, "internalType": "address", "name": "oldRouter", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newRouter", "type": "address" } ], "name": "UpdateRouter", "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": "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": "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": "_rewardToken", "type": "address" } ], "name": "addReward", "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": "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": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "calculateDepositFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "calculateWithdrawFee", "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": "disableDeposits", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "enableDeposits", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "estimateReinvestReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeCollector", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "getSupportedRewardsLength", "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": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pairTokenIn", "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": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "recoverERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "recoverGas", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_rewardToken", "type": "address" } ], "name": "removeReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_minReturnAmountAccepted", "type": "uint256" } ], "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": "simpleRouter", "outputs": [ { "internalType": "contract ISimpleRouter", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "stakingContract", "outputs": [ { "internalType": "contract IAPTFarm", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "supportedRewards", "outputs": [ { "internalType": "address", "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": "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": "address", "name": "newValue", "type": "address" } ], "name": "updateFeeCollector", "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": "address", "name": "_router", "type": "address" } ], "name": "updateRouter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6101c06040526009610180819052685969656c642059616b60b81b6101a09081526200002f916000919062000a27565b506040805180820190915260038082526216549560ea1b60209092019182526200005c9160019162000a27565b503480156200006a57600080fd5b50604051620055f5380380620055f58339810160408190526200008d9162000d3f565b600680546001600160a01b03191633908117909155604051839183918291908190600090600080516020620055d5833981519152908290a35080518051620000de9160009160209091019062000a27565b506080808201516001600160a01b0390811690915260a0808301519091169052600780546001600160a01b0319163317905560c081015162000120906200050c565b60e08101516200013090620005a9565b610100810151620001419062000665565b6060810151620001519062000721565b60408101516200016190620007d5565b6200016b62000889565b60208101516200017b906200092a565b5081516001600160a01b031660c0526020808301518051620001a292600d92019062000ab6565b506040820151600e80546001600160a01b0319166001600160a01b0390921691909117905560c08101516200022a5760405162461bcd60e51b815260206004820152602360248201527f4261736553747261746567793a3a496e76616c696420636f6e6669677572617460448201526234b7b760e91b60648201526084015b60405180910390fd5b60408051600080825260208201527fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234910160405180910390a15050600f80546001600160a01b0319166001600160a01b03868116918217909255608051604051630cfbb19b60e21b815292166004830152906333eec66c90602401602060405180830381865afa158015620002c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e9919062000e9a565b60e052600f54604080516305cc2d1d60e51b815290516001600160a01b039092169163b985a3a0916004808201926020929091908290030181865afa15801562000337573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035d919062000eb4565b6001600160a01b0316610120816001600160a01b0316815250506080516001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003de919062000eb4565b6001600160a01b0316610140816001600160a01b0316815250506080516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000439573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045f919062000eb4565b6001600160a01b03908116610160526101405184821691161480620004985750610160516001600160a01b0316836001600160a01b0316145b620004f65760405162461bcd60e51b815260206004820152602760248201527f4175746f506f6f6c53747261746567793a3a496e76616c696420636f6e6669676044820152663ab930ba34b7b760c91b606482015260840162000221565b50506001600160a01b0316610100525062000f3c565b6007546001600160a01b03163314620005685760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79446576000000000000000000000000604482015260640162000221565b60095460408051918252602082018390527f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100910160405180910390a1600955565b6007546001600160a01b03163314620006055760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79446576000000000000000000000000604482015260640162000221565b612710600b548262000618919062000ed9565b11156200062457600080fd5b600c5460408051918252602082018390527f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d651726131910160405180910390a1600c55565b6007546001600160a01b03163314620006c15760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79446576000000000000000000000000604482015260640162000221565b612710600c5482620006d4919062000ed9565b1115620006e057600080fd5b600b5460408051918252602082018390527fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2910160405180910390a1600b55565b6006546001600160a01b031633146200076c5760405162461bcd60e51b81526020600482018190526024820152600080516020620055b5833981519152604482015260640162000221565b600854604080516001600160a01b03928316815291831660208301527fcc882185e6edeeb762130016ea1faf3d7aa9c01b199bfd646f965b58ab741063910160405180910390a1600880546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b03163314620008205760405162461bcd60e51b81526020600482018190526024820152600080516020620055b5833981519152604482015260640162000221565b600754604080516001600160a01b03928316815291831660208301527fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c00910160405180910390a1600780546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b03163314620008d45760405162461bcd60e51b81526020600482018190526024820152600080516020620055b5833981519152604482015260640162000221565b600a5460ff1615620008e557600080fd5b600a805460ff191660019081179091556040519081527f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859060200160405180910390a1565b6006546001600160a01b03163314620009755760405162461bcd60e51b81526020600482018190526024820152600080516020620055b5833981519152604482015260640162000221565b6001600160a01b038116620009dc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000221565b6006546040516001600160a01b03808416921690600080516020620055d583398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b82805462000a359062000f00565b90600052602060002090601f01602090048101928262000a59576000855562000aa4565b82601f1062000a7457805160ff191683800117855562000aa4565b8280016001018555821562000aa4579182015b8281111562000aa457825182559160200191906001019062000a87565b5062000ab292915062000b0e565b5090565b82805482825590600052602060002090810192821562000aa4579160200282015b8281111562000aa457825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000ad7565b5b8082111562000ab2576000815560010162000b0f565b80516001600160a01b038116811462000b3d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171562000b7e5762000b7e62000b42565b60405290565b604051606081016001600160401b038111828210171562000b7e5762000b7e62000b42565b604051601f8201601f191681016001600160401b038111828210171562000bd45762000bd462000b42565b604052919050565b600082601f83011262000bee57600080fd5b81516001600160401b0381111562000c0a5762000c0a62000b42565b602062000c20601f8301601f1916820162000ba9565b828152858284870101111562000c3557600080fd5b60005b8381101562000c5557858101830151828201840152820162000c38565b8381111562000c675760008385840101525b5095945050505050565b6000610120828403121562000c8557600080fd5b62000c8f62000b58565b82519091506001600160401b0381111562000ca957600080fd5b62000cb78482850162000bdc565b82525062000cc86020830162000b25565b602082015262000cdb6040830162000b25565b604082015262000cee6060830162000b25565b606082015262000d016080830162000b25565b608082015262000d1460a0830162000b25565b60a082015260c082015160c082015260e082015160e082015261010080830151818301525092915050565b6000806000806080858703121562000d5657600080fd5b62000d618562000b25565b9350602062000d7281870162000b25565b60408701519094506001600160401b038082111562000d9057600080fd5b908701906060828a03121562000da557600080fd5b62000daf62000b84565b62000dba8362000b25565b8152838301518281111562000dce57600080fd5b8301601f81018b1362000de057600080fd5b80518381111562000df55762000df562000b42565b8060051b62000e0687820162000ba9565b918252828101870191878101908e84111562000e2157600080fd5b938801935b8385101562000e4a5762000e3a8562000b25565b8252938801939088019062000e26565b858901525062000e61925050506040840162000b25565b6040820152606089015190955092508083111562000e7e57600080fd5b505062000e8e8782880162000c71565b91505092959194509250565b60006020828403121562000ead57600080fd5b5051919050565b60006020828403121562000ec757600080fd5b62000ed28262000b25565b9392505050565b6000821982111562000efb57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c9082168062000f1557607f821691505b60208210810362000f3657634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e0516101005161012051610140516101605161452f620010866000396000505060006135a401526000612b5f015260008181610793015281816134a101528181613517015281816135ce015261364c0152600081816104d20152818161116a01528181612537015281816128cf01528181612a270152818161381101526138ab015260008181611ad3015281816131d701528181613206015261327b01526000818161082101528181611a3601528181611b3b01528181611c7a01528181612dad01528181612e1501528181613123015281816132a501528181613361015281816133c40152818161347701526134ef0152600081816106e701528181610a8301528181610b5601528181610ced01528181610d82015281816127600152818161298b0152818161361d015281816136d7015261378f015261452f6000f3fe608060405234801561001057600080fd5b506004361061038e5760003560e01c806399729ec1116101de578063c89039c51161010f578063e75ab045116100ad578063f2fde38b1161007c578063f2fde38b146107f6578063f6314d0714610809578063f7c618c11461081c578063fdb5a03e1461084357600080fd5b8063e75ab045146107b5578063eab89a5a146107c8578063ed24911d146107db578063ee99205c146107e357600080fd5b8063da09c72c116100e9578063da09c72c1461072f578063dd62ed3e14610742578063dd8ce4d61461077b578063e75223e81461078e57600080fd5b8063c89039c5146106e2578063d2c35ce814610709578063d505accf1461071c57600080fd5b8063b52a321f1161017c578063bd079f5511610156578063bd079f55146106ab578063c415b95c146106b4578063c4b24a46146106c7578063c851cc32146106cf57600080fd5b8063b52a321f14610683578063b6b55f2514610690578063b9e57b80146106a357600080fd5b8063a4d5e67c116101b8578063a4d5e67c14610642578063a8ae2b7c14610655578063a9059cbb14610668578063ac67e1af1461067b57600080fd5b806399729ec1146105f55780639c9b2e21146106085780639e4e73181461061b57600080fd5b80635ea682ea116102c35780637d882097116102615780638aff733d116102305780638aff733d146105ac5780638da5cb5b146105b55780639291d563146105da57806395d89b41146105ed57600080fd5b80637d8820971461055e5780637ecebe001461056657806381837230146105865780638980f11f1461059957600080fd5b806370a082311161029d57806370a0823114610507578063715018a6146105305780637897e7f6146105385780637ae267731461054b57600080fd5b80635ea682ea146104c45780635eaec0e4146104cd578063666d25b9146104f457600080fd5b8063258250da1161033057806330adf81f1161030a57806330adf81f14610468578063313ce5671461048f5780634a970be7146104a95780635e4c57a4146104bc57600080fd5b8063258250da146104385780632e1a7d4d146104405780632f4f21e21461045557600080fd5b806318160ddd1161036c57806318160ddd146103f557806320606b70146103fe57806323b872dd14610425578063247d284b146103d457600080fd5b806306fdde0314610393578063095ea7b3146103b157806311056035146103d4575b600080fd5b61039b61084b565b6040516103a89190613cbd565b60405180910390f35b6103c46103bf366004613d05565b6108d9565b60405190151581526020016103a8565b6103e76103e2366004613d31565b6108ef565b6040519081526020016103a8565b6103e760025481565b6103e77f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6103c4610433366004613d4a565b610900565b600d546103e7565b61045361044e366004613d31565b6109c9565b005b610453610463366004613d05565b610aef565b6103e77f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610497601281565b60405160ff90911681526020016103a8565b6104536104b7366004613da1565b610afd565b610453610bcb565b6103e7600c5481565b6103e77f000000000000000000000000000000000000000000000000000000000000000081565b610453610502366004613d31565b610c7b565b6103e7610515366004613de8565b6001600160a01b031660009081526004602052604090205490565b610453610efc565b610453610546366004613d31565b610fa0565b610453610559366004613e05565b611072565b6103e761113f565b6103e7610574366004613de8565b60056020526000908152604090205481565b610453610594366004613d31565b6111f6565b6104536105a7366004613d05565b611288565b6103e7600b5481565b6006546001600160a01b03165b6040516001600160a01b0390911681526020016103a8565b6104536105e8366004613de8565b61134a565b61039b61140d565b610453610603366004613d31565b61141a565b610453610616366004613de8565b6114c8565b6103e77fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b610453610650366004613de8565b611663565b610453610663366004613d31565b611866565b6103c4610676366004613d05565b611914565b610453611921565b600a546103c49060ff1681565b61045361069e366004613d31565b6119bc565b6103e76119c9565b6103e760095481565b6008546105c2906001600160a01b031681565b6103e7611a08565b6104536106dd366004613de8565b611d5d565b6105c27f000000000000000000000000000000000000000000000000000000000000000081565b610453610717366004613de8565b611e17565b61045361072a366004613e3e565b611eda565b6007546105c2906001600160a01b031681565b6103e7610750366004613e05565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6103e7610789366004613d31565b611fed565b6105c27f000000000000000000000000000000000000000000000000000000000000000081565b6105c26107c3366004613d31565b612033565b6103e76107d6366004613d31565b61205d565b6103e7612093565b600f546105c2906001600160a01b031681565b610453610804366004613de8565b612133565b600e546105c2906001600160a01b031681565b6105c27f000000000000000000000000000000000000000000000000000000000000000081565b610453612265565b6000805461085890613eac565b80601f016020809104026020016040519081016040528092919081815260200182805461088490613eac565b80156108d15780601f106108a6576101008083540402835291602001916108d1565b820191906000526020600020905b8154815290600101906020018083116108b457829003601f168201915b505050505081565b60006108e63384846122c0565b50600192915050565b60006108fa826123ce565b92915050565b6001600160a01b03831660008181526003602090815260408083203380855292528220549192909190821480159061093a57506000198114155b156109b057600061094b8583613efc565b6001600160a01b038881166000818152600360209081526040808320948916808452948252918290208590559051848152939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b6109bb8686866123e8565b6001925050505b9392505050565b60006109d48261205d565b905060008111610a515760405162461bcd60e51b815260206004820152602560248201527f4261736553747261746567793a3a576974686472617720616d6f756e7420746f60448201527f6f206c6f7700000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000610a5c8261250c565b90506000610a69836123ce565b9050610aaa33610a798385613efc565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691906125b0565b610ab43385612630565b60405183815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a250505050565b610af982826126c4565b5050565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d505accf9060e401600060405180830381600087803b158015610ba257600080fd5b505af1158015610bb6573d6000803e3d6000fd5b50505050610bc433866126c4565b5050505050565b6006546001600160a01b03163314610c255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a48565b600a5460ff1615610c3557600080fd5b600a805460ff191660019081179091556040519081527f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e85906020015b60405180910390a1565b6006546001600160a01b03163314610cd55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a48565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610d3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d609190613f13565b9050610d6a6128bc565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df59190613f13565b905082610e028383613efc565b1015610e9c5760405162461bcd60e51b815260206004820152604260248201527f4261736553747261746567793a3a456d657267656e637920776974686472617760448201527f206d696e696d756d2072657475726e20616d6f756e74206e6f7420726561636860648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a401610a48565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234610ec561113f565b6002546040805192835260208301919091520160405180910390a1600a5460ff161515600103610ef757610ef7611921565b505050565b6006546001600160a01b03163314610f565760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a48565b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b6006546001600160a01b03163314610ffa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a48565b6000811161100757600080fd5b604051339082156108fc029083906000818181858888f19350505050158015611034573d6000803e3d6000fd5b506040805160008152602081018390527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28910160405180910390a150565b6007546001600160a01b031633146110c35760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a48565b60405163095ea7b360e01b81526001600160a01b0382811660048301526000602483015283169063095ea7b3906044016020604051808303816000875af1158015611112573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111369190613f2c565b610af957600080fd5b600f546040517f93f1a40b0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015230602482015260009182916001600160a01b03909116906393f1a40b90604401606060405180830381865afa1580156111cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ef9190613fbe565b5192915050565b6007546001600160a01b031633146112475760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a48565b60095460408051918252602082018390527f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100910160405180910390a1600955565b6006546001600160a01b031633146112e25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a48565b600081116112ef57600080fd5b6113036001600160a01b03831633836125b0565b604080516001600160a01b0384168152602081018390527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa2891015b60405180910390a15050565b6006546001600160a01b031633146113a45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a48565b600754604080516001600160a01b03928316815291831660208301527fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c00910160405180910390a1600780546001600160a01b0319166001600160a01b0392909216919091179055565b6001805461085890613eac565b6007546001600160a01b0316331461146b5760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a48565b612710600b548261147c919061401a565b111561148757600080fd5b600c5460408051918252602082018390527f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d651726131910160405180910390a1600c55565b6007546001600160a01b031633146115195760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a48565b6000805b600d5481101561157057600d818154811061153a5761153a614032565b6000918252602090912001546001600160a01b039081169084160361155e57600191505b8061156881614048565b91505061151d565b5080156115e55760405162461bcd60e51b815260206004820152602860248201527f4261736553747261746567793a3a52657761726420616c726561647920636f6e60448201527f66696775726564210000000000000000000000000000000000000000000000006064820152608401610a48565b600d80546001810182556000919091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319166001600160a01b0384169081179091556040519081527f1714865bf5baa84e3439536a013c87cfe030b4cd69f344a5f2a4877de3d517ce9060200161133e565b6007546001600160a01b031633146116b45760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a48565b6000805b600d5481101561178457600d81815481106116d5576116d5614032565b6000918252602090912001546001600160a01b039081169084160361177257600d805460019350611707908490613efc565b8154811061171757611717614032565b600091825260209091200154600d80546001600160a01b03909216918390811061174357611743614032565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061177c81614048565b9150506116b8565b50806117f75760405162461bcd60e51b8152602060048201526024808201527f4261736553747261746567793a3a526577617264206e6f7420636f6e6669677560448201527f72656421000000000000000000000000000000000000000000000000000000006064820152608401610a48565b600d80548061180857611808614061565b6000828152602090819020600019908301810180546001600160a01b03191690559091019091556040516001600160a01b03841681527f963b7c735475147a62c589c2d7cb8ec4b0a6b7af4f97373d79ebfa42ab8aa7dc910161133e565b6007546001600160a01b031633146118b75760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a48565b612710600c54826118c8919061401a565b11156118d357600080fd5b600b5460408051918252602082018390527fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2910160405180910390a1600b55565b60006108e63384846123e8565b6007546001600160a01b031633146119725760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a48565b600a5460ff1661198157600080fd5b600a805460ff19169055604051600081527f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e8590602001610c71565b6119c633826126c4565b50565b6000806119d4611a08565b90506009548110611a0057612710600b54826119f09190614077565b6119fa9190614096565b91505090565b600091505090565b600080611a136129fc565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190613f13565b905060005b8251811015611d56576000838281518110611ac357611ac3614032565b60200260200101516000015190507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031603611b395747848381518110611b1d57611b1d614032565b6020026020010151602001818151611b35919061401a565b9052505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031603611ba257838281518110611b8457611b84614032565b60200260200101516020015183611b9b919061401a565b9250611d43565b6001600160a01b03811615611d43576040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1c9190613f13565b90506000858481518110611c3257611c32614032565b60200260200101516020015182611c49919061401a565b90508015611d4057600e546040516377ccc49d60e11b8152600481018390526001600160a01b0385811660248301527f000000000000000000000000000000000000000000000000000000000000000081166044830152600092169063ef99893a90606401600060405180830381865afa158015611ccb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cf39190810190614150565b9050600181600001515111611d09576000611d32565b80518051611d1990600190613efc565b81518110611d2957611d29614032565b60200260200101515b611d3c908761401a565b9550505b50505b5080611d4e81614048565b915050611aa6565b5092915050565b6007546001600160a01b03163314611dae5760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a48565b600e54604080516001600160a01b03928316815291831660208301527f2c6fb4d5ff9fad6ecf2e09cd64cbc9aad92a8b9d2cc0e5c3ddef9b529b0b5ffd910160405180910390a1600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b03163314611e715760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a48565b600854604080516001600160a01b03928316815291831660208301527fcc882185e6edeeb762130016ea1faf3d7aa9c01b199bfd646f965b58ab741063910160405180910390a1600880546001600160a01b0319166001600160a01b0392909216919091179055565b42841015611f2a5760405162461bcd60e51b815260206004820152600f60248201527f7065726d69743a3a6578706972656400000000000000000000000000000000006044820152606401610a48565b6001600160a01b038716600090815260056020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a919086611f7783614048565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050611fd88882868686612c01565b611fe38888886122c0565b5050505050505050565b600080611ff861113f565b600254909150801580612009575081155b1561201657509192915050565b816120218286614077565b61202b9190614096565b949350505050565b600d818154811061204357600080fd5b6000918252602090912001546001600160a01b0316905081565b60008061206861113f565b600254909150801580612079575081155b15612088575060009392505050565b806120218386614077565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b60006040516120c89190614265565b6040519081900390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6006546001600160a01b0316331461218d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a48565b6001600160a01b0381166122095760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a48565b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b3233146122b45760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79454f410000000000000000000000006044820152606401610a48565b6122be6000612d61565b565b6001600160a01b0383166123165760405162461bcd60e51b815260206004820152601c60248201527f5f617070726f76653a3a6f776e6572207a65726f2061646472657373000000006044820152606401610a48565b6001600160a01b03821661236c5760405162461bcd60e51b815260206004820152601e60248201527f5f617070726f76653a3a7370656e646572207a65726f206164647265737300006044820152606401610a48565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000806127106123de8285614077565b6109c29190614096565b6001600160a01b0382166124645760405162461bcd60e51b815260206004820152603460248201527f5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657260448201527f20746f20746865207a65726f20616464726573730000000000000000000000006064820152608401610a48565b6001600160a01b038316600090815260046020526040902054612488908290613efc565b6001600160a01b0380851660009081526004602052604080822093909355908416815220546124b890829061401a565b6001600160a01b0380841660008181526004602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123c19085815260200190565b600f546040517f441a3e700000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018390526000916001600160a01b03169063441a3e7090604401600060405180830381600087803b15801561259257600080fd5b505af11580156125a6573d6000803e3d6000fd5b5093949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610ef7908490612ec6565b6001600160a01b038216600090815260046020526040902054612654908290613efc565b6001600160a01b03831660009081526004602052604090205560025461267b908290613efc565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b600a5460ff16151560011461271b5760405162461bcd60e51b815260206004820152601f60248201527f4261736553747261746567793a3a4465706f736974732064697361626c6564006044820152606401610a48565b6127256001612d61565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af11580156127b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d59190613f2c565b6128475760405162461bcd60e51b815260206004820152602b60248201527f4261736553747261746567793a3a4465706f73697420746f6b656e207472616e60448201527f73666572206661696c65640000000000000000000000000000000000000000006064820152608401610a48565b6000612852826123ce565b905061286a836128656107898486613efc565b612fab565b6128748282613081565b826001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c836040516128af91815260200190565b60405180910390a2505050565b600f546001600160a01b031663441a3e707f00000000000000000000000000000000000000000000000000000000000000006128f661113f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526024820152604401600060405180830381600087803b15801561294c57600080fd5b505af1158015612960573d6000803e3d6000fd5b5050600f5460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201527f0000000000000000000000000000000000000000000000000000000000000000909116925063095ea7b391506044016020604051808303816000875af11580156129d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c69190613f2c565b600f546040517fffcd42630000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006004820152306024820152606091600091829182916001600160a01b039091169063ffcd426390604401600060405180830381865afa158015612a8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ab59190810190614300565b935050925092506000600d8054905067ffffffffffffffff811115612adc57612adc613f4e565b604051908082528060200260200182016040528015612b2157816020015b6040805180820190915260008082526020820152815260200190600190039081612afa5790505b50905060005b8151811015612bf8576000600d8281548110612b4557612b45614032565b60009182526020822001546001600160a01b0390811692507f0000000000000000000000000000000000000000000000000000000000000000168203612b8c575085612ba8565b856001600160a01b0316826001600160a01b031603612ba85750835b6040518060400160405280836001600160a01b0316815260200182815250848481518110612bd857612bd8614032565b602002602001018190525050508080612bf090614048565b915050612b27565b50949350505050565b6000612c0b612093565b6040517f1901000000000000000000000000000000000000000000000000000000000000602082015260228101919091526042810186905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612cb1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590612ce75750866001600160a01b0316816001600160a01b0316145b612d585760405162461bcd60e51b8152602060048201526024808201527f417263683a3a76616c69646174655369673a20696e76616c6964207369676e6160448201527f74757265000000000000000000000000000000000000000000000000000000006064820152608401610a48565b50505050505050565b6000612d6b613101565b9050600954811115610af9576000612710600c5483612d8a9190614077565b612d949190614096565b90508015612dd657600854612dd6906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169116836125b0565b600083612dfd57612710600b5484612dee9190614077565b612df89190614096565b612e00565b60005b90508015612e3c57612e3c6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633836125b0565b6000612e5b82612e4c8587613efc565b612e569190613efc565b613473565b90508015610bc4576000612e6e826123ce565b9050612e7a8282613081565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234612ea361113f565b6002546040805192835260208301919091520160405180910390a1505050505050565b6000612f1b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166137579092919063ffffffff16565b805190915015610ef75780806020019051810190612f399190613f2c565b610ef75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610a48565b60008111612ffb5760405162461bcd60e51b815260206004820152601260248201527f5f6d696e743a3a7a65726f2073686172657300000000000000000000000000006044820152606401610a48565b80600254613009919061401a565b6002556001600160a01b03821660009081526004602052604090205461303090829061401a565b6001600160a01b0383166000818152600460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126b89085815260200190565b600082116130f75760405162461bcd60e51b815260206004820152602260248201527f4261736553747261746567793a3a5374616b6520616d6f756e7420746f6f206c60448201527f6f770000000000000000000000000000000000000000000000000000000000006064820152608401610a48565b610af98282613766565b600061310b613887565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015613172573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131969190613f13565b600d5490915060005b8181101561346b576000600d82815481106131bc576131bc614032565b6000918252602090912001546001600160a01b0390811691507f00000000000000000000000000000000000000000000000000000000000000001681036132e757478015613279577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561325f57600080fd5b505af1158015613273573d6000803e3d6000fd5b50505050505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316036132e5576132dc818661401a565b94505050613459565b505b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561332e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133529190613f13565b905060008111801561339657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561345657600e546040516377ccc49d60e11b8152600481018390526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000081166044830152600092169063ef99893a90606401600060405180830381865afa158015613415573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261343d9190810190614150565b90506134488161395f565b613452908761401a565b9550505b50505b8061346381614048565b91505061319f565b509092915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461359f57600e546040516377ccc49d60e11b8152600481018490526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f000000000000000000000000000000000000000000000000000000000000000081166044830152600092169063ef99893a90606401600060405180830381865afa158015613568573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135909190810190614150565b905061359b8161395f565b9250505b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03160361360357839150613606565b50825b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018690527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015613695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b99190613f2c565b50604051631c57762b60e31b815260048101839052602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e2bbb158906044016060604051808303816000875af1158015613728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061374c91906143b9565b509095945050505050565b606061202b8484600085613b0c565b600f5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303816000875af11580156137da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137fe9190613f2c565b50600f54604051631c57762b60e31b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018490526001600160a01b039091169063e2bbb15890604401600060405180830381600087803b15801561386b57600080fd5b505af115801561387f573d6000803e3d6000fd5b505050505050565b604080516001808252818301909252600091602080830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106138dd576138dd614032565b6020908102919091010152600f546040517f2a4561150000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690632a45611590613931908490600401614422565b600060405180830381600087803b15801561394b57600080fd5b505af1158015610bc4573d6000803e3d6000fd5b8051516000901580159061399c5750815180516000919061398290600190613efc565b8151811061399257613992614032565b6020026020010151115b15613b045781604001516000815181106139b8576139b8614032565b60200260200101516001600160a01b031663095ea7b3600e60009054906101000a90046001600160a01b031684600001516000815181106139fb576139fb614032565b60200260200101516040518363ffffffff1660e01b8152600401613a349291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af1158015613a53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a779190613f2c565b50600e546040517f5b2466160000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635b24661690613ac190859060040161446e565b6020604051808303816000875af1158015613ae0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fa9190613f13565b506000919050565b606082471015613b845760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610a48565b6001600160a01b0385163b613bdb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a48565b600080866001600160a01b03168587604051613bf791906144dd565b60006040518083038185875af1925050503d8060008114613c34576040519150601f19603f3d011682016040523d82523d6000602084013e613c39565b606091505b5091509150613c49828286613c54565b979650505050505050565b60608315613c635750816109c2565b825115613c735782518084602001fd5b8160405162461bcd60e51b8152600401610a489190613cbd565b60005b83811015613ca8578181015183820152602001613c90565b83811115613cb7576000848401525b50505050565b6020815260008251806020840152613cdc816040850160208701613c8d565b601f01601f19169190910160400192915050565b6001600160a01b03811681146119c657600080fd5b60008060408385031215613d1857600080fd5b8235613d2381613cf0565b946020939093013593505050565b600060208284031215613d4357600080fd5b5035919050565b600080600060608486031215613d5f57600080fd5b8335613d6a81613cf0565b92506020840135613d7a81613cf0565b929592945050506040919091013590565b803560ff81168114613d9c57600080fd5b919050565b600080600080600060a08688031215613db957600080fd5b8535945060208601359350613dd060408701613d8b565b94979396509394606081013594506080013592915050565b600060208284031215613dfa57600080fd5b81356109c281613cf0565b60008060408385031215613e1857600080fd5b8235613e2381613cf0565b91506020830135613e3381613cf0565b809150509250929050565b600080600080600080600060e0888a031215613e5957600080fd5b8735613e6481613cf0565b96506020880135613e7481613cf0565b95506040880135945060608801359350613e9060808901613d8b565b925060a0880135915060c0880135905092959891949750929550565b600181811c90821680613ec057607f821691505b602082108103613ee057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015613f0e57613f0e613ee6565b500390565b600060208284031215613f2557600080fd5b5051919050565b600060208284031215613f3e57600080fd5b815180151581146109c257600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613f8757613f87613f4e565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613fb657613fb6613f4e565b604052919050565b600060608284031215613fd057600080fd5b6040516060810181811067ffffffffffffffff82111715613ff357613ff3613f4e565b80604052508251815260208301516020820152604083015160408201528091505092915050565b6000821982111561402d5761402d613ee6565b500190565b634e487b7160e01b600052603260045260246000fd5b60006001820161405a5761405a613ee6565b5060010190565b634e487b7160e01b600052603160045260246000fd5b600081600019048311821515161561409157614091613ee6565b500290565b6000826140b357634e487b7160e01b600052601260045260246000fd5b500490565b600067ffffffffffffffff8211156140d2576140d2613f4e565b5060051b60200190565b600082601f8301126140ed57600080fd5b815160206141026140fd836140b8565b613f8d565b82815260059290921b8401810191818101908684111561412157600080fd5b8286015b8481101561414557805161413881613cf0565b8352918301918301614125565b509695505050505050565b6000602080838503121561416357600080fd5b825167ffffffffffffffff8082111561417b57600080fd5b908401906080828703121561418f57600080fd5b614197613f64565b8251828111156141a657600080fd5b8301601f810188136141b757600080fd5b80516141c56140fd826140b8565b81815260059190911b8201860190868101908a8311156141e457600080fd5b928701925b82841015614202578351825292870192908701906141e9565b8452505050828401518281111561421857600080fd5b614224888286016140dc565b8583015250604083015193508184111561423d57600080fd5b614249878585016140dc565b6040820152606083015160608201528094505050505092915050565b600080835481600182811c91508083168061428157607f831692505b602080841082036142a057634e487b7160e01b86526022600452602486fd5b8180156142b457600181146142c5576142f2565b60ff198616895284890196506142f2565b60008a81526020902060005b868110156142ea5781548b8201529085019083016142d1565b505084890196505b509498975050505050505050565b6000806000806080858703121561431657600080fd5b84519350602085015161432881613cf0565b604086015190935067ffffffffffffffff8082111561434657600080fd5b818701915087601f83011261435a57600080fd5b81518181111561436c5761436c613f4e565b61437f601f8201601f1916602001613f8d565b915080825288602082850101111561439657600080fd5b6143a7816020840160208601613c8d565b50606096909601519497939650505050565b6000806000606084860312156143ce57600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015614417578151875295820195908201906001016143fb565b509495945050505050565b6020815260006109c260208301846143e7565b600081518084526020808501945080840160005b838110156144175781516001600160a01b031687529582019590820190600101614449565b60208152600082516080602084015261448a60a08401826143e7565b90506020840151601f19808584030160408601526144a88383614435565b92506040860151915080858403016060860152506144c68282614435565b915050606084015160808401528091505092915050565b600082516144ef818460208701613c8d565b919091019291505056fea2646970667358221220b48ff17f63ce4738bcee8e046bb7ca4431ea6c4b95b0bbd1336f0a5d8e778d7d64736f6c634300080d00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000000000000000000000057ff9d1a7cf23fd1a9fd9dc07823f950a22a718c000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c700000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000120000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c70000000000000000000000000000000000000000000000000000000000000060000000000000000000000000959a0af5a46f76aa37317bc417d48b445658b18800000000000000000000000000000000000000000000000000000000000000010000000000000000000000006e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd0000000000000000000000000000000000000000000000000000000000000120000000000000000000000000dcedf06fd33e1d7b6eb4b309f779a0e9d3172e44000000000000000000000000dcedf06fd33e1d7b6eb4b309f779a0e9d3172e440000000000000000000000002d580f9cf2fb2d09bc411532988f2afda4e7beff0000000000000000000000006178de6e552055862cf5c56310763eec0145688d000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c700000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000002bc000000000000000000000000000000000000000000000000000000000000012c00000000000000000000000000000000000000000000000000000000000000205969656c642059616b3a204175746f20506f6f6c20574554482e652d41564158