[ { "inputs": [ { "internalType": "bool", "name": "status", "type": "bool" }, { "internalType": "uint256[]", "name": "prices", "type": "uint256[]" }, { "internalType": "uint8", "name": "fee", "type": "uint8" }, { "internalType": "uint8", "name": "cluster", "type": "uint8" }, { "internalType": "uint8", "name": "row", "type": "uint8" }, { "internalType": "uint8", "name": "cell", "type": "uint8" }, { "internalType": "uint8", "name": "height", "type": "uint8" }, { "internalType": "uint8", "name": "width", "type": "uint8" } ], "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": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "GetPrice", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "RemoveEstate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "RemoveMarket", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "title", "type": "string" }, { "indexed": false, "internalType": "string", "name": "image", "type": "string" }, { "indexed": false, "internalType": "string", "name": "link", "type": "string" }, { "indexed": false, "internalType": "uint8", "name": "cluster", "type": "uint8" }, { "components": [ { "internalType": "uint8", "name": "start", "type": "uint8" }, { "internalType": "uint8", "name": "end", "type": "uint8" } ], "indexed": false, "internalType": "struct Token.Location", "name": "vertical", "type": "tuple" }, { "components": [ { "internalType": "uint8", "name": "start", "type": "uint8" }, { "internalType": "uint8", "name": "end", "type": "uint8" } ], "indexed": false, "internalType": "struct Token.Location", "name": "horizontal", "type": "tuple" } ], "name": "SetEstate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "SetMarket", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint8", "name": "cluster", "type": "uint8" }, { "indexed": false, "internalType": "uint8", "name": "vertical", "type": "uint8" }, { "indexed": false, "internalType": "uint8", "name": "horizontal", "type": "uint8" }, { "indexed": false, "internalType": "address", "name": "owner", "type": "address" } ], "name": "SetToken", "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" }, { "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": "uint8", "name": "cluster", "type": "uint8" }, { "internalType": "uint8", "name": "vertical", "type": "uint8" }, { "internalType": "uint8", "name": "horizontal", "type": "uint8" } ], "name": "buyMarket", "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": [], "name": "getPrice", "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": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "cluster", "type": "uint8" }, { "components": [ { "internalType": "uint8", "name": "start", "type": "uint8" }, { "internalType": "uint8", "name": "end", "type": "uint8" } ], "internalType": "struct Token.Location", "name": "vertical", "type": "tuple" }, { "components": [ { "internalType": "uint8", "name": "start", "type": "uint8" }, { "internalType": "uint8", "name": "end", "type": "uint8" } ], "internalType": "struct Token.Location", "name": "horizontal", "type": "tuple" } ], "name": "removeEstate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "cluster", "type": "uint8" }, { "internalType": "uint8", "name": "vertical", "type": "uint8" }, { "internalType": "uint8", "name": "horizontal", "type": "uint8" } ], "name": "removeMarket", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "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": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "title", "type": "string" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "link", "type": "string" }, { "internalType": "uint8", "name": "cluster", "type": "uint8" }, { "components": [ { "internalType": "uint8", "name": "start", "type": "uint8" }, { "internalType": "uint8", "name": "end", "type": "uint8" } ], "internalType": "struct Token.Location", "name": "vertical", "type": "tuple" }, { "components": [ { "internalType": "uint8", "name": "start", "type": "uint8" }, { "internalType": "uint8", "name": "end", "type": "uint8" } ], "internalType": "struct Token.Location", "name": "horizontal", "type": "tuple" } ], "name": "setEstate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "fee", "type": "uint8" } ], "name": "setFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "cluster", "type": "uint8" }, { "internalType": "uint8", "name": "vertical", "type": "uint8" }, { "internalType": "uint8", "name": "horizontal", "type": "uint8" }, { "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "setMarket", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "prices", "type": "uint256[]" } ], "name": "setPrices", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "resource", "type": "string" } ], "name": "setResource", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "setStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "cluster", "type": "uint8" }, { "components": [ { "internalType": "uint8", "name": "start", "type": "uint8" }, { "internalType": "uint8", "name": "end", "type": "uint8" } ], "internalType": "struct Token.Location", "name": "vertical", "type": "tuple" }, { "components": [ { "internalType": "uint8", "name": "start", "type": "uint8" }, { "internalType": "uint8", "name": "end", "type": "uint8" } ], "internalType": "struct Token.Location", "name": "horizontal", "type": "tuple" } ], "name": "setToken", "outputs": [], "stateMutability": "payable", "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "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": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [], "name": "withdraw", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60806040523480156200001157600080fd5b50604051620037f4380380620037f48339810160408190526200003491620002a6565b604080518082018252601381527f4e6f6e2046756e6769626c6520506978656c730000000000000000000000000060208083019182528351808501909452600384526204e46560ec1b9084015281519192916200009491600091620001ac565b508051620000aa906001906020840190620001ac565b5050506000620000bf620001a860201b60201c565b600a80546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c805460ff191689151517905586516200013090600d9060208a01906200023b565b506010805460ff97881660ff1991821617909155600e80549288166101000261ff00199489169589166401000000000260ff60201b19978a1663010000000263ff0000001999909a16620100000262ff0000199095169490941797909716979097179490941617909216171617905550620004529050565b3390565b828054620001ba90620003ff565b90600052602060002090601f016020900481019282620001de576000855562000229565b82601f10620001f957805160ff191683800117855562000229565b8280016001018555821562000229579182015b82811115620002295782518255916020019190600101906200020c565b506200023792915062000278565b5090565b828054828255906000526020600020908101928215620002295791602002820182811115620002295782518255916020019190600101906200020c565b5b8082111562000237576000815560010162000279565b805160ff81168114620002a157600080fd5b919050565b600080600080600080600080610100898b031215620002c3578384fd5b88518015158114620002d3578485fd5b60208a01519098506001600160401b0380821115620002f0578586fd5b818b0191508b601f83011262000304578586fd5b8151818111156200031957620003196200043c565b6020810260405160208282010181811085821117156200033d576200033d6200043c565b8060405250809350828152602081019350602085018f60208488010111156200036457898afd5b8995505b83861015620003895780518552600195909501946020948501940162000368565b50809b505050505050620003a060408a016200028f565b9550620003b060608a016200028f565b9450620003c060808a016200028f565b9350620003d060a08a016200028f565b9250620003e060c08a016200028f565b9150620003f060e08a016200028f565b90509295985092959890939650565b6002810460018216806200041457607f821691505b602082108114156200043657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61339280620004626000396000f3fe6080604052600436106101d85760003560e01c80636352211e11610102578063a22cb46511610095578063d6c6cf9311610064578063d6c6cf9314610508578063e985e9c514610528578063ee4363ea14610548578063f2fde38b14610568576101d8565b8063a22cb46514610488578063b88d4fde146104a8578063c87b56dd146104c8578063cb122a09146104e8576101d8565b80638da5cb5b116100d15780638da5cb5b146104295780638f2999b61461043e57806395d89b411461045e57806398d5fdca14610473576101d8565b80636352211e146103b457806370a08231146103d4578063715018a6146103f457806379cf92d314610409576101d8565b806323b872dd1161017a578063453aaa5e11610149578063453aaa5e146103345780634628531d146103545780634f6ccce7146103745780635c40f6f414610394576101d8565b806323b872dd146102cc5780632f745c59146102ec5780633ccfd60b1461030c57806342842e0e14610314576101d8565b8063095ea7b3116101b6578063095ea7b31461026257806318160ddd1461028457806320de57ca146102a657806322c71e4b146102b9576101d8565b806301ffc9a7146101dd57806306fdde0314610213578063081812fc14610235575b600080fd5b3480156101e957600080fd5b506101fd6101f83660046126cf565b610588565b60405161020a91906129d6565b60405180910390f35b34801561021f57600080fd5b506102286105b5565b60405161020a91906129e1565b34801561024157600080fd5b506102556102503660046127f2565b610648565b60405161020a9190612985565b34801561026e57600080fd5b5061028261027d3660046125e5565b610694565b005b34801561029057600080fd5b5061029961072c565b60405161020a9190613103565b6102826102b4366004612824565b610732565b6102826102c7366004612868565b610ad2565b3480156102d857600080fd5b506102826102e7366004612508565b610cac565b3480156102f857600080fd5b506102996103073660046125e5565b610ce4565b610282610d36565b34801561032057600080fd5b5061028261032f366004612508565b610dae565b34801561034057600080fd5b5061028261034f366004612707565b610dc9565b34801561036057600080fd5b5061028261036f36600461273a565b610e1f565b34801561038057600080fd5b5061029961038f3660046127f2565b61114a565b3480156103a057600080fd5b506102826103af3660046126b5565b6111a5565b3480156103c057600080fd5b506102556103cf3660046127f2565b6111f7565b3480156103e057600080fd5b506102996103ef3660046124bc565b61122c565b34801561040057600080fd5b50610282611270565b34801561041557600080fd5b5061028261042436600461260e565b6112f9565b34801561043557600080fd5b5061025561134b565b34801561044a57600080fd5b506102826104593660046128a1565b61135a565b34801561046a57600080fd5b50610228611431565b34801561047f57600080fd5b50610299611440565b34801561049457600080fd5b506102826104a33660046125bc565b61150c565b3480156104b457600080fd5b506102826104c3366004612543565b6115da565b3480156104d457600080fd5b506102286104e33660046127f2565b611619565b3480156104f457600080fd5b5061028261050336600461280a565b61169c565b34801561051457600080fd5b50610282610523366004612868565b6116f1565b34801561053457600080fd5b506101fd6105433660046124d6565b6117c1565b34801561055457600080fd5b50610282610563366004612824565b6117ef565b34801561057457600080fd5b506102826105833660046124bc565b611921565b60006001600160e01b0319821663780e9d6360e01b14806105ad57506105ad826119e2565b90505b919050565b6060600080546105c490613277565b80601f01602080910402602001604051908101604052809291908181526020018280546105f090613277565b801561063d5780601f106106125761010080835404028352916020019161063d565b820191906000526020600020905b81548152906001019060200180831161062057829003601f168201915b505050505090505b90565b600061065382611a22565b6106785760405162461bcd60e51b815260040161066f90612e02565b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061069f826111f7565b9050806001600160a01b0316836001600160a01b031614156106d35760405162461bcd60e51b815260040161066f90612f41565b806001600160a01b03166106e5611a3f565b6001600160a01b03161480610701575061070181610543611a3f565b61071d5760405162461bcd60e51b815260040161066f90612c6c565b6107278383611a43565b505050565b60085490565b600061074c836020015160ff16846000015160ff16611ab1565b6107579060016131e9565b90506000610773836020015160ff16846000015160ff16611ab1565b61077e9060016131e9565b600c5490915060ff1615156001146107a85760405162461bcd60e51b815260040161066f90612da7565b346107c46107b68385613215565b6107be611440565b90611abd565b11156107e25760405162461bcd60e51b815260040161066f90612c47565b600e5460ff808716620100009092041610156108105760405162461bcd60e51b815260040161066f90612fd3565b6020840151600e5460ff918216630100000090910490911610156108465760405162461bcd60e51b815260040161066f90612fd3565b6020830151600e5460ff918216640100000000909104909116101561087d5760405162461bcd60e51b815260040161066f90612fd3565b836000015160ff16846020015160ff1610156108ab5760405162461bcd60e51b815260040161066f90612e4e565b826000015160ff16836020015160ff1610156108d95760405162461bcd60e51b815260040161066f90612e4e565b600e5460ff168211156108fe5760405162461bcd60e51b815260040161066f90612fd3565b600e54610100900460ff168111156109285760405162461bcd60e51b815260040161066f90612fd3565b83515b846020015160ff168160ff1611610aca5783515b846020015160ff168160ff1611610ab75760008783836040516020016109679392919061295b565b6040516020818303038152906040528051906020012090506000610994600161098e61072c565b90611ac9565b6000838152600f6020526040902054909150156109c35760405162461bcd60e51b815260040161066f90612ff8565b604080516080810182528281526000602080830182815283850183815260608501848152888552600f9093529490922092518355905160018301559151600282015590516003909101805460ff1916911515919091179055610a253382611ad5565b7faa6049eb73f3c381d87715f514486c7786672c5fec9b2773d893274c635dd519610a4e611440565b604051610a5b9190613103565b60405180910390a17fcc119a184b66a210d25c32aaa669ee3d00897f3759995754bee917970b6bcd85818a868633604051610a9a95949392919061318e565b60405180910390a150508080610aaf906132cd565b91505061093f565b5080610ac2816132cd565b91505061092b565b505050505050565b6000838383604051602001610ae99392919061295b565b60408051601f1981840301815291815281516020928301206000818152600f9093529082205490925090610b1b61134b565b90506000610b28836111f7565b6000858152600f602052604090206003015490915060ff161515600114610b615760405162461bcd60e51b815260040161066f906130dd565b6000848152600f6020526040902060010154341015610b925760405162461bcd60e51b815260040161066f90613044565b6000848152600f602052610bb5610baa346064611aef565b60105460ff16611abd565b90506000610bc33483611ab1565b6040519091506001600160a01b0385169083156108fc029084906000818181858888f19350505050158015610bfc573d6000803e3d6000fd5b506040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610c33573d6000803e3d6000fd5b505050610c49610c42846111f7565b3385611afb565b6000848152600f602052604080822060018101929092556003909101805460ff19169055517f31d8f959dfdfc23b4ebfcba588ab0be6a5c89b2932265fd8b8f6c4a7cf59812b90610c9b908590613103565b60405180910390a150505050505050565b610cbd610cb7611a3f565b82611c28565b610cd95760405162461bcd60e51b815260040161066f90612f82565b610727838383611afb565b6000610cef8361122c565b8210610d0d5760405162461bcd60e51b815260040161066f906129f4565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b610d3e611a3f565b6001600160a01b0316610d4f61134b565b6001600160a01b031614610d755760405162461bcd60e51b815260040161066f90612e74565b60405133904780156108fc02916000818181858888f19350505050610dac5760405162461bcd60e51b815260040161066f9061301c565b565b610727838383604051806020016040528060008152506115da565b610dd1611a3f565b6001600160a01b0316610de261134b565b6001600160a01b031614610e085760405162461bcd60e51b815260040161066f90612e74565b8051610e1b90600b9060208401906122dd565b5050565b6000610e39836020015160ff16846000015160ff16611ab1565b610e449060016131e9565b90506000610e60836020015160ff16846000015160ff16611ab1565b610e6b9060016131e9565b9050836000015160ff16846020015160ff161015610e9b5760405162461bcd60e51b815260040161066f906130b6565b826000015160ff16836020015160ff161015610ec95760405162461bcd60e51b815260040161066f906130b6565b600e5460ff16821115610eee5760405162461bcd60e51b815260040161066f90612d81565b600e54610100900460ff16811115610f185760405162461bcd60e51b815260040161066f90612d81565b83515b846020015160ff168160ff16116110395783515b846020015160ff168160ff1611611026576000878383604051602001610f579392919061295b565b60408051601f1981840301815291815281516020928301206000818152600f90935291206002810154905491925090610fa25760405162461bcd60e51b815260040161066f90612cc9565b60008181526012602052604090205460ff1615610fd15760405162461bcd60e51b815260040161066f90612b78565b6000828152600f60205260409020543390610feb906111f7565b6001600160a01b0316146110115760405162461bcd60e51b815260040161066f90612bd5565b5050808061101e906132cd565b915050610f2f565b5080611031816132cd565b915050610f1b565b506011805490600061104a836132b2565b90915550506011546000908152601260205260409020805460ff1916600117905583515b846020015160ff168160ff16116110fa5783515b846020015160ff168160ff16116110e75760008783836040516020016110aa9392919061295b565b60408051601f1981840301815291815281516020928301206011546000918252600f909352206002015550806110df816132cd565b915050611082565b50806110f2816132cd565b91505061106e565b507f1825a3a7263c2a9cffb7f479a86c1f6ed965115d49c9687182674c93d78d918a601154898989898989604051611138979695949392919061310c565b60405180910390a15050505050505050565b600061115461072c565b82106111725760405162461bcd60e51b815260040161066f9061306a565b6008828154811061119357634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b6111ad611a3f565b6001600160a01b03166111be61134b565b6001600160a01b0316146111e45760405162461bcd60e51b815260040161066f90612e74565b600c805460ff1916911515919091179055565b6000818152600260205260408120546001600160a01b0316806105ad5760405162461bcd60e51b815260040161066f90612d38565b60006001600160a01b0382166112545760405162461bcd60e51b815260040161066f90612cee565b506001600160a01b031660009081526003602052604090205490565b611278611a3f565b6001600160a01b031661128961134b565b6001600160a01b0316146112af5760405162461bcd60e51b815260040161066f90612e74565b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b611301611a3f565b6001600160a01b031661131261134b565b6001600160a01b0316146113385760405162461bcd60e51b815260040161066f90612e74565b8051610e1b90600d906020840190612361565b600a546001600160a01b031690565b60008484846040516020016113719392919061295b565b60408051601f1981840301815291815281516020928301206000818152600f909352912054909150336113a3826111f7565b6001600160a01b0316146113c95760405162461bcd60e51b815260040161066f90612b0e565b6000828152600f60205260409081902060018082018690556003909101805460ff19169091179055517f937bec193207b1156ebbdeaf4cdf11253897e4c54f9774731e7064ac242ca4af906114219083908690613180565b60405180910390a1505050505050565b6060600180546105c490613277565b60008061144b61072c565b600d5490915060009061146090600190613234565b600e549091506000906114879060ff63010000008204811691640100000000900416611abd565b905060006114958483611aef565b600e549091506114ae9062010000900460ff1683611abd565b84106114eb57600d83815481106114d557634e487b7160e01b600052603260045260246000fd5b9060005260206000200154945050505050610645565b600d81815481106114d557634e487b7160e01b600052603260045260246000fd5b611514611a3f565b6001600160a01b0316826001600160a01b031614156115455760405162461bcd60e51b815260040161066f90612b9e565b8060056000611552611a3f565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155611596611a3f565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115ce91906129d6565b60405180910390a35050565b6115eb6115e5611a3f565b83611c28565b6116075760405162461bcd60e51b815260040161066f90612f82565b61161384848484611cad565b50505050565b606061162482611a22565b6116405760405162461bcd60e51b815260040161066f90612ef2565b600061164a611ce0565b9050600081511161166a5760405180602001604052806000815250611695565b8061167484611cef565b60405160200161168592919061292c565b6040516020818303038152906040525b9392505050565b6116a4611a3f565b6001600160a01b03166116b561134b565b6001600160a01b0316146116db5760405162461bcd60e51b815260040161066f90612e74565b6010805460ff191660ff92909216919091179055565b60008383836040516020016117089392919061295b565b60408051601f1981840301815291815281516020928301206000818152600f9093529120549091503361173a826111f7565b6001600160a01b0316146117605760405162461bcd60e51b815260040161066f90612b0e565b6000828152600f602052604080822060018101929092556003909101805460ff19169055517f31d8f959dfdfc23b4ebfcba588ab0be6a5c89b2932265fd8b8f6c4a7cf59812b906117b2908390613103565b60405180910390a15050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b81515b826020015160ff168160ff16116116135781515b826020015160ff168160ff161161190e57600085838360405160200161182e9392919061295b565b60408051601f1981840301815291815281516020928301206000818152600f909352912060028101549054919250903390611868906111f7565b6001600160a01b03161461188e5760405162461bcd60e51b815260040161066f90612bd5565b60008181526012602052604090205460ff161515600114156118f95760008181526012602052604090819020805460ff19169055517f8011f27aeed43c769a824b0fe0b7c584a66a68a0acf48200b25caa7b1b3ef11b906118f0908390613103565b60405180910390a15b50508080611906906132cd565b915050611806565b5080611919816132cd565b9150506117f2565b611929611a3f565b6001600160a01b031661193a61134b565b6001600160a01b0316146119605760405162461bcd60e51b815260040161066f90612e74565b6001600160a01b0381166119865760405162461bcd60e51b815260040161066f90612a91565b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160e01b031982166380ac58cd60e01b1480611a1357506001600160e01b03198216635b5e139f60e01b145b806105ad57506105ad82611e0a565b6000908152600260205260409020546001600160a01b0316151590565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611a78826111f7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006116958284613234565b60006116958284613215565b600061169582846131e9565b610e1b828260405180602001604052806000815250611e23565b60006116958284613201565b826001600160a01b0316611b0e826111f7565b6001600160a01b031614611b345760405162461bcd60e51b815260040161066f90612ea9565b6001600160a01b038216611b5a5760405162461bcd60e51b815260040161066f90612b34565b611b65838383611e56565b611b70600082611a43565b6001600160a01b0383166000908152600360205260408120805460019290611b99908490613234565b90915550506001600160a01b0382166000908152600360205260408120805460019290611bc79084906131e9565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000611c3382611a22565b611c4f5760405162461bcd60e51b815260040161066f90612bfb565b6000611c5a836111f7565b9050806001600160a01b0316846001600160a01b03161480611c955750836001600160a01b0316611c8a84610648565b6001600160a01b0316145b80611ca55750611ca581856117c1565b949350505050565b611cb8848484611afb565b611cc484848484611edf565b6116135760405162461bcd60e51b815260040161066f90612a3f565b6060600b80546105c490613277565b606081611d1457506040805180820190915260018152600360fc1b60208201526105b0565b8160005b8115611d3e5780611d28816132b2565b9150611d379050600a83613201565b9150611d18565b60008167ffffffffffffffff811115611d6757634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611d91576020820181803683370190505b5090505b8415611ca557611da6600183613234565b9150611db3600a866132ed565b611dbe9060306131e9565b60f81b818381518110611de157634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611e03600a86613201565b9450611d95565b6001600160e01b031981166301ffc9a760e01b14919050565b611e2d8383611ffa565b611e3a6000848484611edf565b6107275760405162461bcd60e51b815260040161066f90612a3f565b611e61838383610727565b6001600160a01b038316611e7d57611e78816120d9565b611ea0565b816001600160a01b0316836001600160a01b031614611ea057611ea0838261211d565b6001600160a01b038216611ebc57611eb7816121ba565b610727565b826001600160a01b0316826001600160a01b031614610727576107278282612293565b6000611ef3846001600160a01b03166122d7565b15611fef57836001600160a01b031663150b7a02611f0f611a3f565b8786866040518563ffffffff1660e01b8152600401611f319493929190612999565b602060405180830381600087803b158015611f4b57600080fd5b505af1925050508015611f7b575060408051601f3d908101601f19168201909252611f78918101906126eb565b60015b611fd5573d808015611fa9576040519150601f19603f3d011682016040523d82523d6000602084013e611fae565b606091505b508051611fcd5760405162461bcd60e51b815260040161066f90612a3f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611ca5565b506001949350505050565b6001600160a01b0382166120205760405162461bcd60e51b815260040161066f90612dcd565b61202981611a22565b156120465760405162461bcd60e51b815260040161066f90612ad7565b61205260008383611e56565b6001600160a01b038216600090815260036020526040812080546001929061207b9084906131e9565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6000600161212a8461122c565b6121349190613234565b600083815260076020526040902054909150808214612187576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906121cc90600190613234565b6000838152600960205260408120546008805493945090928490811061220257634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050806008838154811061223157634e487b7160e01b600052603260045260246000fd5b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061227757634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600061229e8361122c565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b3b151590565b8280546122e990613277565b90600052602060002090601f01602090048101928261230b5760008555612351565b82601f1061232457805160ff1916838001178555612351565b82800160010185558215612351579182015b82811115612351578251825591602001919060010190612336565b5061235d92915061239b565b5090565b8280548282559060005260206000209081019282156123515791602002820182811115612351578251825591602001919060010190612336565b5b8082111561235d576000815560010161239c565b600067ffffffffffffffff8311156123ca576123ca61332d565b6123dd601f8401601f19166020016131bf565b90508281528383830111156123f157600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b03811681146105b057600080fd5b803580151581146105b057600080fd5b600082601f83011261243f578081fd5b611695838335602085016123b0565b60006040828403121561245f578081fd5b6040516040810181811067ffffffffffffffff821117156124825761248261332d565b604052905080612491836124ab565b815261249f602084016124ab565b60208201525092915050565b803560ff811681146105b057600080fd5b6000602082840312156124cd578081fd5b61169582612408565b600080604083850312156124e8578081fd5b6124f183612408565b91506124ff60208401612408565b90509250929050565b60008060006060848603121561251c578081fd5b61252584612408565b925061253360208501612408565b9150604084013590509250925092565b60008060008060808587031215612558578081fd5b61256185612408565b935061256f60208601612408565b925060408501359150606085013567ffffffffffffffff811115612591578182fd5b8501601f810187136125a1578182fd5b6125b0878235602084016123b0565b91505092959194509250565b600080604083850312156125ce578182fd5b6125d783612408565b91506124ff6020840161241f565b600080604083850312156125f7578182fd5b61260083612408565b946020939093013593505050565b60006020808385031215612620578182fd5b823567ffffffffffffffff80821115612637578384fd5b818501915085601f83011261264a578384fd5b81358181111561265c5761265c61332d565b838102915061266c8483016131bf565b8181528481019084860184860187018a1015612686578788fd5b8795505b838610156126a857803583526001959095019491860191860161268a565b5098975050505050505050565b6000602082840312156126c6578081fd5b6116958261241f565b6000602082840312156126e0578081fd5b813561169581613343565b6000602082840312156126fc578081fd5b815161169581613343565b600060208284031215612718578081fd5b813567ffffffffffffffff81111561272e578182fd5b611ca58482850161242f565b6000806000806000806101008789031215612753578384fd5b863567ffffffffffffffff8082111561276a578586fd5b6127768a838b0161242f565b9750602089013591508082111561278b578586fd5b6127978a838b0161242f565b965060408901359150808211156127ac578586fd5b506127b989828a0161242f565b9450506127c8606088016124ab565b92506127d7886080890161244e565b91506127e68860c0890161244e565b90509295509295509295565b600060208284031215612803578081fd5b5035919050565b60006020828403121561281b578081fd5b611695826124ab565b600080600060a08486031215612838578081fd5b612841846124ab565b9250612850856020860161244e565b915061285f856060860161244e565b90509250925092565b60008060006060848603121561287c578081fd5b612885846124ab565b9250612893602085016124ab565b915061285f604085016124ab565b600080600080608085870312156128b6578182fd5b6128bf856124ab565b93506128cd602086016124ab565b92506128db604086016124ab565b9396929550929360600135925050565b6000815180845261290381602086016020860161324b565b601f01601f19169290920160200192915050565b805160ff908116835260209182015116910152565b6000835161293e81846020880161324b565b83519083019061295281836020880161324b565b01949350505050565b6001600160f81b031960f894851b8116825292841b83166001820152921b16600282015260030190565b6001600160a01b0391909116815260200190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906129cc908301846128eb565b9695505050505050565b901515815260200190565b60006020825261169560208301846128eb565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201526a74206f6620626f756e647360a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b6020808252600c908201526b36b0b935b2ba1737bbb732b960a11b604082015260600190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252600c908201526b195cdd185d194b995e1a5cdd60a21b604082015260600190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252600c908201526b32b9ba30ba329737bbb732b960a11b604082015260600190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252600b908201526a746f6b656e2e707269636560a81b604082015260600190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252600b908201526a195cdd185d194b9b5a5b9d60aa1b604082015260600190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201526832b73a103a37b5b2b760b91b606082015260800190565b6020808252600c908201526b195cdd185d194b9b1a5b5a5d60a21b604082015260600190565b6020808252600c908201526b746f6b656e2e73746174757360a01b604082015260600190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252600c908201526b1d1bdad95b8b9b185e5bdd5d60a21b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201526e3732bc34b9ba32b73a103a37b5b2b760891b606082015260800190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252600b908201526a1d1bdad95b8b9b1a5b5a5d60aa1b604082015260600190565b6020808252600a90820152691d1bdad95b8b9b5a5b9d60b21b604082015260600190565b6020808252600e908201526d62617369632e776974686472617760901b604082015260600190565b6020808252600c908201526b6d61726b65742e707269636560a01b604082015260600190565b6020808252602c908201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60408201526b7574206f6620626f756e647360a01b606082015260800190565b6020808252600d908201526c195cdd185d194b9b185e5bdd5d609a1b604082015260600190565b6020808252600c908201526b6d61726b65742e737461746560a01b604082015260600190565b90815260200190565b60006101208983528060208401526131268184018a6128eb565b9050828103604084015261313a81896128eb565b9050828103606084015261314e81886128eb565b91505060ff8516608083015261316760a0830185612917565b61317460e0830184612917565b98975050505050505050565b918252602082015260400190565b94855260ff9384166020860152918316604085015290911660608301526001600160a01b0316608082015260a00190565b60405181810167ffffffffffffffff811182821017156131e1576131e161332d565b604052919050565b600082198211156131fc576131fc613301565b500190565b60008261321057613210613317565b500490565b600081600019048311821515161561322f5761322f613301565b500290565b60008282101561324657613246613301565b500390565b60005b8381101561326657818101518382015260200161324e565b838111156116135750506000910152565b60028104600182168061328b57607f821691505b602082108114156132ac57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156132c6576132c6613301565b5060010190565b600060ff821660ff8114156132e4576132e4613301565b60010192915050565b6000826132fc576132fc613317565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461335957600080fd5b5056fea2646970667358221220f0d4de176874af2f87a9a714e8ce45c32b95fabe2cd34aa54c0d21ba284b961664736f6c6343000800003300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000001bc16d674ec8000000000000000000000000000000000000000000000000000029a2241af62c000000000000000000000000000000000000000000000000000029a2241af62c00000000000000000000000000000000000000000000000000003782dace9d9000000000000000000000000000000000000000000000000000003782dace9d9000000000000000000000000000000000000000000000000000004563918244f400000000000000000000000000000000000000000000000000004563918244f400000000000000000000000000000000000000000000000000004563918244f4000000000000000000000000000000000000000000000000000053444835ec58000000000000000000000000000000000000000000000000000053444835ec58000000000000000000000000000000000000000000000000000053444835ec5800000000000000000000000000000000000000000000000000006124fee993bc00000000000000000000000000000000000000000000000000006124fee993bc00000000000000000000000000000000000000000000000000006f05b59d3b2000000000000000000000000000000000000000000000000000006f05b59d3b2000000000000000000000000000000000000000000000000000007ce66c50e28400000000000000000000000000000000000000000000000000008ac7230489e80000