[ { "inputs": [ { "internalType": "string", "name": "_tokenName", "type": "string" }, { "internalType": "string", "name": "_tokenSymbol", "type": "string" }, { "internalType": "uint256", "name": "_cost", "type": "uint256" }, { "internalType": "uint256", "name": "_maxSupply", "type": "uint256" }, { "internalType": "uint256", "name": "_maxMintAmountPerTx", "type": "uint256" }, { "internalType": "string", "name": "_hiddenMetadataUri", "type": "string" } ], "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": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "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" }, { "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": "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": "cost", "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 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": "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": [ { "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": "maxMintAmountPerTx", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mintAmount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mintAmount", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" } ], "name": "mintForAddress", "outputs": [], "stateMutability": "nonpayable", "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": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "revealed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_cost", "type": "uint256" } ], "name": "setCost", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_hiddenMetadataUri", "type": "string" } ], "name": "setHiddenMetadataUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxMintAmountPerTx", "type": "uint256" } ], "name": "setMaxMintAmountPerTx", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_merkleRoot", "type": "bytes32" } ], "name": "setMerkleRoot", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_state", "type": "bool" } ], "name": "setPaused", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_state", "type": "bool" } ], "name": "setRevealed", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_uriPrefix", "type": "string" } ], "name": "setUriPrefix", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_uriSuffix", "type": "string" } ], "name": "setUriSuffix", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_state", "type": "bool" } ], "name": "setWhitelistMintEnabled", "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": "_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": "", "type": "address" } ], "name": "whitelistClaimed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mintAmount", "type": "uint256" }, { "internalType": "bytes32[]", "name": "_merkleProof", "type": "bytes32[]" } ], "name": "whitelistMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "whitelistMintEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a06040819052600060808190526200001b91600c916200025d565b5060408051808201909152600580825264173539b7b760d91b60209092019182526200004a91600d916200025d565b506012805462ffffff191660011790553480156200006757600080fd5b50604051620030a4380380620030a48339810160408190526200008a91620003d0565b855186908690620000a39060029060208501906200025d565b508051620000b99060039060208401906200025d565b5050600160005550620000cc3362000103565b6001600955620000dc8462000155565b6010839055620000ec82620001a9565b620000f781620001f9565b505050505050620004ba565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6008546001600160a01b03163314620001a45760405162461bcd60e51b815260206004820181905260248201526000805160206200308483398151915260448201526064015b60405180910390fd5b600f55565b6008546001600160a01b03163314620001f45760405162461bcd60e51b815260206004820181905260248201526000805160206200308483398151915260448201526064016200019b565b601155565b6008546001600160a01b03163314620002445760405162461bcd60e51b815260206004820181905260248201526000805160206200308483398151915260448201526064016200019b565b80516200025990600e9060208401906200025d565b5050565b8280546200026b906200047d565b90600052602060002090601f0160209004810192826200028f5760008555620002da565b82601f10620002aa57805160ff1916838001178555620002da565b82800160010185558215620002da579182015b82811115620002da578251825591602001919060010190620002bd565b50620002e8929150620002ec565b5090565b5b80821115620002e85760008155600101620002ed565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200032b57600080fd5b81516001600160401b038082111562000348576200034862000303565b604051601f8301601f19908116603f0116810190828211818310171562000373576200037362000303565b816040528381526020925086838588010111156200039057600080fd5b600091505b83821015620003b4578582018301518183018401529082019062000395565b83821115620003c65760008385830101525b9695505050505050565b60008060008060008060c08789031215620003ea57600080fd5b86516001600160401b03808211156200040257600080fd5b620004108a838b0162000319565b975060208901519150808211156200042757600080fd5b620004358a838b0162000319565b965060408901519550606089015194506080890151935060a08901519150808211156200046157600080fd5b506200047089828a0162000319565b9150509295509295509295565b600181811c908216806200049257607f821691505b60208210811415620004b457634e487b7160e01b600052602260045260246000fd5b50919050565b612bba80620004ca6000396000f3fe6080604052600436106102465760003560e01c80637cb6475911610139578063b767a098116100b6578063d5abeb011161007a578063d5abeb01146106b7578063db4bec44146106cd578063e0a80853146106fd578063e985e9c51461071d578063efbd73f41461073d578063f2fde38b1461075d57600080fd5b8063b767a09814610617578063b88d4fde14610637578063c23dc68f14610657578063c87b56dd14610684578063d2cab056146106a457600080fd5b806395d89b41116100fd57806395d89b411461058f57806399a2557a146105a4578063a0712d68146105c4578063a22cb465146105d7578063b071401b146105f757600080fd5b80637cb64759146104ee5780637ec4a6591461050e5780638462151c1461052e5780638da5cb5b1461055b57806394354fd01461057957600080fd5b806342842e0e116101c75780635c975abb1161018b5780635c975abb146104605780636352211e1461047a5780636caede3d1461049a57806370a08231146104b9578063715018a6146104d957600080fd5b806342842e0e146103b357806344a0d68a146103d35780634fdd43cb146103f357806351830227146104135780635bbb21771461043357600080fd5b806316ba10e01161020e57806316ba10e01461032057806316c38b3c1461034057806318160ddd1461036057806323b872dd1461037e5780633ccfd60b1461039e57600080fd5b806301ffc9a71461024b57806306fdde0314610280578063081812fc146102a2578063095ea7b3146102da57806313faede6146102fc575b600080fd5b34801561025757600080fd5b5061026b610266366004612323565b61077d565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956107cf565b6040516102779190612398565b3480156102ae57600080fd5b506102c26102bd3660046123ab565b610861565b6040516001600160a01b039091168152602001610277565b3480156102e657600080fd5b506102fa6102f53660046123e0565b6108a5565b005b34801561030857600080fd5b50610312600f5481565b604051908152602001610277565b34801561032c57600080fd5b506102fa61033b3660046124a7565b61092c565b34801561034c57600080fd5b506102fa61035b3660046124ff565b610976565b34801561036c57600080fd5b50610312600154600054036000190190565b34801561038a57600080fd5b506102fa61039936600461251a565b6109b3565b3480156103aa57600080fd5b506102fa6109be565b3480156103bf57600080fd5b506102fa6103ce36600461251a565b610b37565b3480156103df57600080fd5b506102fa6103ee3660046123ab565b610b52565b3480156103ff57600080fd5b506102fa61040e3660046124a7565b610b81565b34801561041f57600080fd5b5060125461026b9062010000900460ff1681565b34801561043f57600080fd5b5061045361044e366004612556565b610bbe565b60405161027791906125fb565b34801561046c57600080fd5b5060125461026b9060ff1681565b34801561048657600080fd5b506102c26104953660046123ab565b610c84565b3480156104a657600080fd5b5060125461026b90610100900460ff1681565b3480156104c557600080fd5b506103126104d4366004612665565b610c96565b3480156104e557600080fd5b506102fa610ce4565b3480156104fa57600080fd5b506102fa6105093660046123ab565b610d1a565b34801561051a57600080fd5b506102fa6105293660046124a7565b610d49565b34801561053a57600080fd5b5061054e610549366004612665565b610d86565b6040516102779190612680565b34801561056757600080fd5b506008546001600160a01b03166102c2565b34801561058557600080fd5b5061031260115481565b34801561059b57600080fd5b50610295610ed3565b3480156105b057600080fd5b5061054e6105bf3660046126b8565b610ee2565b6102fa6105d23660046123ab565b6110a8565b3480156105e357600080fd5b506102fa6105f23660046126eb565b6111fa565b34801561060357600080fd5b506102fa6106123660046123ab565b611290565b34801561062357600080fd5b506102fa6106323660046124ff565b6112bf565b34801561064357600080fd5b506102fa61065236600461271e565b611303565b34801561066357600080fd5b506106776106723660046123ab565b61134d565b6040516102779190612799565b34801561069057600080fd5b5061029561069f3660046123ab565b611407565b6102fa6106b23660046127ce565b611576565b3480156106c357600080fd5b5061031260105481565b3480156106d957600080fd5b5061026b6106e8366004612665565b600b6020526000908152604090205460ff1681565b34801561070957600080fd5b506102fa6107183660046124ff565b611810565b34801561072957600080fd5b5061026b61073836600461284c565b611856565b34801561074957600080fd5b506102fa610758366004612876565b611884565b34801561076957600080fd5b506102fa610778366004612665565b611959565b60006001600160e01b031982166380ac58cd60e01b14806107ae57506001600160e01b03198216635b5e139f60e01b145b806107c957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600280546107de90612899565b80601f016020809104026020016040519081016040528092919081815260200182805461080a90612899565b80156108575780601f1061082c57610100808354040283529160200191610857565b820191906000526020600020905b81548152906001019060200180831161083a57829003601f168201915b5050505050905090565b600061086c826119f4565b610889576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006108b082610c84565b9050806001600160a01b0316836001600160a01b031614156108e55760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b0382161461091c576108ff8133611856565b61091c576040516367d9dca160e11b815260040160405180910390fd5b610927838383611a2d565b505050565b6008546001600160a01b0316331461095f5760405162461bcd60e51b8152600401610956906128d4565b60405180910390fd5b805161097290600d906020840190612274565b5050565b6008546001600160a01b031633146109a05760405162461bcd60e51b8152600401610956906128d4565b6012805460ff1916911515919091179055565b610927838383611a89565b6008546001600160a01b031633146109e85760405162461bcd60e51b8152600401610956906128d4565b60026009541415610a3b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610956565b6002600955600073798243e6a73c0f9d353a3a16db7acb7a381681ed6064610a6447601e61291f565b610a6e9190612954565b604051600081818185875af1925050503d8060008114610aaa576040519150601f19603f3d011682016040523d82523d6000602084013e610aaf565b606091505b5050905080610abd57600080fd5b6000610ad16008546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114610b1b576040519150601f19603f3d011682016040523d82523d6000602084013e610b20565b606091505b5050905080610b2e57600080fd5b50506001600955565b61092783838360405180602001604052806000815250611303565b6008546001600160a01b03163314610b7c5760405162461bcd60e51b8152600401610956906128d4565b600f55565b6008546001600160a01b03163314610bab5760405162461bcd60e51b8152600401610956906128d4565b805161097290600e906020840190612274565b80516060906000816001600160401b03811115610bdd57610bdd61240a565b604051908082528060200260200182016040528015610c2857816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610bfb5790505b50905060005b828114610c7c57610c57858281518110610c4a57610c4a612968565b602002602001015161134d565b828281518110610c6957610c69612968565b6020908102919091010152600101610c2e565b509392505050565b6000610c8f82611c76565b5192915050565b60006001600160a01b038216610cbf576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b6008546001600160a01b03163314610d0e5760405162461bcd60e51b8152600401610956906128d4565b610d186000611d98565b565b6008546001600160a01b03163314610d445760405162461bcd60e51b8152600401610956906128d4565b600a55565b6008546001600160a01b03163314610d735760405162461bcd60e51b8152600401610956906128d4565b805161097290600c906020840190612274565b60606000806000610d9685610c96565b90506000816001600160401b03811115610db257610db261240a565b604051908082528060200260200182016040528015610ddb578160200160208202803683370190505b509050610e01604080516060810182526000808252602082018190529181019190915290565b60015b838614610ec757600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff16158015928201929092529250610e6a57610ebf565b81516001600160a01b031615610e7f57815194505b876001600160a01b0316856001600160a01b03161415610ebf5780838780600101985081518110610eb257610eb2612968565b6020026020010181815250505b600101610e04565b50909695505050505050565b6060600380546107de90612899565b6060818310610f0457604051631960ccad60e11b815260040160405180910390fd5b600080546001851015610f1657600194505b80841115610f22578093505b6000610f2d87610c96565b905084861015610f4c5785850381811015610f46578091505b50610f50565b5060005b6000816001600160401b03811115610f6a57610f6a61240a565b604051908082528060200260200182016040528015610f93578160200160208202803683370190505b50905081610fa65793506110a192505050565b6000610fb18861134d565b905060008160400151610fc2575080515b885b888114158015610fd45750848714155b1561109557600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff161580159282019290925293506110385761108d565b82516001600160a01b03161561104d57825191505b8a6001600160a01b0316826001600160a01b0316141561108d578084888060010199508151811061108057611080612968565b6020026020010181815250505b600101610fc4565b50505092835250909150505b9392505050565b806000811180156110bb57506011548111155b6110d75760405162461bcd60e51b81526004016109569061297e565b601154816110e433611dea565b6110ee91906129ac565b111561110c5760405162461bcd60e51b8152600401610956906129c4565b60105481611121600154600054036000190190565b61112b91906129ac565b11156111495760405162461bcd60e51b8152600401610956906129f2565b8180600f54611158919061291f565b34101561119d5760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b6044820152606401610956565b60125460ff16156111f05760405162461bcd60e51b815260206004820152601760248201527f54686520636f6e747261637420697320706175736564210000000000000000006044820152606401610956565b6109273384611e15565b6001600160a01b0382163314156112245760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6008546001600160a01b031633146112ba5760405162461bcd60e51b8152600401610956906128d4565b601155565b6008546001600160a01b031633146112e95760405162461bcd60e51b8152600401610956906128d4565b601280549115156101000261ff0019909216919091179055565b61130e848484611a89565b6001600160a01b0383163b156113475761132a84848484611e2f565b611347576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b6040805160608082018352600080835260208084018290528385018290528451928301855281835282018190529281019290925290600183108061139357506000548310155b1561139e5792915050565b50600082815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff1615801592820192909252906113fe5792915050565b6110a183611c76565b6060611412826119f4565b6114765760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610956565b60125462010000900460ff1661151857600e805461149390612899565b80601f01602080910402602001604051908101604052809291908181526020018280546114bf90612899565b801561150c5780601f106114e15761010080835404028352916020019161150c565b820191906000526020600020905b8154815290600101906020018083116114ef57829003601f168201915b50505050509050919050565b6000611522611f27565b9050600081511161154257604051806020016040528060008152506110a1565b8061154c84611f36565b600d60405160200161156093929190612a20565b6040516020818303038152906040529392505050565b8260008111801561158957506011548111155b6115a55760405162461bcd60e51b81526004016109569061297e565b601154816115b233611dea565b6115bc91906129ac565b11156115da5760405162461bcd60e51b8152600401610956906129c4565b601054816115ef600154600054036000190190565b6115f991906129ac565b11156116175760405162461bcd60e51b8152600401610956906129f2565b8380600f54611626919061291f565b34101561166b5760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b6044820152606401610956565b601254610100900460ff166116cd5760405162461bcd60e51b815260206004820152602260248201527f5468652077686974656c6973742073616c65206973206e6f7420656e61626c65604482015261642160f01b6064820152608401610956565b336000908152600b602052604090205460ff161561172d5760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c726561647920636c61696d65642100000000000000006044820152606401610956565b6040516bffffffffffffffffffffffff193360601b1660208201526000906034016040516020818303038152906040528051906020012090506117a785858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600a549150849050612033565b6117e45760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642070726f6f662160901b6044820152606401610956565b336000818152600b60205260409020805460ff191660011790556118089087611e15565b505050505050565b6008546001600160a01b0316331461183a5760405162461bcd60e51b8152600401610956906128d4565b60128054911515620100000262ff000019909216919091179055565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b8160008111801561189757506011548111155b6118b35760405162461bcd60e51b81526004016109569061297e565b601154816118c033611dea565b6118ca91906129ac565b11156118e85760405162461bcd60e51b8152600401610956906129c4565b601054816118fd600154600054036000190190565b61190791906129ac565b11156119255760405162461bcd60e51b8152600401610956906129f2565b6008546001600160a01b0316331461194f5760405162461bcd60e51b8152600401610956906128d4565b6109278284611e15565b6008546001600160a01b031633146119835760405162461bcd60e51b8152600401610956906128d4565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610956565b6119f181611d98565b50565b600081600111158015611a08575060005482105b80156107c9575050600090815260046020526040902054600160e01b900460ff161590565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000611a9482611c76565b9050836001600160a01b031681600001516001600160a01b031614611acb5760405162a1148160e81b815260040160405180910390fd5b6000336001600160a01b0386161480611ae95750611ae98533611856565b80611b04575033611af984610861565b6001600160a01b0316145b905080611b2457604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038416611b4b57604051633a954ecd60e21b815260040160405180910390fd5b611b5760008487611a2d565b6001600160a01b038581166000908152600560209081526040808320805467ffffffffffffffff198082166001600160401b0392831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600490945282852080546001600160e01b031916909417600160a01b42909216919091021783558701808452922080549193909116611c2b576000548214611c2b57805460208601516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050505050565b60408051606081018252600080825260208201819052918101919091528180600111611d7f57600054811015611d7f57600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff16151591810182905290611d7d5780516001600160a01b031615611d14579392505050565b5060001901600081815260046020908152604091829020825160608101845290546001600160a01b038116808352600160a01b82046001600160401b031693830193909352600160e01b900460ff1615159281019290925215611d78579392505050565b611d14565b505b604051636f96cda160e11b815260040160405180910390fd5b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0316600090815260056020526040902054600160401b90046001600160401b031690565b610972828260405180602001604052806000815250612049565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611e64903390899088908890600401612ae4565b602060405180830381600087803b158015611e7e57600080fd5b505af1925050508015611eae575060408051601f3d908101601f19168201909252611eab91810190612b21565b60015b611f09573d808015611edc576040519150601f19603f3d011682016040523d82523d6000602084013e611ee1565b606091505b508051611f01576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6060600c80546107de90612899565b606081611f5a5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611f845780611f6e81612b3e565b9150611f7d9050600a83612954565b9150611f5e565b6000816001600160401b03811115611f9e57611f9e61240a565b6040519080825280601f01601f191660200182016040528015611fc8576020820181803683370190505b5090505b8415611f1f57611fdd600183612b59565b9150611fea600a86612b70565b611ff59060306129ac565b60f81b81838151811061200a5761200a612968565b60200101906001600160f81b031916908160001a90535061202c600a86612954565b9450611fcc565b6000826120408584612208565b14949350505050565b6000546001600160a01b03841661207257604051622e076360e81b815260040160405180910390fd5b826120905760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038416600081815260056020908152604080832080546fffffffffffffffffffffffffffffffff1981166001600160401b038083168b018116918217600160401b67ffffffffffffffff1990941690921783900481168b01811690920217909155858452600490925290912080546001600160e01b0319168317600160a01b42909316929092029190911790558190818501903b156121b3575b60405182906001600160a01b038816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461217c6000878480600101955087611e2f565b612199576040516368d2bf6b60e11b815260040160405180910390fd5b8082106121315782600054146121ae57600080fd5b6121f8565b5b6040516001830192906001600160a01b038816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a48082106121b4575b5060009081556113479085838684565b600081815b8451811015610c7c57600085828151811061222a5761222a612968565b602002602001015190508083116122505760008381526020829052604090209250612261565b600081815260208490526040902092505b508061226c81612b3e565b91505061220d565b82805461228090612899565b90600052602060002090601f0160209004810192826122a257600085556122e8565b82601f106122bb57805160ff19168380011785556122e8565b828001600101855582156122e8579182015b828111156122e85782518255916020019190600101906122cd565b506122f49291506122f8565b5090565b5b808211156122f457600081556001016122f9565b6001600160e01b0319811681146119f157600080fd5b60006020828403121561233557600080fd5b81356110a18161230d565b60005b8381101561235b578181015183820152602001612343565b838111156113475750506000910152565b60008151808452612384816020860160208601612340565b601f01601f19169290920160200192915050565b6020815260006110a1602083018461236c565b6000602082840312156123bd57600080fd5b5035919050565b80356001600160a01b03811681146123db57600080fd5b919050565b600080604083850312156123f357600080fd5b6123fc836123c4565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156124485761244861240a565b604052919050565b60006001600160401b038311156124695761246961240a565b61247c601f8401601f1916602001612420565b905082815283838301111561249057600080fd5b828260208301376000602084830101529392505050565b6000602082840312156124b957600080fd5b81356001600160401b038111156124cf57600080fd5b8201601f810184136124e057600080fd5b611f1f84823560208401612450565b803580151581146123db57600080fd5b60006020828403121561251157600080fd5b6110a1826124ef565b60008060006060848603121561252f57600080fd5b612538846123c4565b9250612546602085016123c4565b9150604084013590509250925092565b6000602080838503121561256957600080fd5b82356001600160401b038082111561258057600080fd5b818501915085601f83011261259457600080fd5b8135818111156125a6576125a661240a565b8060051b91506125b7848301612420565b81815291830184019184810190888411156125d157600080fd5b938501935b838510156125ef578435825293850193908501906125d6565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610ec75761265283855180516001600160a01b031682526020808201516001600160401b0316908301526040908101511515910152565b9284019260609290920191600101612617565b60006020828403121561267757600080fd5b6110a1826123c4565b6020808252825182820181905260009190848201906040850190845b81811015610ec75783518352928401929184019160010161269c565b6000806000606084860312156126cd57600080fd5b6126d6846123c4565b95602085013595506040909401359392505050565b600080604083850312156126fe57600080fd5b612707836123c4565b9150612715602084016124ef565b90509250929050565b6000806000806080858703121561273457600080fd5b61273d856123c4565b935061274b602086016123c4565b92506040850135915060608501356001600160401b0381111561276d57600080fd5b8501601f8101871361277e57600080fd5b61278d87823560208401612450565b91505092959194509250565b81516001600160a01b031681526020808301516001600160401b031690820152604080830151151590820152606081016107c9565b6000806000604084860312156127e357600080fd5b8335925060208401356001600160401b038082111561280157600080fd5b818601915086601f83011261281557600080fd5b81358181111561282457600080fd5b8760208260051b850101111561283957600080fd5b6020830194508093505050509250925092565b6000806040838503121561285f57600080fd5b612868836123c4565b9150612715602084016123c4565b6000806040838503121561288957600080fd5b82359150612715602084016123c4565b600181811c908216806128ad57607f821691505b602082108114156128ce57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561293957612939612909565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826129635761296361293e565b500490565b634e487b7160e01b600052603260045260246000fd5b602080825260149082015273496e76616c6964206d696e7420616d6f756e742160601b604082015260600190565b600082198211156129bf576129bf612909565b500190565b60208082526014908201527315d85b1b195d08131a5b5a5d0814995858da195960621b604082015260600190565b6020808252601490820152734d617820737570706c792065786365656465642160601b604082015260600190565b600084516020612a338285838a01612340565b855191840191612a468184848a01612340565b8554920191600090600181811c9080831680612a6357607f831692505b858310811415612a8157634e487b7160e01b85526022600452602485fd5b808015612a955760018114612aa657612ad3565b60ff19851688528388019550612ad3565b60008b81526020902060005b85811015612acb5781548a820152908401908801612ab2565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612b179083018461236c565b9695505050505050565b600060208284031215612b3357600080fd5b81516110a18161230d565b6000600019821415612b5257612b52612909565b5060010190565b600082821015612b6b57612b6b612909565b500390565b600082612b7f57612b7f61293e565b50069056fea2646970667358221220db6d4ad7dd1bd3d7c8f40bb5515270dcca00f9fb60268f34759e73844751dc1d64736f6c634300080900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e6100000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000e43727970746f4a657473436c75620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003434a430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004368747470733a2f2f636a636c75622e667261312e63646e2e6469676974616c6f6365616e7370616365732e636f6d2f556e52764d6574612f68696464656e2e6a736f6e0000000000000000000000000000000000000000000000000000000000