[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "CreatorTokenBase__InvalidTransferValidatorContract", "type": "error" }, { "inputs": [], "name": "CreatorTokenBase__SetTransferValidatorFirst", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "NotCompatibleWithSpotMints", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "SequentialMintExceedsLimit", "type": "error" }, { "inputs": [], "name": "SequentialUpToTooSmall", "type": "error" }, { "inputs": [], "name": "ShouldNotMintToBurnAddress", "type": "error" }, { "inputs": [], "name": "SpotMintTokenIdTooSmall", "type": "error" }, { "inputs": [], "name": "TokenAlreadyExists", "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" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldValidator", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newValidator", "type": "address" } ], "name": "TransferValidatorUpdated", "type": "event" }, { "inputs": [], "name": "DEFAULT_OPERATOR_WHITELIST_ID", "outputs": [ { "internalType": "uint120", "name": "", "type": "uint120" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_TRANSFER_SECURITY_LEVEL", "outputs": [ { "internalType": "enum TransferSecurityLevels", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_TRANSFER_VALIDATOR", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPermittedContractReceivers", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getSecurityPolicy", "outputs": [ { "components": [ { "internalType": "enum TransferSecurityLevels", "name": "transferSecurityLevel", "type": "uint8" }, { "internalType": "uint120", "name": "operatorWhitelistId", "type": "uint120" }, { "internalType": "uint120", "name": "permittedContractReceiversId", "type": "uint120" } ], "internalType": "struct CollectionSecurityPolicy", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTransferValidator", "outputs": [ { "internalType": "contract ICreatorTokenTransferValidator", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWhitelistedOperators", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "hiddenMetadataUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "receiver", "type": "address" } ], "name": "isContractReceiverPermitted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isOperatorWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "isTransferAllowed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "ogCost", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ogMaxMintAmountPerTx", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ogMerkleRoot", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mintAmount", "type": "uint256" }, { "internalType": "bytes32[]", "name": "_merkleProof", "type": "bytes32[]" } ], "name": "ogMint", "outputs": [], "stateMutability": "payable", "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": [ { "internalType": "uint256", "name": "_mintAmount", "type": "uint256" } ], "name": "publicMint", "outputs": [], "stateMutability": "payable", "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": "payable", "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": "payable", "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": "_hiddenMetadataUri", "type": "string" } ], "name": "setHiddenMetadataUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_merkleRoot", "type": "bytes32" } ], "name": "setOgMerkleRoot", "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": "enum TransferSecurityLevels", "name": "level", "type": "uint8" }, { "internalType": "uint120", "name": "operatorWhitelistId", "type": "uint120" }, { "internalType": "uint120", "name": "permittedContractReceiversAllowlistId", "type": "uint120" } ], "name": "setToCustomSecurityPolicy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "validator", "type": "address" }, { "internalType": "enum TransferSecurityLevels", "name": "level", "type": "uint8" }, { "internalType": "uint120", "name": "operatorWhitelistId", "type": "uint120" }, { "internalType": "uint120", "name": "permittedContractReceiversAllowlistId", "type": "uint120" } ], "name": "setToCustomValidatorAndSecurityPolicy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "setToDefaultSecurityPolicy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "transferValidator_", "type": "address" } ], "name": "setTransferValidator", "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": "bytes32", "name": "_merkleRoot", "type": "bytes32" } ], "name": "setWlMerkleRoot", "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": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "result", "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "uriPrefix", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uriSuffix", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "whitelistClaimed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "whitelistMintEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "wlCost", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "wlMaxMintAmountPerTx", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "wlMerkleRoot", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mintAmount", "type": "uint256" }, { "internalType": "bytes32[]", "name": "_merkleProof", "type": "bytes32[]" } ], "name": "wlMint", "outputs": [], "stateMutability": "payable", "type": "function" } ]
7ff0dc04ede158e1b88c6fddcf055c764c79a092e8f8328e5529b5e4a7dc288528600b557f2181f32cbaef53fd61ca5ce30df3402d42d02a2bb988173a6880197adf94acb7600c5560a06040525f6080908152600e9061005f908261028a565b50604080518082019091526005815264173539b7b760d91b6020820152600f90610089908261028a565b506040518060800160405280606081526020016136e9606091396010906100b0908261028a565b506103e8601155666a94d74f4300006012556658d15e176280006013556001601481905560026015556016805462ffffff191690911790553480156100f3575f80fd5b50336040518060400160405280600c81526020016b04d6574616d6f6e2047656e360a41b8152506040518060400160405280600b81526020016a04d6574616d6f6e47656e360ac1b8152508181816002908161014f919061028a565b50600361015c828261028a565b505060015f555050506001600160a01b03811661019257604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61019b816101a1565b50610349565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061021a57607f821691505b60208210810361023857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561028557805f5260205f20601f840160051c810160208510156102635750805b601f840160051c820191505b81811015610282575f815560010161026f565b50505b505050565b81516001600160401b038111156102a3576102a36101f2565b6102b7816102b18454610206565b8461023e565b602080601f8311600181146102ea575f84156102d35750858301515b5f19600386901b1c1916600185901b178555610341565b5f85815260208120601f198616915b82811015610318578886015182559484019460019091019084016102f9565b508582101561033557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b613393806103565f395ff3fe60806040526004361061037c575f3560e01c806361347162116101d3578063a9fc664e116100fd578063d70a28d11161009d578063e985e9c51161006d578063e985e9c514610988578063efbd73f4146109cf578063f2fde38b146109ee578063fd762d9214610a0d575f80fd5b8063d70a28d114610907578063d8a7ab891461091c578063db4bec441461093b578063e0a8085314610969575f80fd5b8063be537f43116100d8578063be537f431461089e578063c87b56dd146108bf578063d007af5c146108de578063d5abeb01146108f2575f80fd5b8063a9fc664e1461084d578063b767a0981461086c578063b88d4fde1461088b575f80fd5b8063715018a61161017357806395d89b411161014357806395d89b41146107e75780639d645a44146107fb578063a22cb4651461081a578063a45ba8e714610839575f80fd5b8063715018a6146107785780637ec4a6591461078c5780638ac1e161146107ab5780638da5cb5b146107ca575f80fd5b806369aff65f116101ae57806369aff65f146107125780636c3b8699146107275780636caede3d1461073b57806370a0823114610759575f80fd5b806361347162146106c057806362b99ad4146106df5780636352211e146106f3575f80fd5b80632b314dc6116102b4578063474988ea1161025457806354c06aee1161022457806354c06aee146106525780635503a0e8146106675780635c975abb1461067b5780635d4c1d4614610694575f80fd5b8063474988ea146105de578063495c8bf9146105f35780634fdd43cb146106145780635183022714610633575f80fd5b80633ccfd60b1161028f5780633ccfd60b146105855780633ef0d36d1461059957806342842e0e146105ac57806342966c68146105bf575f80fd5b80632b314dc6146105405780632db11544146105535780632e8da82914610566575f80fd5b806316ba10e01161031f5780631b25b077116102fa5780631b25b077146104d85780631c33b328146104f7578063210bdc541461051857806323b872dd1461052d575f80fd5b806316ba10e01461048657806316c38b3c146104a557806318160ddd146104c4575f80fd5b8063081812fc1161035a578063081812fc14610412578063095ea7b314610431578063098144d4146104465780630a30253014610463575f80fd5b8063014635461461038057806301ffc9a7146103c257806306fdde03146103f1575b5f80fd5b34801561038b575f80fd5b506103a571721c310194ccfc01e523fc93c9cccfa2a0ac81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103cd575f80fd5b506103e16103dc36600461294a565b610a2c565b60405190151581526020016103b9565b3480156103fc575f80fd5b50610405610a56565b6040516103b99190612993565b34801561041d575f80fd5b506103a561042c3660046129a5565b610ae6565b61044461043f3660046129d0565b610b1f565b005b348015610451575f80fd5b506009546001600160a01b03166103a5565b34801561046e575f80fd5b50610478600c5481565b6040519081526020016103b9565b348015610491575f80fd5b506104446104a0366004612a94565b610b2f565b3480156104b0575f80fd5b506104446104bf366004612ae6565b610b43565b3480156104cf575f80fd5b50610478610b5e565b3480156104e3575f80fd5b506103e16104f2366004612b01565b610b7a565b348015610502575f80fd5b5061050b600181565b6040516103b99190612b69565b348015610523575f80fd5b5061047860155481565b61044461053b366004612b77565b610c0f565b61044461054e366004612bb5565b610d8d565b6104446105613660046129a5565b610f87565b348015610571575f80fd5b506103e1610580366004612c2d565b611079565b348015610590575f80fd5b5061044461117f565b6104446105a7366004612bb5565b611201565b6104446105ba366004612b77565b61138a565b3480156105ca575f80fd5b506104446105d93660046129a5565b6113a4565b3480156105e9575f80fd5b5061047860145481565b3480156105fe575f80fd5b506106076113af565b6040516103b99190612c48565b34801561061f575f80fd5b5061044461062e366004612a94565b6114b9565b34801561063e575f80fd5b506016546103e19062010000900460ff1681565b34801561065d575f80fd5b50610478600b5481565b348015610672575f80fd5b506104056114cd565b348015610686575f80fd5b506016546103e19060ff1681565b34801561069f575f80fd5b506106a8600181565b6040516001600160781b0390911681526020016103b9565b3480156106cb575f80fd5b506104446106da366004612cb4565b611559565b3480156106ea575f80fd5b506104056116b4565b3480156106fe575f80fd5b506103a561070d3660046129a5565b6116c1565b34801561071d575f80fd5b5061047860135481565b348015610732575f80fd5b506104446116cb565b348015610746575f80fd5b506016546103e190610100900460ff1681565b348015610764575f80fd5b50610478610773366004612c2d565b6117ba565b348015610783575f80fd5b506104446117fe565b348015610797575f80fd5b506104446107a6366004612a94565b611811565b3480156107b6575f80fd5b506104446107c53660046129a5565b61183a565b3480156107d5575f80fd5b50600a546001600160a01b03166103a5565b3480156107f2575f80fd5b50610405611847565b348015610806575f80fd5b506103e1610815366004612c2d565b611856565b348015610825575f80fd5b50610444610834366004612cf1565b61191b565b348015610844575f80fd5b50610405611993565b348015610858575f80fd5b50610444610867366004612c2d565b6119a0565b348015610877575f80fd5b50610444610886366004612ae6565b611abf565b610444610899366004612d28565b611ae1565b3480156108a9575f80fd5b506108b2611b1c565b6040516103b99190612da3565b3480156108ca575f80fd5b506104056108d93660046129a5565b611bd3565b3480156108e9575f80fd5b50610607611d41565b3480156108fd575f80fd5b5061047860115481565b348015610912575f80fd5b5061047860125481565b348015610927575f80fd5b506104446109363660046129a5565b611df8565b348015610946575f80fd5b506103e1610955366004612c2d565b600d6020525f908152604090205460ff1681565b348015610974575f80fd5b50610444610983366004612ae6565b611e05565b348015610993575f80fd5b506103e16109a2366004612dde565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205460ff1690565b3480156109da575f80fd5b506104446109e9366004612e0a565b611e29565b3480156109f9575f80fd5b50610444610a08366004612c2d565b611e6f565b348015610a18575f80fd5b50610444610a27366004612e2d565b611ea9565b5f6001600160e01b031982166310c8aba560e31b1480610a505750610a5082611f9e565b92915050565b606060028054610a6590612e86565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9190612e86565b8015610adc5780601f10610ab357610100808354040283529160200191610adc565b820191905f5260205f20905b815481529060010190602001808311610abf57829003601f168201915b5050505050905090565b5f610af082611feb565b610b0457610b046333d1c03960e21b612035565b505f908152600660205260409020546001600160a01b031690565b610b2b8282600161203d565b5050565b610b376120de565b600f610b2b8282612f02565b610b4b6120de565b6016805460ff1916911515919091179055565b5f600180545f54030390505f19805b14610b7757600854015b90565b6009545f906001600160a01b031615610c045760095460405163050bf71960e31b81526001600160a01b038681166004830152858116602483015284811660448301529091169063285fb8c8906064015f6040518083038186803b158015610be0575f80fd5b505afa925050508015610bf1575060015b610bfc57505f610c08565b506001610c08565b5060015b9392505050565b5f610c198261210b565b6001600160a01b039485169490915081168414610c3f57610c3f62a1148160e81b612035565b5f8281526006602052604090208054610c6a8187335b6001600160a01b039081169116811491141790565b610c8c57610c7886336109a2565b610c8c57610c8c632ce44b5f60e11b612035565b610c9986868660016121a4565b8015610ca3575f82555b6001600160a01b038681165f9081526005602052604080822080545f19019055918716808252919020805460010190554260a01b17600160e11b175f85815260046020526040812091909155600160e11b84169003610d2f57600184015f818152600460205260408120549003610d2d575f548114610d2d575f8181526004602052604090208490555b505b6001600160a01b0385168481887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4805f03610d7757610d77633a954ecd60e21b612035565b610d8487878760016121d1565b50505050505050565b825f81118015610d9f57506015548111155b610dc45760405162461bcd60e51b8152600401610dbb90612fbe565b60405180910390fd5b60115481610dd06121f7565b610dda9190613000565b1115610df85760405162461bcd60e51b8152600401610dbb90613013565b8380601354610e079190613041565b341015610e265760405162461bcd60e51b8152600401610dbb90613058565b601654610100900460ff16610e4d5760405162461bcd60e51b8152600401610dbb90613085565b335f908152600d602052604090205460ff1615610ea75760405162461bcd60e51b81526020600482015260186024820152774164647265737320616c726561647920636c61696d65642160401b6044820152606401610dbb565b6040516bffffffffffffffffffffffff193360601b1660208201525f90603401604051602081830303815290604052805190602001209050610f1f8585808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050600c549150849050612205565b610f5c5760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642070726f6f662160901b6044820152606401610dbb565b335f818152600d60205260409020805460ff19166001179055610f7f908761221a565b505050505050565b805f81118015610f9957506015548111155b610fb55760405162461bcd60e51b8152600401610dbb90612fbe565b60115481610fc16121f7565b610fcb9190613000565b1115610fe95760405162461bcd60e51b8152600401610dbb90613013565b8180601254610ff89190613041565b3410156110175760405162461bcd60e51b8152600401610dbb90613058565b60165460ff161561106a5760405162461bcd60e51b815260206004820152601f60248201527f546865207075626c69632073616c65206973206e6f7420656e61626c656421006044820152606401610dbb565b611074338461221a565b505050565b6009545f906001600160a01b03161561117857600954604051635caaa2a960e11b81523060048201526001600160a01b039091169063d72dde5e90829063b955455290602401606060405180830381865afa1580156110da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110fe91906130c7565b602001516040516001600160e01b031960e084901b1681526001600160781b0390911660048201526001600160a01b03851660248201526044015b602060405180830381865afa158015611154573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a509190613137565b505f919050565b6111876120de565b5f4711611192575f80fd5b5f6111a5600a546001600160a01b031690565b6001600160a01b0316476040515f6040518083038185875af1925050503d805f81146111ec576040519150601f19603f3d011682016040523d82523d5f602084013e6111f1565b606091505b50509050806111fe575f80fd5b50565b825f8111801561121357506014548111155b61122f5760405162461bcd60e51b8152600401610dbb90612fbe565b6011548161123b6121f7565b6112459190613000565b11156112635760405162461bcd60e51b8152600401610dbb90613013565b83806012546112729190613041565b3410156112915760405162461bcd60e51b8152600401610dbb90613058565b601654610100900460ff166112b85760405162461bcd60e51b8152600401610dbb90613085565b335f908152600d602052604090205460ff16156113125760405162461bcd60e51b81526020600482015260186024820152774164647265737320616c726561647920636c61696d65642160401b6044820152606401610dbb565b6040516bffffffffffffffffffffffff193360601b1660208201525f90603401604051602081830303815290604052805190602001209050610f1f8585808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050600b549150849050612205565b61107483838360405180602001604052805f815250611ae1565b6111fe816001612233565b6009546060906001600160a01b0316156114a757600954604051635caaa2a960e11b81523060048201526001600160a01b0390911690633fe5df9990829063b955455290602401606060405180830381865afa158015611411573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061143591906130c7565b602001516040516001600160e01b031960e084901b1681526001600160781b0390911660048201526024015b5f60405180830381865afa15801561147b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526114a29190810190613152565b905090565b50604080515f81526020810190915290565b6114c16120de565b6010610b2b8282612f02565b600f80546114da90612e86565b80601f016020809104026020016040519081016040528092919081815260200182805461150690612e86565b80156115515780601f1061152857610100808354040283529160200191611551565b820191905f5260205f20905b81548152906001019060200180831161153457829003601f168201915b505050505081565b611561612384565b5f6115746009546001600160a01b031690565b90506001600160a01b03811661159d57604051631cffe3dd60e11b815260040160405180910390fd5b604051630368065360e61b81526001600160a01b0382169063da0194c0906115cb90309088906004016131ff565b5f604051808303815f87803b1580156115e2575f80fd5b505af11580156115f4573d5f803e3d5ffd5b5050604051631182550160e11b81526001600160a01b0384169250632304aa029150611626903090879060040161321c565b5f604051808303815f87803b15801561163d575f80fd5b505af115801561164f573d5f803e3d5ffd5b505060405163235d10c560e21b81526001600160a01b0384169250638d7443149150611681903090869060040161321c565b5f604051808303815f87803b158015611698575f80fd5b505af11580156116aa573d5f803e3d5ffd5b5050505050505050565b600e80546114da90612e86565b5f610a508261210b565b6116d3612384565b6116ee71721c310194ccfc01e523fc93c9cccfa2a0ac6119a0565b604051630368065360e61b815271721c310194ccfc01e523fc93c9cccfa2a0ac9063da0194c0906117269030906001906004016131ff565b5f604051808303815f87803b15801561173d575f80fd5b505af115801561174f573d5f803e3d5ffd5b5050604051631182550160e11b815271721c310194ccfc01e523fc93c9cccfa2a0ac9250632304aa02915061178b90309060019060040161321c565b5f604051808303815f87803b1580156117a2575f80fd5b505af11580156117b4573d5f803e3d5ffd5b50505050565b5f6001600160a01b0382166117d9576117d96323d3ad8160e21b612035565b506001600160a01b03165f9081526005602052604090205467ffffffffffffffff1690565b6118066120de565b61180f5f6123de565b565b6118196120de565b600e6118258282612f02565b50506016805462ff0000191662010000179055565b6118426120de565b600b55565b606060038054610a6590612e86565b6009545f906001600160a01b03161561117857600954604051635caaa2a960e11b81523060048201526001600160a01b0390911690639445f53090829063b955455290602401606060405180830381865afa1580156118b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118db91906130c7565b60409081015190516001600160e01b031960e084901b1681526001600160781b0390911660048201526001600160a01b0385166024820152604401611139565b335f8181526007602090815260408083206001600160a01b0387168085529252909120805460ff1916841515179055906001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611987911515815260200190565b60405180910390a35050565b601080546114da90612e86565b6119a8612384565b5f6001600160a01b0382163b15611a21576040516301ffc9a760e01b81525f60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa925050508015611a19575060408051601f3d908101601f19168201909252611a1691810190613137565b60015b15611a215790505b6001600160a01b03821615801590611a37575080155b15611a55576040516332483afb60e01b815260040160405180910390fd5b600954604080516001600160a01b03928316815291841660208301527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac910160405180910390a150600980546001600160a01b0319166001600160a01b0392909216919091179055565b611ac76120de565b601680549115156101000261ff0019909216919091179055565b611aec848484610c0f565b6001600160a01b0383163b156117b457611b088484848461242f565b6117b4576117b46368d2bf6b60e11b612035565b604080516060810182525f80825260208201819052918101919091526009546001600160a01b031615611bb357600954604051635caaa2a960e11b81523060048201526001600160a01b039091169063b955455290602401606060405180830381865afa158015611b8f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114a291906130c7565b50604080516060810182525f808252602082018190529181019190915290565b6060611bde82611feb565b611c425760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610dbb565b60165462010000900460ff1615155f03611ce65760108054611c6390612e86565b80601f0160208091040260200160405190810160405280929190818152602001828054611c8f90612e86565b8015611cda5780601f10611cb157610100808354040283529160200191611cda565b820191905f5260205f20905b815481529060010190602001808311611cbd57829003601f168201915b50505050509050919050565b5f611cef61250e565b90505f815111611d0d5760405180602001604052805f815250610c08565b80611d178461251d565b600f604051602001611d2b93929190613255565b6040516020818303038152906040529392505050565b6009546060906001600160a01b0316156114a757600954604051635caaa2a960e11b81523060048201526001600160a01b03909116906317e94a6c90829063b955455290602401606060405180830381865afa158015611da3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc791906130c7565b60409081015190516001600160e01b031960e084901b1681526001600160781b039091166004820152602401611461565b611e006120de565b600c55565b611e0d6120de565b60168054911515620100000262ff000019909216919091179055565b611e316120de565b60115482611e3d6121f7565b611e479190613000565b1115611e655760405162461bcd60e51b8152600401610dbb90613013565b610b2b818361221a565b611e776120de565b6001600160a01b038116611ea057604051631e4fbdf760e01b81525f6004820152602401610dbb565b6111fe816123de565b611eb1612384565b611eba846119a0565b604051630368065360e61b81526001600160a01b0385169063da0194c090611ee890309087906004016131ff565b5f604051808303815f87803b158015611eff575f80fd5b505af1158015611f11573d5f803e3d5ffd5b5050604051631182550160e11b81526001600160a01b0387169250632304aa029150611f43903090869060040161321c565b5f604051808303815f87803b158015611f5a575f80fd5b505af1158015611f6c573d5f803e3d5ffd5b505060405163235d10c560e21b81526001600160a01b0387169250638d7443149150611681903090859060040161321c565b5f6301ffc9a760e01b6001600160e01b031983161480611fce57506380ac58cd60e01b6001600160e01b03198316145b80610a505750506001600160e01b031916635b5e139f60e01b1490565b5f81600111612030575f54821015612030575f5b505f82815260046020526040812054908190036120265761201f836132dd565b9250611fff565b600160e01b161590505b919050565b805f5260045ffd5b5f612047836116c1565b905081801561205f5750336001600160a01b03821614155b156120825761206e81336109a2565b612082576120826367d9dca160e11b612035565b5f8381526006602052604080822080546001600160a01b0319166001600160a01b0388811691821790925591518693918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a450505050565b600a546001600160a01b0316331461180f5760405163118cdaa760e01b8152336004820152602401610dbb565b5f8160011161219457505f81815260046020526040902054805f03612182575f54821061214257612142636f96cda160e11b612035565b5b505f19015f81815260046020526040902054801561214357600160e01b81165f0361216d57919050565b61217d636f96cda160e11b612035565b612143565b600160e01b81165f0361219457919050565b612030636f96cda160e11b612035565b5f5b818110156121ca576121c285856121bd8487613000565b6125ad565b6001016121a6565b5050505050565b5f5b818110156121ca576121ef85856121ea8487613000565b612603565b6001016121d3565b5f545f199081019080610b6d565b5f82612211858461264a565b14949350505050565b610b2b828260405180602001604052805f81525061268c565b5f61223d8361210b565b9050805f80612259865f90815260066020526040902080549091565b9150915084156122905761226e818433610c55565b6122905761227c83336109a2565b61229057612290632ce44b5f60e11b612035565b61229d835f8860016121a4565b80156122a7575f82555b6001600160a01b0383165f81815260056020526040902080546fffffffffffffffffffffffffffffffff0190554260a01b17600360e01b175f87815260046020526040812091909155600160e11b8516900361233057600186015f81815260046020526040812054900361232e575f54811461232e575f8181526004602052604090208590555b505b60405186905f906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a4612374835f8860016121d1565b5050600180548101905550505050565b600a546001600160a01b0316331461180f5760405162461bcd60e51b815260206004820181905260248201527f43616c6c6572206973206e6f742074686520636f6e7472616374206f776e65726044820152606401610dbb565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b604051630a85bd0160e11b81525f906001600160a01b0385169063150b7a02906124639033908990889088906004016132f2565b6020604051808303815f875af192505050801561249d575060408051601f3d908101601f1916820190925261249a9181019061332e565b60015b6124f0573d8080156124ca576040519150601f19603f3d011682016040523d82523d5f602084013e6124cf565b606091505b5080515f036124e8576124e86368d2bf6b60e11b612035565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6060600e8054610a6590612e86565b60605f612529836126e5565b60010190505f8167ffffffffffffffff811115612548576125486129fa565b6040519080825280601f01601f191660200182016040528015612572576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461257c57509392505050565b6001600160a01b0383811615908316158180156125c75750805b156125e557604051635cbd944160e01b815260040160405180910390fd5b81156125f1575b6121ca565b806125ec576121ca33868686346127bc565b6001600160a01b03838116159083161581801561261d5750805b1561263b57604051635cbd944160e01b815260040160405180910390fd5b816125ec57806125ec576121ca565b5f81815b84518110156126845761267a8286838151811061266d5761266d613349565b602002602001015161283d565b915060010161264e565b509392505050565b6126968383612866565b6001600160a01b0383163b15611074575f548281035b6126be5f86838060010194508661242f565b6126d2576126d26368d2bf6b60e11b612035565b8181106126ac57815f54146121ca575f80fd5b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106127235772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061274f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061276d57662386f26fc10000830492506010015b6305f5e1008310612785576305f5e100830492506008015b612710831061279957612710830492506004015b606483106127ab576064830492506002015b600a8310610a505760010192915050565b6009546001600160a01b0316156121ca5760095460405163050bf71960e31b81526001600160a01b038781166004830152868116602483015285811660448301529091169063285fb8c8906064015f6040518083038186803b158015612820575f80fd5b505afa158015612832573d5f803e3d5ffd5b505050505050505050565b5f818310612857575f828152602084905260409020610c08565b505f9182526020526040902090565b5f8054908290036128815761288163b562e8dd60e01b612035565b61288d5f8483856121a4565b5f8181526004602090815260408083206001600160a01b0387164260a01b6001881460e11b178117909155808452600590925282208054680100000000000000018602019055908190036128ea576128ea622e076360e81b612035565b818301825b80835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a48181600101915081036128ef57505f90815561107491508483856121d1565b6001600160e01b0319811681146111fe575f80fd5b5f6020828403121561295a575f80fd5b8135610c0881612935565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610c086020830184612965565b5f602082840312156129b5575f80fd5b5035919050565b6001600160a01b03811681146111fe575f80fd5b5f80604083850312156129e1575f80fd5b82356129ec816129bc565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a3757612a376129fa565b604052919050565b5f67ffffffffffffffff831115612a5857612a586129fa565b612a6b601f8401601f1916602001612a0e565b9050828152838383011115612a7e575f80fd5b828260208301375f602084830101529392505050565b5f60208284031215612aa4575f80fd5b813567ffffffffffffffff811115612aba575f80fd5b8201601f81018413612aca575f80fd5b61250684823560208401612a3f565b80151581146111fe575f80fd5b5f60208284031215612af6575f80fd5b8135610c0881612ad9565b5f805f60608486031215612b13575f80fd5b8335612b1e816129bc565b92506020840135612b2e816129bc565b91506040840135612b3e816129bc565b809150509250925092565b60078110612b6557634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610a508284612b49565b5f805f60608486031215612b89575f80fd5b8335612b94816129bc565b92506020840135612ba4816129bc565b929592945050506040919091013590565b5f805f60408486031215612bc7575f80fd5b83359250602084013567ffffffffffffffff80821115612be5575f80fd5b818601915086601f830112612bf8575f80fd5b813581811115612c06575f80fd5b8760208260051b8501011115612c1a575f80fd5b6020830194508093505050509250925092565b5f60208284031215612c3d575f80fd5b8135610c08816129bc565b602080825282518282018190525f9190848201906040850190845b81811015612c885783516001600160a01b031683529284019291840191600101612c63565b50909695505050505050565b600781106111fe575f80fd5b6001600160781b03811681146111fe575f80fd5b5f805f60608486031215612cc6575f80fd5b8335612cd181612c94565b92506020840135612ce181612ca0565b91506040840135612b3e81612ca0565b5f8060408385031215612d02575f80fd5b8235612d0d816129bc565b91506020830135612d1d81612ad9565b809150509250929050565b5f805f8060808587031215612d3b575f80fd5b8435612d46816129bc565b93506020850135612d56816129bc565b925060408501359150606085013567ffffffffffffffff811115612d78575f80fd5b8501601f81018713612d88575f80fd5b612d9787823560208401612a3f565b91505092959194509250565b5f606082019050612db5828451612b49565b60208301516001600160781b038082166020850152806040860151166040850152505092915050565b5f8060408385031215612def575f80fd5b8235612dfa816129bc565b91506020830135612d1d816129bc565b5f8060408385031215612e1b575f80fd5b823591506020830135612d1d816129bc565b5f805f8060808587031215612e40575f80fd5b8435612e4b816129bc565b93506020850135612e5b81612c94565b92506040850135612e6b81612ca0565b91506060850135612e7b81612ca0565b939692955090935050565b600181811c90821680612e9a57607f821691505b602082108103612eb857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561107457805f5260205f20601f840160051c81016020851015612ee35750805b601f840160051c820191505b818110156121ca575f8155600101612eef565b815167ffffffffffffffff811115612f1c57612f1c6129fa565b612f3081612f2a8454612e86565b84612ebe565b602080601f831160018114612f63575f8415612f4c5750858301515b5f19600386901b1c1916600185901b178555610f7f565b5f85815260208120601f198616915b82811015612f9157888601518255948401946001909101908401612f72565b5085821015612fae57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b602080825260149082015273496e76616c6964206d696e7420616d6f756e742160601b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610a5057610a50612fec565b6020808252601490820152734d617820737570706c792065786365656465642160601b604082015260600190565b8082028115828204841417610a5057610a50612fec565b602080825260139082015272496e73756666696369656e742066756e64732160681b604082015260600190565b60208082526022908201527f5468652077686974656c6973742073616c65206973206e6f7420656e61626c65604082015261642160f01b606082015260800190565b5f606082840312156130d7575f80fd5b6040516060810181811067ffffffffffffffff821117156130fa576130fa6129fa565b604052825161310881612c94565b8152602083015161311881612ca0565b6020820152604083015161312b81612ca0565b60408201529392505050565b5f60208284031215613147575f80fd5b8151610c0881612ad9565b5f6020808385031215613163575f80fd5b825167ffffffffffffffff8082111561317a575f80fd5b818501915085601f83011261318d575f80fd5b81518181111561319f5761319f6129fa565b8060051b91506131b0848301612a0e565b81815291830184019184810190888411156131c9575f80fd5b938501935b838510156131f357845192506131e3836129bc565b82825293850193908501906131ce565b98975050505050505050565b6001600160a01b038316815260408101610c086020830184612b49565b6001600160a01b039290921682526001600160781b0316602082015260400190565b5f81518060208401855e5f93019283525090919050565b5f613269613263838761323e565b8561323e565b5f845461327581612e86565b6001828116801561328d57600181146132a2576132ce565b60ff19841686528215158302860194506132ce565b885f526020805f205f5b858110156132c5578154898201529084019082016132ac565b50505082860194505b50929998505050505050505050565b5f816132eb576132eb612fec565b505f190190565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061332490830184612965565b9695505050505050565b5f6020828403121561333e575f80fd5b8151610c0881612935565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220bf099990b1da4a58f85f220d60c83cc64e1e7c59e3cfeb5e2e1d5bf87bea442f64736f6c6343000819003368747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d586d52357a4e776b654c42613645526d32664e554c5a516f58516a4167434e42784a6d53784d6444744d47382f756e72657665616c65642e6a736f6e