[ { "inputs": [ { "internalType": "bool", "name": "_dropBptAmountOnPoolJoin", "type": "bool" }, { "components": [ { "internalType": "address", "name": "stakingContract", "type": "address" }, { "internalType": "address", "name": "balancerVault", "type": "address" }, { "internalType": "address", "name": "balancerPoolTokenIn", "type": "address" }, { "internalType": "uint256", "name": "boostFeeBips", "type": "uint256" }, { "internalType": "address", "name": "boostFeeReceiver", "type": "address" } ], "internalType": "struct BalancerStrategy.BalancerStrategySettings", "name": "_balancerStrategySettings", "type": "tuple" }, { "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": "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": [], "name": "balMinter", "outputs": [ { "internalType": "contract IBalMinter", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "balancerPoolTokenIn", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "balancerVault", "outputs": [ { "internalType": "contract IBalancerVault", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "boostFeeBips", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "boostFeeReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "dropBptAmountOnPoolJoin", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": [], "name": "gaugeFactory", "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": [], "name": "poolId", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "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 IBalancerGauge", "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": "_boostFeeReceiver", "type": "address" }, { "internalType": "uint256", "name": "_boostFeeBips", "type": "uint256" } ], "name": "updateBoostFeeSettings", "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" } ]
6102406040526009610200819052685969656c642059616b60b81b6102209081526200002f916000919062000ac6565b506040805180820190915260038082526216549560ea1b60209092019182526200005c9160019162000ac6565b503480156200006a57600080fd5b50604051620068f4380380620068f48339810160408190526200008d9162000f11565b828282818180600033600680546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620068d4833981519152908290a35080518051620000eb9160009160209091019062000ac6565b506080808201516001600160a01b0390811690915260a0808301519091169052600780546001600160a01b0319163317905560c08101516200012d90620005ab565b60e08101516200013d9062000648565b6101008101516200014e9062000704565b60608101516200015e90620007c0565b60408101516200016e9062000874565b6200017862000928565b60208101516200018890620009c9565b5081516001600160a01b031660c0526020808301518051620001af92600d92019062000b55565b506040820151600e80546001600160a01b0319166001600160a01b0390921691909117905560c0810151620002375760405162461bcd60e51b815260206004820152602360248201527f4261736553747261746567793a3a496e76616c696420636f6e6669677572617460448201526234b7b760e91b60648201526084015b60405180910390fd5b60408051600080825260208201527fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234910160405180910390a1505082516001600160a01b031660e08190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620002be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e491906200100c565b6001600160a01b03908116610180526020848101518216610100526040808601518316610160526060860151600f556080860151601080546001600160a01b03191691851691909117905560e0518151631cfa655d60e11b815291519316926339f4caba926004808401939192918290030181865afa1580156200036c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039291906200100c565b6001600160a01b0316610120816001600160a01b0316815250506080516001600160a01b03166338fff2d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000413919062001031565b610140818152505060e0516001600160a01b03166329421d506040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200045c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048291906200100c565b6001600160a01b039081166101a0526101005161014051604051631f29a8cd60e31b8152600481019190915291169063f94d466890602401600060405180830381865afa158015620004d8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200050291908101906200104b565b505080516200051990601190602084019062000b55565b505050508415156101e08190529050620005355760006200059c565b6080516001600160a01b03166382687a566040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000576573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200059c919062001031565b6101c052506200117d92505050565b6007546001600160a01b03163314620006075760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c7944657600000000000000000000000060448201526064016200022e565b60095460408051918252602082018390527f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100910160405180910390a1600955565b6007546001600160a01b03163314620006a45760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c7944657600000000000000000000000060448201526064016200022e565b612710600b5482620006b791906200111a565b1115620006c357600080fd5b600c5460408051918252602082018390527f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d651726131910160405180910390a1600c55565b6007546001600160a01b03163314620007605760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c7944657600000000000000000000000060448201526064016200022e565b612710600c54826200077391906200111a565b11156200077f57600080fd5b600b5460408051918252602082018390527fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2910160405180910390a1600b55565b6006546001600160a01b031633146200080b5760405162461bcd60e51b81526020600482018190526024820152600080516020620068b483398151915260448201526064016200022e565b600854604080516001600160a01b03928316815291831660208301527fcc882185e6edeeb762130016ea1faf3d7aa9c01b199bfd646f965b58ab741063910160405180910390a1600880546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b03163314620008bf5760405162461bcd60e51b81526020600482018190526024820152600080516020620068b483398151915260448201526064016200022e565b600754604080516001600160a01b03928316815291831660208301527fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c00910160405180910390a1600780546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b03163314620009735760405162461bcd60e51b81526020600482018190526024820152600080516020620068b483398151915260448201526064016200022e565b600a5460ff16156200098457600080fd5b600a805460ff191660019081179091556040519081527f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859060200160405180910390a1565b6006546001600160a01b0316331462000a145760405162461bcd60e51b81526020600482018190526024820152600080516020620068b483398151915260448201526064016200022e565b6001600160a01b03811662000a7b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200022e565b6006546040516001600160a01b03808416921690600080516020620068d483398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b82805462000ad49062001141565b90600052602060002090601f01602090048101928262000af8576000855562000b43565b82601f1062000b1357805160ff191683800117855562000b43565b8280016001018555821562000b43579182015b8281111562000b4357825182559160200191906001019062000b26565b5062000b5192915062000bad565b5090565b82805482825590600052602060002090810192821562000b43579160200282015b8281111562000b4357825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000b76565b5b8082111562000b51576000815560010162000bae565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171562000c005762000c0062000bc4565b60405290565b60405160a081016001600160401b038111828210171562000c005762000c0062000bc4565b604051601f8201601f191681016001600160401b038111828210171562000c565762000c5662000bc4565b604052919050565b80516001600160a01b038116811462000c7657600080fd5b919050565b60006001600160401b0382111562000c975762000c9762000bc4565b5060051b60200190565b600082601f83011262000cb357600080fd5b8151602062000ccc62000cc68362000c7b565b62000c2b565b82815260059290921b8401810191818101908684111562000cec57600080fd5b8286015b8481101562000d125762000d048162000c5e565b835291830191830162000cf0565b509695505050505050565b60006060828403121562000d3057600080fd5b604051606081016001600160401b03808211838310171562000d565762000d5662000bc4565b8160405282935062000d688562000c5e565b8352602085015191508082111562000d7f57600080fd5b5062000d8e8582860162000ca1565b60208301525062000da26040840162000c5e565b60408201525092915050565b600082601f83011262000dc057600080fd5b81516001600160401b0381111562000ddc5762000ddc62000bc4565b602062000df2601f8301601f1916820162000c2b565b828152858284870101111562000e0757600080fd5b60005b8381101562000e2757858101830151828201840152820162000e0a565b8381111562000e395760008385840101525b5095945050505050565b6000610120828403121562000e5757600080fd5b62000e6162000bda565b82519091506001600160401b0381111562000e7b57600080fd5b62000e898482850162000dae565b82525062000e9a6020830162000c5e565b602082015262000ead6040830162000c5e565b604082015262000ec06060830162000c5e565b606082015262000ed36080830162000c5e565b608082015262000ee660a0830162000c5e565b60a082015260c082015160c082015260e082015160e082015261010080830151818301525092915050565b60008060008084860361010081121562000f2a57600080fd5b8551801515811462000f3b57600080fd5b945060a0601f198201121562000f5057600080fd5b5062000f5b62000c06565b62000f696020870162000c5e565b815262000f796040870162000c5e565b602082015262000f8c6060870162000c5e565b60408201526080860151606082015262000fa960a0870162000c5e565b608082015260c08601519093506001600160401b038082111562000fcc57600080fd5b62000fda8883890162000d1d565b935060e087015191508082111562000ff157600080fd5b50620010008782880162000e43565b91505092959194509250565b6000602082840312156200101f57600080fd5b6200102a8262000c5e565b9392505050565b6000602082840312156200104457600080fd5b5051919050565b6000806000606084860312156200106157600080fd5b83516001600160401b03808211156200107957600080fd5b620010878783880162000ca1565b94506020915081860151818111156200109f57600080fd5b86019050601f81018713620010b357600080fd5b8051620010c462000cc68262000c7b565b81815260059190911b82018301908381019089831115620010e457600080fd5b928401925b828410156200110457835182529284019290840190620010e9565b8096505050505050604084015190509250925092565b600082198211156200113c57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200115657607f821691505b6020821081036200117757634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516154fa620013ba60003960008181610827015281816146a801526147b1015260006147d9015260008181612e43015281816143ea0152614482015260008181610436015281816133d8015261426201526000818161064301528181613f4f01528181613fef0152818161473301528181614801015261494101526000818161057a0152614a62015260008181610609015281816134030152818161390c0152818161428a0152614354015260008181610496015281816149700152614a3501526000818161091401528181611297015281816126d601528181612a4e01528181612ae801528181612b8c01528181612cc101528181612d780152818161347e0152818161353b015281816135e301528181613654015281816136e2015281816137bd015281816138e4015281816139af01528181613a5a01528181613b0f015281816140a601528181614172015281816141dc015261432c015260008181611bec01528181613caf01528181613cde0152613d5301526000818161096101528181611b4f01528181611c5401528181611d930152818161306d015281816130d501528181613bfb01528181613d7d01528181613e3901528181613e9c01528181613f790152613fc701526000818161080001528181610bc301528181610c9601528181610e2d01528181610ec2015281816128f001528181612b17015281816140d50152614ad501526154fa6000f3fe608060405234801561001057600080fd5b50600436106103eb5760003560e01c80639291d5631161021a578063c851cc3211610135578063dd8ce4d6116100c8578063ee99205c11610097578063f6314d071161007c578063f6314d0714610949578063f7c618c11461095c578063fdb5a03e1461098357600080fd5b8063ee99205c1461090f578063f2fde38b1461093657600080fd5b8063dd8ce4d6146108ce578063e75ab045146108e1578063eab89a5a146108f4578063ed24911d1461090757600080fd5b8063d505accf11610104578063d505accf1461085c578063d563ee031461086f578063da09c72c14610882578063dd62ed3e1461089557600080fd5b8063c851cc32146107e8578063c89039c5146107fb578063ccabd86414610822578063d2c35ce81461084957600080fd5b8063ac67e1af116101ad578063bd079f551161017c578063bd079f55146107b1578063c2d8f26f146107ba578063c415b95c146107cd578063c4b24a46146107e057600080fd5b8063ac67e1af14610781578063b52a321f14610789578063b6b55f2514610796578063b9e57b80146107a957600080fd5b80639e4e7318116101e95780639e4e731814610721578063a4d5e67c14610748578063a8ae2b7c1461075b578063a9059cbb1461076e57600080fd5b80639291d563146106e057806395d89b41146106f357806399729ec1146106fb5780639c9b2e211461070e57600080fd5b80634a970be71161030a5780637a7cfdbb1161029d578063818372301161026c57806381837230146106a05780638980f11f146106b35780638aff733d146106c65780638da5cb5b146106cf57600080fd5b80637a7cfdbb1461063e5780637ae26773146106655780637d882097146106785780637ecebe001461068057600080fd5b806370a08231116102d957806370a08231146105d3578063715018a6146105fc57806373f43d6d146106045780637897e7f61461062b57600080fd5b80634a970be71461059c5780635e4c57a4146105af5780635ea682ea146105b7578063666d25b9146105c057600080fd5b8063247d284b1161038257806330adf81f1161035157806330adf81f1461052b578063313ce567146105525780633a06a5611461056c5780633e0dc34e1461057557600080fd5b8063247d284b14610470578063258250da146104fb5780632e1a7d4d146105035780632f4f21e21461051857600080fd5b8063158274a5116103be578063158274a51461049157806318160ddd146104b857806320606b70146104c157806323b872dd146104e857600080fd5b806306fdde03146103f0578063095ea7b31461040e5780630d52333c146104315780631105603514610470575b600080fd5b6103f861098b565b6040516104059190614d22565b60405180910390f35b61042161041c366004614d4a565b610a19565b6040519015158152602001610405565b6104587f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610405565b61048361047e366004614d76565b610a2f565b604051908152602001610405565b6104587f000000000000000000000000000000000000000000000000000000000000000081565b61048360025481565b6104837f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6104216104f6366004614d8f565b610a40565b600d54610483565b610516610511366004614d76565b610b09565b005b610516610526366004614d4a565b610c2f565b6104837f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61055a601281565b60405160ff9091168152602001610405565b610483600f5481565b6104837f000000000000000000000000000000000000000000000000000000000000000081565b6105166105aa366004614de6565b610c3d565b610516610d0b565b610483600c5481565b6105166105ce366004614d76565b610dbb565b6104836105e1366004614e2d565b6001600160a01b031660009081526004602052604090205490565b61051661103c565b6104587f000000000000000000000000000000000000000000000000000000000000000081565b610516610639366004614d76565b6110e0565b6104587f000000000000000000000000000000000000000000000000000000000000000081565b610516610673366004614e4a565b6111b2565b61048361127f565b61048361068e366004614e2d565b60056020526000908152604090205481565b6105166106ae366004614d76565b61130f565b6105166106c1366004614d4a565b6113a1565b610483600b5481565b6006546001600160a01b0316610458565b6105166106ee366004614e2d565b611463565b6103f8611526565b610516610709366004614d76565b611533565b61051661071c366004614e2d565b6115e1565b6104837fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b610516610756366004614e2d565b61177c565b610516610769366004614d76565b61197f565b61042161077c366004614d4a565b611a2d565b610516611a3a565b600a546104219060ff1681565b6105166107a4366004614d76565b611ad5565b610483611ae2565b61048360095481565b601054610458906001600160a01b031681565b600854610458906001600160a01b031681565b610483611b21565b6105166107f6366004614e2d565b611e76565b6104587f000000000000000000000000000000000000000000000000000000000000000081565b6104217f000000000000000000000000000000000000000000000000000000000000000081565b610516610857366004614e2d565b611f30565b61051661086a366004614e83565b611ff3565b61051661087d366004614d4a565b612106565b600754610458906001600160a01b031681565b6104836108a3366004614e4a565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6104836108dc366004614d76565b612185565b6104586108ef366004614d76565b6121cb565b610483610902366004614d76565b6121f5565b61048361222b565b6104587f000000000000000000000000000000000000000000000000000000000000000081565b610516610944366004614e2d565b6122cb565b600e54610458906001600160a01b031681565b6104587f000000000000000000000000000000000000000000000000000000000000000081565b6105166123fd565b6000805461099890614ef1565b80601f01602080910402602001604051908101604052809291908181526020018280546109c490614ef1565b8015610a115780601f106109e657610100808354040283529160200191610a11565b820191906000526020600020905b8154815290600101906020018083116109f457829003601f168201915b505050505081565b6000610a26338484612458565b50600192915050565b6000610a3a82612566565b92915050565b6001600160a01b038316600081815260036020908152604080832033808552925282205491929091908214801590610a7a57506000198114155b15610af0576000610a8b8583614f41565b6001600160a01b038881166000818152600360209081526040808320948916808452948252918290208590559051848152939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b610afb868686612580565b6001925050505b9392505050565b6000610b14826121f5565b905060008111610b915760405162461bcd60e51b815260206004820152602560248201527f4261736553747261746567793a3a576974686472617720616d6f756e7420746f60448201527f6f206c6f7700000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000610b9c826126a4565b90506000610ba983612566565b9050610bea33610bb98385614f41565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190612740565b610bf433856127c0565b60405183815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a250505050565b610c398282612854565b5050565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d505accf9060e401600060405180830381600087803b158015610ce257600080fd5b505af1158015610cf6573d6000803e3d6000fd5b50505050610d043386612854565b5050505050565b6006546001600160a01b03163314610d655760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b88565b600a5460ff1615610d7557600080fd5b600a805460ff191660019081179091556040519081527f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e85906020015b60405180910390a1565b6006546001600160a01b03163314610e155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b88565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea09190614f58565b9050610eaa612a4c565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610f11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f359190614f58565b905082610f428383614f41565b1015610fdc5760405162461bcd60e51b815260206004820152604260248201527f4261736553747261746567793a3a456d657267656e637920776974686472617760448201527f206d696e696d756d2072657475726e20616d6f756e74206e6f7420726561636860648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a401610b88565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef23461100561127f565b6002546040805192835260208301919091520160405180910390a1600a5460ff16151560010361103757611037611a3a565b505050565b6006546001600160a01b031633146110965760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b88565b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b6006546001600160a01b0316331461113a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b88565b6000811161114757600080fd5b604051339082156108fc029083906000818181858888f19350505050158015611174573d6000803e3d6000fd5b506040805160008152602081018390527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28910160405180910390a150565b6007546001600160a01b031633146112035760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610b88565b60405163095ea7b360e01b81526001600160a01b0382811660048301526000602483015283169063095ea7b3906044016020604051808303816000875af1158015611252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112769190614f71565b610c3957600080fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156112e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130a9190614f58565b905090565b6007546001600160a01b031633146113605760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610b88565b60095460408051918252602082018390527f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100910160405180910390a1600955565b6006546001600160a01b031633146113fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b88565b6000811161140857600080fd5b61141c6001600160a01b0383163383612740565b604080516001600160a01b0384168152602081018390527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa2891015b60405180910390a15050565b6006546001600160a01b031633146114bd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b88565b600754604080516001600160a01b03928316815291831660208301527fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c00910160405180910390a1600780546001600160a01b0319166001600160a01b0392909216919091179055565b6001805461099890614ef1565b6007546001600160a01b031633146115845760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610b88565b612710600b54826115959190614f93565b11156115a057600080fd5b600c5460408051918252602082018390527f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d651726131910160405180910390a1600c55565b6007546001600160a01b031633146116325760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610b88565b6000805b600d5481101561168957600d818154811061165357611653614fab565b6000918252602090912001546001600160a01b039081169084160361167757600191505b8061168181614fc1565b915050611636565b5080156116fe5760405162461bcd60e51b815260206004820152602860248201527f4261736553747261746567793a3a52657761726420616c726561647920636f6e60448201527f66696775726564210000000000000000000000000000000000000000000000006064820152608401610b88565b600d80546001810182556000919091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319166001600160a01b0384169081179091556040519081527f1714865bf5baa84e3439536a013c87cfe030b4cd69f344a5f2a4877de3d517ce90602001611457565b6007546001600160a01b031633146117cd5760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610b88565b6000805b600d5481101561189d57600d81815481106117ee576117ee614fab565b6000918252602090912001546001600160a01b039081169084160361188b57600d805460019350611820908490614f41565b8154811061183057611830614fab565b600091825260209091200154600d80546001600160a01b03909216918390811061185c5761185c614fab565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061189581614fc1565b9150506117d1565b50806119105760405162461bcd60e51b8152602060048201526024808201527f4261736553747261746567793a3a526577617264206e6f7420636f6e6669677560448201527f72656421000000000000000000000000000000000000000000000000000000006064820152608401610b88565b600d80548061192157611921614fda565b6000828152602090819020600019908301810180546001600160a01b03191690559091019091556040516001600160a01b03841681527f963b7c735475147a62c589c2d7cb8ec4b0a6b7af4f97373d79ebfa42ab8aa7dc9101611457565b6007546001600160a01b031633146119d05760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610b88565b612710600c54826119e19190614f93565b11156119ec57600080fd5b600b5460408051918252602082018390527fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2910160405180910390a1600b55565b6000610a26338484612580565b6007546001600160a01b03163314611a8b5760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610b88565b600a5460ff16611a9a57600080fd5b600a805460ff19169055604051600081527f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e8590602001610db1565b611adf3382612854565b50565b600080611aed611b21565b90506009548110611b1957612710600b5482611b099190614ff0565b611b13919061500f565b91505090565b600091505090565b600080611b2c612b86565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bba9190614f58565b905060005b8251811015611e6f576000838281518110611bdc57611bdc614fab565b60200260200101516000015190507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031603611c525747848381518110611c3657611c36614fab565b6020026020010151602001818151611c4e9190614f93565b9052505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031603611cbb57838281518110611c9d57611c9d614fab565b60200260200101516020015183611cb49190614f93565b9250611e5c565b6001600160a01b03811615611e5c576040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d359190614f58565b90506000858481518110611d4b57611d4b614fab565b60200260200101516020015182611d629190614f93565b90508015611e5957600e546040516377ccc49d60e11b8152600481018390526001600160a01b0385811660248301527f000000000000000000000000000000000000000000000000000000000000000081166044830152600092169063ef99893a90606401600060405180830381865afa158015611de4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e0c9190810190615139565b9050600181600001515111611e22576000611e4b565b80518051611e3290600190614f41565b81518110611e4257611e42614fab565b60200260200101515b611e559087614f93565b9550505b50505b5080611e6781614fc1565b915050611bbf565b5092915050565b6007546001600160a01b03163314611ec75760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610b88565b600e54604080516001600160a01b03928316815291831660208301527f2c6fb4d5ff9fad6ecf2e09cd64cbc9aad92a8b9d2cc0e5c3ddef9b529b0b5ffd910160405180910390a1600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b03163314611f8a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b88565b600854604080516001600160a01b03928316815291831660208301527fcc882185e6edeeb762130016ea1faf3d7aa9c01b199bfd646f965b58ab741063910160405180910390a1600880546001600160a01b0319166001600160a01b0392909216919091179055565b428410156120435760405162461bcd60e51b815260206004820152600f60248201527f7065726d69743a3a6578706972656400000000000000000000000000000000006044820152606401610b88565b6001600160a01b038716600090815260056020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661209083614fc1565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506120f18882868686612eaa565b6120fc888888612458565b5050505050505050565b6007546001600160a01b031633146121575760405162461bcd60e51b81526020600482015260146024820152732cb0b5a9ba3930ba32b3bc9d1d37b7363ca232bb60611b6044820152606401610b88565b601080546001600160a01b0319166001600160a01b03841617905561217e8161271061300a565b600f555050565b60008061219061127f565b6002549091508015806121a1575081155b156121ae57509192915050565b816121b98286614ff0565b6121c3919061500f565b949350505050565b600d81815481106121db57600080fd5b6000918252602090912001546001600160a01b0316905081565b60008061220061127f565b600254909150801580612211575081155b15612220575060009392505050565b806121b98386614ff0565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b6000604051612260919061524e565b6040519081900390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6006546001600160a01b031633146123255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b88565b6001600160a01b0381166123a15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610b88565b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b32331461244c5760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79454f410000000000000000000000006044820152606401610b88565b6124566000613021565b565b6001600160a01b0383166124ae5760405162461bcd60e51b815260206004820152601c60248201527f5f617070726f76653a3a6f776e6572207a65726f2061646472657373000000006044820152606401610b88565b6001600160a01b0382166125045760405162461bcd60e51b815260206004820152601e60248201527f5f617070726f76653a3a7370656e646572207a65726f206164647265737300006044820152606401610b88565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000806127106125768285614ff0565b610b02919061500f565b6001600160a01b0382166125fc5760405162461bcd60e51b815260206004820152603460248201527f5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657260448201527f20746f20746865207a65726f20616464726573730000000000000000000000006064820152608401610b88565b6001600160a01b038316600090815260046020526040902054612620908290614f41565b6001600160a01b038085166000908152600460205260408082209390935590841681522054612650908290614f93565b6001600160a01b0380841660008181526004602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125599085815260200190565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561272257600080fd5b505af1158015612736573d6000803e3d6000fd5b5093949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611037908490613186565b6001600160a01b0382166000908152600460205260409020546127e4908290614f41565b6001600160a01b03831660009081526004602052604090205560025461280b908290614f41565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b600a5460ff1615156001146128ab5760405162461bcd60e51b815260206004820152601f60248201527f4261736553747261746567793a3a4465706f736974732064697361626c6564006044820152606401610b88565b6128b56001613021565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015612941573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129659190614f71565b6129d75760405162461bcd60e51b815260206004820152602b60248201527f4261736553747261746567793a3a4465706f73697420746f6b656e207472616e60448201527f73666572206661696c65640000000000000000000000000000000000000000006064820152608401610b88565b60006129e282612566565b90506129fa836129f56108dc8486614f41565b61326b565b612a048282613341565b826001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c83604051612a3f91815260200190565b60405180910390a2505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d612a8361127f565b6040518263ffffffff1660e01b8152600401612aa191815260200190565b600060405180830381600087803b158015612abb57600080fd5b505af1158015612acf573d6000803e3d6000fd5b505060405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152600060248301527f000000000000000000000000000000000000000000000000000000000000000016925063095ea7b391506044016020604051808303816000875af1158015612b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adf9190614f71565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663963c94b96040518163ffffffff1660e01b8152600401602060405180830381865afa158015612be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0c9190614f58565b612c17906001614f93565b67ffffffffffffffff811115612c2f57612c2f615031565b604051908082528060200260200182016040528015612c7457816020015b6040805180820190915260008082526020820152815260200190600190039081612c4d5790505b50905060005b60018251612c889190614f41565b811015612e35576040517f54c49fe9000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906354c49fe990602401602060405180830381865afa158015612d10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d3491906152e9565b6040517f33fd6f740000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0380831660248301529192506000917f000000000000000000000000000000000000000000000000000000000000000016906333fd6f7490604401602060405180830381865afa158015612dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de39190614f58565b90506040518060400160405280836001600160a01b0316815260200182815250848481518110612e1557612e15614fab565b602002602001018190525050508080612e2d90614fc1565b915050612c7a565b5060405180604001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602001612e786133c1565b8152508160018351612e8a9190614f41565b81518110612e9a57612e9a614fab565b6020908102919091010152919050565b6000612eb461222b565b6040517f1901000000000000000000000000000000000000000000000000000000000000602082015260228101919091526042810186905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612f5a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590612f905750866001600160a01b0316816001600160a01b0316145b6130015760405162461bcd60e51b8152602060048201526024808201527f417263683a3a76616c69646174655369673a20696e76616c6964207369676e6160448201527f74757265000000000000000000000000000000000000000000000000000000006064820152608401610b88565b50505050505050565b60008183111561301a5781610b02565b5090919050565b600061302b613bd9565b9050600954811115610c39576000612710600c548361304a9190614ff0565b613054919061500f565b9050801561309657600854613096906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683612740565b6000836130bd57612710600b54846130ae9190614ff0565b6130b8919061500f565b6130c0565b60005b905080156130fc576130fc6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383612740565b600061311b8261310c8587614f41565b6131169190614f41565b613f4b565b90508015610d0457600061312e82612566565b905061313a8282613341565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef23461316361127f565b6002546040805192835260208301919091520160405180910390a1505050505050565b60006131db826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166140809092919063ffffffff16565b80519091501561103757808060200190518101906131f99190614f71565b6110375760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610b88565b600081116132bb5760405162461bcd60e51b815260206004820152601260248201527f5f6d696e743a3a7a65726f2073686172657300000000000000000000000000006044820152606401610b88565b806002546132c99190614f93565b6002556001600160a01b0382166000908152600460205260409020546132f0908290614f93565b6001600160a01b0383166000818152600460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906128489085815260200190565b600082116133b75760405162461bcd60e51b815260206004820152602260248201527f4261736553747261746567793a3a5374616b6520616d6f756e7420746f6f206c60448201527f6f770000000000000000000000000000000000000000000000000000000000006064820152608401610b88565b610c39828261408f565b6040516303638f4960e51b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636c71e92090602401602060405180830381865afa15801561344c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134709190614f71565b61347a5750600090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef78d4fd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134fe9190614f58565b6040517f7598108c000000000000000000000000000000000000000000000000000000008152600481018290529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637598108c90602401602060405180830381865afa158015613582573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a69190614f58565b6040517ffec8ee0c000000000000000000000000000000000000000000000000000000008152600481018490529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fec8ee0c90602401602060405180830381865afa15801561362a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061364e9190614f58565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166317e280896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d49190614f58565b9050824211801561376457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639c868ac06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561373e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137629190614f71565b155b156138ae5782600061379a62093a8061377d8482614f93565b613787919061500f565b6137949062093a80614ff0565b4261300a565b90505b60006137a98383614f41565b905083156138815783816001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663fadd59ab6137ef62093a808861500f565b6040518263ffffffff1660e01b815260040161380d91815260200190565b602060405180830381865afa15801561382a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061384e9190614f58565b61386090678ac7230489e80000614ff0565b61386a9190614ff0565b613874919061500f565b61387e9086614f93565b94505b42820361388e57506138ab565b8192506138a38262093a806137949190614f93565b91505061379d565b50505b6040517f8b752bb00000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000001690638b752bb090604401602060405180830381865afa158015613953573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139779190614f58565b6040517fde263bfa000000000000000000000000000000000000000000000000000000008152306004820152678ac7230489e80000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063de263bfa90602401602060405180830381865afa1580156139fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a229190614f58565b613a2c9085614f41565b6040517f13ecb1ca0000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906313ecb1ca90602401602060405180830381865afa158015613aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613acd9190614f58565b613ad79190614ff0565b613ae1919061500f565b6040517f094007070000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630940070790602401602060405180830381865afa158015613b5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b829190614f58565b613b8c9190614f93565b613b969190614f41565b6010549095506001600160a01b031615613bd257612710600f5486613bbb9190614ff0565b613bc5919061500f565b613bcf9086614f41565b94505b5050505090565b6000613be36141da565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015613c4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c6e9190614f58565b600d5490915060005b81811015613f43576000600d8281548110613c9457613c94614fab565b6000918252602090912001546001600160a01b0390811691507f0000000000000000000000000000000000000000000000000000000000000000168103613dbf57478015613d51577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613d3757600080fd5b505af1158015613d4b573d6000803e3d6000fd5b50505050505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603613dbd57613db48186614f93565b94505050613f31565b505b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015613e06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e2a9190614f58565b9050600081118015613e6e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15613f2e57600e546040516377ccc49d60e11b8152600481018390526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000081166044830152600092169063ef99893a90606401600060405180830381865afa158015613eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f159190810190615139565b9050613f20816144ab565b613f2a9087614f93565b9550505b50505b80613f3b81614fc1565b915050613c77565b509092915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461407757600e546040516377ccc49d60e11b8152600481018490526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f000000000000000000000000000000000000000000000000000000000000000081166044830152600092169063ef99893a90606401600060405180830381865afa158015614040573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140689190810190615139565b9050614073816144ab565b9250505b610a3a82614658565b60606121c38484600085614b55565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af115801561411e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141429190614f71565b506040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b6b55f2590602401600060405180830381600087803b1580156141be57600080fd5b505af11580156141d2573d6000803e3d6000fd5b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6f1daf26040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561423557600080fd5b505af1158015614249573d6000803e3d6000fd5b50506040516303638f4960e51b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000169250636c71e9209150602401602060405180830381865afa1580156142d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142f79190614f71565b15612456576040517f6a6278420000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636a62784290602401600060405180830381600087803b15801561439857600080fd5b505af11580156143ac573d6000803e3d6000fd5b50506010546001600160a01b0316159150612456905057600f546040516370a0823160e01b8152306004820152600091612710916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015614431573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144559190614f58565b61445f9190614ff0565b614469919061500f565b90508015611adf57601054611adf906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683612740565b805151600090158015906144e8575081518051600091906144ce90600190614f41565b815181106144de576144de614fab565b6020026020010151115b1561465057816040015160008151811061450457614504614fab565b60200260200101516001600160a01b031663095ea7b3600e60009054906101000a90046001600160a01b0316846000015160008151811061454757614547614fab565b60200260200101516040518363ffffffff1660e01b81526004016145809291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af115801561459f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145c39190614f71565b50600e546040517f5b2466160000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690635b2466169061460d90859060040161537a565b6020604051808303816000875af115801561462c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3a9190614f58565b506000919050565b601154600090819067ffffffffffffffff81111561467857614678615031565b6040519080825280602002602001820160405280156146a1578160200160208202803683370190505b50905060007f00000000000000000000000000000000000000000000000000000000000000006146d25781516146e0565b600182516146e09190614f41565b67ffffffffffffffff8111156146f8576146f8615031565b604051908082528060200260200182016040528015614721578160200160208202803683370190505b5090506000805b835181101561489c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166011828154811061476e5761476e614fab565b6000918252602090912001546001600160a01b03161461478f576000614791565b855b8482815181106147a3576147a3614fab565b6020026020010181815250507f000000000000000000000000000000000000000000000000000000000000000080156147fb57507f000000000000000000000000000000000000000000000000000000000000000081145b61488a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166011828154811061483c5761483c614fab565b6000918252602090912001546001600160a01b03161461485d57600061485f565b855b83838151811061487157614871614fab565b60209081029190910101528161488681614fc1565b9250505b8061489481614fc1565b915050614728565b50600060018360006040516020016148b6939291906153e9565b60408051601f198184030181526011805460a060208202860181019094526080850181815292955060009493849392919084018282801561492057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311614902575b505050505081526020018681526020018381526020016000151581525090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000896040518363ffffffff1660e01b81526004016149c19291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af11580156149e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a049190614f71565b506040517fb95cac280000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b95cac2890614a90907f000000000000000000000000000000000000000000000000000000000000000090309081908790600401615415565b600060405180830381600087803b158015614aaa57600080fd5b505af1158015614abe573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506370a082319150602401602060405180830381865afa158015614b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b4a9190614f58565b979650505050505050565b606082471015614bcd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610b88565b6001600160a01b0385163b614c245760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b88565b600080866001600160a01b03168587604051614c4091906154a8565b60006040518083038185875af1925050503d8060008114614c7d576040519150601f19603f3d011682016040523d82523d6000602084013e614c82565b606091505b5091509150614b4a82828660608315614c9c575081610b02565b825115614cac5782518084602001fd5b8160405162461bcd60e51b8152600401610b889190614d22565b60005b83811015614ce1578181015183820152602001614cc9565b83811115614cf0576000848401525b50505050565b60008151808452614d0e816020860160208601614cc6565b601f01601f19169290920160200192915050565b602081526000610b026020830184614cf6565b6001600160a01b0381168114611adf57600080fd5b60008060408385031215614d5d57600080fd5b8235614d6881614d35565b946020939093013593505050565b600060208284031215614d8857600080fd5b5035919050565b600080600060608486031215614da457600080fd5b8335614daf81614d35565b92506020840135614dbf81614d35565b929592945050506040919091013590565b803560ff81168114614de157600080fd5b919050565b600080600080600060a08688031215614dfe57600080fd5b8535945060208601359350614e1560408701614dd0565b94979396509394606081013594506080013592915050565b600060208284031215614e3f57600080fd5b8135610b0281614d35565b60008060408385031215614e5d57600080fd5b8235614e6881614d35565b91506020830135614e7881614d35565b809150509250929050565b600080600080600080600060e0888a031215614e9e57600080fd5b8735614ea981614d35565b96506020880135614eb981614d35565b95506040880135945060608801359350614ed560808901614dd0565b925060a0880135915060c0880135905092959891949750929550565b600181811c90821680614f0557607f821691505b602082108103614f2557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015614f5357614f53614f2b565b500390565b600060208284031215614f6a57600080fd5b5051919050565b600060208284031215614f8357600080fd5b81518015158114610b0257600080fd5b60008219821115614fa657614fa6614f2b565b500190565b634e487b7160e01b600052603260045260246000fd5b600060018201614fd357614fd3614f2b565b5060010190565b634e487b7160e01b600052603160045260246000fd5b600081600019048311821515161561500a5761500a614f2b565b500290565b60008261502c57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561506a5761506a615031565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561509957615099615031565b604052919050565b600067ffffffffffffffff8211156150bb576150bb615031565b5060051b60200190565b600082601f8301126150d657600080fd5b815160206150eb6150e6836150a1565b615070565b82815260059290921b8401810191818101908684111561510a57600080fd5b8286015b8481101561512e57805161512181614d35565b835291830191830161510e565b509695505050505050565b6000602080838503121561514c57600080fd5b825167ffffffffffffffff8082111561516457600080fd5b908401906080828703121561517857600080fd5b615180615047565b82518281111561518f57600080fd5b8301601f810188136151a057600080fd5b80516151ae6150e6826150a1565b81815260059190911b8201860190868101908a8311156151cd57600080fd5b928701925b828410156151eb578351825292870192908701906151d2565b8452505050828401518281111561520157600080fd5b61520d888286016150c5565b8583015250604083015193508184111561522657600080fd5b615232878585016150c5565b6040820152606083015160608201528094505050505092915050565b600080835481600182811c91508083168061526a57607f831692505b6020808410820361528957634e487b7160e01b86526022600452602486fd5b81801561529d57600181146152ae576152db565b60ff198616895284890196506152db565b60008a81526020902060005b868110156152d35781548b8201529085019083016152ba565b505084890196505b509498975050505050505050565b6000602082840312156152fb57600080fd5b8151610b0281614d35565b600081518084526020808501945080840160005b838110156153365781518752958201959082019060010161531a565b509495945050505050565b600081518084526020808501945080840160005b838110156153365781516001600160a01b031687529582019590820190600101615355565b60208152600082516080602084015261539660a0840182615306565b90506020840151601f19808584030160408601526153b48383615341565b92506040860151915080858403016060860152506153d28282615341565b915050606084015160808401528091505092915050565b8381526060602082015260006154026060830185615306565b905060ff83166040830152949350505050565b84815260006001600160a01b038086166020840152808516604084015250608060608301528251608080840152615450610100840182615341565b90506020840151607f19808584030160a086015261546e8383615306565b925060408601519150808584030160c08601525061548c8282614cf6565b9150506060840151151560e08401528091505095945050505050565b600082516154ba818460208701614cc6565b919091019291505056fea2646970667358221220961defe70b7f0dfb14fea99fbbc18c72e842c5bd66a605dd7ecd9821945615f164736f6c634300080d00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000720158c329e6558287c4539b0ed21742b0b73436000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c8000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c70000000000000000000000000000000000000000000000000000000000000060000000000000000000000000959a0af5a46f76aa37317bc417d48b445658b1880000000000000000000000000000000000000000000000000000000000000001000000000000000000000000040d1edc9569d4bab2d15287dc5a4f10f56a56b80000000000000000000000000000000000000000000000000000000000000120000000000000000000000000dcedf06fd33e1d7b6eb4b309f779a0e9d3172e44000000000000000000000000dcedf06fd33e1d7b6eb4b309f779a0e9d3172e440000000000000000000000002d580f9cf2fb2d09bc411532988f2afda4e7beff0000000000000000000000009fa6ab3d78984a69e712730a2227f20bcc8b5ad9000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c700000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000002bc000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000001a5969656c642059616b3a207979415641582d415641582d425054000000000000