[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "ApproveToCaller", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "InvalidQueryRange", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "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": true, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "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" }, { "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bool", "name": "approvalCheck", "type": "bool" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721A.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": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721A.TokenOwnership[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getOperator", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getOwnershipAt", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721A.TokenOwnership", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getOwnershipOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721A.TokenOwnership", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "initializeOwnershipAt", "outputs": [], "stateMutability": "nonpayable", "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": "to", "type": "address" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "numberBurned", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "numberMinted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "safeMint", "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": "baseURI_", "type": "string" } ], "name": "setBaseURI", "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": "x", "type": "uint256" } ], "name": "toString", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "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": "totalBurned", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalMinted", "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": "_operatorAddr", "type": "address" }, { "internalType": "bool", "name": "_flag", "type": "bool" } ], "name": "updateOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b5060405162002526380380620025268339810160408190526200003491620002b6565b8151829082906200004d9060029060208501906200015d565b508051620000639060039060208401906200015d565b50506000805550620000753362000099565b62000090336009620000eb60201b620012411790919060201c565b50505062000370565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600062000102836001600160a01b0384166200010b565b90505b92915050565b6000818152600183016020526040812054620001545750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000105565b50600062000105565b8280546200016b906200031d565b90600052602060002090601f0160209004810192826200018f5760008555620001da565b82601f10620001aa57805160ff1916838001178555620001da565b82800160010185558215620001da579182015b82811115620001da578251825591602001919060010190620001bd565b50620001e8929150620001ec565b5090565b5b80821115620001e85760008155600101620001ed565b600082601f83011262000214578081fd5b81516001600160401b03808211156200023157620002316200035a565b604051601f8301601f19908116603f011681019082821181831017156200025c576200025c6200035a565b8160405283815260209250868385880101111562000278578485fd5b8491505b838210156200029b57858201830151818301840152908201906200027c565b83821115620002ac57848385830101525b9695505050505050565b60008060408385031215620002c9578182fd5b82516001600160401b0380821115620002e0578384fd5b620002ee8683870162000203565b9350602085015191508082111562000304578283fd5b50620003138582860162000203565b9150509250929050565b600181811c908216806200033257607f821691505b602082108114156200035457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6121a680620003806000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c8063715018a61161013b578063a2309ff8116100b8578063dc33e6811161007c578063dc33e681146104f5578063e7f43c6814610508578063e985e9c51461051d578063f252363314610530578063f2fde38b1461054357600080fd5b8063a2309ff814610414578063b88d4fde146104b4578063c23dc68f146104c7578063c87b56dd146104da578063d89135cd146104ed57600080fd5b806395d89b41116100ff57806395d89b411461046057806399a2557a146104685780639fac68cb1461047b578063a14481941461048e578063a22cb465146104a157600080fd5b8063715018a61461040c57806375794a3c146104145780638462151c1461041c5780638832e6e31461043c5780638da5cb5b1461044f57600080fd5b80634f558e79116101c95780636352211e1161018d5780636352211e146103b85780636900a3ae146103cb5780636c0360eb146103de5780636d44a3b2146103e657806370a08231146103f957600080fd5b80634f558e791461033f57806352d8a4d11461035257806353b1233d1461037257806355f804b3146103855780635bbb21771461039857600080fd5b806323b872dd1161021057806323b872dd146102e05780632478d639146102f357806340c10f191461030657806342842e0e1461031957806342966c681461032c57600080fd5b806301ffc9a71461024d57806306fdde0314610275578063081812fc1461028a578063095ea7b3146102b557806318160ddd146102ca575b600080fd5b61026061025b366004611ddc565b610556565b60405190151581526020015b60405180910390f35b61027d6105a8565b60405161026c9190612022565b61029d610298366004611e59565b61063a565b6040516001600160a01b03909116815260200161026c565b6102c86102c3366004611c86565b61067e565b005b600154600054035b60405190815260200161026c565b6102c86102ee366004611bbd565b61071e565b6102d2610301366004611b71565b6108a7565b6102c8610314366004611c86565b610909565b6102c8610327366004611bbd565b61093e565b6102c861033a366004611e59565b61095e565b61026061034d366004611e59565b61096c565b610365610360366004611e59565b610977565b60405161026c919061205c565b6102c8610380366004611e59565b610988565b6102c8610393366004611e14565b6109b8565b6103ab6103a6366004611d35565b6109f2565b60405161026c9190611fa8565b61029d6103c6366004611e59565b610ad0565b61027d6103d9366004611e59565b610adb565b61027d610ae6565b6102c86103f4366004611c5d565b610af5565b6102d2610407366004611b71565b610b7e565b6102c8610bcc565b6102d2610be0565b61042f61042a366004611b71565b610c10565b60405161026c9190611fea565b6102c861044a366004611caf565b610d19565b6008546001600160a01b031661029d565b61027d610d4b565b61042f610476366004611d03565b610d5a565b6102c8610489366004611e71565b610ef3565b6102c861049c366004611c86565b610f24565b6102c86104af366004611c5d565b610f55565b6102c86104c2366004611bf8565b610feb565b6103656104d5366004611e59565b611035565b61027d6104e8366004611e59565b611078565b6102d26110fc565b6102d2610503366004611b71565b61112c565b610510611180565b60405161026c9190611f67565b61026061052b366004611b8b565b61118c565b61036561053e366004611e59565b6111ba565b6102c8610551366004611b71565b6111cb565b60006301ffc9a760e01b6001600160e01b03198316148061058757506380ac58cd60e01b6001600160e01b03198316145b806105a25750635b5e139f60e01b6001600160e01b03198316145b92915050565b6060600280546105b7906120e9565b80601f01602080910402602001604051908101604052809291908181526020018280546105e3906120e9565b80156106305780601f1061060557610100808354040283529160200191610630565b820191906000526020600020905b81548152906001019060200180831161061357829003601f168201915b5050505050905090565b600061064582611256565b610662576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b600061068982610ad0565b9050336001600160a01b038216146106c2576106a5813361118c565b6106c2576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006107298261127d565b9050836001600160a01b0316816001600160a01b03161461075c5760405162a1148160e81b815260040160405180910390fd5b600082815260066020526040902080546107888187335b6001600160a01b039081169116811491141790565b6107b357610796863361118c565b6107b357604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b0385166107da57604051633a954ecd60e21b815260040160405180910390fd5b80156107e557600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260046020526040902055600160e11b8316610870576001840160008181526004602052604090205461086e57600054811461086e5760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b031660008051602061215183398151915260405160405180910390a4505050505050565b60006108b46009336112de565b6108d95760405162461bcd60e51b81526004016108d090612035565b60405180910390fd5b6105a2826001600160a01b031660009081526005602052604090205460801c6001600160401b031690565b919050565b6109146009336112de565b6109305760405162461bcd60e51b81526004016108d090612035565b61093a8282611300565b5050565b61095983838360405180602001604052806000815250610feb565b505050565b6109698160016113d3565b50565b60006105a282611256565b61097f611a14565b6105a282611504565b6109936009336112de565b6109af5760405162461bcd60e51b81526004016108d090612035565b6109698161151d565b6109c36009336112de565b6109df5760405162461bcd60e51b81526004016108d090612035565b805161093a90600b906020840190611a3b565b80516060906000816001600160401b03811115610a1f57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610a5857816020015b610a45611a14565b815260200190600190039081610a3d5790505b50905060005b828114610ac857610a95858281518110610a8857634e487b7160e01b600052603260045260246000fd5b6020026020010151611035565b828281518110610ab557634e487b7160e01b600052603260045260246000fd5b6020908102919091010152600101610a5e565b509392505050565b60006105a28261127d565b60606105a28261154b565b6060610af061158d565b905090565b610b006009336112de565b610b1c5760405162461bcd60e51b81526004016108d090612035565b6001600160a01b038216610b625760405162461bcd60e51b815260206004820152600d60248201526c2d22a9279020a2222922a9a99760991b60448201526064016108d0565b8015610b7357610959600983611241565b61095960098361159c565b60006001600160a01b038216610ba7576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b610bd46115b1565b610bde600061160b565b565b6000610bed6009336112de565b610c095760405162461bcd60e51b81526004016108d090612035565b5060005490565b60606000806000610c2085610b7e565b90506000816001600160401b03811115610c4a57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610c73578160200160208202803683370190505b509050610c7e611a14565b60005b838614610d0d57610c918161165d565b9150816040015115610ca257610d05565b81516001600160a01b031615610cb757815194505b876001600160a01b0316856001600160a01b03161415610d055780838780600101985081518110610cf857634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505b600101610c81565b50909695505050505050565b610d246009336112de565b610d405760405162461bcd60e51b81526004016108d090612035565b61095983838361167d565b6060600380546105b7906120e9565b6060818310610d7c57604051631960ccad60e11b815260040160405180910390fd5b600080610d8860005490565b905080841115610d96578093505b6000610da187610b7e565b905084861015610dc05785850381811015610dba578091505b50610dc4565b5060005b6000816001600160401b03811115610dec57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610e15578160200160208202803683370190505b50905081610e28579350610eec92505050565b6000610e3388611035565b905060008160400151610e44575080515b885b888114158015610e565750848714155b15610ee057610e648161165d565b9250826040015115610e7557610ed8565b82516001600160a01b031615610e8a57825191505b8a6001600160a01b0316826001600160a01b03161415610ed85780848880600101995081518110610ecb57634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505b600101610e46565b50505092835250909150505b9392505050565b610efe6009336112de565b610f1a5760405162461bcd60e51b81526004016108d090612035565b61093a82826113d3565b610f2f6009336112de565b610f4b5760405162461bcd60e51b81526004016108d090612035565b61093a82826116ea565b6001600160a01b038216331415610f7f5760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610ff684848461071e565b6001600160a01b0383163b1561102f5761101284848484611704565b61102f576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b61103d611a14565b611045611a14565b60005483106110545792915050565b61105d8361165d565b905080604001511561106f5792915050565b610eec83611504565b606061108382611256565b6110a057604051630a14c4b560e41b815260040160405180910390fd5b60006110aa61158d565b90508051600014156110cb5760405180602001604052806000815250610eec565b806110d58461154b565b6040516020016110e6929190611efb565b6040516020818303038152906040529392505050565b60006111096009336112de565b6111255760405162461bcd60e51b81526004016108d090612035565b5060015490565b60006111396009336112de565b6111555760405162461bcd60e51b81526004016108d090612035565b6001600160a01b03821660009081526005602052604090819020546001600160401b03911c166105a2565b6060610af060096117fc565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b6111c2611a14565b6105a28261165d565b6111d36115b1565b6001600160a01b0381166112385760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d0565b6109698161160b565b6000610eec836001600160a01b038416611809565b60008054821080156105a2575050600090815260046020526040902054600160e01b161590565b6000816000548110156112c557600081815260046020526040902054600160e01b81166112c3575b80610eec5750600019016000818152600460205260409020546112a5565b505b604051636f96cda160e11b815260040160405180910390fd5b6001600160a01b03811660009081526001830160205260408120541515610eec565b600054816113215760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b03831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083906000805160206121518339815191528180a4600183015b8181146113ac5780836000600080516020612151833981519152600080a4600101611386565b50816113ca57604051622e076360e81b815260040160405180910390fd5b60005550505050565b60006113de8361127d565b9050806000806113fc86600090815260066020526040902080549091565b91509150841561143c57611411818433610773565b61143c5761141f833361118c565b61143c57604051632ce44b5f60e11b815260040160405180910390fd5b801561144757600082555b6001600160a01b038316600081815260056020526040902080546fffffffffffffffffffffffffffffffff0190554260a01b17600360e01b17600087815260046020526040902055600160e11b84166114ce57600186016000818152600460205260409020546114cc5760005481146114cc5760008181526004602052604090208590555b505b60405186906000906001600160a01b03861690600080516020612151833981519152908390a45050600180548101905550505050565b61150c611a14565b6105a26115188361127d565b611858565b600081815260046020526040902054610969576115398161127d565b60008281526004602052604090205550565b604080516080019081905280825b600183039250600a81066030018353600a9004806115765761157b565b611559565b50819003601f19909101908152919050565b6060600b80546105b7906120e9565b6000610eec836001600160a01b03841661189b565b6008546001600160a01b03163314610bde5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108d0565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611665611a14565b6000828152600460205260409020546105a290611858565b6116878383611300565b6001600160a01b0383163b15610959576000548281035b6116b16000868380600101945086611704565b6116ce576040516368d2bf6b60e11b815260040160405180910390fd5b81811061169e5781600054146116e357600080fd5b5050505050565b61093a82826040518060200160405280600081525061167d565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611739903390899088908890600401611f2a565b602060405180830381600087803b15801561175357600080fd5b505af1925050508015611783575060408051601f3d908101601f1916820190925261178091810190611df8565b60015b6117de573d8080156117b1576040519150601f19603f3d011682016040523d82523d6000602084013e6117b6565b606091505b5080516117d6576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60606000610eec836119b8565b6000818152600183016020526040812054611850575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105a2565b5060006105a2565b611860611a14565b6001600160a01b03821681526001600160401b0360a083901c166020820152600160e01b82161515604082015260e89190911c606082015290565b600081815260018301602052604081205480156119ae5760006118bf60018361209a565b85549091506000906118d39060019061209a565b905081811461195457600086600001828154811061190157634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508087600001848154811061193257634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b855486908061197357634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506105a2565b60009150506105a2565b606081600001805480602002602001604051908101604052809291908181526020018280548015611a0857602002820191906000526020600020905b8154815260200190600101908083116119f4575b50505050509050919050565b60408051608081018252600080825260208201819052918101829052606081019190915290565b828054611a47906120e9565b90600052602060002090601f016020900481019282611a695760008555611aaf565b82601f10611a8257805160ff1916838001178555611aaf565b82800160010185558215611aaf579182015b82811115611aaf578251825591602001919060010190611a94565b50611abb929150611abf565b5090565b5b80821115611abb5760008155600101611ac0565b60006001600160401b03831115611aed57611aed612124565b611b00601f8401601f191660200161206a565b9050828152838383011115611b1457600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b038116811461090457600080fd5b8035801515811461090457600080fd5b600082601f830112611b62578081fd5b610eec83833560208501611ad4565b600060208284031215611b82578081fd5b610eec82611b2b565b60008060408385031215611b9d578081fd5b611ba683611b2b565b9150611bb460208401611b2b565b90509250929050565b600080600060608486031215611bd1578081fd5b611bda84611b2b565b9250611be860208501611b2b565b9150604084013590509250925092565b60008060008060808587031215611c0d578081fd5b611c1685611b2b565b9350611c2460208601611b2b565b92506040850135915060608501356001600160401b03811115611c45578182fd5b611c5187828801611b52565b91505092959194509250565b60008060408385031215611c6f578182fd5b611c7883611b2b565b9150611bb460208401611b42565b60008060408385031215611c98578182fd5b611ca183611b2b565b946020939093013593505050565b600080600060608486031215611cc3578283fd5b611ccc84611b2b565b92506020840135915060408401356001600160401b03811115611ced578182fd5b611cf986828701611b52565b9150509250925092565b600080600060608486031215611d17578283fd5b611d2084611b2b565b95602085013595506040909401359392505050565b60006020808385031215611d47578182fd5b82356001600160401b0380821115611d5d578384fd5b818501915085601f830112611d70578384fd5b813581811115611d8257611d82612124565b8060051b9150611d9384830161206a565b8181528481019084860184860187018a1015611dad578788fd5b8795505b83861015611dcf578035835260019590950194918601918601611db1565b5098975050505050505050565b600060208284031215611ded578081fd5b8135610eec8161213a565b600060208284031215611e09578081fd5b8151610eec8161213a565b600060208284031215611e25578081fd5b81356001600160401b03811115611e3a578182fd5b8201601f81018413611e4a578182fd5b6117f484823560208401611ad4565b600060208284031215611e6a578081fd5b5035919050565b60008060408385031215611e83578182fd5b82359150611bb460208401611b42565b60008151808452611eab8160208601602086016120bd565b601f01601f19169290920160200192915050565b80516001600160a01b031682526020808201516001600160401b03169083015260408082015115159083015260609081015162ffffff16910152565b60008351611f0d8184602088016120bd565b835190830190611f218183602088016120bd565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611f5d90830184611e93565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610d0d5783516001600160a01b031683529284019291840191600101611f83565b6020808252825182820181905260009190848201906040850190845b81811015610d0d57611fd7838551611ebf565b9284019260809290920191600101611fc4565b6020808252825182820181905260009190848201906040850190845b81811015610d0d57835183529284019291840191600101612006565b602081526000610eec6020830184611e93565b6020808252600d908201526c2727aa1027a822a920aa27a91760991b604082015260600190565b608081016105a28284611ebf565b604051601f8201601f191681016001600160401b038111828210171561209257612092612124565b604052919050565b6000828210156120b857634e487b7160e01b81526011600452602481fd5b500390565b60005b838110156120d85781810151838201526020016120c0565b8381111561102f5750506000910152565b600181811c908216806120fd57607f821691505b6020821081141561211e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461096957600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203524f8bbe399f492baf708610564899f7271987e9bd0923238fb8e6c27ff195364736f6c634300080400330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000034e4654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034e46540000000000000000000000000000000000000000000000000000000000