[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "ApprovalToCurrentOwner", "type": "error" }, { "inputs": [], "name": "ApproveToCaller", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "InvalidQueryRange", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "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": "string", "name": "message", "type": "string" } ], "name": "CommitMessage", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes4", "name": "functionId", "type": "bytes4" }, { "indexed": true, "internalType": "address", "name": "oldDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newDelegate", "type": "address" }, { "indexed": false, "internalType": "string", "name": "functionSignature", "type": "string" } ], "name": "FunctionUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "collection", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "minter", "type": "address" }, { "indexed": false, "internalType": "string", "name": "tokenURI", "type": "string" } ], "name": "MintWithTokenURI", "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": false, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": false, "internalType": "string", "name": "rarity", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "size", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "start", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "end", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "isDiscount", "type": "bool" } ], "name": "_mintCommon", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": false, "internalType": "string", "name": "rarity", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "size", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "start", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "end", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "isDiscount", "type": "bool" } ], "name": "_mintLand", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "_nftLockup", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "_userBought", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "discount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "explicitOwnershipOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" } ], "internalType": "struct ERC721A.TokenOwnership", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "explicitOwnershipsOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" } ], "internalType": "struct ERC721A.TokenOwnership[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "funcSignatures", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "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": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isTransferAllowed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "string", "name": "", "type": "string" } ], "name": "isWhitelistFor", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [], "name": "perTransactionLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "string", "name": "", "type": "string" } ], "name": "rates", "outputs": [ { "internalType": "uint256", "name": "cost", "type": "uint256" }, { "internalType": "uint256", "name": "total", "type": "uint256" }, { "internalType": "uint256", "name": "sold", "type": "uint256" }, { "internalType": "bool", "name": "valid", "type": "bool" } ], "stateMutability": "view", "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": [], "name": "status", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "start", "type": "uint256" }, { "internalType": "uint256", "name": "stop", "type": "uint256" } ], "name": "tokensOfOwnerIn", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "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": "address", "name": "_delegate", "type": "address" }, { "internalType": "string", "name": "_functionSignatures", "type": "string" }, { "internalType": "string", "name": "_commitMessage", "type": "string" } ], "name": "updateContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "whitelistRoot", "outputs": [ { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "uint256", "name": "supply", "type": "uint256" }, { "internalType": "uint256", "name": "sold", "type": "uint256" }, { "internalType": "bytes32", "name": "root", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
6080604052600060135560006014553480156200001b57600080fd5b5060405162003605380380620036058339810160408190526200003e9162000741565b828260066200004e83826200085d565b5060076200005d82826200085d565b50506201210e60045550620000723362000497565b6001600f55600380546001600160a01b031916301790556127106013556040805160608101909152602580825260009190620035306020830139600354909150620000c89082906001600160a01b0316620004e9565b6040805180820190915260128152717365744261736555524928737472696e672960701b6020820152620000fd8184620004e9565b60405180606001604052806037815260200162003597603791399050620001258184620004e9565b604051806060016040528060378152602001620035ce6037913990506200014d8184620004e9565b604051806060016040528060278152602001620034e4602791399050620001758184620004e9565b5060408051808201909152601681527f73657453616c655374617475732875696e7432353629000000000000000000006020820152620001b68184620004e9565b604051806060016040528060218152602001620034c3602191399050620001de8184620004e9565b6040518060600160405280602581526020016200350b602591399050620002068184620004e9565b5060408051808201909152601b81527f667265654d696e742875696e743235362c627974657333325b5d2900000000006020820152620002478184620004e9565b604051806080016040528060428152602001620035556042913990506200026f8184620004e9565b5060408051808201909152601f81527f72656d6f766557686974654c6973742875696e743235362c737472696e6729006020820152620002b08184620004e9565b5060408051808201909152601981527f7365744d61784d696e74416d6f756e742875696e7432353629000000000000006020820152620002f18184620004e9565b5060408051808201909152601481527f736574446973636f756e742875696e74323536290000000000000000000000006020820152620003328184620004e9565b5060408051808201909152601f81527f7365745065725472616e73616374696f6e4c696d69742875696e7432353629006020820152620003738184620004e9565b5060408051808201909152601e81527f7365744c6f636b55702875696e743235365b5d2c75696e743235365b5d2900006020820152620003b48184620004e9565b5060408051808201909152600a8152697769746864726177282960b01b6020820152620003e28184620004e9565b6040518060600160405280602981526020016200349a6029913990506200040a8184620004e9565b506040805180820190915260208082527f7365745472616e73666572416c6c6f77656428616464726573732c626f6f6c29908201526200044b8184620004e9565b5060408051808201909152601f81527f636c61696d526f6f737465722875696e743235362c627974657333325b5d290060208201526200048c8184620004e9565b50505050506200097c565b600e80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b81516020808401919091206001600160e01b031981166000908152918290526040822080546001600160a01b0319166001600160a01b0385161790556001805480820182559252907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6016200055f84826200085d565b506001546040516002906200057690869062000929565b908152602001604051809103902081905550816001600160a01b031660006001600160a01b0316826001600160e01b0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f535386604051620005d9919062000947565b60405180910390a47faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de60405162000667906020808252603a908201527f4164646564204552433135333820757064617465436f6e74726163742066756e60408201527f6374696f6e20617420636f6e7472616374206372656174696f6e000000000000606082015260800190565b60405180910390a1505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620006a75781810151838201526020016200068d565b50506000910152565b600082601f830112620006c257600080fd5b81516001600160401b0380821115620006df57620006df62000674565b604051601f8301601f19908116603f011681019082821181831017156200070a576200070a62000674565b816040528381528660208588010111156200072457600080fd5b620007378460208301602089016200068a565b9695505050505050565b6000806000606084860312156200075757600080fd5b83516001600160401b03808211156200076f57600080fd5b6200077d87838801620006b0565b945060208601519150808211156200079457600080fd5b50620007a386828701620006b0565b604086015190935090506001600160a01b0381168114620007c357600080fd5b809150509250925092565b600181811c90821680620007e357607f821691505b6020821081036200080457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200085857600081815260208120601f850160051c81016020861015620008335750805b601f850160051c820191505b8181101562000854578281556001016200083f565b5050505b505050565b81516001600160401b0381111562000879576200087962000674565b62000891816200088a8454620007ce565b846200080a565b602080601f831160018114620008c95760008415620008b05750858301515b600019600386901b1c1916600185901b17855562000854565b600085815260208120601f198616915b82811015620008fa57888601518255948401946001909101908401620008d9565b5085821015620009195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082516200093d8184602087016200068a565b9190910192915050565b6020815260008251806020840152620009688160408501602087016200068a565b601f01601f19169190910160400192915050565b612b0e806200098c6000396000f3fe6080604052600436106102085760003560e01c80636b6f4a9d1161011857806395d89b41116100a0578063b88d4fde1161006f578063b88d4fde146107bd578063c23dc68f146107dd578063c87b56dd1461080a578063e985e9c51461082a578063f2fde38b1461084a5761020f565b806395d89b411461073257806399a2557a14610747578063a0a2daf014610767578063a22cb4651461079d5761020f565b80637501f741116100e75780637501f7411461061e5780638462151c146106345780638822048e146106615780638acdad75146106915780638da5cb5b146107145761020f565b80636b6f4a9d146105be5780636c0360eb146105d457806370a08231146105e9578063715018a6146106095761020f565b806326a6860a1161019b5780635bbb21771161016a5780635bbb21771461050e578063614555671461053b578063621fb96c1461055b578063631e4b85146105885780636352211e1461059e5761020f565b806326a6860a146104105780633277f29b1461043057806342842e0e146104a257806350572df2146104c25761020f565b8063095ea7b3116101d7578063095ea7b31461039b57806318160ddd146103bb578063200d2ed2146103da57806323b872dd146103f05761020f565b806301ffc9a7146102c657806306fdde03146102fb578063081812fc1461031d5780630935ef10146103555761020f565b3661020f57005b6000356001600160e01b03191615801561022857503415155b1561022f57005b600080356001600160e01b0319168152602081905260409020546001600160a01b03168061029f5760405162461bcd60e51b8152602060048201526018602482015277233ab731ba34b7b7103237b2b9903737ba1032bc34b9ba1760411b60448201526064015b60405180910390fd5b60405136600082376000803683855af43d806000843e8180156102c0578184f35b8184fd5b005b3480156102d257600080fd5b506102e66102e1366004612074565b61086a565b60405190151581526020015b60405180910390f35b34801561030757600080fd5b506103106108bc565b6040516102f291906120e1565b34801561032957600080fd5b5061033d6103383660046120f4565b61094e565b6040516001600160a01b0390911681526020016102f2565b34801561036157600080fd5b5061038d610370366004612129565b601860209081526000928352604080842090915290825290205481565b6040519081526020016102f2565b3480156103a757600080fd5b506102c46103b6366004612155565b610992565b3480156103c757600080fd5b50600554600454036201210d190161038d565b3480156103e657600080fd5b5061038d60145481565b3480156103fc57600080fd5b506102c461040b36600461217f565b610a5a565b34801561041c57600080fd5b5061031061042b3660046120f4565b610aaf565b34801561043c57600080fd5b5061047a61044b3660046120f4565b601160205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016102f2565b3480156104ae57600080fd5b506102c46104bd36600461217f565b610b5b565b3480156104ce57600080fd5b506102e66104dd366004612258565b6012602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b34801561051a57600080fd5b5061052e6105293660046122b2565b610bbb565b6040516102f29190612357565b34801561054757600080fd5b506102c4610556366004612409565b610c81565b34801561056757600080fd5b5061038d6105763660046120f4565b600c6020526000908152604090205481565b34801561059457600080fd5b5061038d60175481565b3480156105aa57600080fd5b5061033d6105b93660046120f4565b61126a565b3480156105ca57600080fd5b5061038d60165481565b3480156105e057600080fd5b5061031061127c565b3480156105f557600080fd5b5061038d610604366004612489565b611289565b34801561061557600080fd5b506102c46112d7565b34801561062a57600080fd5b5061038d60135481565b34801561064057600080fd5b5061065461064f366004612489565b6112eb565b6040516102f291906124a4565b34801561066d57600080fd5b506102e661067c366004612489565b600d6020526000908152604090205460ff1681565b34801561069d57600080fd5b506106f26106ac366004612258565b6015602090815260009283526040909220815180830184018051928152908401929093019190912091528054600182015460028301546003909301549192909160ff1684565b60408051948552602085019390935291830152151560608201526080016102f2565b34801561072057600080fd5b50600e546001600160a01b031661033d565b34801561073e57600080fd5b50610310611432565b34801561075357600080fd5b506106546107623660046124dc565b611441565b34801561077357600080fd5b5061033d610782366004612074565b6000602081905290815260409020546001600160a01b031681565b3480156107a957600080fd5b506102c46107b836600461250f565b61160c565b3480156107c957600080fd5b506102c46107d836600461254b565b6116dc565b3480156107e957600080fd5b506107fd6107f83660046120f4565b61176c565b6040516102f291906125c6565b34801561081657600080fd5b506103106108253660046120f4565b611828565b34801561083657600080fd5b506102e66108453660046125fb565b6118f3565b34801561085657600080fd5b506102c4610865366004612489565b611921565b60006001600160e01b031982166380ac58cd60e01b148061089b57506001600160e01b03198216635b5e139f60e01b145b806108b657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600680546108cb90612625565b80601f01602080910402602001604051908101604052809291908181526020018280546108f790612625565b80156109445780601f1061091957610100808354040283529160200191610944565b820191906000526020600020905b81548152906001019060200180831161092757829003601f168201915b5050505050905090565b60006109598261199a565b610976576040516333d1c03960e21b815260040160405180910390fd5b506000908152600a60205260409020546001600160a01b031690565b6001600160a01b0382166000908152600d6020526040902054829060ff166109cc5760405162461bcd60e51b81526004016102969061265f565b60006109d78361126a565b9050806001600160a01b0316846001600160a01b031603610a0b5760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b03821614801590610a2b5750610a2981336118f3565b155b15610a49576040516367d9dca160e11b815260040160405180910390fd5b610a548484836119d5565b50505050565b6000818152600c602052604090205442101580610a8357506000818152600c6020526040902054155b610a9f5760405162461bcd60e51b815260040161029690612696565b610aaa838383611a31565b505050565b60018181548110610abf57600080fd5b906000526020600020016000915090508054610ada90612625565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0690612625565b8015610b535780601f10610b2857610100808354040283529160200191610b53565b820191906000526020600020905b815481529060010190602001808311610b3657829003601f168201915b505050505081565b6000818152600c602052604090205442101580610b8457506000818152600c6020526040902054155b610ba05760405162461bcd60e51b815260040161029690612696565b610aaa838383604051806020016040528060008152506116dc565b80516060906000816001600160401b03811115610bda57610bda6121bb565b604051908082528060200260200182016040528015610c2557816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610bf85790505b50905060005b828114610c7957610c54858281518110610c4757610c476126da565b602002602001015161176c565b828281518110610c6657610c666126da565b6020908102919091010152600101610c2b565b509392505050565b610c89611c4f565b60006001600160a01b03861615610d105750843b80610d105760405162461bcd60e51b815260206004820152603960248201527f5f64656c65676174652061646472657373206973206e6f74206120636f6e747260448201527f61637420616e64206973206e6f742061646472657373283029000000000000006064820152608401610296565b600085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451602080870198509596508601909401938693509150819050808080805b878a101561122057895160001a92508260290361120e5789610d8481612706565b9a50610d929050878b61271f565b808a526020808b018290206001600160e01b031981166000908152918290526040909120548c99509097506001600160a01b0390811696509094508f16610fb357600289604051610de39190612732565b908152602001604051809103902054915081600003610e3f5760405162461bcd60e51b8152602060048201526018602482015277233ab731ba34b7b7103237b2b9903737ba1032bc34b9ba1760411b6044820152606401610296565b81610e498161274e565b60018054919450610e5b92509061271f565b9050808214610ef35760018181548110610e7757610e776126da565b9060005260206000200160018381548110610e9457610e946126da565b906000526020600020019081610eaa91906127ab565b50610eb682600161288b565b600260018381548110610ecb57610ecb6126da565b90600052602060002001604051610ee29190612911565b908152604051908190036020019020555b6001805480610f0457610f0461291d565b600190038181906000526020600020016000610f209190612010565b9055600289604051610f329190612732565b90815260408051602092819003830181206000908190556001600160e01b03198a168082529381905291822080546001600160a01b031916905590916001600160a01b038816917f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f535390610fa6908e906120e1565b60405180910390a4611209565b600289604051610fc39190612732565b908152602001604051809103902054600003611115576001600160a01b038516156110205760405162461bcd60e51b815260206004820152600d60248201526c233ab731a4b21031b630b9b41760991b6044820152606401610296565b8e600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060018990806001815401808255809150506001900390600052602060002001600090919091909150908161109f9190612933565b506001546040516002906110b4908c90612732565b9081526020016040518091039020819055508e6001600160a01b031660006001600160a01b0316876001600160e01b0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c604051610fa691906120e1565b8e6001600160a01b0316600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031614611209578e600080886001600160e01b0319166001600160e01b031916815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508e6001600160a01b0316856001600160a01b0316876001600160e01b0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c60405161120091906120e1565b60405180910390a45b978301975b8961121881612706565b9a5050610d63565b7faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de8c8c6040516112519291906129ec565b60405180910390a1505050505050505050505050505050565b600061127582611ca9565b5192915050565b60108054610ada90612625565b60006001600160a01b0382166112b2576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600960205260409020546001600160401b031690565b6112df611c4f565b6112e96000611dd2565b565b606060008060006112fb85611289565b90506000816001600160401b03811115611317576113176121bb565b604051908082528060200260200182016040528015611340578160200160208202803683370190505b509050611366604080516060810182526000808252602082018190529181019190915290565b6201210e5b83861161142657600081815260086020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff161515918101829052925061141e5781516001600160a01b0316156113df57815194505b876001600160a01b0316856001600160a01b03160361141e5780838780600101985081518110611411576114116126da565b6020026020010181815250505b60010161136b565b50909695505050505050565b6060600780546108cb90612625565b60608183111561146457604051631960ccad60e11b815260040160405180910390fd5b6004546000906001016201210e85101561147f576201210e94505b8084111561148b578093505b600061149687611289565b9050848610156114b557858503818110156114af578091505b506114b9565b5060005b6000816001600160401b038111156114d3576114d36121bb565b6040519080825280602002602001820160405280156114fc578160200160208202803683370190505b5090508160000361151257935061160592505050565b600061151d8861176c565b90506000816040015161152e575080515b885b8881141580156115405750848714155b156115f957600081815260086020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff16151591810182905293506115f15782516001600160a01b0316156115b257825191505b8a6001600160a01b0316826001600160a01b0316036115f157808488806001019950815181106115e4576115e46126da565b6020026020010181815250505b600101611530565b50505092835250909150505b9392505050565b6001600160a01b0382166000908152600d6020526040902054829060ff166116465760405162461bcd60e51b81526004016102969061265f565b336001600160a01b0384160361166f5760405163b06307db60e01b815260040160405180910390fd5b336000818152600b602090815260408083206001600160a01b03881680855290835292819020805460ff191687151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000828152600c60205260409020544210158061170557506000828152600c6020526040902054155b6117215760405162461bcd60e51b815260040161029690612696565b61172c848484611a31565b6001600160a01b0383163b1515801561174e575061174c84848484611e24565b155b15610a54576040516368d2bf6b60e11b815260040160405180910390fd5b60408051606080820183526000808352602080840182905283850182905284519283018552818352820181905292810192909252906201210e8310806117b457506004548310155b156117bf5792915050565b50600082815260086020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff16158015928201929092529061181f5792915050565b61160583611ca9565b60606118338261199a565b6118975760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610296565b6000601080546118a690612625565b9050116118c257604051806020016040528060008152506108b6565b60106118cd83611f10565b6040516020016118de929190612a1b565b60405160208183030381529060405292915050565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205460ff1690565b611929611c4f565b6001600160a01b03811661198e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610296565b61199781611dd2565b50565b6000816201210e111580156119b0575060045482105b80156108b6575050600090815260086020526040902054600160e01b900460ff161590565b6000828152600a602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b336000818152600d602052604090205460ff16611a605760405162461bcd60e51b81526004016102969061265f565b6000611a6b83611ca9565b9050846001600160a01b031681600001516001600160a01b031614611aa25760405162a1148160e81b815260040160405180910390fd5b6000336001600160a01b0387161480611ac05750611ac086336118f3565b80611adb575033611ad08561094e565b6001600160a01b0316145b905080611afb57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038516611b2257604051633a954ecd60e21b815260040160405180910390fd5b611b2e600085886119d5565b6001600160a01b038681166000908152600960209081526040808320805467ffffffffffffffff198082166001600160401b03928316600019018316179092558a86168086528386208054938416938316600190810184169490941790558a8652600890945282852080546001600160e01b031916909417600160a01b42909216919091021783558801808452922080549193909116611c02576004548214611c0257805460208601516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038b16171781555b50505083856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b600e546001600160a01b031633146112e95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610296565b604080516060810182526000808252602082018190529181019190915281806201210e11158015611cdb575060045481105b15611db957600081815260086020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff16151591810182905290611db75780516001600160a01b031615611d4e579392505050565b5060001901600081815260086020908152604091829020825160608101845290546001600160a01b038116808352600160a01b82046001600160401b031693830193909352600160e01b900460ff1615159281019290925215611db2579392505050565b611d4e565b505b604051636f96cda160e11b815260040160405180910390fd5b600e80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611e59903390899088908890600401612a40565b6020604051808303816000875af1925050508015611e94575060408051601f3d908101601f19168201909252611e9191810190612a7d565b60015b611ef2573d808015611ec2576040519150601f19603f3d011682016040523d82523d6000602084013e611ec7565b606091505b508051600003611eea576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b606081600003611f375750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611f615780611f4b81612706565b9150611f5a9050600a83612ab0565b9150611f3b565b6000816001600160401b03811115611f7b57611f7b6121bb565b6040519080825280601f01601f191660200182016040528015611fa5576020820181803683370190505b5090505b8415611f0857611fba60018361271f565b9150611fc7600a86612ac4565b611fd290603061288b565b60f81b818381518110611fe757611fe76126da565b60200101906001600160f81b031916908160001a905350612009600a86612ab0565b9450611fa9565b50805461201c90612625565b6000825580601f1061202c575050565b601f01602090049060005260206000209081019061199791905b8082111561205a5760008155600101612046565b5090565b6001600160e01b03198116811461199757600080fd5b60006020828403121561208657600080fd5b81356116058161205e565b60005b838110156120ac578181015183820152602001612094565b50506000910152565b600081518084526120cd816020860160208601612091565b601f01601f19169290920160200192915050565b60208152600061160560208301846120b5565b60006020828403121561210657600080fd5b5035919050565b80356001600160a01b038116811461212457600080fd5b919050565b6000806040838503121561213c57600080fd5b8235915061214c6020840161210d565b90509250929050565b6000806040838503121561216857600080fd5b6121718361210d565b946020939093013593505050565b60008060006060848603121561219457600080fd5b61219d8461210d565b92506121ab6020850161210d565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156121f9576121f96121bb565b604052919050565b60006001600160401b0383111561221a5761221a6121bb565b61222d601f8401601f19166020016121d1565b905082815283838301111561224157600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561226b57600080fd5b8235915060208301356001600160401b0381111561228857600080fd5b8301601f8101851361229957600080fd5b6122a885823560208401612201565b9150509250929050565b600060208083850312156122c557600080fd5b82356001600160401b03808211156122dc57600080fd5b818501915085601f8301126122f057600080fd5b813581811115612302576123026121bb565b8060051b91506123138483016121d1565b818152918301840191848101908884111561232d57600080fd5b938501935b8385101561234b57843582529385019390850190612332565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611426576123ae83855180516001600160a01b031682526020808201516001600160401b0316908301526040908101511515910152565b9284019260609290920191600101612373565b60008083601f8401126123d357600080fd5b5081356001600160401b038111156123ea57600080fd5b60208301915083602082850101111561240257600080fd5b9250929050565b60008060008060006060868803121561242157600080fd5b61242a8661210d565b945060208601356001600160401b038082111561244657600080fd5b61245289838a016123c1565b9096509450604088013591508082111561246b57600080fd5b50612478888289016123c1565b969995985093965092949392505050565b60006020828403121561249b57600080fd5b6116058261210d565b6020808252825182820181905260009190848201906040850190845b81811015611426578351835292840192918401916001016124c0565b6000806000606084860312156124f157600080fd5b6124fa8461210d565b95602085013595506040909401359392505050565b6000806040838503121561252257600080fd5b61252b8361210d565b91506020830135801515811461254057600080fd5b809150509250929050565b6000806000806080858703121561256157600080fd5b61256a8561210d565b93506125786020860161210d565b92506040850135915060608501356001600160401b0381111561259a57600080fd5b8501601f810187136125ab57600080fd5b6125ba87823560208401612201565b91505092959194509250565b81516001600160a01b031681526020808301516001600160401b031690820152604080830151151590820152606081016108b6565b6000806040838503121561260e57600080fd5b6126178361210d565b915061214c6020840161210d565b600181811c9082168061263957607f821691505b60208210810361265957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601c908201527f4552433732313a207472616e73666572206e6f7420616c6c6f77656400000000604082015260600190565b60208082526024908201527f58616e614c616e643a204e4654206c6f636b7570206e6f742065787069726564604082015263081e595d60e21b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612718576127186126f0565b5060010190565b818103818111156108b6576108b66126f0565b60008251612744818460208701612091565b9190910192915050565b60008161275d5761275d6126f0565b506000190190565b601f821115610aaa57600081815260208120601f850160051c8101602086101561278c5750805b601f850160051c820191505b81811015611c4757828155600101612798565b8181036127b6575050565b6127c08254612625565b6001600160401b038111156127d7576127d76121bb565b6127eb816127e58454612625565b84612765565b6000601f82116001811461281f57600083156128075750848201545b600019600385901b1c1916600184901b178455612884565b600085815260209020601f19841690600086815260209020845b838110156128595782860154825560019586019590910190602001612839565b50858310156128775781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b808201808211156108b6576108b66126f0565b600081546128ab81612625565b600182811680156128c357600181146128d857612907565b60ff1984168752821515830287019450612907565b8560005260208060002060005b858110156128fe5781548a8201529084019082016128e5565b50505082870194505b5050505092915050565b6000611605828461289e565b634e487b7160e01b600052603160045260246000fd5b81516001600160401b0381111561294c5761294c6121bb565b61295a816127e58454612625565b602080601f83116001811461298f57600084156129775750858301515b600019600386901b1c1916600185901b178555611c47565b600085815260208120601f198616915b828110156129be5788860151825594840194600190910190840161299f565b50858210156129dc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000612a27828561289e565b8351612a37818360208801612091565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612a73908301846120b5565b9695505050505050565b600060208284031215612a8f57600080fd5b81516116058161205e565b634e487b7160e01b600052601260045260246000fd5b600082612abf57612abf612a9a565b500490565b600082612ad357612ad3612a9a565b50069056fea264697066735822122075f20cfda5a84a73e00ba43a51996d2e6b39322693017dc2b4be87560810016a64736f6c634300081100336d696e7441646d696e28616464726573732c75696e743235362c75696e743235362c737472696e672963616c63756c617465446973636f756e742875696e743235362c737472696e6729736574526174652875696e743235362c75696e743235362c75696e743235362c737472696e67296d696e74446973636f756e74436f6d6d6f6e2875696e743235362c627974657333325b5d29757064617465436f6e747261637428616464726573732c737472696e672c737472696e672973657457686974656c697374526f6f7428627974657333322c75696e743235362c75696e743235362c75696e743235362c75696e743235362c737472696e675b5d296d696e744c616e6428737472696e672c75696e743235362c75696e743235362c627974657333325b5d2c626f6f6c2c75696e7432353629697357686974656c697374656428616464726573732c627974657333325b5d2c75696e743235362c75696e743235362c737472696e6729000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000c6b116433479cf4f322d931166358d6bd8d928ae000000000000000000000000000000000000000000000000000000000000000a58414e413a204c414e44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003584c440000000000000000000000000000000000000000000000000000000000