[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "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": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "success", "type": "bool" } ], "name": "UodateURI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "cal", "type": "uint256" } ], "name": "UpgradeNFTByAvax", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "tierGroup", "type": "uint256" } ], "name": "aggregation", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId", "type": "uint256" } ], "name": "borrow", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "borrowList", "outputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "borrowTime", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "borrowNFTList", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tier", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "canMint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "canTransfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currencyToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "defaultURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId", "type": "uint256" }, { "internalType": "uint256", "name": "tierGroup", "type": "uint256" } ], "name": "downgradeNFT", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bool", "name": "buyTier0", "type": "bool" } ], "name": "exchangeXYZAndTier0", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "exemptMaxAmountUser", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "fractionalize", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "tier", "type": "uint256" } ], "name": "getInfo", "outputs": [ { "internalType": "uint256[]", "name": "res", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "tire", "type": "uint256" } ], "name": "getLen", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "wallet", "type": "address" } ], "name": "getUserTotalAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTier0", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTier0PerWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "maxWalletLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "max_Regular_tier", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "wallet", "type": "address" }, { "internalType": "uint256", "name": "tie", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" } ], "name": "mintNFTWithAvax", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintOption", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC721Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "price", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId", "type": "uint256" }, { "internalType": "bool", "name": "isOwner", "type": "bool" } ], "name": "redeemNFT", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "royaltyList", "outputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "address", "name": "mintCurrency", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "sendAllBalance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "holdTime", "type": "uint256" }, { "internalType": "uint256", "name": "graceTime", "type": "uint256" }, { "internalType": "uint256", "name": "_borrowFee", "type": "uint256" }, { "internalType": "uint256", "name": "_discount", "type": "uint256" }, { "internalType": "uint256", "name": "_redeemFee", "type": "uint256" }, { "internalType": "uint256", "name": "_graceFee", "type": "uint256" } ], "name": "setBorrowConf", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "flag", "type": "bool" } ], "name": "setBorrowable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_fee", "type": "uint256" } ], "name": "setFlatFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "vals", "type": "uint256[]" }, { "internalType": "uint8", "name": "conf", "type": "uint8" } ], "name": "setListConfig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "list", "type": "address[]" }, { "internalType": "bool", "name": "flag", "type": "bool" }, { "internalType": "uint8", "name": "option", "type": "uint8" } ], "name": "setListOption", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setMaxTier0", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setMaxTier0PerWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "option", "type": "uint8" } ], "name": "setMintOption", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "setNFTmintCurrency", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "option", "type": "uint8" } ], "name": "setRoyaltyOption", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "fee", "type": "uint256" } ], "name": "setSwapFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "wallet", "type": "address" } ], "name": "setTreasureWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "flag", "type": "bool" } ], "name": "setUpgradable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "setXYZtoken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tierInfo", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tier", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" } ], "name": "updateDefaultURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" } ], "name": "updateURI", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId", "type": "uint256" }, { "internalType": "uint256", "name": "tierGroup", "type": "uint256" } ], "name": "upgradeNFT", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "userInfo", "outputs": [ { "internalType": "uint256", "name": "tier0", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "whiteList", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040908152600b80546001600160a01b0319908116739b6afc6f69c556e2cbf79fbac1cb19b75e6b51e2908117909255640ba43b7400601755603980548216909217909155603a8054821673f827c3e5fd68e78aa092245d442398e12988901c179055603b805490911673b0b598fcd066058a83fea073d56522b5bae0522b1790556305f5e100603c908155603d805460ff199081169091556064603e5567016345785d8a0000603f5582546202010062ffffff19909116179092556405d21dba0060415560438054909216909155604d55600a604e819055604f81905560508190556051556002605255348015620000f957600080fd5b50604080518082018252601581527f436865656d73586672616374696f6e616c204e4654000000000000000000000060208083019182528351808501909452600384526221ac2760e91b9084015281519192916200015a916000916200037a565b508051620001709060019060208401906200037a565b5050506000620001856200037660201b60201c565b600780546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506107d0600c556103e8600d556101f4600e55610140600f5560646010556050601155602860125560146013819055600490556002601555601754601655603c546200022090600162000420565b601855603c546200023390600262000420565b601955603c546200024690600462000420565b601a55603c546200025990600562000420565b601b55603c546200026c90600f62000420565b601c55603c546200027f90601262000420565b601d55603c546200029290602362000420565b601e55603c54620002a590604662000420565b601f55603c54620002b99061012c62000420565b602055603c54620002cd906101f462000420565b6021556004602255600a60238190556005602455600260258190556026556001602781905560288190556029819055602a819055602b819055602c8190556000602d819055308152604760209081526040808320805460ff1990811686179091557fd85b7383b028be6725c7309be219ad244687290982e7338ec4518b140591d8a595909555604490915280822080548516841790553382529020805490921617905562000489565b3390565b82805462000388906200044c565b90600052602060002090601f016020900481019282620003ac5760008555620003f7565b82601f10620003c757805160ff1916838001178555620003f7565b82800160010185558215620003f7579182015b82811115620003f7578251825591602001919060010190620003da565b506200040592915062000409565b5090565b5b808211156200040557600081556001016200040a565b60008160001904831182151516156200044757634e487b7160e01b81526011600452602481fd5b500290565b600181811c908216806200046157607f821691505b602082108114156200048357634e487b7160e01b600052602260045260246000fd5b50919050565b61564180620004996000396000f3fe6080604052600436106102d75760003560e01c806301ffc9a7146102e3578063064cdefa1461031857806306fdde0314610348578063081812fc1461036a578063095ea7b3146103975780630ca45150146103b95780630f985666146103d9578063150b7a02146103ec57806318632850146104255780631959a002146104455780631e5ec9e81461048357806322e1dea9146104a357806323b872dd146104c357806323fa495a146104e357806324813ec314610503578063248e85f114610523578063248ff82c1461054357806326a49e371461056357806331d41c69146105835780633284427714610596578063332e4a34146105b657806334e19907146105d657806336a002db146105f6578063372c12b11461060c578063380e95b01461063c57806342842e0e1461065c57806343e467cb1461067c578063465eda8e146106925780634cd8582b146106f35780635351314c14610720578063557ed1ba1461073357806357d12275146107465780636352211e1461076657806363bb1b79146107865780636a91e7bc146107995780636b2fa374146107c657806370a08231146107e6578063715018a6146108065780638166bd2e1461081b57806385cc440d1461083b5780638d4c47bb1461084e5780638da5cb5b1461086e578063920ab09f1461088357806395d89b41146108d157806396e613f8146108e65780639bc76d79146108f9578063a22cb46514610925578063a267c2c414610945578063b722e53314610972578063b88d4fde14610985578063be92f811146109a5578063c0bbfed2146109c5578063c5ebeaec146109e5578063c87b56dd146109f8578063d4e5df5714610a18578063daeedd7414610a38578063e6f7833e14610a58578063e72415d714610a78578063e985e9c514610a98578063f2fde38b14610ab8578063f54956ce14610ad8578063f5f7b96214610af8578063f9578c5e14610b18578063f9ec796c14610b2b57600080fd5b366102de57005b600080fd5b3480156102ef57600080fd5b506103036102fe366004614e65565b610b4b565b60405190151581526020015b60405180910390f35b34801561032457600080fd5b50610303610333366004614ae5565b60476020526000908152604090205460ff1681565b34801561035457600080fd5b5061035d610b9d565b60405161030f91906150fd565b34801561037657600080fd5b5061038a610385366004614e9d565b610c2f565b60405161030f919061502b565b3480156103a357600080fd5b506103b76103b2366004614c1a565b610cbc565b005b3480156103c557600080fd5b506103b76103d4366004614e2d565b610dcd565b6103b76103e7366004614c43565b610e0a565b3480156103f857600080fd5b5061040c610407366004614b6c565b6110b5565b6040516001600160e01b0319909116815260200161030f565b34801561043157600080fd5b506103b7610440366004614d89565b6110c6565b34801561045157600080fd5b50610475610460366004614ae5565b60456020526000908152604090206001015481565b60405190815260200161030f565b34801561048f57600080fd5b5061047561049e366004614e9d565b6112b7565b3480156104af57600080fd5b506103036104be366004614f35565b6112d8565b3480156104cf57600080fd5b506103b76104de366004614b31565b6113dc565b3480156104ef57600080fd5b506103b76104fe366004614e9d565b6113f2565b34801561050f57600080fd5b5061035d61051e366004614e9d565b611421565b34801561052f57600080fd5b5061047561053e366004614c1a565b6114c1565b34801561054f57600080fd5b506103b761055e366004614ae5565b611517565b34801561056f57600080fd5b5061047561057e366004614e9d565b611563565b610303610591366004614ef1565b61157a565b3480156105a257600080fd5b506103b76105b1366004614e2d565b6116d6565b3480156105c257600080fd5b506103036105d1366004614c97565b611713565b3480156105e257600080fd5b506103b76105f1366004614e9d565b6118b3565b34801561060257600080fd5b5061047560415481565b34801561061857600080fd5b50610303610627366004614ae5565b60446020526000908152604090205460ff1681565b34801561064857600080fd5b506103b7610657366004614f98565b6118e2565b34801561066857600080fd5b506103b7610677366004614b31565b611922565b34801561068857600080fd5b5061047560175481565b34801561069e57600080fd5b506106d36106ad366004614e9d565b604860205260009081526040902080546001909101546001600160a01b03918216911682565b604080516001600160a01b0393841681529290911660208301520161030f565b3480156106ff57600080fd5b5061047561070e366004614e9d565b60426020526000908152604090205481565b6103b761072e366004614ecd565b611938565b34801561073f57600080fd5b5042610475565b34801561075257600080fd5b506103b7610761366004614ae5565b611d68565b34801561077257600080fd5b5061038a610781366004614e9d565b611db4565b6103b7610794366004614f35565b611e2b565b3480156107a557600080fd5b506107b96107b4366004614c1a565b61206a565b60405161030f91906150b9565b3480156107d257600080fd5b5060395461038a906001600160a01b031681565b3480156107f257600080fd5b50610475610801366004614ae5565b6120df565b34801561081257600080fd5b506103b7612166565b34801561082757600080fd5b50610475610836366004614e9d565b6121c8565b6103b7610849366004614f35565b6121d8565b34801561085a57600080fd5b506103b7610869366004614cc9565b6123e4565b34801561087a57600080fd5b5061038a612585565b34801561088f57600080fd5b506108c361089e366004614e9d565b604b60205260009081526040902080546001909101546001600160a01b039091169082565b60405161030f9291906150a0565b3480156108dd57600080fd5b5061035d612594565b6103b76108f4366004614ecd565b6125a3565b34801561090557600080fd5b506043546109139060ff1681565b60405160ff909116815260200161030f565b34801561093157600080fd5b506103b7610940366004614be4565b612aca565b34801561095157600080fd5b50610475610960366004614e9d565b60466020526000908152604090205481565b6103b7610980366004614e9d565b612b8b565b34801561099157600080fd5b506103b76109a0366004614b6c565b612cbb565b3480156109b157600080fd5b506104756109c0366004614ae5565b612cd2565b3480156109d157600080fd5b506103b76109e0366004614e9d565b612d86565b6103b76109f3366004614e9d565b612db5565b348015610a0457600080fd5b5061035d610a13366004614e9d565b612f7f565b348015610a2457600080fd5b506103b7610a33366004614ae5565b6130ee565b348015610a4457600080fd5b506103b7610a53366004614ef1565b613212565b348015610a6457600080fd5b506103b7610a73366004614f98565b613292565b348015610a8457600080fd5b506103b7610a93366004614f56565b6132d2565b348015610aa457600080fd5b50610303610ab3366004614aff565b613331565b348015610ac457600080fd5b506103b7610ad3366004614ae5565b61335f565b348015610ae457600080fd5b506103b7610af3366004614e9d565b613438565b348015610b0457600080fd5b506103b7610b13366004614ae5565b61346c565b6103b7610b26366004614f35565b6134b8565b348015610b3757600080fd5b50610475610b46366004614e9d565b61364b565b60006001600160e01b031982166380ac58cd60e01b1480610b7c57506001600160e01b03198216635b5e139f60e01b145b80610b9757506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060008054610bac906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd8906154af565b8015610c255780601f10610bfa57610100808354040283529160200191610c25565b820191906000526020600020905b815481529060010190602001808311610c0857829003601f168201915b5050505050905090565b6000610c3a8261365b565b610ca05760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6000610cc782611db4565b9050806001600160a01b0316836001600160a01b03161415610d355760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610c97565b336001600160a01b0382161480610d515750610d518133613331565b610dbe5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776044820152771b995c881b9bdc88185c1c1c9bdd995908199bdc88185b1b60421b6064820152608401610c97565b610dc88383613678565b505050565b6007546001600160a01b03163314610df75760405162461bcd60e51b8152600401610c97906151f8565b6053805460ff1916911515919091179055565b600b546039546001600160a01b03908116911614610e5e5760405162461bcd60e51b81526020600482015260116024820152700696e76616c69642043757272656e63793607c1b6044820152606401610c97565b6000601883600b8110610e8157634e487b7160e01b600052603260045260246000fd5b0154600b546039549192506001600160a01b0391821691161415610eee57603f54603c54610eb783670de0b6b3a7640000615436565b610ec19190615334565b610ecb919061531c565b3414610ee95760405162461bcd60e51b8152600401610c97906151d2565b611032565b603f543414610f0f5760405162461bcd60e51b8152600401610c97906151d2565b6039546001600160a01b03166323b872dd33603c546039546040805163313ce56760e01b815290513093926001600160a01b03169163313ce567916004808301926020929190829003018186803b158015610f6957600080fd5b505afa158015610f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa19190614fb4565b610fac90600a61538b565b610fb69087615436565b610fc09190615334565b6040518463ffffffff1660e01b8152600401610fde9392919061503f565b602060405180830381600087803b158015610ff857600080fd5b505af115801561100c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110309190614e49565b505b600061103f8585856136e6565b6000818152604860205260408082208054336001600160a01b0319918216178255600b54600190920180549091166001600160a01b03928316179055603a54915193945016914780156108fc0292909190818181858888f193505050501580156110ad573d6000803e3d6000fd5b505050505050565b630a85bd0160e11b5b949350505050565b6007546001600160a01b031633146110f05760405162461bcd60e51b8152600401610c97906151f8565b60405460ff8281169116141561118a578151600a146111215760405162461bcd60e51b8152600401610c97906152a2565b60005b8251811015610dc85782818151811061114d57634e487b7160e01b600052603260045260246000fd5b6020026020010151600c82600b811061117657634e487b7160e01b600052603260045260246000fd5b015580611182816154e4565b915050611124565b60405460ff828116610100909204161415611229578151600a146111c05760405162461bcd60e51b8152600401610c97906152a2565b60005b8251811015610dc8578281815181106111ec57634e487b7160e01b600052603260045260246000fd5b6020026020010151602382600b811061121557634e487b7160e01b600052603260045260246000fd5b015580611221816154e4565b9150506111c3565b8151600b1461124a5760405162461bcd60e51b8152600401610c97906152a2565b60005b8251811015610dc85782818151811061127657634e487b7160e01b600052603260045260246000fd5b6020026020010151601882600b811061129f57634e487b7160e01b600052603260045260246000fd5b0155806112ab816154e4565b91505061124d565b5050565b604c81815481106112c757600080fd5b600091825260209091200154905081565b6000600a831080156113255750600c83600b811061130657634e487b7160e01b600052603260045260246000fd5b015460008481526042602052604090205461132290849061531c565b11155b801561138a575060175461133a90600a615436565b82600c85600b811061135c57634e487b7160e01b600052603260045260246000fd5b015460175461136b9190615334565b6113759190615436565b61137d613969565b611387919061531c565b11155b1561139757506001610b97565b82600a1480156113c657506017546113b090600a615436565b826113b9613969565b6113c3919061531c565b11155b156113d357506001610b97565b50600092915050565b6113e78383836139e6565b610dc8838383613c70565b6007546001600160a01b0316331461141c5760405162461bcd60e51b8152600401610c97906151f8565b603f55565b602e81600b811061143157600080fd5b018054909150611440906154af565b80601f016020809104026020016040519081016040528092919081815260200182805461146c906154af565b80156114b95780601f1061148e576101008083540402835291602001916114b9565b820191906000526020600020905b81548152906001019060200180831161149c57829003601f168201915b505050505081565b600081600a14156114ee57506001600160a01b038216600090815260456020526040902060010154610b97565b506001600160a01b03919091166000908152604560209081526040808320938352929052205490565b6007546001600160a01b031633146115415760405162461bcd60e51b8152600401610c97906151f8565b603980546001600160a01b0319166001600160a01b0392909216919091179055565b601881600b811061157357600080fd5b0154905081565b6000603f54341461159d5760405162461bcd60e51b8152600401610c97906151d2565b336115a6612585565b6001600160a01b03161480156115bf575060435460ff16155b806115e957503360009081526044602052604090205460ff1680156115e9575060435460ff166001145b806115f9575060435460ff166002145b1561166f576116088383613ca1565b6040516001815233906000805160206155ec8339815191529060200160405180910390a2603a546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611665573d6000803e3d6000fd5b5060019050610b97565b6040516000815233906000805160206155ec8339815191529060200160405180910390a2603a546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156116cc573d6000803e3d6000fd5b5060009392505050565b6007546001600160a01b031633146117005760405162461bcd60e51b8152600401610c97906151f8565b603d805460ff1916911515919091179055565b6000828152604660209081526040808320546001600160a01b0387168452604790925282205460ff161515600114156117505760019150506118ac565b6001600160a01b03851660009081526047602052604090205460ff16158015611779575080600a145b80156117ad57506041546001600160a01b0386166000908152604560205260409020600101546117aa90859061531c565b11155b156117bc5760019150506118ac565b80600a14156117cf5760009150506118ac565b6001600160a01b0385166000818152604560209081526040808320858452825280832054938352604790915290205460ff1615801561180e5750600a82105b80156118455750602382600b811061183657634e487b7160e01b600052603260045260246000fd5b0154611842858361531c565b11155b80156118955750604154600c83600b811061187057634e487b7160e01b600052603260045260246000fd5b015460175461187f9190615334565b61188888612cd2565b611892919061531c565b11155b156118a5576001925050506118ac565b6000925050505b9392505050565b6007546001600160a01b031633146118dd5760405162461bcd60e51b8152600401610c97906151f8565b603e55565b6007546001600160a01b0316331461190c5760405162461bcd60e51b8152600401610c97906151f8565b6043805460ff191660ff92909216919091179055565b61192d8383836139e6565b610dc8838383613d2c565b603f5434146119595760405162461bcd60e51b8152600401610c97906151d2565b8015611b3857336000908152604a602052604081205460ff161561197e57508161199b565b6064603e548461198e9190615436565b6119989190615334565b90505b600081116119bb5760405162461bcd60e51b8152600401610c9790615189565b30600090815260456020526040902060010154811115611a12576119e0600a826112d8565b6119fc5760405162461bcd60e51b8152600401610c979061527e565b3060009081526045602052604090206001018190555b603b546001600160a01b03166323b872dd33603b546040805163313ce56760e01b8152905130926001600160a01b03169163313ce567916004808301926020929190829003018186803b158015611a6857600080fd5b505afa158015611a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa09190614fb4565b611aab90600a61538b565b611ab59088615436565b6040518463ffffffff1660e01b8152600401611ad39392919061503f565b602060405180830381600087803b158015611aed57600080fd5b505af1158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b259190614e49565b50611b3230335b83613d47565b50611d2f565b336000908152604a602052604081205460ff1615611bf257603b60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9e57600080fd5b505afa158015611bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd69190614fb4565b611be190600a61538b565b611beb9084615436565b9050611c9f565b603e54603b546040805163313ce56760e01b81529051606493926001600160a01b03169163313ce567916004808301926020929190829003018186803b158015611c3b57600080fd5b505afa158015611c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c739190614fb4565b611c7e90600a61538b565b611c889086615436565b611c929190615436565b611c9c9190615334565b90505b611caa333085613d47565b603b546001600160a01b031663a9059cbb33836040518363ffffffff1660e01b8152600401611cda9291906150a0565b602060405180830381600087803b158015611cf457600080fd5b505af1158015611d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2c9190614e49565b50505b603a546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610dc8573d6000803e3d6000fd5b6007546001600160a01b03163314611d925760405162461bcd60e51b8152600401610c97906151f8565b603b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600260205260408120546001600160a01b031680610b975760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610c97565b603f543414611e4c5760405162461bcd60e51b8152600401610c97906151d2565b603d5460ff16611e6e5760405162461bcd60e51b8152600401610c9790615162565b600082815260466020526040902054600a81108015611e8d5750600a82105b8015611e9857508082105b611eb45760405162461bcd60e51b8152600401610c97906151ac565b6000600c82600b8110611ed757634e487b7160e01b600052603260045260246000fd5b0154601754611ee69190615334565b90506000600c84600b8110611f0b57634e487b7160e01b600052603260045260246000fd5b0154601754611f1a9190615334565b9050611f273330876113dc565b6000611fde3386602e88600b8110611f4f57634e487b7160e01b600052603260045260246000fd5b018054611f5b906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054611f87906154af565b8015611fd45780601f10611fa957610100808354040283529160200191611fd4565b820191906000526020600020905b815481529060010190602001808311611fb757829003601f168201915b50505050506136e6565b9050611fea8284615455565b30600090815260456020526040902060010154101561204c57612012600a6104be8486615455565b61202e5760405162461bcd60e51b8152600401610c979061527e565b6120388284615455565b306000908152604560205260409020600101555b612060303361205b8587615455565b613d47565b6110ad8187613ee4565b6001600160a01b03821660009081526045602090815260408083208484528252918290208054835181840281018401909452808452606093928301828280156120d257602002820191906000526020600020905b8154815260200190600101908083116120be575b5050505050905092915050565b60006001600160a01b03821661214a5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610c97565b506001600160a01b031660009081526003602052604090205490565b6007546001600160a01b031633146121905760405162461bcd60e51b8152600401610c97906151f8565b6007546040516000916001600160a01b0316906000805160206155ac833981519152908390a3600780546001600160a01b0319169055565b600c81600b811061157357600080fd5b603f5434146121f95760405162461bcd60e51b8152600401610c97906151d2565b600c81600b811061221a57634e487b7160e01b600052603260045260246000fd5b01546017546122299190615334565b8210156122485760405162461bcd60e51b8152600401610c9790615189565b600a81106122875760405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b2103a34b2b960a11b6044820152606401610c97565b6000600c82600b81106122aa57634e487b7160e01b600052603260045260246000fd5b01546017546122b99190615334565b6122c39084615334565b9050600a8111156122d25750600a5b6123113330600c85600b81106122f857634e487b7160e01b600052603260045260246000fd5b01546017546123079190615334565b61205b9085615436565b60005b818110156123a4576000612345335b85602e87600b8110611f4f57634e487b7160e01b600052603260045260246000fd5b9050806123525750612392565b3360009182526048602052604090912080546001600160a01b03199081166001600160a01b03938416178255603954600190920180549290931691161790555b8061239c816154e4565b915050612314565b50603a546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156123de573d6000803e3d6000fd5b50505050565b6007546001600160a01b0316331461240e5760405162461bcd60e51b8152600401610c97906151f8565b8060ff166001141561248f5760005b83518110156123de5782604a600086848151811061244b57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580612487816154e4565b91505061241d565b8060ff16600214156125105760005b83518110156123de5782604460008684815181106124cc57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580612508816154e4565b91505061249e565b60005b83518110156123de57826047600086848151811061254157634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061257d816154e4565b915050612513565b6007546001600160a01b031690565b606060018054610bac906154af565b603f5434146125c45760405162461bcd60e51b8152600401610c97906151d2565b60018115151480156125ee57506125d9612585565b6001600160a01b0316336001600160a01b0316145b806125f7575080155b61260057600080fd5b60008060005b604c548110156126fc5784604c828154811061263257634e487b7160e01b600052603260045260246000fd5b906000526020600020015414156126ea57604c805461265390600190615455565b8154811061267157634e487b7160e01b600052603260045260246000fd5b9060005260206000200154604c828154811061269d57634e487b7160e01b600052603260045260246000fd5b600091825260209091200155604c8054806126c857634e487b7160e01b600052603160045260246000fd5b60019003818190600052602060002001600090559055809250600191506126fc565b806126f4816154e4565b915050612606565b50806127395760405162461bcd60e51b815260206004820152600c60248201526b1b9bc8189bdc9c9bddc81a5960a21b6044820152606401610c97565b605254605154612749919061531c565b6000858152604b60205260409020600101546127659042615455565b1115801561278957506000848152604b60205260409020546001600160a01b031633145b806127df575060525460515461279f919061531c565b6000858152604b60205260409020600101546127bb9042615455565b1180156127df57506000848152604b60205260409020546001600160a01b03163314155b61281a5760405162461bcd60e51b815260206004820152600c60248201526b34b73b30b634b2103ab9b2b960a11b6044820152606401610c97565b61282384613f6f565b6001831515141561289a57603a546040516323b872dd60e01b815230916323b872dd916128629184916001600160a01b0390911690899060040161503f565b600060405180830381600087803b15801561287c57600080fd5b505af1158015612890573d6000803e3d6000fd5b5050505050505050565b60006052546051546128ac919061531c565b6000868152604b60205260409020600101546128c89042615455565b111580156128ec57506000858152604b60205260409020546001600160a01b031633145b15612997576051546000868152604b60205260409020600101546129109042615455565b1161294457604e54604d546129259190615436565b604d54612933906064615436565b61293d919061531c565b90506129b3565b605254605154612954919061531c565b6000868152604b60205260409020600101546129709042615455565b1161299257604d54604f54604e54612988919061531c565b6129259190615436565b6129b3565b6050546129a5906064615455565b6129b0906064615436565b90505b6000858152604b6020908152604080832080546001600160a01b03191681556001018390556046909152812054600c90600b8110612a0157634e487b7160e01b600052603260045260246000fd5b0154601754612a109190615334565b9050612a2e3330612710612a248686615436565b61205b9190615334565b6040516323b872dd60e01b815230906323b872dd90612a5590839033908b9060040161503f565b600060405180830381600087803b158015612a6f57600080fd5b505af1158015612a83573d6000803e3d6000fd5b5050603a546040516001600160a01b0390911692504780156108fc029250906000818181858888f19350505050158015612ac1573d6000803e3d6000fd5b50505050505050565b6001600160a01b038216331415612b1f5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610c97565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b603f543414612bac5760405162461bcd60e51b8152600401610c97906151d2565b60008181526046602052604081205490600c82600b8110612bdd57634e487b7160e01b600052603260045260246000fd5b0154601754612bec9190615334565b9050612bfa335b30856113dc565b600083815260486020908152604080832080546001600160a01b0319908116825560019182018054909116905530845260459092529091200154811115612c7857612c46600a826112d8565b612c625760405162461bcd60e51b8152600401610c979061527e565b3060009081526045602052604090206001018190555b612c823033611b2c565b603a546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156123de573d6000803e3d6000fd5b612cc68484846139e6565b6123de84848484614288565b600080805b600a811015612d5f576001600160a01b038416600090815260456020908152604080832084845290915290208054600c83600b8110612d2657634e487b7160e01b600052603260045260246000fd5b0154601754612d359190615334565b612d3f9190615436565b612d49908461531c565b9250508080612d57906154e4565b915050612cd7565b506001600160a01b0383166000908152604560205260409020600101546118ac908261531c565b6007546001600160a01b03163314612db05760405162461bcd60e51b8152600401610c97906151f8565b604155565b603f543414612dd65760405162461bcd60e51b8152600401610c97906151d2565b60535460ff16612e155760405162461bcd60e51b815260206004820152600a6024820152696e6f2073657474696e6760b01b6044820152606401610c97565b612e1d612585565b6001600160a01b0316336001600160a01b03161415612e745760405162461bcd60e51b81526020600482015260136024820152726f776e65722063616e6e6f7420626f72726f7760681b6044820152606401610c97565b33612e7e82611db4565b6001600160a01b031614612ec05760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b6044820152606401610c97565b60008181526046602052604081205490600c82600b8110612ef157634e487b7160e01b600052603260045260246000fd5b0154601754612f009190615334565b9050612f0b33612bf3565b612f2030336064604d5485612a249190615436565b6000838152604b6020526040812080546001600160a01b0319163317815542600191820155604c805491820181559091527f42859d4f253f4d4a28ee9a59f9c9683a9404da2c5d329c733ab84f150db798a801839055612c8283613f6f565b6060612f8a8261365b565b612ff05760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b6064820152608401610c97565b60008281526006602052604081208054613009906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054613035906154af565b80156130825780601f1061305757610100808354040283529160200191613082565b820191906000526020600020905b81548152906001019060200180831161306557829003601f168201915b5050505050905060006130a060408051602081019091526000815290565b90508051600014156130b3575092915050565b8151156130e55780826040516020016130cd929190614ffc565b60405160208183030381529060405292505050919050565b6110be846142ba565b6007546001600160a01b031633146131185760405162461bcd60e51b8152600401610c97906151f8565b603a546040516370a0823160e01b81526001600160a01b038084169263a9059cbb9291169083906370a082319061315390309060040161502b565b60206040518083038186803b15801561316b57600080fd5b505afa15801561317f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a39190614eb5565b6040518363ffffffff1660e01b81526004016131c09291906150a0565b602060405180830381600087803b1580156131da57600080fd5b505af11580156131ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b39190614e49565b6007546001600160a01b0316331461323c5760405162461bcd60e51b8152600401610c97906151f8565b600a821061325c5760405162461bcd60e51b8152600401610c97906151ac565b80602e83600b811061327e57634e487b7160e01b600052603260045260246000fd5b019080519060200190610dc89291906149a4565b6007546001600160a01b031633146132bc5760405162461bcd60e51b8152600401610c97906151f8565b6049805460ff191660ff92909216919091179055565b6007546001600160a01b031633146132fc5760405162461bcd60e51b8152600401610c97906151f8565b613307866001615436565b605155613315856001615436565b605255604d93909355605091909155604f91909155604e555050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6007546001600160a01b031633146133895760405162461bcd60e51b8152600401610c97906151f8565b6001600160a01b0381166133ee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c97565b6007546040516001600160a01b038084169216906000805160206155ac83398151915290600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b031633146134625760405162461bcd60e51b8152600401610c97906151f8565b6017819055601655565b6007546001600160a01b031633146134965760405162461bcd60e51b8152600401610c97906151f8565b603a80546001600160a01b0319166001600160a01b0392909216919091179055565b603d5460ff166134da5760405162461bcd60e51b8152600401610c9790615162565b60008281526046602052604081205490601882600b811061350b57634e487b7160e01b600052603260045260246000fd5b0154601884600b811061352e57634e487b7160e01b600052603260045260246000fd5b015461353a9190615455565b9050336001600160a01b03167f35da91e5b418a59e54085b10b42be33b3938527f506ad3df2a0f8747d49ef3d434603c5484670de0b6b3a764000061357f9190615436565b6135899190615334565b6040805192835260208301919091520160405180910390a2603f54603c546135b983670de0b6b3a7640000615436565b6135c39190615334565b6135cd919061531c565b34146135eb5760405162461bcd60e51b8152600401610c97906151d2565b600a821080156135fb5750600a83105b801561360657508183115b6136225760405162461bcd60e51b8152600401610c97906151ac565b61362d3330866113dc565b600061363833612323565b90506136448186613ee4565b5050505050565b602381600b811061157357600080fd5b6000908152600260205260409020546001600160a01b0316151590565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906136ad82611db4565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000600b83106137265760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642074696560a81b6044820152606401610c97565b3361372f612585565b6001600160a01b0316148015613748575060435460ff16155b8061377257503360009081526044602052604090205460ff168015613772575060435460ff166001145b80613782575060435460ff166002145b1561393057600083600a14156137f25761379d8460016112d8565b6137b95760405162461bcd60e51b8152600401610c979061527e565b3060009081526045602052604081206001018054916137d7836154e4565b91905055506137e830866001613d47565b60009150506118ac565b3060009081526045602090815260408083208784529091529020805415613853578054819061382390600190615455565b8154811061384157634e487b7160e01b600052603260045260246000fd5b906000526020600020015491506138bc565b61385e8560016112d8565b61387a5760405162461bcd60e51b8152600401610c979061527e565b613888600a80546001019055565b600a5491506138973083614391565b6000828152604660209081526040822087905582546001810184558383529120018290555b60405163095ea7b360e01b8152309063095ea7b3906138e190899086906004016150a0565b600060405180830381600087803b1580156138fb57600080fd5b505af115801561390f573d6000803e3d6000fd5b5050505061391e3087846113dc565b6139288285613ca1565b5090506118ac565b60405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21027b83a34b7b760911b6044820152606401610c97565b600080805b600a81116139e05760008181526042602052604090205480600c83600b81106139a757634e487b7160e01b600052603260045260246000fd5b01546017546139b69190615334565b6139c09190615436565b6139ca908461531c565b92505080806139d8906154e4565b91505061396e565b50919050565b6001600160a01b038084166000908152604560208181526040808420868552604683528185205480865290835281852095881685529282528084209284529190529020613a3584846001611713565b613a765760405162461bcd60e51b8152602060048201526012602482015271657863656564206d617820616d6f756e743160701b6044820152606401610c97565b6000805b8354811015613b6b57838181548110613aa357634e487b7160e01b600052603260045260246000fd5b9060005260206000200154851415613b595783548490613ac590600190615455565b81548110613ae357634e487b7160e01b600052603260045260246000fd5b9060005260206000200154848281548110613b0e57634e487b7160e01b600052603260045260246000fd5b906000526020600020018190555083805480613b3a57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905560019150613b6b565b80613b63816154e4565b915050613a7a565b5080613baf5760405162461bcd60e51b8152602060048201526013602482015272199c9bdb481a185cc81b9bc81d1bdad95b9259606a1b6044820152606401610c97565b8154600181018355600083815260209020018490556001600160a01b038616301415613c0257600084815260466020908152604080832054835260429091528120805491613bfc836154e4565b91905055505b6001600160a01b038516301415613c4057600084815260466020908152604080832054835260429091528120805491613c3a83615498565b91905055505b6001600160a01b0386163014801590613c6257506001600160a01b0385163014155b156110ad576110ad84613f6f565b613c7a33826143ab565b613c965760405162461bcd60e51b8152600401610c979061522d565b610dc883838361446d565b613caa8261365b565b613d0d5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610c97565b60008281526006602090815260409091208251610dc8928401906149a4565b610dc883838360405180602001604052806000815250612cbb565b6001600160a01b038316600090815260456020526040902060010154811115613da95760405162461bcd60e51b8152602060048201526014602482015273696e73756666696365696e742062616c616e636560601b6044820152606401610c97565b613db582600083611713565b613df65760405162461bcd60e51b815260206004820152601260248201527132bc31b2b2b21036b0bc1030b6b7bab73a1960711b6044820152606401610c97565b6001600160a01b03831660009081526045602052604081206001018054839290613e21908490615455565b90915550506001600160a01b03821660009081526045602052604081206001018054839290613e5190849061531c565b90915550506001600160a01b038316301415613e9b5760008051602061558c8339815191525460009081526042602052604081208054839290613e9590849061531c565b90915550505b6001600160a01b038216301415610dc85760008051602061558c8339815191525460009081526042602052604081208054839290613eda908490615455565b9091555050505050565b81613eed575050565b6000828152604860205260408082208054336001600160a01b03199182161782558484528284206001818101805491909401805484166001600160a01b03928316179055815483169091558254909116909155603a5491519116914780156108fc02929091818181858888f19350505050158015610dc8573d6000803e3d6000fd5b60008181526048602090815260408083208054600190910154604690935290832054600b546001600160a01b0392831694938316939216831415613fc057600b546001600160a01b03169150613fc4565b8291505b60495460ff16614122576001600160a01b0382166323b872dd3330603c546064876001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561401d57600080fd5b505afa158015614031573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140559190614fb4565b61406090600a61538b565b601888600b811061408157634e487b7160e01b600052603260045260246000fd5b015461408e906002615436565b6140989190615436565b6140a29190615334565b6140ac9190615334565b6040518463ffffffff1660e01b81526004016140ca9392919061503f565b602060405180830381600087803b1580156140e457600080fd5b505af11580156140f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061411c9190614e49565b50613644565b6001600160a01b03841633141561413a575050505050565b6001600160a01b0382166323b872dd3386603c546064876001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561418957600080fd5b505afa15801561419d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141c19190614fb4565b6141cc90600a61538b565b601888600b81106141ed57634e487b7160e01b600052603260045260246000fd5b01546141fa906002615436565b6142049190615436565b61420e9190615334565b6142189190615334565b6040518463ffffffff1660e01b81526004016142369392919061503f565b602060405180830381600087803b15801561425057600080fd5b505af1158015614264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad9190614e49565b61429233836143ab565b6142ae5760405162461bcd60e51b8152600401610c979061522d565b6123de848484846145fb565b60606142c58261365b565b6143295760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610c97565b600061434060408051602081019091526000815290565b9050600081511161436057604051806020016040528060008152506118ac565b8061436a8461462e565b60405160200161437b929190614ffc565b6040516020818303038152906040529392505050565b6112b3828260405180602001604052806000815250614747565b60006143b68261365b565b6144175760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610c97565b600061442283611db4565b9050806001600160a01b0316846001600160a01b0316148061445d5750836001600160a01b031661445284610c2f565b6001600160a01b0316145b806110be57506110be8185613331565b826001600160a01b031661448082611db4565b6001600160a01b0316146144e85760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610c97565b6001600160a01b03821661454a5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610c97565b614555600082613678565b6001600160a01b038316600090815260036020526040812080546001929061457e908490615455565b90915550506001600160a01b03821660009081526003602052604081208054600192906145ac90849061531c565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716916000805160206155cc83398151915291a4505050565b61460684848461446d565b6146128484848461477a565b6123de5760405162461bcd60e51b8152600401610c9790615110565b6060816146525750506040805180820190915260018152600360fc1b602082015290565b8160005b811561467c5780614666816154e4565b91506146759050600a83615334565b9150614656565b6000816001600160401b038111156146a457634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156146ce576020820181803683370190505b5090505b84156110be576146e3600183615455565b91506146f0600a866154ff565b6146fb90603061531c565b60f81b81838151811061471e57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350614740600a86615334565b94506146d2565b6147518383614884565b61475e600084848461477a565b610dc85760405162461bcd60e51b8152600401610c9790615110565b60006001600160a01b0384163b1561487c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906147be903390899088908890600401615063565b602060405180830381600087803b1580156147d857600080fd5b505af1925050508015614808575060408051601f3d908101601f1916820190925261480591810190614e81565b60015b614862573d808015614836576040519150601f19603f3d011682016040523d82523d6000602084013e61483b565b606091505b50805161485a5760405162461bcd60e51b8152600401610c9790615110565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506110be565b5060016110be565b6001600160a01b0382166148da5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c97565b6148e38161365b565b1561492f5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606401610c97565b6001600160a01b038216600090815260036020526040812080546001929061495890849061531c565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392906000805160206155cc833981519152908290a45050565b8280546149b0906154af565b90600052602060002090601f0160209004810192826149d25760008555614a18565b82601f106149eb57805160ff1916838001178555614a18565b82800160010185558215614a18579182015b82811115614a185782518255916020019190600101906149fd565b50614a24929150614a28565b5090565b5b80821115614a245760008155600101614a29565b60006001600160401b03831115614a5657614a5661553f565b614a69601f8401601f19166020016152c9565b9050828152838383011115614a7d57600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b0381168114614aab57600080fd5b919050565b8035614aab81615555565b600082601f830112614acb578081fd5b6118ac83833560208501614a3d565b8035614aab8161557c565b600060208284031215614af6578081fd5b6118ac82614a94565b60008060408385031215614b11578081fd5b614b1a83614a94565b9150614b2860208401614a94565b90509250929050565b600080600060608486031215614b45578081fd5b614b4e84614a94565b9250614b5c60208501614a94565b9150604084013590509250925092565b60008060008060808587031215614b81578081fd5b614b8a85614a94565b9350614b9860208601614a94565b92506040850135915060608501356001600160401b03811115614bb9578182fd5b8501601f81018713614bc9578182fd5b614bd887823560208401614a3d565b91505092959194509250565b60008060408385031215614bf6578182fd5b614bff83614a94565b91506020830135614c0f81615555565b809150509250929050565b60008060408385031215614c2c578182fd5b614c3583614a94565b946020939093013593505050565b600080600060608486031215614c57578283fd5b614c6084614a94565b92506020840135915060408401356001600160401b03811115614c81578182fd5b614c8d86828701614abb565b9150509250925092565b600080600060608486031215614cab578081fd5b614cb484614a94565b95602085013595506040909401359392505050565b600080600060608486031215614cdd578081fd5b83356001600160401b03811115614cf2578182fd5b8401601f81018613614d02578182fd5b80356020614d17614d12836152f9565b6152c9565b8083825282820191508285018a848660051b8801011115614d36578687fd5b8695505b84861015614d5f57614d4b81614a94565b835260019590950194918301918301614d3a565b509650614d6f9050878201614ab0565b9450505050614d8060408501614ada565b90509250925092565b60008060408385031215614d9b578182fd5b82356001600160401b03811115614db0578283fd5b8301601f81018513614dc0578283fd5b80356020614dd0614d12836152f9565b80838252828201915082850189848660051b8801011115614def578788fd5b8795505b84861015614e11578035835260019590950194918301918301614df3565b509550614e219050868201614ada565b93505050509250929050565b600060208284031215614e3e578081fd5b81356118ac81615555565b600060208284031215614e5a578081fd5b81516118ac81615555565b600060208284031215614e76578081fd5b81356118ac81615566565b600060208284031215614e92578081fd5b81516118ac81615566565b600060208284031215614eae578081fd5b5035919050565b600060208284031215614ec6578081fd5b5051919050565b60008060408385031215614edf578182fd5b823591506020830135614c0f81615555565b60008060408385031215614f03578182fd5b8235915060208301356001600160401b03811115614f1f578182fd5b614f2b85828601614abb565b9150509250929050565b60008060408385031215614f47578182fd5b50508035926020909101359150565b60008060008060008060c08789031215614f6e578384fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600060208284031215614fa9578081fd5b81356118ac8161557c565b600060208284031215614fc5578081fd5b81516118ac8161557c565b60008151808452614fe881602086016020860161546c565b601f01601f19169290920160200192915050565b6000835161500e81846020880161546c565b83519083019061502281836020880161546c565b01949350505050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061509690830184614fd0565b9695505050505050565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156150f1578351835292840192918401916001016150d5565b50909695505050505050565b6020815260006118ac6020830184614fd0565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252600d908201526c3737903832b936b4b9b9b4b7b760991b604082015260600190565b6020808252600990820152681d1bdbc81cdb585b1b60ba1b604082015260600190565b6020808252600c908201526b34b73b30b634b2103a34b2b960a11b604082015260600190565b6020808252600c908201526b6e6f742065712076616c756560a01b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252600a90820152691b1a5b5a5d081b5a5b9d60b21b604082015260600190565b6020808252600d908201526c1a5b9d985b1a59081a5b9c1d5d609a1b604082015260600190565b604051601f8201601f191681016001600160401b03811182821017156152f1576152f161553f565b604052919050565b60006001600160401b038211156153125761531261553f565b5060051b60200190565b6000821982111561532f5761532f615513565b500190565b60008261534357615343615529565b500490565b600181815b8085111561538357816000190482111561536957615369615513565b8085161561537657918102915b93841c939080029061534d565b509250929050565b60006118ac60ff8416836000826153a457506001610b97565b816153b157506000610b97565b81600181146153c757600281146153d1576153ed565b6001915050610b97565b60ff8411156153e2576153e2615513565b50506001821b610b97565b5060208310610133831016604e8410600b8410161715615410575081810a610b97565b61541a8383615348565b806000190482111561542e5761542e615513565b029392505050565b600081600019048311821515161561545057615450615513565b500290565b60008282101561546757615467615513565b500390565b60005b8381101561548757818101518382015260200161546f565b838111156123de5750506000910152565b6000816154a7576154a7615513565b506000190190565b600181811c908216806154c357607f821691505b602082108114156139e057634e487b7160e01b600052602260045260246000fd5b60006000198214156154f8576154f8615513565b5060010190565b60008261550e5761550e615529565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b801515811461556357600080fd5b50565b6001600160e01b03198116811461556357600080fd5b60ff8116811461556357600080fdfed85b7383b028be6725c7309be219ad244687290982e7338ec4518b140591d8a58be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef56fec203058d9a869b913308c1ef948fb8e2e66fddcb5eed5d9a86c0bf0d0557a26469706673582212208bf460e81e7bb56dd1def2a3e4aceeaf0202025c57a6baffcf14d55fd3836fea64736f6c63430008040033