[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address[]", "name": "_assets", "type": "address[]" }, { "internalType": "uint256[]", "name": "_assetWeights", "type": "uint256[]" }, { "internalType": "address", "name": "_factory", "type": "address" }, { "internalType": "address", "name": "_config", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "numeraire", "type": "address" }, { "indexed": true, "internalType": "address", "name": "reserve", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "weight", "type": "uint256" } ], "name": "AssetIncluded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "derivative", "type": "address" }, { "indexed": true, "internalType": "address", "name": "numeraire", "type": "address" }, { "indexed": true, "internalType": "address", "name": "reserve", "type": "address" }, { "indexed": false, "internalType": "address", "name": "assimilator", "type": "address" } ], "name": "AssimilatorIncluded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "isEmergency", "type": "bool" } ], "name": "EmergencyAlarm", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "isFrozen", "type": "bool" } ], "name": "FrozenSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransfered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "alpha", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "beta", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "delta", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "epsilon", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "lambda", "type": "uint256" } ], "name": "ParametersSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": true, "internalType": "address", "name": "redeemer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "PartitionRedeemed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "trader", "type": "address" }, { "indexed": true, "internalType": "address", "name": "origin", "type": "address" }, { "indexed": true, "internalType": "address", "name": "target", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "originAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "targetAmount", "type": "uint256" }, { "indexed": false, "internalType": "int128", "name": "rawProtocolFee", "type": "int128" } ], "name": "Trade", "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" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "allowance_", "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": "success_", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_derivative", "type": "address" } ], "name": "assimilator", "outputs": [ { "internalType": "address", "name": "assimilator_", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "balance_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "curve", "outputs": [ { "internalType": "int128", "name": "alpha", "type": "int128" }, { "internalType": "int128", "name": "beta", "type": "int128" }, { "internalType": "int128", "name": "delta", "type": "int128" }, { "internalType": "int128", "name": "epsilon", "type": "int128" }, { "internalType": "int128", "name": "lambda", "type": "int128" }, { "internalType": "uint256", "name": "totalSupply", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_deposit", "type": "uint256" }, { "internalType": "uint256", "name": "_minQuoteAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_minBaseAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_maxQuoteAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_maxBaseAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_deadline", "type": "uint256" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "curvesMinted_", "type": "uint256" }, { "internalType": "uint256[]", "name": "deposits_", "type": "uint256[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_deposit", "type": "uint256" }, { "internalType": "uint256", "name": "_minQuoteAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_minBaseAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_maxQuoteAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_maxBaseAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_deadline", "type": "uint256" } ], "name": "depositETH", "outputs": [ { "internalType": "uint256", "name": "curvesMinted_", "type": "uint256" }, { "internalType": "uint256[]", "name": "deposits_", "type": "uint256[]" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "derivatives", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "emergency", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_curvesToBurn", "type": "uint256" }, { "internalType": "uint256", "name": "_deadline", "type": "uint256" } ], "name": "emergencyWithdraw", "outputs": [ { "internalType": "uint256[]", "name": "withdrawals_", "type": "uint256[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_derivative", "type": "address" } ], "name": "excludeDerivative", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "frozen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWeth", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "liquidity", "outputs": [ { "internalType": "uint256", "name": "total_", "type": "uint256" }, { "internalType": "uint256[]", "name": "individual_", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "notEntered", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "numeraires", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_origin", "type": "address" }, { "internalType": "address", "name": "_target", "type": "address" }, { "internalType": "uint256", "name": "_originAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_minTargetAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_deadline", "type": "uint256" } ], "name": "originSwap", "outputs": [ { "internalType": "uint256", "name": "targetAmount_", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_target", "type": "address" }, { "internalType": "uint256", "name": "_minTargetAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_deadline", "type": "uint256" } ], "name": "originSwapFromETH", "outputs": [ { "internalType": "uint256", "name": "targetAmount_", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_origin", "type": "address" }, { "internalType": "uint256", "name": "_originAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_minTargetAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_deadline", "type": "uint256" } ], "name": "originSwapToETH", "outputs": [ { "internalType": "uint256", "name": "targetAmount_", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "reserves", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_baseCurrency", "type": "address" }, { "internalType": "address", "name": "_baseAssim", "type": "address" }, { "internalType": "address", "name": "_quoteCurrency", "type": "address" }, { "internalType": "address", "name": "_quoteAssim", "type": "address" } ], "name": "setAssimilator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_emergency", "type": "bool" } ], "name": "setEmergency", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_toFreezeOrNotToFreeze", "type": "bool" } ], "name": "setFrozen", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_alpha", "type": "uint256" }, { "internalType": "uint256", "name": "_beta", "type": "uint256" }, { "internalType": "uint256", "name": "_feeAtHalt", "type": "uint256" }, { "internalType": "uint256", "name": "_epsilon", "type": "uint256" }, { "internalType": "uint256", "name": "_lambda", "type": "uint256" } ], "name": "setParams", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "_interface", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "supports_", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_origin", "type": "address" }, { "internalType": "address", "name": "_target", "type": "address" }, { "internalType": "uint256", "name": "_maxOriginAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_targetAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_deadline", "type": "uint256" } ], "name": "targetSwap", "outputs": [ { "internalType": "uint256", "name": "originAmount_", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "totalSupply_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_recipient", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "success_", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_sender", "type": "address" }, { "internalType": "address", "name": "_recipient", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "success_", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "viewCurve", "outputs": [ { "internalType": "uint256", "name": "alpha_", "type": "uint256" }, { "internalType": "uint256", "name": "beta_", "type": "uint256" }, { "internalType": "uint256", "name": "delta_", "type": "uint256" }, { "internalType": "uint256", "name": "epsilon_", "type": "uint256" }, { "internalType": "uint256", "name": "lambda_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_deposit", "type": "uint256" } ], "name": "viewDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_origin", "type": "address" }, { "internalType": "address", "name": "_target", "type": "address" }, { "internalType": "uint256", "name": "_originAmount", "type": "uint256" } ], "name": "viewOriginSwap", "outputs": [ { "internalType": "uint256", "name": "targetAmount_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_origin", "type": "address" }, { "internalType": "address", "name": "_target", "type": "address" }, { "internalType": "uint256", "name": "_targetAmount", "type": "uint256" } ], "name": "viewTargetSwap", "outputs": [ { "internalType": "uint256", "name": "originAmount_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_curvesToBurn", "type": "uint256" } ], "name": "viewWithdraw", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_curvesToBurn", "type": "uint256" }, { "internalType": "uint256", "name": "_deadline", "type": "uint256" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256[]", "name": "withdrawals_", "type": "uint256[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_curvesToBurn", "type": "uint256" }, { "internalType": "uint256", "name": "_deadline", "type": "uint256" } ], "name": "withdrawETH", "outputs": [ { "internalType": "uint256[]", "name": "withdrawals_", "type": "uint256[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60c06040526010805462ffffff1916620100001790553480156200002257600080fd5b506040516200491d3803806200491d83398101604081905262000045916200043b565b306080526001600160a01b038216620000ae5760405162461bcd60e51b815260206004820152602160248201527f43757276652f637572766520666163746f7279207a65726f20616464726573736044820152602160f81b606482015260840160405180910390fd5b600a80546001600160a01b03191633179055600b620000ce8782620005a7565b50600c620000dd8682620005a7565b50601080546301000000600160b81b03191663010000006001600160a01b038581169190910291909117909155601180546001600160a01b03191691831691909117905560405133906000907f0d18b5fd22306e373229b9439188228edca81207d1667f604daf6cef8aa3ee67908290a3816001600160a01b031663f24286216040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b3919062000673565b6001600160a01b031660a052604051635931eef160e11b8152731190da269ffe6f4567fed0c3c9bba01f883722549063b263dde2906200020690600090600e90600f90600d908b908b9060040162000698565b60006040518083038186803b1580156200021f57600080fd5b505af415801562000234573d6000803e3d6000fd5b5050505050505050505062000740565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000285576200028562000244565b604052919050565b600082601f8301126200029f57600080fd5b81516001600160401b03811115620002bb57620002bb62000244565b6020620002d1601f8301601f191682016200025a565b8281528582848701011115620002e657600080fd5b60005b8381101562000306578581018301518282018401528201620002e9565b506000928101909101919091529392505050565b60006001600160401b0382111562000336576200033662000244565b5060051b60200190565b80516001600160a01b03811681146200035857600080fd5b919050565b600082601f8301126200036f57600080fd5b815160206200038862000382836200031a565b6200025a565b82815260059290921b84018101918181019086841115620003a857600080fd5b8286015b84811015620003ce57620003c08162000340565b8352918301918301620003ac565b509695505050505050565b600082601f830112620003eb57600080fd5b81516020620003fe62000382836200031a565b82815260059290921b840181019181810190868411156200041e57600080fd5b8286015b84811015620003ce578051835291830191830162000422565b60008060008060008060c087890312156200045557600080fd5b86516001600160401b03808211156200046d57600080fd5b6200047b8a838b016200028d565b975060208901519150808211156200049257600080fd5b620004a08a838b016200028d565b96506040890151915080821115620004b757600080fd5b620004c58a838b016200035d565b95506060890151915080821115620004dc57600080fd5b50620004eb89828a01620003d9565b935050620004fc6080880162000340565b91506200050c60a0880162000340565b90509295509295509295565b600181811c908216806200052d57607f821691505b6020821081036200054e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005a257600081815260208120601f850160051c810160208610156200057d5750805b601f850160051c820191505b818110156200059e5782815560010162000589565b5050505b505050565b81516001600160401b03811115620005c357620005c362000244565b620005db81620005d4845462000518565b8462000554565b602080601f831160018114620006135760008415620005fa5750858301515b600019600386901b1c1916600185901b1785556200059e565b600085815260208120601f198616915b82811015620006445788860151825594840194600190910190840162000623565b5085821015620006635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200068657600080fd5b620006918262000340565b9392505050565b600060c082018883526020888185015287604085015286606085015260c0608085015281865180845260e086019150828801935060005b81811015620006f65784516001600160a01b031683529383019391830191600101620006cf565b505084810360a0860152855180825290820192508186019060005b818110156200072f5782518552938301939183019160010162000711565b50929b9a5050505050505050505050565b60805160a051614171620007ac6000396000818161034601528181611352015281816113d0015281816116400152818161172e0152818161185b01528181611899015281816120de0152818161214d0152818161218d0152613103015260006134b301526141716000f3fe60806040526004361061024a5760003560e01c806370a0823111610139578063a8e9d528116100b6578063caa6fea41161007a578063caa6fea41461078e578063d828bb88146107ad578063dd62ed3e146107cd578063de3e2e2414610813578063e5cf8a5c14610833578063f2fde38b1461085357600080fd5b8063a8e9d528146106ee578063a9059cbb1461070e578063c0046e391461072e578063c7cdea371461074e578063c912ff7a1461076e57600080fd5b80638334278d116100fd5780638334278d14610659578063838e6a22146106795780638da5cb5b1461069957806395d89b41146106b9578063a3f5d8cc146106ce57600080fd5b806370a08231146105465780637165485d1461057c57806372b4129a146105f957806379a390a5146106195780637e932d321461063957600080fd5b806323b872dd116101c7578063525d0da71161018b578063525d0da7146104965780635872278a146104b6578063595520c7146104d65780636919ba27146105135780636f2ef95b1461052657600080fd5b806323b872dd146103e3578063313ce567146104035780633cae77f71461042a578063441a3e70146104635780634fe5da711461048357600080fd5b80630b2583c81161020e5780630b2583c814610309578063107c279f1461033757806318160ddd1461037e5780631a686502146103935780631f276b6e146103b657600080fd5b806301ffc9a7146102565780630501d5561461028b578063054f7d9c146102ad57806306fdde03146102c7578063095ea7b3146102e957600080fd5b3661025157005b600080fd5b34801561026257600080fd5b50610276610271366004613801565b610873565b60405190151581526020015b60405180910390f35b34801561029757600080fd5b506102ab6102a636600461383c565b6108c5565b005b3480156102b957600080fd5b506010546102769060ff1681565b3480156102d357600080fd5b506102dc6109d9565b604051610282919061387d565b3480156102f557600080fd5b506102766103043660046138c5565b610a67565b34801561031557600080fd5b506103296103243660046138f1565b610b49565b604051908152602001610282565b34801561034357600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610282565b34801561038a57600080fd5b50600754610329565b34801561039f57600080fd5b506103a8610e70565b60405161028292919061397d565b3480156103c257600080fd5b506103d66103d1366004613996565b610ef6565b60405161028291906139b8565b3480156103ef57600080fd5b506102766103fe3660046139cb565b61101d565b34801561040f57600080fd5b50610418601281565b60405160ff9091168152602001610282565b34801561043657600080fd5b50610366610445366004613a0c565b6001600160a01b039081166000908152600560205260409020541690565b34801561046f57600080fd5b506103d661047e366004613996565b61112f565b6103a8610491366004613a29565b6111b5565b3480156104a257600080fd5b506103296104b13660046139cb565b6119b8565b3480156104c257600080fd5b506103a86104d1366004613a29565b611b01565b3480156104e257600080fd5b506104eb611ef3565b604080519586526020860194909452928401919091526060830152608082015260a001610282565b610329610521366004613a6c565b611f87565b34801561053257600080fd5b506103a8610541366004613aa1565b61228b565b34801561055257600080fd5b50610329610561366004613a0c565b6001600160a01b031660009081526008602052604090205490565b34801561058857600080fd5b506000546001546002546007546105bc93600f81810b94600160801b92839004820b9481830b9493909104820b92910b9086565b60408051600f97880b815295870b602087015293860b9385019390935290840b606084015290920b608082015260a081019190915260c001610282565b34801561060557600080fd5b506103296106143660046138f1565b6124de565b34801561062557600080fd5b506102ab610634366004613aba565b61273f565b34801561064557600080fd5b506102ab61065436600461383c565b61288b565b34801561066557600080fd5b50610366610674366004613aa1565b61298f565b34801561068557600080fd5b506103296106943660046139cb565b6129b9565b3480156106a557600080fd5b50600a54610366906001600160a01b031681565b3480156106c557600080fd5b506102dc612abd565b3480156106da57600080fd5b506010546102769062010000900460ff1681565b3480156106fa57600080fd5b50610366610709366004613aa1565b612aca565b34801561071a57600080fd5b506102766107293660046138c5565b612ada565b34801561073a57600080fd5b50610366610749366004613aa1565b612b8f565b34801561075a57600080fd5b506103d6610769366004613996565b612b9f565b34801561077a57600080fd5b506102ab610789366004613a0c565b612c6b565b34801561079a57600080fd5b5060105461027690610100900460ff1681565b3480156107b957600080fd5b506102ab6107c8366004613b16565b612e62565b3480156107d957600080fd5b506103296107e8366004613b51565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561081f57600080fd5b5061032961082e366004613b8a565b612fab565b34801561083f57600080fd5b506103d661084e366004613aa1565b6131fe565b34801561085f57600080fd5b506102ab61086e366004613a0c565b61332b565b60006301ffc9a760e01b6001600160e01b0319831614806108a457506307f5828d60e41b6001600160e01b03198316145b806108bf57506336372b0760e01b6001600160e01b03198316145b92915050565b600a546001600160a01b03163314806109655750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561092c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109509190613bc5565b6001600160a01b0316336001600160a01b0316145b61098a5760405162461bcd60e51b815260040161098190613be2565b60405180910390fd5b60405181151581527fa44450e52bea871e50cfee059fbe027c26ff43fd7534c06b7de61d90b58ab3c19060200160405180910390a1601080549115156101000261ff0019909216919091179055565b600b80546109e690613c19565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1290613c19565b8015610a5f5780601f10610a3457610100808354040283529160200191610a5f565b820191906000526020600020905b815481529060010190602001808311610a4257829003601f168201915b505050505081565b60105460009062010000900460ff16610a925760405162461bcd60e51b815260040161098190613c53565b6010805462ff000019169055610aa66134a8565b60405163e60ac42960e01b8152600060048201526001600160a01b0384166024820152604481018390527385e9690c2d4c6cae31d96f9b5afe6d111d1651579063e60ac429906064015b602060405180830381865af4158015610b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b319190613c7d565b6010805462ff00001916620100001790559392505050565b600081804210610b6b5760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be29190613c7d565b15610bff5760405162461bcd60e51b815260040161098190613cd1565b60105460ff1615610c225760405162461bcd60e51b815260040161098190613d2e565b610c2a6134a8565b601054610100900460ff1615610c525760405162461bcd60e51b815260040161098190613d7e565b60105462010000900460ff16610c7a5760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916908190556040805160a0810182526001600160a01b038a8116825289811660208084018290528385018b905233606085018190526301000000909604909216608084015283516370a0823160e01b8152600481019590955292519193600093926370a08231926024808401939192918290030181865afa158015610d0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d309190613ddb565b60405163fd17568b60e01b81529091507374982d2fd25ca0e0dee702e40affd93bae04d3a69063fd17568b90610d6f9060009086908290600401613e31565b602060405180830381865af4158015610d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db09190613ddb565b5060608201516040516370a0823160e01b81526001600160a01b0391821660048201526000918a16906370a0823190602401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190613ddb565b9050610e2f8282613e6b565b945086851015610e515760405162461bcd60e51b815260040161098190613e7e565b50506010805462ff000019166201000017905550909695505050505050565b604051633745793960e11b815260006004820181905290606090731134daeaa652e11360631e3cc93e688204d9354b90636e8af27290602401600060405180830381865af4158015610ec6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eee9190810190613f5b565b915091509091565b601054606090610100900460ff16610f205760405162461bcd60e51b815260040161098190613d7e565b81804210610f405760405162461bcd60e51b815260040161098190613c9a565b60105462010000900460ff16610f685760405162461bcd60e51b815260040161098190613c53565b6010805462ff000019169055610f7c6134a8565b60405163eaadf2b560e01b8152600060048201819052602482018690526044820152730a7e79b7a4912ea42f82e25b9c033919b97f6fb09063eaadf2b5906064015b600060405180830381865af4158015610fdb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110039190810190613fa2565b9150506010805462ff000019166201000017905592915050565b60105460009062010000900460ff166110485760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916905561105c6134a8565b601054610100900460ff16156110845760405162461bcd60e51b815260040161098190613d7e565b6040516303a90f6960e31b8152600060048201526001600160a01b03808616602483015284166044820152606481018390527385e9690c2d4c6cae31d96f9b5afe6d111d16515790631d487b4890608401602060405180830381865af41580156110f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111169190613c7d565b6010805462ff0000191662010000179055949350505050565b6060818042106111515760405162461bcd60e51b815260040161098190613c9a565b60105462010000900460ff166111795760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916905561118d6134a8565b601054610100900460ff1615610f7c5760405162461bcd60e51b815260040161098190613d7e565b60006060828042106111d95760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561122c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112509190613c7d565b1561126d5760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156112905760405162461bcd60e51b815260040161098190613d2e565b60105462010000900460ff166112b85760405162461bcd60e51b815260040161098190613c53565b6010805462ff0000191690556112cc6134a8565b601054610100900460ff16156112f45760405162461bcd60e51b815260040161098190613d7e565b6000891161133f5760405162461bcd60e51b815260206004820152601860248201527743757276652f6465706f7369745f62656c6f775f7a65726f60401b6044820152606401610981565b6113488961228b565b80935081945050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b506113fc9350506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915030905033346134df565b6114046137a5565b89815260208101899052604081018890526080810187905260a081018690528251839060009061143657611436613fd7565b60200260200101518160c00181815250508260018151811061145a5761145a613fd7565b6020026020010151816060018181525050600f60008154811061147f5761147f613fd7565b60009182526020822001546001600160a01b031660e0830152600f80549091906114ab576114ab613fd7565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115209190613ddb565b610100820152600f8054600190811061153b5761153b613fd7565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b09190613ddb565b610120820152604051629d2ea960e41b8152730a7e79b7a4912ea42f82e25b9c033919b97f6fb0906309d2ea90906115ef906000908590600401613fed565b600060405180830381865af415801561160c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116349190810190613f5b565b809450819550505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600060040160008154811061167f5761167f613fd7565b6000918252602091829020015460408051632495a59960e01b815290516001600160a01b0390921692632495a599926004808401938290030181865afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f19190613bc5565b6001600160a01b03160361172c578360008151811061171257611712613fd7565b6020026020010151346117259190613e6b565b9050611848565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600060040160018154811061176d5761176d613fd7565b6000918252602091829020015460408051632495a59960e01b815290516001600160a01b0390921692632495a599926004808401938290030181865afa1580156117bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117df9190613bc5565b6001600160a01b031603611800578360018151811061171257611712613fd7565b60405162461bcd60e51b815260206004820152601860248201527f43757276652f4465706f73697420455448206661696c656400000000000000006044820152606401610981565b8015611997576118836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846134df565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156118e557600080fd5b505af11580156118f9573d6000803e3d6000fd5b50506040516000925033915083908381818185875af1925050503d806000811461193f576040519150601f19603f3d011682016040523d82523d6000602084013e611944565b606091505b50509050806119955760405162461bcd60e51b815260206004820152601960248201527f43757276652f455448207472616e73666572206661696c6564000000000000006044820152606401610981565b505b5050506010805462ff00001916620100001790559097909650945050505050565b601154604080516306a8e1cd60e41b815290516000926001600160a01b031691636a8e1cd09160048083019260209291908290030181865afa158015611a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a269190613c7d565b15611a435760405162461bcd60e51b815260040161098190613cd1565b60105460ff1615611a665760405162461bcd60e51b815260040161098190613d2e565b6040516315be82e960e21b8152600060048201526001600160a01b03808616602483015284166044820152606481018390527374982d2fd25ca0e0dee702e40affd93bae04d3a6906356fa0ba4906084015b602060405180830381865af4158015611ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af99190613ddb565b949350505050565b6000606082804210611b255760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9c9190613c7d565b15611bb95760405162461bcd60e51b815260040161098190613cd1565b60105460ff1615611bdc5760405162461bcd60e51b815260040161098190613d2e565b60105462010000900460ff16611c045760405162461bcd60e51b815260040161098190613c53565b6010805462ff000019169055611c186134a8565b601054610100900460ff1615611c405760405162461bcd60e51b815260040161098190613d7e565b60008911611c8b5760405162461bcd60e51b815260206004820152601860248201527743757276652f6465706f7369745f62656c6f775f7a65726f60401b6044820152606401610981565b611c948961228b565b9093509150611ca16137a5565b89815260208101899052604081018890526080810187905260a0810186905282518390600090611cd357611cd3613fd7565b60200260200101518160c001818152505082600181518110611cf757611cf7613fd7565b6020026020010151816060018181525050600f600081548110611d1c57611d1c613fd7565b60009182526020822001546001600160a01b031660e0830152600f8054909190611d4857611d48613fd7565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbd9190613ddb565b610100820152600f80546001908110611dd857611dd8613fd7565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4d9190613ddb565b610120820152604051629d2ea960e41b8152730a7e79b7a4912ea42f82e25b9c033919b97f6fb0906309d2ea9090611e8c906000908590600401613fed565b600060405180830381865af4158015611ea9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ed19190810190613f5b565b6010805462ff0000191662010000179055909b909a5098505050505050505050565b6000806000806000731190da269ffe6f4567fed0c3c9bba01f8837225463faa50b5d60006040518263ffffffff1660e01b8152600401611f3591815260200190565b60a060405180830381865af4158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f769190614079565b945094509450945094509091929394565b600081804210611fa95760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ffc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120209190613c7d565b1561203d5760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156120605760405162461bcd60e51b815260040161098190613d2e565b6120686134a8565b601054610100900460ff16156120905760405162461bcd60e51b815260040161098190613d7e565b60105462010000900460ff166120b85760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916905560408051630d0e30db60e41b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163d0e30db091349160048082019260009290919082900301818588803b15801561212857600080fd5b505af115801561213c573d6000803e3d6000fd5b506121799350506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915030905033346134df565b6040805160a0810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682528781166020830152348284015233606083015260105463010000009004166080820152905163fd17568b60e01b81527374982d2fd25ca0e0dee702e40affd93bae04d3a69063fd17568b9061220e9060009085908290600401613e31565b602060405180830381865af415801561222b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224f9190613ddb565b9250848310156122715760405162461bcd60e51b815260040161098190613e7e565b50506010805462ff00001916620100001790559392505050565b60006060601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123069190613c7d565b156123235760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156123465760405162461bcd60e51b815260040161098190613d2e565b604080516002808252606082018352600092839291906020830190803683370190505060405163822f39d560e01b81526000600482015260248101879052909150730a7e79b7a4912ea42f82e25b9c033919b97f6fb09063822f39d590604401600060405180830381865af41580156123c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123eb9190810190613f5b565b909250905060008261240c876ec097ce7bc90715b34b9f10000000006140b9565b61241691906140d0565b90506ec097ce7bc90715b34b9f1000000000818360008151811061243c5761243c613fd7565b602002602001015161244e91906140b9565b61245891906140d0565b8260008151811061246b5761246b613fd7565b6020026020010181815250506ec097ce7bc90715b34b9f1000000000818360018151811061249b5761249b613fd7565b60200260200101516124ad91906140b9565b6124b791906140d0565b826001815181106124ca576124ca613fd7565b602090810291909101015250939492505050565b6000818042106125005760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612553573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125779190613c7d565b156125945760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156125b75760405162461bcd60e51b815260040161098190613d2e565b6125bf6134a8565b601054610100900460ff16156125e75760405162461bcd60e51b815260040161098190613d7e565b60105462010000900460ff1661260f5760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916908190556040805160a0810182526001600160a01b038a811682528981166020830152818301889052336060830152630100000090930490921660808301525163498e2a2560e11b81527374982d2fd25ca0e0dee702e40affd93bae04d3a69063931c544a906126909060009085906004016140f2565b602060405180830381865af41580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d19190613ddb565b9250858311156127235760405162461bcd60e51b815260206004820152601d60248201527f43757276652f61626f76652d6d61782d6f726967696e2d616d6f756e740000006044820152606401610981565b50506010805462ff000019166201000017905595945050505050565b600a546001600160a01b03163314806127df5750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ca9190613bc5565b6001600160a01b0316336001600160a01b0316145b6127fb5760405162461bcd60e51b815260040161098190613be2565b604051632e6ce08560e11b8152600060048201526001600160a01b0380861660248301528085166044830152808416606483015282166084820152731190da269ffe6f4567fed0c3c9bba01f8837225490635cd9c10a9060a40160006040518083038186803b15801561286d57600080fd5b505af4158015612881573d6000803e3d6000fd5b5050505050505050565b600a546001600160a01b031633148061292b5750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129169190613bc5565b6001600160a01b0316336001600160a01b0316145b6129475760405162461bcd60e51b815260040161098190613be2565b60405181151581527f7c029deaca9b6c66abb68e5f874a812822f0fcaa52a890f980a7ab1afb5edba69060200160405180910390a16010805460ff1916911515919091179055565b600f818154811061299f57600080fd5b6000918252602090912001546001600160a01b0316905081565b601154604080516306a8e1cd60e41b815290516000926001600160a01b031691636a8e1cd09160048083019260209291908290030181865afa158015612a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a279190613c7d565b15612a445760405162461bcd60e51b815260040161098190613cd1565b60105460ff1615612a675760405162461bcd60e51b815260040161098190613d2e565b604051637dba2aed60e11b8152600060048201526001600160a01b03808616602483015284166044820152606481018390527374982d2fd25ca0e0dee702e40affd93bae04d3a69063fb7455da90608401611ab8565b600c80546109e690613c19565b600e818154811061299f57600080fd5b60105460009062010000900460ff16612b055760405162461bcd60e51b815260040161098190613c53565b6010805462ff000019169055612b196134a8565b601054610100900460ff1615612b415760405162461bcd60e51b815260040161098190613d7e565b60405163a4bcd45960e01b8152600060048201526001600160a01b0384166024820152604481018390527385e9690c2d4c6cae31d96f9b5afe6d111d1651579063a4bcd45990606401610af0565b600d818154811061299f57600080fd5b606081804210612bc15760405162461bcd60e51b815260040161098190613c9a565b60105462010000900460ff16612be95760405162461bcd60e51b815260040161098190613c53565b6010805462ff000019169055612bfd6134a8565b601054610100900460ff1615612c255760405162461bcd60e51b815260040161098190613d7e565b60405163eaadf2b560e01b8152600060048201526024810185905260016044820152730a7e79b7a4912ea42f82e25b9c033919b97f6fb09063eaadf2b590606401610fbe565b600a546001600160a01b0316331480612d0b5750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf69190613bc5565b6001600160a01b0316336001600160a01b0316145b612d275760405162461bcd60e51b815260040161098190613be2565b60005b600e54811015612e3a57600e8181548110612d4757612d47613fd7565b6000918252602090912001546001600160a01b0390811690831603612dae5760405162461bcd60e51b815260206004820152601d60248201527f43757276652f63616e6e6f742d64656c6574652d6e756d6572616972650000006044820152606401610981565b600f8181548110612dc157612dc1613fd7565b6000918252602090912001546001600160a01b0390811690831603612e285760405162461bcd60e51b815260206004820152601b60248201527f43757276652f63616e6e6f742d64656c6574652d7265736572766500000000006044820152606401610981565b80612e3281614106565b915050612d2a565b506001600160a01b0316600090815260056020526040902080546001600160a81b0319169055565b600a546001600160a01b0316331480612f025750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eed9190613bc5565b6001600160a01b0316336001600160a01b0316145b612f1e5760405162461bcd60e51b815260040161098190613be2565b60405163231888b760e01b8152600060048201526024810186905260448101859052606481018490526084810183905260a48101829052731190da269ffe6f4567fed0c3c9bba01f883722549063231888b79060c40160006040518083038186803b158015612f8c57600080fd5b505af4158015612fa0573d6000803e3d6000fd5b505050505050505050565b600081804210612fcd5760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613020573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130449190613c7d565b156130615760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156130845760405162461bcd60e51b815260040161098190613d2e565b61308c6134a8565b601054610100900460ff16156130b45760405162461bcd60e51b815260040161098190613d7e565b60105462010000900460ff166130dc5760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916908190556040805160a0810182526001600160a01b0389811682527f000000000000000000000000000000000000000000000000000000000000000081166020830152818301899052336060830152630100000090930490921660808301525163fd17568b60e01b81527374982d2fd25ca0e0dee702e40affd93bae04d3a69063fd17568b90613180906000908590600190600401613e31565b602060405180830381865af415801561319d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c19190613ddb565b9250848310156131e35760405162461bcd60e51b815260040161098190613e7e565b50506010805462ff0000191662010000179055949350505050565b601154604080516306a8e1cd60e41b815290516060926001600160a01b031691636a8e1cd09160048083019260209291908290030181865afa158015613248573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326c9190613c7d565b156132895760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156132ac5760405162461bcd60e51b815260040161098190613d2e565b6040516330771ac760e11b81526000600482015260248101839052730a7e79b7a4912ea42f82e25b9c033919b97f6fb0906360ee358e90604401600060405180830381865af4158015613303573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108bf9190810190613fa2565b600a546001600160a01b03163314806133cb5750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015613392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b69190613bc5565b6001600160a01b0316336001600160a01b0316145b6133e75760405162461bcd60e51b815260040161098190613be2565b6001600160a01b03811661344c5760405162461bcd60e51b815260206004820152602660248201527f43757276652f6e65772d6f776e65722d63616e6e6f742d62652d7a65726f2d6160448201526564647265737360d01b6064820152608401610981565b600a546040516001600160a01b038084169216907f0d18b5fd22306e373229b9439188228edca81207d1667f604daf6cef8aa3ee6790600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146134dd57600080fd5b565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261353990859061353f565b50505050565b6000613594826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166136169092919063ffffffff16565b80519091501561361157808060200190518101906135b29190613c7d565b6136115760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610981565b505050565b6060611af9848460008561362c565b9392505050565b60608247101561368d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610981565b600080866001600160a01b031685876040516136a9919061411f565b60006040518083038185875af1925050503d80600081146136e6576040519150601f19603f3d011682016040523d82523d6000602084013e6136eb565b606091505b50915091506136fc87838387613707565b979650505050505050565b6060831561377657825160000361376f576001600160a01b0385163b61376f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610981565b5081611af9565b611af9838381511561378b5781518083602001fd5b8060405162461bcd60e51b8152600401610981919061387d565b6040518061014001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081525090565b60006020828403121561381357600080fd5b81356001600160e01b03198116811461362557600080fd5b801515811461383957600080fd5b50565b60006020828403121561384e57600080fd5b81356136258161382b565b60005b8381101561387457818101518382015260200161385c565b50506000910152565b602081526000825180602084015261389c816040850160208701613859565b601f01601f19169190910160400192915050565b6001600160a01b038116811461383957600080fd5b600080604083850312156138d857600080fd5b82356138e3816138b0565b946020939093013593505050565b600080600080600060a0868803121561390957600080fd5b8535613914816138b0565b94506020860135613924816138b0565b94979496505050506040830135926060810135926080909101359150565b600081518084526020808501945080840160005b8381101561397257815187529582019590820190600101613956565b509495945050505050565b828152604060208201526000611af96040830184613942565b600080604083850312156139a957600080fd5b50508035926020909101359150565b6020815260006136256020830184613942565b6000806000606084860312156139e057600080fd5b83356139eb816138b0565b925060208401356139fb816138b0565b929592945050506040919091013590565b600060208284031215613a1e57600080fd5b8135613625816138b0565b60008060008060008060c08789031215613a4257600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080600060608486031215613a8157600080fd5b8335613a8c816138b0565b95602085013595506040909401359392505050565b600060208284031215613ab357600080fd5b5035919050565b60008060008060808587031215613ad057600080fd5b8435613adb816138b0565b93506020850135613aeb816138b0565b92506040850135613afb816138b0565b91506060850135613b0b816138b0565b939692955090935050565b600080600080600060a08688031215613b2e57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215613b6457600080fd5b8235613b6f816138b0565b91506020830135613b7f816138b0565b809150509250929050565b60008060008060808587031215613ba057600080fd5b8435613bab816138b0565b966020860135965060408601359560600135945092505050565b600060208284031215613bd757600080fd5b8151613625816138b0565b60208082526019908201527f43757276652f63616c6c65722d69732d6e6f742d6f776e657200000000000000604082015260600190565b600181811c90821680613c2d57607f821691505b602082108103613c4d57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526010908201526f10dd5c9d994bdc994b595b9d195c995960821b604082015260600190565b600060208284031215613c8f57600080fd5b81516136258161382b565b60208082526018908201527f43757276652f74782d646561646c696e652d7061737365640000000000000000604082015260600190565b60208082526039908201527f43757276652f66726f7a656e2d676c6f62616c6c792d6f6e6c792d616c6c6f7760408201527f696e672d70726f706f7274696f6e616c2d776974686472617700000000000000606082015260800190565b60208082526030908201527f43757276652f66726f7a656e2d6f6e6c792d616c6c6f77696e672d70726f706f60408201526f7274696f6e616c2d776974686472617760801b606082015260800190565b6020808252603d908201527f43757276652f656d657267656e63792d6f6e6c792d616c6c6f77696e672d656d60408201527f657267656e63792d70726f706f7274696f6e616c2d7769746864726177000000606082015260800190565b600060208284031215613ded57600080fd5b5051919050565b80516001600160a01b0390811683526020808301518216908401526040808301519084015260608083015182169084015260809182015116910152565b83815260e08101613e456020830185613df4565b82151560c0830152949350505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156108bf576108bf613e55565b6020808252601d908201527f43757276652f62656c6f772d6d696e2d7461726765742d616d6f756e74000000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600082601f830112613edc57600080fd5b8151602067ffffffffffffffff80831115613ef957613ef9613eb5565b8260051b604051601f19603f83011681018181108482111715613f1e57613f1e613eb5565b604052938452858101830193838101925087851115613f3c57600080fd5b83870191505b848210156136fc57815183529183019190830190613f42565b60008060408385031215613f6e57600080fd5b82519150602083015167ffffffffffffffff811115613f8c57600080fd5b613f9885828601613ecb565b9150509250929050565b600060208284031215613fb457600080fd5b815167ffffffffffffffff811115613fcb57600080fd5b611af984828501613ecb565b634e487b7160e01b600052603260045260246000fd5b60006101608201905083825282516020830152602083015160408301526040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e0830151610100614058818501836001600160a01b03169052565b84015161012084810191909152909301516101409092019190915292915050565b600080600080600060a0868803121561409157600080fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b80820281158282048414176108bf576108bf613e55565b6000826140ed57634e487b7160e01b600052601260045260246000fd5b500490565b82815260c081016136256020830184613df4565b60006001820161411857614118613e55565b5060010190565b60008251614131818460208701613859565b919091019291505056fea26469706673582212209fe70fae664b7f88f6ddb308707297efdaab6e0c0059376ecafddee9e2c0cb2164736f6c6343000815003300000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000ce2b8e0c196b7f9297a9c168dfe1a977682978350000000000000000000000001020e08935e9f8ee963356f4c47d7fe8a024c8a700000000000000000000000000000000000000000000000000000000000000106466782d676270742d757364632d76330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106466782d676270742d757364632d763300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000086b4dbe5d203e634a12364c0e428fa242a3fba9800000000000000000000000016eff9cc584eb95bdfe4584cc90de57f30759ed100000000000000000000000086b4dbe5d203e634a12364c0e428fa242a3fba9800000000000000000000000016eff9cc584eb95bdfe4584cc90de57f30759ed100000000000000000000000086b4dbe5d203e634a12364c0e428fa242a3fba98000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000fa96a8e4b4121f1bb32e116824ad0bdf91a55c38000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000fa96a8e4b4121f1bb32e116824ad0bdf91a55c38000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000006f05b59d3b2000000000000000000000000000000000000000000000000000006f05b59d3b20000