[ { "inputs": [ { "components": [ { "internalType": "address", "name": "gasToken", "type": "address" }, { "internalType": "address[]", "name": "rewards", "type": "address[]" }, { "internalType": "address", "name": "simpleRouter", "type": "address" } ], "internalType": "struct BaseStrategy.BaseStrategySettings", "name": "_baseStrategySettings", "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": false, "internalType": "address", "name": "lamaPayInstance", "type": "address" }, { "indexed": false, "internalType": "address", "name": "payer", "type": "address" }, { "indexed": false, "internalType": "uint216", "name": "amountPerSec", "type": "uint216" }, { "indexed": false, "internalType": "address", "name": "token", "type": "address" } ], "name": "AddStream", "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": false, "internalType": "address", "name": "lamaPayInstance", "type": "address" }, { "indexed": false, "internalType": "address", "name": "payer", "type": "address" }, { "indexed": false, "internalType": "uint216", "name": "amountPerSec", "type": "uint216" }, { "indexed": false, "internalType": "address", "name": "token", "type": "address" } ], "name": "RemoveStream", "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": "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": "_lamaPayInstance", "type": "address" }, { "internalType": "address", "name": "_payer", "type": "address" }, { "internalType": "uint216", "name": "_amountPerSec", "type": "uint216" } ], "name": "addStream", "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": [ { "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": [ { "internalType": "address", "name": "_lamaPayInstance", "type": "address" }, { "internalType": "address", "name": "_payer", "type": "address" }, { "internalType": "uint216", "name": "_amountPerSec", "type": "uint216" } ], "name": "removeStream", "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": "staked", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "streams", "outputs": [ { "internalType": "address", "name": "lamaPayInstance", "type": "address" }, { "internalType": "address", "name": "payer", "type": "address" }, { "internalType": "uint216", "name": "amountPerSec", "type": "uint216" }, { "internalType": "address", "name": "token", "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" } ]
6101606040526009610120819052685969656c642059616b60b81b6101409081526200002f91600091906200081d565b506040805180820190915260038082526216549560ea1b60209092019182526200005c916001916200081d565b503480156200006a57600080fd5b5060405162005be538038062005be58339810160408190526200008d9162000b35565b600680546001600160a01b0319163390811790915560405183918391829190819060009060008051602062005bc5833981519152908290a35080518051620000de916000916020909101906200081d565b506080808201516001600160a01b0390811690915260a0808301519091169052600780546001600160a01b0319163317905560c08101516200012090620002fe565b60e081015162000130906200039f565b61010081015162000141906200045b565b6060810151620001519062000517565b60408101516200016190620005cb565b6200016b6200067f565b60208101516200017b9062000720565b5081516001600160a01b031660c0526020808301518051620001a292600d920190620008ac565b50604082810151600e80546001600160a01b0319166001600160a01b039092169190911790558051600080825260208201527fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234910160405180910390a150506080516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000242573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000268919062000c68565b6001600160a01b031660e0816001600160a01b0316815250506080516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e8919062000c68565b6001600160a01b0316610100525062000cf09050565b6007546001600160a01b031633146200035e5760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c7944657600000000000000000000000060448201526064015b60405180910390fd5b60095460408051918252602082018390527f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100910160405180910390a1600955565b6007546001600160a01b03163314620003fb5760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79446576000000000000000000000000604482015260640162000355565b612710600b54826200040e919062000c8d565b11156200041a57600080fd5b600c5460408051918252602082018390527f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d651726131910160405180910390a1600c55565b6007546001600160a01b03163314620004b75760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79446576000000000000000000000000604482015260640162000355565b612710600c5482620004ca919062000c8d565b1115620004d657600080fd5b600b5460408051918252602082018390527fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2910160405180910390a1600b55565b6006546001600160a01b03163314620005625760405162461bcd60e51b8152602060048201819052602482015260008051602062005ba5833981519152604482015260640162000355565b600854604080516001600160a01b03928316815291831660208301527fcc882185e6edeeb762130016ea1faf3d7aa9c01b199bfd646f965b58ab741063910160405180910390a1600880546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b03163314620006165760405162461bcd60e51b8152602060048201819052602482015260008051602062005ba5833981519152604482015260640162000355565b600754604080516001600160a01b03928316815291831660208301527fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c00910160405180910390a1600780546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b03163314620006ca5760405162461bcd60e51b8152602060048201819052602482015260008051602062005ba5833981519152604482015260640162000355565b600a5460ff1615620006db57600080fd5b600a805460ff191660019081179091556040519081527f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859060200160405180910390a1565b6006546001600160a01b031633146200076b5760405162461bcd60e51b8152602060048201819052602482015260008051602062005ba5833981519152604482015260640162000355565b6001600160a01b038116620007d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000355565b6006546040516001600160a01b0380841692169060008051602062005bc583398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b8280546200082b9062000cb4565b90600052602060002090601f0160209004810192826200084f57600085556200089a565b82601f106200086a57805160ff19168380011785556200089a565b828001600101855582156200089a579182015b828111156200089a5782518255916020019190600101906200087d565b50620008a892915062000904565b5090565b8280548282559060005260206000209081019282156200089a579160200282015b828111156200089a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620008cd565b5b80821115620008a8576000815560010162000905565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156200095757620009576200091b565b60405290565b604051606081016001600160401b03811182821017156200095757620009576200091b565b604051601f8201601f191681016001600160401b0381118282101715620009ad57620009ad6200091b565b604052919050565b80516001600160a01b0381168114620009cd57600080fd5b919050565b600082601f830112620009e457600080fd5b81516001600160401b0381111562000a005762000a006200091b565b602062000a16601f8301601f1916820162000982565b828152858284870101111562000a2b57600080fd5b60005b8381101562000a4b57858101830151828201840152820162000a2e565b8381111562000a5d5760008385840101525b5095945050505050565b6000610120828403121562000a7b57600080fd5b62000a8562000931565b82519091506001600160401b0381111562000a9f57600080fd5b62000aad84828501620009d2565b82525062000abe60208301620009b5565b602082015262000ad160408301620009b5565b604082015262000ae460608301620009b5565b606082015262000af760808301620009b5565b608082015262000b0a60a08301620009b5565b60a082015260c082015160c082015260e082015160e082015261010080830151818301525092915050565b6000806040838503121562000b4957600080fd5b82516001600160401b038082111562000b6157600080fd5b908401906060828703121562000b7657600080fd5b62000b806200095d565b62000b8b83620009b5565b81526020808401518381111562000ba157600080fd5b8401601f8101891362000bb357600080fd5b80518481111562000bc85762000bc86200091b565b8060051b62000bd984820162000982565b918252828101840191848101908c84111562000bf457600080fd5b938501935b8385101562000c1d5762000c0d85620009b5565b8252938501939085019062000bf9565b868601525062000c349250505060408501620009b5565b604083015286015190945091508082111562000c4f57600080fd5b5062000c5e8582860162000a67565b9150509250929050565b60006020828403121562000c7b57600080fd5b62000c8682620009b5565b9392505050565b6000821982111562000caf57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c9082168062000cc957607f821691505b60208210810362000cea57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051614d9e62000e0760003960008181613ce901528181613d8901528181613fd50152614320015260008181613abe01528181613b5e01528181613f5501526142ec01526000818161208b015281816138110152818161384001526138b501526000818161084901528181611fee015281816120f301528181612232015281816133eb015281816134530152818161375d015281816138df0152818161399b015281816139fe01528181613ae801528181613b3601528181613c0301528181613d1301528181613d610152613e2e01526000818161074901528181610aab01528181610b7e01528181610d6601528181610df301528181612c950152613f2b0152614d9e6000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c80639291d563116101e9578063c4b24a461161010f578063dd8ce4d6116100ad578063f2fde38b1161007c578063f2fde38b1461081e578063f6314d0714610831578063f7c618c114610844578063fdb5a03e1461086b57600080fd5b8063dd8ce4d6146107dd578063e75ab045146107f0578063eab89a5a14610803578063ed24911d1461081657600080fd5b8063d2c35ce8116100e9578063d2c35ce81461076b578063d505accf1461077e578063da09c72c14610791578063dd62ed3e146107a457600080fd5b8063c4b24a4614610729578063c851cc3214610731578063c89039c51461074457600080fd5b8063a9059cbb11610187578063b9e57b8011610156578063b9e57b80146106f2578063bd079f55146106fa578063bec67bd614610703578063c415b95c1461071657600080fd5b8063a9059cbb146106b7578063ac67e1af146106ca578063b52a321f146106d2578063b6b55f25146106df57600080fd5b80639c9b2e21116101c35780639c9b2e21146106575780639e4e73181461066a578063a4d5e67c14610691578063a8ae2b7c146106a457600080fd5b80639291d5631461062957806395d89b411461063c57806399729ec11461064457600080fd5b80635e4c57a4116102ce5780637897e7f61161026c578063818372301161023b57806381837230146105d55780638980f11f146105e85780638aff733d146105fb5780638da5cb5b1461060457600080fd5b80637897e7f6146105875780637ae267731461059a5780637d882097146105ad5780637ecebe00146105b557600080fd5b8063666d25b9116102a8578063666d25b9146105305780636a8b25331461054357806370a0823114610556578063715018a61461057f57600080fd5b80635e4c57a4146104d05780635ea682ea146104d857806364d60d91146104e157600080fd5b8063247d284b1161033b5780632f4f21e2116103155780632f4f21e21461046957806330adf81f1461047c578063313ce567146104a35780634a970be7146104bd57600080fd5b8063247d284b146103f6578063258250da1461044c5780632e1a7d4d1461045457600080fd5b8063110560351161037757806311056035146103f657806318160ddd1461040957806320606b701461041257806323b872dd1461043957600080fd5b806306fdde031461039e578063095ea7b3146103bc5780630b76619b146103df575b600080fd5b6103a6610873565b6040516103b39190614588565b60405180910390f35b6103cf6103ca3660046145d0565b610901565b60405190151581526020016103b3565b6103e8600f5481565b6040519081526020016103b3565b6103e86104043660046145fc565b610917565b6103e860025481565b6103e87f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6103cf610447366004614615565b610928565b600d546103e8565b6104676104623660046145fc565b6109f1565b005b6104676104773660046145d0565b610b17565b6103e87f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6104ab601281565b60405160ff90911681526020016103b3565b6104676104cb36600461466c565b610b25565b610467610bf3565b6103e8600c5481565b6104f46104ef3660046145fc565b610ca3565b604080516001600160a01b03958616815293851660208501526001600160d81b03909216918301919091529190911660608201526080016103b3565b61046761053e3660046145fc565b610cf4565b6104676105513660046146b3565b610f6e565b6103e861056436600461470a565b6001600160a01b031660009081526004602052604090205490565b61046761127d565b6104676105953660046145fc565b611321565b6104676105a8366004614727565b6113f3565b600f546103e8565b6103e86105c336600461470a565b60056020526000908152604090205481565b6104676105e33660046145fc565b6114c0565b6104676105f63660046145d0565b611552565b6103e8600b5481565b6006546001600160a01b03165b6040516001600160a01b0390911681526020016103b3565b61046761063736600461470a565b611614565b6103a66116d7565b6104676106523660046145fc565b6116e4565b61046761066536600461470a565b611792565b6103e87fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b61046761069f36600461470a565b611918565b6104676106b23660046145fc565b611b1b565b6103cf6106c53660046145d0565b611bc9565b610467611bd6565b600a546103cf9060ff1681565b6104676106ed3660046145fc565b611c71565b6103e8611c7e565b6103e860095481565b6104676107113660046146b3565b611cbd565b600854610611906001600160a01b031681565b6103e8611fc0565b61046761073f36600461470a565b612315565b6106117f000000000000000000000000000000000000000000000000000000000000000081565b61046761077936600461470a565b6123cf565b61046761078c366004614760565b612492565b600754610611906001600160a01b031681565b6103e86107b2366004614727565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6103e86107eb3660046145fc565b6125a5565b6106116107fe3660046145fc565b6125ec565b6103e86108113660046145fc565b612616565b6103e861264d565b61046761082c36600461470a565b6126ed565b600e54610611906001600160a01b031681565b6106117f000000000000000000000000000000000000000000000000000000000000000081565b61046761281f565b60008054610880906147ce565b80601f01602080910402602001604051908101604052809291908181526020018280546108ac906147ce565b80156108f95780601f106108ce576101008083540402835291602001916108f9565b820191906000526020600020905b8154815290600101906020018083116108dc57829003601f168201915b505050505081565b600061090e33848461287a565b50600192915050565b600061092282612988565b92915050565b6001600160a01b03831660008181526003602090815260408083203380855292528220549192909190821480159061096257506000198114155b156109d85760006109738583614818565b6001600160a01b038881166000818152600360209081526040808320948916808452948252918290208590559051848152939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b6109e38686866129a2565b6001925050505b9392505050565b60006109fc82612616565b905060008111610a795760405162461bcd60e51b815260206004820152602560248201527f4261736553747261746567793a3a576974686472617720616d6f756e7420746f60448201527f6f206c6f7700000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000610a8482612ac6565b90506000610a9183612988565b9050610ad233610aa18385614818565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190612ae5565b610adc3385612b65565b60405183815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a250505050565b610b218282612bf9565b5050565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d505accf9060e401600060405180830381600087803b158015610bca57600080fd5b505af1158015610bde573d6000803e3d6000fd5b50505050610bec3386612bf9565b5050505050565b6006546001600160a01b03163314610c4d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a70565b600a5460ff1615610c5d57600080fd5b600a805460ff191660019081179091556040519081527f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e85906020015b60405180910390a1565b60108181548110610cb357600080fd5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039283169450908216926001600160d81b0316911684565b6006546001600160a01b03163314610d4e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a70565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd9919061482f565b90506040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e66919061482f565b905082610e738383614818565b1015610f0d5760405162461bcd60e51b815260206004820152604260248201527f4261736553747261746567793a3a456d657267656e637920776974686472617760448201527f206d696e696d756d2072657475726e20616d6f756e74206e6f7420726561636860648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a401610a70565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234610f37600f5490565b6002546040805192835260208301919091520160405180910390a1600a5460ff161515600103610f6957610f69611bd6565b505050565b6007546001600160a01b03163314610fbf5760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a70565b600080610fcd858585612df1565b915091508061102f5760405162461bcd60e51b815260206004820152602860248201527f4d656d655275736853747261746567793a3a53747265616d206e6f7420636f6e604482015267666967757265642160c01b6064820152608401610a70565b611037612ed5565b6010805461104790600190614818565b8154811061105757611057614848565b90600052602060002090600402016010838154811061107857611078614848565b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b039384161782556001808501549083018054831691851691909117905560028085015490830180547fffffffffff000000000000000000000000000000000000000000000000000000166001600160d81b039092169190911790556003938401549390910180549091169290911691909117905560108054806111245761112461485e565b6000828152602090819020600460001990930183810290910180546001600160a01b03199081168255600182018054821690556002820180547fffffffffff000000000000000000000000000000000000000000000000000000169055600390910180549091169055909255604080517ffc0c546a00000000000000000000000000000000000000000000000000000000815290517ff3152af0022d4b208d9ecbd314ca66f3764d16e822c9880c7d370a6330021ac7938993899389936001600160a01b0387169363fc0c546a93838101939192918290030181865afa158015611212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112369190614874565b604080516001600160a01b03958616815293851660208501526001600160d81b03909216918301919091529190911660608201526080015b60405180910390a15050505050565b6006546001600160a01b031633146112d75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a70565b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b6006546001600160a01b0316331461137b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a70565b6000811161138857600080fd5b604051339082156108fc029083906000818181858888f193505050501580156113b5573d6000803e3d6000fd5b506040805160008152602081018390527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28910160405180910390a150565b6007546001600160a01b031633146114445760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a70565b60405163095ea7b360e01b81526001600160a01b0382811660048301526000602483015283169063095ea7b3906044016020604051808303816000875af1158015611493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b79190614891565b610b2157600080fd5b6007546001600160a01b031633146115115760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a70565b60095460408051918252602082018390527f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100910160405180910390a1600955565b6006546001600160a01b031633146115ac5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a70565b600081116115b957600080fd5b6115cd6001600160a01b0383163383612ae5565b604080516001600160a01b0384168152602081018390527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa2891015b60405180910390a15050565b6006546001600160a01b0316331461166e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a70565b600754604080516001600160a01b03928316815291831660208301527fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c00910160405180910390a1600780546001600160a01b0319166001600160a01b0392909216919091179055565b60018054610880906147ce565b6007546001600160a01b031633146117355760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a70565b612710600b548261174691906148b3565b111561175157600080fd5b600c5460408051918252602082018390527f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d651726131910160405180910390a1600c55565b6007546001600160a01b031633146117e35760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a70565b6000805b600d5481101561183a57600d818154811061180457611804614848565b6000918252602090912001546001600160a01b039081169084160361182857600191505b80611832816148cb565b9150506117e7565b50801561189a5760405162461bcd60e51b815260206004820152602860248201527f4261736553747261746567793a3a52657761726420616c726561647920636f6e604482015267666967757265642160c01b6064820152608401610a70565b600d80546001810182556000919091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319166001600160a01b0384169081179091556040519081527f1714865bf5baa84e3439536a013c87cfe030b4cd69f344a5f2a4877de3d517ce90602001611608565b6007546001600160a01b031633146119695760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a70565b6000805b600d54811015611a3957600d818154811061198a5761198a614848565b6000918252602090912001546001600160a01b0390811690841603611a2757600d8054600193506119bc908490614818565b815481106119cc576119cc614848565b600091825260209091200154600d80546001600160a01b0390921691839081106119f8576119f8614848565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80611a31816148cb565b91505061196d565b5080611aac5760405162461bcd60e51b8152602060048201526024808201527f4261736553747261746567793a3a526577617264206e6f7420636f6e6669677560448201527f72656421000000000000000000000000000000000000000000000000000000006064820152608401610a70565b600d805480611abd57611abd61485e565b6000828152602090819020600019908301810180546001600160a01b03191690559091019091556040516001600160a01b03841681527f963b7c735475147a62c589c2d7cb8ec4b0a6b7af4f97373d79ebfa42ab8aa7dc9101611608565b6007546001600160a01b03163314611b6c5760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a70565b612710600c5482611b7d91906148b3565b1115611b8857600080fd5b600b5460408051918252602082018390527fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2910160405180910390a1600b55565b600061090e3384846129a2565b6007546001600160a01b03163314611c275760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a70565b600a5460ff16611c3657600080fd5b600a805460ff19169055604051600081527f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e8590602001610c99565b611c7b3382612bf9565b50565b600080611c89611fc0565b90506009548110611cb557612710600b5482611ca591906148e4565b611caf9190614903565b91505090565b600091505090565b6007546001600160a01b03163314611d0e5760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a70565b6001600160a01b03831615801590611d2e57506001600160a01b03821615155b8015611d4357506000816001600160d81b0316115b15610f69576000611d55848484612df1565b9150508015611dcc5760405162461bcd60e51b815260206004820152602c60248201527f4d656d655275736853747261746567793a3a53747265616d20616c726561647960448201527f20636f6e666967757265642100000000000000000000000000000000000000006064820152608401610a70565b6000846001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e309190614874565b60408051608080820183526001600160a01b0389811680845289821660208086018281526001600160d81b038c8116888a018181528b88166060808c01828152601080546001810182556000919091529c517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6726004909e029d8e0180546001600160a01b0319908116928e1692909217905596517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6738e0180548916918d1691909117905592517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6748d0180547fffffffffff00000000000000000000000000000000000000000000000000000016919096161790945590517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae675909a018054909416999097169890981790915587519384529083019190915294810193909352928201929092529192507ff7568797d3c3a8683cc15f72610e4377cd2a50c535e7e237ee1da95f589d7cb6910161126e565b600080611fcb613017565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015612035573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612059919061482f565b905060005b825181101561230e57600083828151811061207b5761207b614848565b60200260200101516000015190507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316036120f157478483815181106120d5576120d5614848565b60200260200101516020018181516120ed91906148b3565b9052505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03160361215a5783828151811061213c5761213c614848565b6020026020010151602001518361215391906148b3565b92506122fb565b6001600160a01b038116156122fb576040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156121b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d4919061482f565b905060008584815181106121ea576121ea614848565b6020026020010151602001518261220191906148b3565b905080156122f857600e546040516377ccc49d60e11b8152600481018390526001600160a01b0385811660248301527f000000000000000000000000000000000000000000000000000000000000000081166044830152600092169063ef99893a90606401600060405180830381865afa158015612283573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122ab9190810190614a2d565b90506001816000015151116122c15760006122ea565b805180516122d190600190614818565b815181106122e1576122e1614848565b60200260200101515b6122f490876148b3565b9550505b50505b5080612306816148cb565b91505061205e565b5092915050565b6007546001600160a01b031633146123665760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610a70565b600e54604080516001600160a01b03928316815291831660208301527f2c6fb4d5ff9fad6ecf2e09cd64cbc9aad92a8b9d2cc0e5c3ddef9b529b0b5ffd910160405180910390a1600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031633146124295760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a70565b600854604080516001600160a01b03928316815291831660208301527fcc882185e6edeeb762130016ea1faf3d7aa9c01b199bfd646f965b58ab741063910160405180910390a1600880546001600160a01b0319166001600160a01b0392909216919091179055565b428410156124e25760405162461bcd60e51b815260206004820152600f60248201527f7065726d69743a3a6578706972656400000000000000000000000000000000006044820152606401610a70565b6001600160a01b038716600090815260056020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661252f836148cb565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050612590888286868661323f565b61259b88888861287a565b5050505050505050565b6000806125b1600f5490565b6002549091508015806125c2575081155b156125cf57509192915050565b816125da82866148e4565b6125e49190614903565b949350505050565b600d81815481106125fc57600080fd5b6000918252602090912001546001600160a01b0316905081565b600080612622600f5490565b600254909150801580612633575081155b15612642575060009392505050565b806125da83866148e4565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b60006040516126829190614b42565b6040519081900390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6006546001600160a01b031633146127475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a70565b6001600160a01b0381166127c35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a70565b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b32331461286e5760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79454f410000000000000000000000006044820152606401610a70565b612878600061339f565b565b6001600160a01b0383166128d05760405162461bcd60e51b815260206004820152601c60248201527f5f617070726f76653a3a6f776e6572207a65726f2061646472657373000000006044820152606401610a70565b6001600160a01b0382166129265760405162461bcd60e51b815260206004820152601e60248201527f5f617070726f76653a3a7370656e646572207a65726f206164647265737300006044820152606401610a70565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60008061271061299882856148e4565b6109ea9190614903565b6001600160a01b038216612a1e5760405162461bcd60e51b815260206004820152603460248201527f5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657260448201527f20746f20746865207a65726f20616464726573730000000000000000000000006064820152608401610a70565b6001600160a01b038316600090815260046020526040902054612a42908290614818565b6001600160a01b038085166000908152600460205260408082209390935590841681522054612a729082906148b3565b6001600160a01b0380841660008181526004602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061297b9085815260200190565b600081600f6000828254612ada9190614818565b909155509192915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610f69908490613500565b6001600160a01b038216600090815260046020526040902054612b89908290614818565b6001600160a01b038316600090815260046020526040902055600254612bb0908290614818565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b600a5460ff161515600114612c505760405162461bcd60e51b815260206004820152601f60248201527f4261736553747261746567793a3a4465706f736974732064697361626c6564006044820152606401610a70565b612c5a600161339f565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015612ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0a9190614891565b612d7c5760405162461bcd60e51b815260206004820152602b60248201527f4261736553747261746567793a3a4465706f73697420746f6b656e207472616e60448201527f73666572206661696c65640000000000000000000000000000000000000000006064820152608401610a70565b6000612d8782612988565b9050612d9f83612d9a6107eb8486614818565b6135e5565b612da982826136bb565b826001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c83604051612de491815260200190565b60405180910390a2505050565b60008060005b601054811015612ecc5760108181548110612e1457612e14614848565b60009182526020909120600490910201546001600160a01b038781169116148015612e70575060108181548110612e4d57612e4d614848565b60009182526020909120600160049092020101546001600160a01b038681169116145b8015612ead575060108181548110612e8a57612e8a614848565b60009182526020909120600260049092020101546001600160d81b038581169116145b15612eba57600191508092505b80612ec4816148cb565b915050612df7565b50935093915050565b60005b601054811015611c7b5760108181548110612ef557612ef5614848565b6000918252602090912060049091020154601080546001600160a01b03909216916317a566e4919084908110612f2d57612f2d614848565b906000526020600020906004020160010160009054906101000a90046001600160a01b03163060108581548110612f6657612f66614848565b600091825260209091206004918202016002015460405160e086901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03948516928101929092529190921660248301526001600160d81b03166044820152606401600060405180830381600087803b158015612fec57600080fd5b505af1158015613000573d6000803e3d6000fd5b50505050808061300f906148cb565b915050612ed8565b60105460609060009067ffffffffffffffff81111561303857613038614925565b60405190808252806020026020018201604052801561307d57816020015b60408051808201909152600080825260208201528152602001906001900390816130565790505b50905060005b601054811015613239576000601082815481106130a2576130a2614848565b6000918252602090912060049091020154601080546001600160a01b0390921691633f053acd9190859081106130da576130da614848565b906000526020600020906004020160010160009054906101000a90046001600160a01b0316306010868154811061311357613113614848565b600091825260209091206004918202016002015460405160e086901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03948516928101929092529190921660248301526001600160d81b03166044820152606401606060405180830381865afa15801561319c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c09190614bdd565b505090506040518060400160405280601084815481106131e2576131e2614848565b6000918252602091829020600360049092020101546001600160a01b0316825201829052835184908490811061321a5761321a614848565b6020026020010181905250508080613231906148cb565b915050613083565b50919050565b600061324961264d565b6040517f1901000000000000000000000000000000000000000000000000000000000000602082015260228101919091526042810186905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156132ef573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906133255750866001600160a01b0316816001600160a01b0316145b6133965760405162461bcd60e51b8152602060048201526024808201527f417263683a3a76616c69646174655369673a20696e76616c6964207369676e6160448201527f74757265000000000000000000000000000000000000000000000000000000006064820152608401610a70565b50505050505050565b60006133a961373b565b90506009548111156134be576000612710600c54836133c891906148e4565b6133d29190614903565b9050801561341457600854613414906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683612ae5565b60008361343b57612710600b548461342c91906148e4565b6134369190614903565b61343e565b60005b9050801561347a5761347a6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383612ae5565b60006134998261348a8587614818565b6134949190614818565b613aad565b905080156134ba5760006134ac82612988565b90506134b882826136bb565b505b5050505b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2346134e8600f5490565b60025460408051928352602083019190915201611608565b6000613555826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661404d9092919063ffffffff16565b805190915015610f6957808060200190518101906135739190614891565b610f695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610a70565b600081116136355760405162461bcd60e51b815260206004820152601260248201527f5f6d696e743a3a7a65726f2073686172657300000000000000000000000000006044820152606401610a70565b8060025461364391906148b3565b6002556001600160a01b03821660009081526004602052604090205461366a9082906148b3565b6001600160a01b0383166000818152600460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612bed9085815260200190565b600082116137315760405162461bcd60e51b815260206004820152602260248201527f4261736553747261746567793a3a5374616b6520616d6f756e7420746f6f206c60448201527f6f770000000000000000000000000000000000000000000000000000000000006064820152608401610a70565b610b21828261405c565b6000613745612ed5565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156137ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137d0919061482f565b600d5490915060005b81811015613aa5576000600d82815481106137f6576137f6614848565b6000918252602090912001546001600160a01b0390811691507f0000000000000000000000000000000000000000000000000000000000000000168103613921574780156138b3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561389957600080fd5b505af11580156138ad573d6000803e3d6000fd5b50505050505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03160361391f5761391681866148b3565b94505050613a93565b505b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015613968573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061398c919061482f565b90506000811180156139d057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15613a9057600e546040516377ccc49d60e11b8152600481018390526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000081166044830152600092169063ef99893a90606401600060405180830381865afa158015613a4f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a779190810190614a2d565b9050613a8281614077565b613a8c90876148b3565b9550505b50505b80613a9d816148cb565b9150506137d9565b509092915050565b6000613aba600283614903565b91507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614613ce757600e546040516377ccc49d60e11b8152600481018490526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f000000000000000000000000000000000000000000000000000000000000000081166044830152600092169063ef99893a90606401600060405180830381865afa158015613baf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bd79190810190614a2d565b600e5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018690529192507f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015613c4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c709190614891565b50600e54604051632d92330b60e11b81526001600160a01b0390911690635b24661690613ca1908490600401614c4f565b6020604051808303816000875af1158015613cc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ce4919061482f565b50505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614613f1257600e546040516377ccc49d60e11b8152600481018490526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f000000000000000000000000000000000000000000000000000000000000000081166044830152600092169063ef99893a90606401600060405180830381865afa158015613dda573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e029190810190614a2d565b600e5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018690529192507f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015613e77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e9b9190614891565b50600e54604051632d92330b60e11b81526001600160a01b0390911690635b24661690613ecc908490600401614c4f565b6020604051808303816000875af1158015613eeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f0f919061482f565b50505b6040516370a0823160e01b8152306004820152610922907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015613f9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fc0919061482f565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015614024573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614048919061482f565b61420b565b60606125e484846000856143d5565b81600f600082825461406e91906148b3565b90915550505050565b805151600090158015906140b45750815180516000919061409a90600190614818565b815181106140aa576140aa614848565b6020026020010151115b156142035781604001516000815181106140d0576140d0614848565b60200260200101516001600160a01b031663095ea7b3600e60009054906101000a90046001600160a01b0316846000015160008151811061411357614113614848565b60200260200101516040518363ffffffff1660e01b815260040161414c9291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af115801561416b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061418f9190614891565b50600e54604051632d92330b60e11b81526001600160a01b0390911690635b246616906141c0908590600401614c4f565b6020604051808303816000875af11580156141df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610922919061482f565b506000919050565b6000806000856001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561424e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142729190614d07565b509150915060006142a486846dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff16614512565b9050848111156142df578490506142dc85836dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16614512565b95505b6143136001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168888612ae5565b6143476001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168883612ae5565b6040517f6a6278420000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03881690636a627842906024016020604051808303816000875af11580156143a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143ca919061482f565b979650505050505050565b60608247101561444d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610a70565b6001600160a01b0385163b6144a45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a70565b600080866001600160a01b031685876040516144c09190614d4c565b60006040518083038185875af1925050503d80600081146144fd576040519150601f19603f3d011682016040523d82523d6000602084013e614502565b606091505b50915091506143ca82828661451f565b6000826125da83866148e4565b6060831561452e5750816109ea565b82511561453e5782518084602001fd5b8160405162461bcd60e51b8152600401610a709190614588565b60005b8381101561457357818101518382015260200161455b565b83811115614582576000848401525b50505050565b60208152600082518060208401526145a7816040850160208701614558565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611c7b57600080fd5b600080604083850312156145e357600080fd5b82356145ee816145bb565b946020939093013593505050565b60006020828403121561460e57600080fd5b5035919050565b60008060006060848603121561462a57600080fd5b8335614635816145bb565b92506020840135614645816145bb565b929592945050506040919091013590565b803560ff8116811461466757600080fd5b919050565b600080600080600060a0868803121561468457600080fd5b853594506020860135935061469b60408701614656565b94979396509394606081013594506080013592915050565b6000806000606084860312156146c857600080fd5b83356146d3816145bb565b925060208401356146e3816145bb565b915060408401356001600160d81b03811681146146ff57600080fd5b809150509250925092565b60006020828403121561471c57600080fd5b81356109ea816145bb565b6000806040838503121561473a57600080fd5b8235614745816145bb565b91506020830135614755816145bb565b809150509250929050565b600080600080600080600060e0888a03121561477b57600080fd5b8735614786816145bb565b96506020880135614796816145bb565b955060408801359450606088013593506147b260808901614656565b925060a0880135915060c0880135905092959891949750929550565b600181811c908216806147e257607f821691505b60208210810361323957634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008282101561482a5761482a614802565b500390565b60006020828403121561484157600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006020828403121561488657600080fd5b81516109ea816145bb565b6000602082840312156148a357600080fd5b815180151581146109ea57600080fd5b600082198211156148c6576148c6614802565b500190565b6000600182016148dd576148dd614802565b5060010190565b60008160001904831182151516156148fe576148fe614802565b500290565b60008261492057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561495e5761495e614925565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561498d5761498d614925565b604052919050565b600067ffffffffffffffff8211156149af576149af614925565b5060051b60200190565b600082601f8301126149ca57600080fd5b815160206149df6149da83614995565b614964565b82815260059290921b840181019181810190868411156149fe57600080fd5b8286015b84811015614a22578051614a15816145bb565b8352918301918301614a02565b509695505050505050565b60006020808385031215614a4057600080fd5b825167ffffffffffffffff80821115614a5857600080fd5b9084019060808287031215614a6c57600080fd5b614a7461493b565b825182811115614a8357600080fd5b8301601f81018813614a9457600080fd5b8051614aa26149da82614995565b81815260059190911b8201860190868101908a831115614ac157600080fd5b928701925b82841015614adf57835182529287019290870190614ac6565b84525050508284015182811115614af557600080fd5b614b01888286016149b9565b85830152506040830151935081841115614b1a57600080fd5b614b26878585016149b9565b6040820152606083015160608201528094505050505092915050565b600080835481600182811c915080831680614b5e57607f831692505b60208084108203614b7d57634e487b7160e01b86526022600452602486fd5b818015614b915760018114614ba257614bcf565b60ff19861689528489019650614bcf565b60008a81526020902060005b86811015614bc75781548b820152908501908301614bae565b505084890196505b509498975050505050505050565b600080600060608486031215614bf257600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015614c445781516001600160a01b031687529582019590820190600101614c1f565b509495945050505050565b60208082528251608083830152805160a0840181905260009291820190839060c08601905b80831015614c945783518252928401926001929092019190840190614c74565b50838701519350601f19925082868203016040870152614cb48185614c0b565b93505050604085015181858403016060860152614cd18382614c0b565b92505050606084015160808401528091505092915050565b80516dffffffffffffffffffffffffffff8116811461466757600080fd5b600080600060608486031215614d1c57600080fd5b614d2584614ce9565b9250614d3360208501614ce9565b9150604084015163ffffffff811681146146ff57600080fd5b60008251614d5e818460208701614558565b919091019291505056fea26469706673582212204d43c4f7bb2d1b7ed7cb9fcd58d30bb3b6d13d7e64aeaa2f83800741a5ea7dd264736f6c634300080d00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c70000000000000000000000000000000000000000000000000000000000000060000000000000000000000000959a0af5a46f76aa37317bc417d48b445658b1880000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c70000000000000000000000000000000000000000000000000000000000000120000000000000000000000000dcedf06fd33e1d7b6eb4b309f779a0e9d3172e44000000000000000000000000dcedf06fd33e1d7b6eb4b309f779a0e9d3172e440000000000000000000000002d580f9cf2fb2d09bc411532988f2afda4e7beff00000000000000000000000041ab86eecbd110a82ca602d032a461f453066f1e000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c700000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000002bc000000000000000000000000000000000000000000000000000000000000012c00000000000000000000000000000000000000000000000000000000000000175969656c642059616b3a204a4c5020434f512d41564158000000000000000000