[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint256", "name": "_approvalDelay", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "uint256", "name": "prod1", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "Math512Bits__MulDivOverflow", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "x", "type": "uint256" } ], "name": "SafeCast__Exceeds24Bits", "type": "error" }, { "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": false, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountX", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountY", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "NewStratCandidate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "UpgradeStrat", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountX", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountY", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "approvalDelay", "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": "amountXDesired", "type": "uint256" }, { "internalType": "uint256", "name": "amountYDesired", "type": "uint256" } ], "name": "calcSharesAndAmounts", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "uint256", "name": "amountX", "type": "uint256" }, { "internalType": "uint256", "name": "amountY", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amountX", "type": "uint256" }, { "internalType": "uint256", "name": "amountY", "type": "uint256" }, { "internalType": "uint256", "name": "amountXMin", "type": "uint256" }, { "internalType": "uint256", "name": "amountYMin", "type": "uint256" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "uint256", "name": "amountXActual", "type": "uint256" }, { "internalType": "uint256", "name": "amountYActual", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amountX", "type": "uint256" }, { "internalType": "uint256", "name": "amountY", "type": "uint256" }, { "internalType": "uint256", "name": "amountXMin", "type": "uint256" }, { "internalType": "uint256", "name": "amountYMin", "type": "uint256" } ], "name": "depositAVAXPair", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "uint256", "name": "amountXActual", "type": "uint256" }, { "internalType": "uint256", "name": "amountYActual", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" } ], "name": "getUnderlyingAssets", "outputs": [ { "internalType": "uint256", "name": "totalX", "type": "uint256" }, { "internalType": "uint256", "name": "totalY", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_lbToken", "type": "address" }, { "internalType": "uint256", "name": "_id", "type": "uint256" } ], "name": "inCaseLBTokensGetStuck", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" } ], "name": "inCaseTokensGetStuck", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_implementation", "type": "address" } ], "name": "proposeStrat", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_strategy", "type": "address" } ], "name": "setStrategyAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stratCandidate", "outputs": [ { "internalType": "address", "name": "implementation", "type": "address" }, { "internalType": "uint256", "name": "proposedTime", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "strategy", "outputs": [ { "internalType": "contract ILBStrategy", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "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": [], "name": "upgradeStrat", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "want", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" }, { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "wavax", "outputs": [ { "internalType": "contract IWrappedNative", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "amountX", "type": "uint256" }, { "internalType": "uint256", "name": "amountY", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" } ], "name": "withdrawAVAXPair", "outputs": [ { "internalType": "uint256", "name": "amountX", "type": "uint256" }, { "internalType": "uint256", "name": "amountY", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60c060405273b31f66aa3c1e785363f0875a1b74e27b85fd66c760a0523480156200002957600080fd5b5060405162003e4138038062003e418339810160408190526200004c9162000272565b82518390839062000065906003906020850190620000ff565b5080516200007b906004906020840190620000ff565b5050506200009862000092620000a960201b60201c565b620000ad565b600160065560805250620003229050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200010d90620002e5565b90600052602060002090601f0160209004810192826200013157600085556200017c565b82601f106200014c57805160ff19168380011785556200017c565b828001600101855582156200017c579182015b828111156200017c5782518255916020019190600101906200015f565b506200018a9291506200018e565b5090565b5b808211156200018a57600081556001016200018f565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001cd57600080fd5b81516001600160401b0380821115620001ea57620001ea620001a5565b604051601f8301601f19908116603f01168101908282118183101715620002155762000215620001a5565b816040528381526020925086838588010111156200023257600080fd5b600091505b8382101562000256578582018301518183018401529082019062000237565b83821115620002685760008385830101525b9695505050505050565b6000806000606084860312156200028857600080fd5b83516001600160401b0380821115620002a057600080fd5b620002ae87838801620001bb565b94506020860151915080821115620002c557600080fd5b50620002d486828701620001bb565b925050604084015190509250925092565b600181811c90821680620002fa57607f821691505b602082108114156200031c57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051613ab36200038e600039600081816101ec015281816102e10152818161110c0152818161122201528181611fb001528181612099015281816121810152818161226a015281816130cd015261314b01526000818161069601526124470152613ab36000f3fe6080604052600436106101dc5760003560e01c8063715018a611610102578063a9059cbb11610095578063def68a9c11610064578063def68a9c14610664578063e2d1e75c14610684578063e6685244146106b8578063f2fde38b146106cd57600080fd5b8063a9059cbb146105e4578063cbe3619614610604578063cc177e9814610624578063dd62ed3e1461064457600080fd5b80638da5cb5b116100d15780638da5cb5b1461057157806395d89b411461058f578063a457c2d7146105a4578063a8c62e76146105c457600080fd5b8063715018a6146104e457806376dfabb8146104f95780638405f1d41461053c578063853828b61461055c57600080fd5b80632505c3d91161017a57806340ff395b1161014957806340ff395b1461045b57806358a3b1b61461046e5780635b12ff9b1461048e57806370a08231146104ae57600080fd5b80632505c3d9146103af5780632e1a7d4d146103ea578063313ce5671461041f578063395093511461043b57600080fd5b806318160ddd116101b657806318160ddd1461031b5780631f1fcd511461033a57806323b872dd1461036f57806324cfba9f1461038f57600080fd5b806306fdde0314610274578063095ea7b31461029f578063117be4c2146102cf57600080fd5b3661026f57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461026d5760405162461bcd60e51b815260206004820152602660248201527f5661756c744e61746976653a2053656e646572206e6f7420574156415820636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b005b600080fd5b34801561028057600080fd5b506102896106ed565b604051610296919061367b565b60405180910390f35b3480156102ab57600080fd5b506102bf6102ba3660046136c3565b61077f565b6040519015158152602001610296565b3480156102db57600080fd5b506103037f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610296565b34801561032757600080fd5b506002545b604051908152602001610296565b34801561034657600080fd5b5061034f610797565b604080516001600160a01b03938416815292909116602083015201610296565b34801561037b57600080fd5b506102bf61038a3660046136ef565b610890565b34801561039b57600080fd5b5061026d6103aa366004613730565b6108b4565b3480156103bb57600080fd5b506103cf6103ca36600461374d565b610969565b60408051938452602084019290925290820152606001610296565b3480156103f657600080fd5b5061040a61040536600461377f565b610c52565b60408051928352602083019190915201610296565b34801561042b57600080fd5b5060405160128152602001610296565b34801561044757600080fd5b506102bf6104563660046136c3565b6110e3565b6103cf61046936600461374d565b611105565b34801561047a57600080fd5b5061026d6104893660046136c3565b611314565b34801561049a57600080fd5b5061026d6104a9366004613730565b611401565b3480156104ba57600080fd5b5061032c6104c9366004613730565b6001600160a01b031660009081526020819052604090205490565b3480156104f057600080fd5b5061026d611796565b34801561050557600080fd5b5060075460085461051d916001600160a01b03169082565b604080516001600160a01b039093168352602083019190915201610296565b34801561054857600080fd5b506103cf610557366004613798565b6117aa565b34801561056857600080fd5b5061026d611a55565b34801561057d57600080fd5b506005546001600160a01b0316610303565b34801561059b57600080fd5b50610289611a72565b3480156105b057600080fd5b506102bf6105bf3660046136c3565b611a81565b3480156105d057600080fd5b50600954610303906001600160a01b031681565b3480156105f057600080fd5b506102bf6105ff3660046136c3565b611afc565b34801561061057600080fd5b5061040a61061f36600461377f565b611b0a565b34801561063057600080fd5b5061040a61063f36600461377f565b611cae565b34801561065057600080fd5b5061032c61065f3660046137ba565b61232f565b34801561067057600080fd5b5061026d61067f366004613730565b61235a565b34801561069057600080fd5b5061032c7f000000000000000000000000000000000000000000000000000000000000000081565b3480156106c457600080fd5b5061026d6123e3565b3480156106d957600080fd5b5061026d6106e8366004613730565b61281c565b6060600380546106fc906137f3565b80601f0160208091040260200160405190810160405280929190818152602001828054610728906137f3565b80156107755780601f1061074a57610100808354040283529160200191610775565b820191906000526020600020905b81548152906001019060200180831161075857829003601f168201915b5050505050905090565b60003361078d818585612895565b5060019392505050565b600080600960009054906101000a90046001600160a01b03166001600160a01b03166316dc165b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610811919061382e565b600960009054906101000a90046001600160a01b03166001600160a01b031663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610864573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610888919061382e565b915091509091565b60003361089e8582856129b9565b6108a9858585612a33565b506001949350505050565b6108bc612bd7565b6009546001600160a01b0316156109155760405162461bcd60e51b815260206004820152601b60248201527f5661756c743a20537472617465677920616c72656164792053657400000000006044820152606401610264565b600980546001600160a01b0319166001600160a01b0383169081179091556040519081527f7f37d440e85aba7fbf641c4bda5ca4ef669a80bffaacde2aa8d9feb1b048c82c9060200160405180910390a150565b6000806000610976612c31565b60008711806109855750600086115b6109d15760405162461bcd60e51b815260206004820152601a60248201527f5661756c743a206465706f7369742063616e6e6f7420626520300000000000006044820152606401610264565b60025415610a4257600960009054906101000a90046001600160a01b03166001600160a01b0316634641257d6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a2957600080fd5b505af1158015610a3d573d6000803e3d6000fd5b505050505b610a4c87876117aa565b9194509250905082610a895760405162461bcd60e51b815260206004820152600660248201526573686172657360d01b6044820152606401610264565b84821015610ac65760405162461bcd60e51b815260206004820152600a60248201526930b6b7bab73a1826b4b760b11b6044820152606401610264565b83811015610b035760405162461bcd60e51b815260206004820152600a60248201526930b6b7bab73a18a6b4b760b11b6044820152606401610264565b8115610b9257600954604080516316dc165b60e01b81529051610b929233926001600160a01b0390911691869183916316dc165b916004808201926020929091908290030181865afa158015610b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b81919061382e565b6001600160a01b0316929190612c8b565b8015610bec5760095460408051632df467f160e21b81529051610bec9233926001600160a01b03909116918591839163b7d19fc4916004808201926020929091908290030181865afa158015610b5d573d6000803e3d6000fd5b610bf63384612cf6565b6040805133815260208101849052908101829052606081018490527f36af321ec8d3c75236829c5317affd40ddb308863a1236d2d277a4025cccee1e9060800160405180910390a1610c486001600655565b9450945094915050565b600080610c5d612c31565b60008311610ca95760405162461bcd60e51b815260206004820152601960248201527815985d5b1d0e88189d5c9b880c081b9bdd08185b1b1bddd959603a1b6044820152606401610264565b33600090815260208190526040902054831115610cc557600080fd5b6000610cd060025490565b9050610cdc3385612db5565b60008185600960009054906101000a90046001600160a01b03166001600160a01b0316633b6bc1a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d57919061384b565b610d61919061387a565b610d6b91906138af565b905060008286600960009054906101000a90046001600160a01b03166001600160a01b0316637d3db0676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de8919061384b565b610df2919061387a565b610dfc91906138af565b600954604080516335a7476b60e21b815290519293506000928392610ef6926001600160a01b0390911691829163d69d1dac91600480830192889291908290030181865afa158015610e52573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e7a91908101906138e7565b600960009054906101000a90046001600160a01b03166001600160a01b031663625af7676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef1919061382e565b612ee7565b915091506000806000841180610f0c5750600083115b15610fbd5760008a6001610f288a670de0b6b3a764000061387a565b610f3291906139a5565b610f3c91906138af565b610f479060016139bc565b600954604051639c8f9f2360e01b8152600481018390529192506001600160a01b031690639c8f9f239060240160408051808303816000875af1158015610f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb691906139d4565b9093509150505b610fc782876139bc565b9850610fd381866139bc565b9750881561102d57600954604080516316dc165b60e01b8152905161102d926001600160a01b03169133918d9184916316dc165b916004808201926020929091908290030181865afa158015610b5d573d6000803e3d6000fd5b87156110855760095460408051632df467f160e21b81529051611085926001600160a01b03169133918c91849163b7d19fc4916004808201926020929091908290030181865afa158015610b5d573d6000803e3d6000fd5b60408051338152602081018b9052908101899052606081018b90527f02f25270a4d87bea75db541cdfe559334a275b4a233520ed6c0a2429667cca949060800160405180910390a1505050505050506110de6001600655565b915091565b60003361078d8185856110f6838361232f565b61110091906139bc565b612895565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600960009054906101000a90046001600160a01b03166001600160a01b03166316dc165b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab919061382e565b6001600160a01b03161415611205573487146112055760405162461bcd60e51b815260206004820152601960248201527813985d1a5d994e88105b5bdd5b9d1cc81b9bdd08195c5d585b603a1b6044820152606401610264565b60095460408051632df467f160e21b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811693169163b7d19fc49160048083019260209291908290030181865afa158015611270573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611294919061382e565b6001600160a01b031614156112ee573486146112ee5760405162461bcd60e51b815260206004820152601960248201527813985d1a5d994e88105b5bdd5b9d1cc81b9bdd08195c5d585b603a1b6044820152606401610264565b6112f833346130cb565b61130487878787610969565b9199909850909650945050505050565b61131c612bd7565b604051627eeac760e11b8152306004820152602481018290526000906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611368573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138c919061384b565b604051630febdd4960e01b815230600482015233602482015260448101849052606481018290529091506001600160a01b03841690630febdd4990608401600060405180830381600087803b1580156113e457600080fd5b505af11580156113f8573d6000803e3d6000fd5b50505050505050565b611409612bd7565b806001600160a01b031663fbfa77cf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611447573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146b919061382e565b6001600160a01b0316306001600160a01b0316146114d55760405162461bcd60e51b815260206004820152602160248201527f50726f706f73616c206e6f742076616c696420666f722074686973205661756c6044820152601d60fa1b6064820152608401610264565b600954604080516316dc165b60e01b815290516001600160a01b03928316928492908316916316dc165b916004808201926020929091908290030181865afa158015611525573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611549919061382e565b6001600160a01b0316826001600160a01b03166316dc165b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b4919061382e565b6001600160a01b03161461160a5760405162461bcd60e51b815260206004820152601c60248201527f50726f706f73616c3a20746f6b656e732058206e6f74206d61746368000000006044820152606401610264565b806001600160a01b031663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611648573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166c919061382e565b6001600160a01b0316826001600160a01b031663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d7919061382e565b6001600160a01b03161461172d5760405162461bcd60e51b815260206004820152601c60248201527f50726f706f73616c3a20746f6b656e732059206e6f74206d61746368000000006044820152606401610264565b6040805180820182526001600160a01b038516808252426020928301819052600780546001600160a01b0319168317905560085591519182527f1aae2ec5647db56da2d513de40528ba3565c6057525637050660c4323bbac7df910160405180910390a1505050565b61179e612bd7565b6117a86000613176565b565b6000806000806117b960025490565b600954604080516335a7476b60e21b81529051929350600092839261180f926001600160a01b0390911691829163d69d1dac91600480830192889291908290030181865afa158015610e52573d6000803e3d6000fd5b91509150600960009054906101000a90046001600160a01b03166001600160a01b0316633b6bc1a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188a919061384b565b61189490836139bc565b9150600960009054906101000a90046001600160a01b03166001600160a01b0316637d3db0676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190d919061384b565b61191790826139bc565b90508215806119265750600082115b806119315750600081115b61193d5761193d6139f8565b826119595787945086935061195285856131c8565b9550611a4b565b81611976578693508061196c848661387a565b61195291906138af565b80611989578794508161196c848761387a565b60006119a7611998838b61387a565b6119a2858b61387a565b6131e0565b9050600081116119e15760405162461bcd60e51b815260206004820152600560248201526463726f737360d81b6044820152606401610264565b816119ed6001836139a5565b6119f791906138af565b611a029060016139bc565b955082611a106001836139a5565b611a1a91906138af565b611a259060016139bc565b94508183611a33868461387a565b611a3d91906138af565b611a4791906138af565b9650505b5050509250925092565b33600090815260208190526040902054611a6e90610c52565b5050565b6060600480546106fc906137f3565b60003381611a8f828661232f565b905083811015611aef5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610264565b6108a98286868403612895565b60003361078d818585612a33565b6000806000611b1860025490565b905080611b2b5750600093849350915050565b600954604080516335a7476b60e21b81529051611b79926001600160a01b031691829163d69d1dac916004808201926000929091908290030181865afa158015610e52573d6000803e3d6000fd5b60095460408051633b6bc1a760e01b815290519396509194506001600160a01b031691633b6bc1a7916004808201926020929091908290030181865afa158015611bc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611beb919061384b565b611bf590846139bc565b9250600960009054906101000a90046001600160a01b03166001600160a01b0316637d3db0676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6e919061384b565b611c7890836139bc565b915080611c85858561387a565b611c8f91906138af565b925080611c9c858461387a565b611ca691906138af565b915050915091565b600080611cb9612c31565b60008311611d055760405162461bcd60e51b815260206004820152601960248201527815985d5b1d0e88189d5c9b880c081b9bdd08185b1b1bddd959603a1b6044820152606401610264565b33600090815260208190526040902054831115611d2157600080fd5b6000611d2c60025490565b9050611d383385612db5565b60008185600960009054906101000a90046001600160a01b03166001600160a01b0316633b6bc1a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db3919061384b565b611dbd919061387a565b611dc791906138af565b905060008286600960009054906101000a90046001600160a01b03166001600160a01b0316637d3db0676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e44919061384b565b611e4e919061387a565b611e5891906138af565b600954604080516335a7476b60e21b815290519293506000928392611eae926001600160a01b0390911691829163d69d1dac91600480830192889291908290030181865afa158015610e52573d6000803e3d6000fd5b915091506000806000841180611ec45750600083115b15611f755760008a6001611ee08a670de0b6b3a764000061387a565b611eea91906139a5565b611ef491906138af565b611eff9060016139bc565b600954604051639c8f9f2360e01b8152600481018390529192506001600160a01b031690639c8f9f239060240160408051808303816000875af1158015611f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6e91906139d4565b9093509150505b611f7f82876139bc565b9850611f8b81866139bc565b9750881561215e57600954604080516316dc165b60e01b815290516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169316916316dc165b9160048083019260209291908290030181865afa158015611ffe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612022919061382e565b6001600160a01b0316141561210c57600954604080516316dc165b60e01b81529051612083926001600160a01b03169130918d9184916316dc165b916004808201926020929091908290030181865afa158015610b5d573d6000803e3d6000fd5b604051632e1a7d4d60e01b8152600481018a90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156120e557600080fd5b505af11580156120f9573d6000803e3d6000fd5b50505050612107338a6131ef565b61215e565b600954604080516316dc165b60e01b8152905161215e926001600160a01b03169133918d9184916316dc165b916004808201926020929091908290030181865afa158015610b5d573d6000803e3d6000fd5b87156110855760095460408051632df467f160e21b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811693169163b7d19fc49160048083019260209291908290030181865afa1580156121cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f3919061382e565b6001600160a01b031614156122dd5760095460408051632df467f160e21b81529051612254926001600160a01b03169130918c91849163b7d19fc4916004808201926020929091908290030181865afa158015610b5d573d6000803e3d6000fd5b604051632e1a7d4d60e01b8152600481018990527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156122b657600080fd5b505af11580156122ca573d6000803e3d6000fd5b505050506122d833896131ef565b611085565b60095460408051632df467f160e21b81529051611085926001600160a01b03169133918c91849163b7d19fc4916004808201926020929091908290030181865afa158015610b5d573d6000803e3d6000fd5b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b612362612bd7565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123cd919061384b565b9050611a6e6001600160a01b0383163383613292565b6123eb612bd7565b6007546001600160a01b03168061243c5760405162461bcd60e51b81526020600482015260156024820152745468657265206973206e6f2063616e64696461746560581b6044820152606401610264565b600854429061246c907f0000000000000000000000000000000000000000000000000000000000000000906139bc565b106124b05760405162461bcd60e51b815260206004820152601460248201527311195b185e481a185cc81b9bdd081c185cdcd95960621b6044820152606401610264565b6040516001600160a01b03821681527f7f37d440e85aba7fbf641c4bda5ca4ef669a80bffaacde2aa8d9feb1b048c82c9060200160405180910390a1600960009054906101000a90046001600160a01b03166001600160a01b031663fb6177876040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561253c57600080fd5b505af1158015612550573d6000803e3d6000fd5b5050600980546001600160a01b0385166001600160a01b0319918216811790925560078054909116905564012a05f200600855604080516316dc165b60e01b81529051600094509192506316dc165b9160048083019260209291908290030181865afa1580156125c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e8919061382e565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561262e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612652919061384b565b90506000600960009054906101000a90046001600160a01b03166001600160a01b031663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126cd919061382e565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015612713573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612737919061384b565b905081156127c257600954604080516316dc165b60e01b815290516127c2926001600160a01b031691859183916316dc165b9160048083019260209291908290030181865afa15801561278e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b2919061382e565b6001600160a01b03169190613292565b80156128175760095460408051632df467f160e21b81529051612817926001600160a01b0316918491839163b7d19fc49160048083019260209291908290030181865afa15801561278e573d6000803e3d6000fd5b505050565b612824612bd7565b6001600160a01b0381166128895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610264565b61289281613176565b50565b6001600160a01b0383166128f75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610264565b6001600160a01b0382166129585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610264565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006129c5848461232f565b90506000198114612a2d5781811015612a205760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610264565b612a2d8484848403612895565b50505050565b6001600160a01b038316612a975760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610264565b6001600160a01b038216612af95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610264565b6001600160a01b03831660009081526020819052604090205481811015612b715760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610264565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3612a2d565b6005546001600160a01b031633146117a85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610264565b60026006541415612c845760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610264565b6002600655565b6040516001600160a01b0380851660248301528316604482015260648101829052612a2d9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526132c2565b6001600160a01b038216612d4c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610264565b8060026000828254612d5e91906139bc565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216612e155760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610264565b6001600160a01b03821660009081526020819052604090205481811015612e895760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610264565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60008060005b84518110156130c2576000612f1a868381518110612f0d57612f0d613a0e565b6020026020010151613394565b604051627eeac760e11b81526001600160a01b03898116600483015262ffffff8316602483015291925060009187169062fdd58e90604401602060405180830381865afa158015612f6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f93919061384b565b604051630157d2d160e31b815262ffffff8416600482015290915060009081906001600160a01b03891690630abe9688906024016040805180830381865afa158015612fe3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300791906139d4565b60405163bd85b03960e01b815262ffffff8716600482015291935091506000906001600160a01b038a169063bd85b03990602401602060405180830381865afa158015613058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307c919061384b565b90506130898484836133c2565b61309390896139bc565b97506130a08483836133c2565b6130aa90886139bc565b96505050505050806130bb90613a24565b9050612eed565b50935093915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561312657600080fd5b505af115801561313a573d6000803e3d6000fd5b50611a6e9350506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915084905083613292565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008183116131d757816131d9565b825b9392505050565b60008183106131d757816131d9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461323c576040519150601f19603f3d011682016040523d82523d6000602084013e613241565b606091505b50509050806128175760405162461bcd60e51b815260206004820181905260248201527f5661756c744e61746976653a204661696c656420746f2053656e6420415641586044820152606401610264565b6040516001600160a01b03831660248201526044810182905261281790849063a9059cbb60e01b90606401612cbf565b6000613317826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166133ec9092919063ffffffff16565b80519091501561281757808060200190518101906133359190613a3f565b6128175760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610264565b8062ffffff811681146133bd57604051631da527cf60e21b815260048101839052602401610264565b919050565b60008060006133d18686613403565b915091506133e28686868585613422565b9695505050505050565b60606133fb84846000856134d9565b949350505050565b6000806000198385098385029250828110838203039150509250929050565b6000816134405783838161343857613438613899565b0490506134d0565b83821061346a5760405163656b542b60e11b81526004810183905260248101859052604401610264565b60008486880960018619810187169687900496600081900381900490910186831190950394850291909503949094049390931792505060026003840281188085028203028085028203028085028203028085028203028085028203028085029091030282025b95945050505050565b60608247101561353a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610264565b600080866001600160a01b031685876040516135569190613a61565b60006040518083038185875af1925050503d8060008114613593576040519150601f19603f3d011682016040523d82523d6000602084013e613598565b606091505b50915091506135a9878383876135b4565b979650505050505050565b60608315613620578251613619576001600160a01b0385163b6136195760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610264565b50816133fb565b6133fb83838151156136355781518083602001fd5b8060405162461bcd60e51b8152600401610264919061367b565b60005b8381101561366a578181015183820152602001613652565b83811115612a2d5750506000910152565b602081526000825180602084015261369a81604085016020870161364f565b601f01601f19169190910160400192915050565b6001600160a01b038116811461289257600080fd5b600080604083850312156136d657600080fd5b82356136e1816136ae565b946020939093013593505050565b60008060006060848603121561370457600080fd5b833561370f816136ae565b9250602084013561371f816136ae565b929592945050506040919091013590565b60006020828403121561374257600080fd5b81356131d9816136ae565b6000806000806080858703121561376357600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561379157600080fd5b5035919050565b600080604083850312156137ab57600080fd5b50508035926020909101359150565b600080604083850312156137cd57600080fd5b82356137d8816136ae565b915060208301356137e8816136ae565b809150509250929050565b600181811c9082168061380757607f821691505b6020821081141561382857634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561384057600080fd5b81516131d9816136ae565b60006020828403121561385d57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561389457613894613864565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826138cc57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156138fa57600080fd5b825167ffffffffffffffff8082111561391257600080fd5b818501915085601f83011261392657600080fd5b815181811115613938576139386138d1565b8060051b604051601f19603f8301168101818110858211171561395d5761395d6138d1565b60405291825284820192508381018501918883111561397b57600080fd5b938501935b8285101561399957845184529385019392850192613980565b98975050505050505050565b6000828210156139b7576139b7613864565b500390565b600082198211156139cf576139cf613864565b500190565b600080604083850312156139e757600080fd5b505080516020909101519092909150565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000600019821415613a3857613a38613864565b5060010190565b600060208284031215613a5157600080fd5b815180151581146131d957600080fd5b60008251613a7381846020870161364f565b919091019291505056fea264697066735822122093e4af0c223c6b9f78341db83336fbaa99c01dcb9da815fb50e735303b26d65264736f6c634300080a0033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000258000000000000000000000000000000000000000000000000000000000000000f53484c425f4a4f452d415641585f420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f53484c425f4a4f452d415641585f420000000000000000000000000000000000