[ { "inputs": [ { "internalType": "address", "name": "_defaultAdmin", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "string", "name": "_contractURI", "type": "string" }, { "internalType": "address", "name": "_royaltyRecipient", "type": "address" }, { "internalType": "uint16", "name": "_royaltyBps", "type": "uint16" }, { "components": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "internalType": "struct IExtension.ExtensionMetadata", "name": "metadata", "type": "tuple" }, { "components": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "internalType": "string", "name": "functionSignature", "type": "string" } ], "internalType": "struct IExtension.ExtensionFunction[]", "name": "functions", "type": "tuple[]" } ], "internalType": "struct IExtension.Extension[]", "name": "_extensions", "type": "tuple[]" }, { "internalType": "address", "name": "_trustedForwarders", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidDefaultRoyalty", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidDefaultRoyaltyReceiver", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidTokenRoyalty", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidTokenRoyaltyReceiver", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "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": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "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": false, "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "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": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "extensionAddress", "type": "address" }, { "indexed": true, "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "indexed": false, "internalType": "string", "name": "functionSignature", "type": "string" } ], "name": "ExtensionAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "extensionAddress", "type": "address" }, { "indexed": true, "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "indexed": false, "internalType": "string", "name": "functionSignature", "type": "string" } ], "name": "ExtensionRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldExtensionAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newExtensionAddress", "type": "address" }, { "indexed": true, "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "indexed": false, "internalType": "string", "name": "functionSignature", "type": "string" } ], "name": "ExtensionUpdated", "type": "event" }, { "anonymous": false, "inputs": [], "name": "MetadataFrozen", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "signer", "type": "address" }, { "components": [ { "internalType": "uint128", "name": "validityStartTimestamp", "type": "uint128" }, { "internalType": "uint128", "name": "validityEndTimestamp", "type": "uint128" }, { "internalType": "bytes32", "name": "uid", "type": "bytes32" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "indexed": false, "internalType": "struct ISignatureAction.GenericRequest", "name": "_req", "type": "tuple" } ], "name": "RequestExecuted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "index", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "revealedURI", "type": "string" } ], "name": "TokenURIRevealed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "claimer", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "startTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "quantityClaimed", "type": "uint256" } ], "name": "TokensClaimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "startTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endTokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "baseURI", "type": "string" }, { "indexed": false, "internalType": "bytes", "name": "encryptedBaseURI", "type": "bytes" } ], "name": "TokensLazyMinted", "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" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "internalType": "struct IExtension.ExtensionMetadata", "name": "metadata", "type": "tuple" }, { "components": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "internalType": "string", "name": "functionSignature", "type": "string" } ], "internalType": "struct IExtension.ExtensionFunction[]", "name": "functions", "type": "tuple[]" } ], "internalType": "struct IExtension.Extension", "name": "_extension", "type": "tuple" } ], "name": "addExtension", "outputs": [], "stateMutability": "nonpayable", "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": "", "type": "uint256" } ], "name": "batchFrozen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint128", "name": "validityStartTimestamp", "type": "uint128" }, { "internalType": "uint128", "name": "validityEndTimestamp", "type": "uint128" }, { "internalType": "bytes32", "name": "uid", "type": "bytes32" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "internalType": "struct ISignatureAction.GenericRequest", "name": "_req", "type": "tuple" }, { "internalType": "bytes", "name": "_signature", "type": "bytes" } ], "name": "claimWithSignature", "outputs": [ { "internalType": "address", "name": "signer", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "defaultExtensionSet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "bytes", "name": "key", "type": "bytes" } ], "name": "encryptDecrypt", "outputs": [ { "internalType": "bytes", "name": "result", "type": "bytes" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "encryptedData", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAllExtensions", "outputs": [ { "components": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "internalType": "struct IExtension.ExtensionMetadata", "name": "metadata", "type": "tuple" }, { "components": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "internalType": "string", "name": "functionSignature", "type": "string" } ], "internalType": "struct IExtension.ExtensionFunction[]", "name": "functions", "type": "tuple[]" } ], "internalType": "struct IExtension.Extension[]", "name": "allExtensions", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_extensionName", "type": "string" } ], "name": "getAllFunctionsOfExtension", "outputs": [ { "components": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "internalType": "string", "name": "functionSignature", "type": "string" } ], "internalType": "struct IExtension.ExtensionFunction[]", "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": "getBaseURICount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_index", "type": "uint256" } ], "name": "getBatchIdAtIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_extensionName", "type": "string" } ], "name": "getExtension", "outputs": [ { "components": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "internalType": "struct IExtension.ExtensionMetadata", "name": "metadata", "type": "tuple" }, { "components": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "internalType": "string", "name": "functionSignature", "type": "string" } ], "internalType": "struct IExtension.ExtensionFunction[]", "name": "functions", "type": "tuple[]" } ], "internalType": "struct IExtension.Extension", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "_functionSelector", "type": "bytes4" } ], "name": "getExtensionForFunction", "outputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "internalType": "struct IExtension.ExtensionMetadata", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_extensionName", "type": "string" } ], "name": "getExtensionImplementation", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "_functionSelector", "type": "bytes4" } ], "name": "getImplementationForFunction", "outputs": [ { "internalType": "address", "name": "extensionAddress", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_batchId", "type": "uint256" }, { "internalType": "bytes", "name": "_key", "type": "bytes" } ], "name": "getRevealURI", "outputs": [ { "internalType": "string", "name": "revealedURI", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "uint256", "name": "_batchId", "type": "uint256" } ], "name": "isEncryptedBatch", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "forwarder", "type": "address" } ], "name": "isTrustedForwarder", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "string", "name": "_baseURIForTokens", "type": "string" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "lazyMint", "outputs": [ { "internalType": "uint256", "name": "batchId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes[]", "name": "data", "type": "bytes[]" } ], "name": "multicall", "outputs": [ { "internalType": "bytes[]", "name": "results", "type": "bytes[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_extensionName", "type": "string" } ], "name": "removeExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_index", "type": "uint256" }, { "internalType": "bytes", "name": "_key", "type": "bytes" } ], "name": "reveal", "outputs": [ { "internalType": "string", "name": "revealedURI", "type": "string" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "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": "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": "uint256", "name": "_batchId", "type": "uint256" }, { "internalType": "string", "name": "_baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_uri", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "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": "", "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": [], "name": "trustedForwarder", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "implementation", "type": "address" } ], "internalType": "struct IExtension.ExtensionMetadata", "name": "metadata", "type": "tuple" }, { "components": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" }, { "internalType": "string", "name": "functionSignature", "type": "string" } ], "internalType": "struct IExtension.ExtensionFunction[]", "name": "functions", "type": "tuple[]" } ], "internalType": "struct IExtension.Extension", "name": "_extension", "type": "tuple" } ], "name": "updateExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint128", "name": "validityStartTimestamp", "type": "uint128" }, { "internalType": "uint128", "name": "validityEndTimestamp", "type": "uint128" }, { "internalType": "bytes32", "name": "uid", "type": "bytes32" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "internalType": "struct ISignatureAction.GenericRequest", "name": "_req", "type": "tuple" }, { "internalType": "bytes", "name": "_signature", "type": "bytes" } ], "name": "verify", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" }, { "internalType": "address", "name": "signer", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
6101a0604052346200087a57620075fc803803809162000022826101a062000ce9565b6101a03961010081126200087a576200003d6101a062000d0d565b6101c0519091906001600160401b0381116200087a576200006890826101a001906101a00162000d47565b6101e0519092906001600160401b0381116200087a576200009390836101a001906101a00162000d47565b610200519091906001600160401b0381116200087a57620000be90846101a001906101a00162000d47565b93620000cc61022062000d0d565b9260a06101a001519461ffff861686036200087a5761026051906001600160401b0382116200087a576101a081016101bf830112156200087a57816101a00151620001178162000da2565b9262000127604051948562000ce9565b81845260208401906101a084016101c0600585901b830101116200087a576101c08101915b6101c0600585901b830101831062000aa35750505050506200017360e06101a00162000d0d565b60405192620001828462000ccd565b600f84526e29b4b3b730ba3ab932a0b1ba34b7b760891b602085015260405194620001ad8662000ccd565b60018652603160f81b60208701528051906001600160401b038211620006e55760025490600182811c9216801562000a98575b6020831014620006c45781601f84931162000a37575b50602090601f8311600114620009b957600092620009ad575b50508160011b916000199060031b1c1916176002555b8051906001600160401b038211620006e55760035490600182811c92168015620009a2575b6020831014620006c45781601f84931162000930575b50602090601f8311600114620008a15760009262000895575b50508160011b916000199060031b1c1916176003555b6000805560805260405161121c8082016001600160401b03811183821017620006e557829162006360833903906000f0801562000820576001600160a01b03811660a05281519160005b838110620006fb5750505050620002f08162000de1565b61016052620002ff8262000f6f565b61018052602081519101209081610120526020815191012080610140524660e052604051917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020840152604083015260608201524660808201523060a082015260a081528060c081011060018060401b0360c083011117620006e55760c081016040526020815191012060c0523061010052835160018060401b038111620006e557601454600181811c91168015620006da575b6020821014620006c457601f81116200066b575b506020601f8211600114620005eb578190620004c4949596600092620005df575b50508160011b916000199060031b1c1916176014555b600080805260086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c88054908290557fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff90829081838180a481600080516020620075bc83398151915280825260016040832001908282549255838380a47f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c808352600160408420019183835493558380a4620004bd81620010c6565b5062001154565b50620004cf620011f3565b506127108061ffff841611620005bd57506001600160a01b0316908115620005a457604051620004ff8162000ccd565b82815261ffff821660209091015260a01b61ffff60a01b16176009556040516150649081620012fc823960805181818161117d015281816114e20152613867015260a0518181816109e201528181610fbb01528181614804015261491f015260c05181613c76015260e05181613d3101526101005181613c4001526101205181613cc501526101405181613ceb015261016051816115ba015261018051816115e30152f35b604051635b6cc80560e11b815260006004820152602490fd5b8260449161ffff60405192636f483d0960e01b84521660048301526024820152fd5b015190503880620003e9565b60146000908152600080516020620075dc8339815191529690601f198416905b81811062000652575091620004c49596979184600195941062000638575b505050811b01601455620003ff565b015160001960f88460031b161c1916905538808062000629565b838301518955600190980197602093840193016200060b565b6014600052600080516020620075dc833981519152601f830160051c81019160208410620006b9575b601f0160051c01905b818110620006ac5750620003c8565b600081556001016200069d565b909150819062000694565b634e487b7160e01b600052602260045260246000fd5b90607f1690620003b4565b634e487b7160e01b600052604160045260246000fd5b81518110156200087f57600581901b8201602001516001600160a01b0384163b156200087a57604051809163fdc9f25760e01b825260206004830152602081519160406024850152620007756200075f84516060606488015260c487019062000dba565b8484015186820360631901608488015262000dba565b6040909301516001600160a01b031660a485015201518282036023190160448401528051808352600581901b830160209081019392810192908101919060005b8281106200082c575050505050908060009203818360018060a01b0389165af18015620008205762000807575b506001810180911115620002d9575b634e487b7160e01b600052601160045260246000fd5b6001600160401b038111620006e55760405238620007e2565b6040513d6000823e3d90fd5b91939550919360208062000867600193601f198782030189526040838b5163ffffffff60e01b81511684520151918185820152019062000dba565b97019501910191869594939192620007b5565b600080fd5b634e487b7160e01b600052603260045260246000fd5b01519050388062000279565b6003600090815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b91905b601f198416851062000914576001945083601f19811610620008fa575b505050811b016003556200028f565b015160001960f88460031b161c19169055388080620008eb565b81810151835560209485019460019093019290910190620008ce565b60036000529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101602085106200099a575b90849392915b601f830160051c820181106200098a57505062000260565b6000815585945060010162000972565b50806200096c565b91607f16916200024a565b0151905038806200020f565b6002600090815293506000805160206200759c83398151915291905b601f198416851062000a1b576001945083601f1981161062000a01575b505050811b0160025562000225565b015160001960f88460031b161c19169055388080620009f2565b81810151835560209485019460019093019290910190620009d5565b60026000529091506000805160206200759c833981519152601f840160051c81016020851062000a90575b90849392915b601f830160051c8201811062000a80575050620001f6565b6000815585945060010162000a68565b508062000a62565b91607f1691620001e0565b82516001600160401b0381116200087a57601f199083016101a081019060409088038301126200087a576040519162000adc8362000ccd565b60208201516001600160401b0381116200087a57606090830191828a6101a0010301126200087a5760405190606082016001600160401b0381118382101762000cb85760405260208101516001600160401b0381116200087a5762000b4c9060208b6101a0019184010162000d47565b825260408101516001600160401b0381116200087a5762000b8b9162000b7f60609260208d6101a0019184010162000d47565b60208501520162000d0d565b60408201528252604081015160018060401b0381116200087a57876101a001603f8284010112156200087a576020818301015162000bc98162000da2565b9262000bd9604051948562000ce9565b81845260208401928a6101a00160408460051b8385010101116200087a57604081830101935b60408460051b8385010101851062000c2d57505050505060208281019190915290825292830192016200014c565b84516001600160401b0381116200087a57838301016040610160828f0301126200087a576040519162000c608362000ccd565b60408201516001600160e01b0319811681036200087a5783526060820151926001600160401b0384116200087a5762000ca88f93604060209687966101a00192010162000d47565b8382015281520194019362000bff565b60246000634e487b7160e01b81526041600452fd5b604081019081106001600160401b03821117620006e557604052565b601f909101601f19168101906001600160401b03821190821017620006e557604052565b51906001600160a01b03821682036200087a57565b60005b83811062000d365750506000910152565b818101518382015260200162000d25565b81601f820112156200087a5780516001600160401b038111620006e5576040519262000d7e601f8301601f19166020018562000ce9565b818452602082840101116200087a5762000d9f916020808501910162000d22565b90565b6001600160401b038111620006e55760051b60200190565b9060209162000dd58151809281855285808601910162000d22565b601f01601f1916010190565b80516020908181101562000e455750601f82511162000e1d578082519201519080831062000e0e57501790565b82600019910360031b1b161790565b62000e4160405192839263305a27a960e01b84526004840152602483019062000dba565b0390fd5b906001600160401b038211620006e557600b54926001938481811c9116801562000f64575b83821014620006c457601f811162000f2a575b5081601f841160011462000ebe575092829391839260009462000eb2575b50501b916000199060031b1c191617600b5560ff90565b01519250388062000e9b565b919083601f198116600b60005284600020946000905b8883831062000f0f575050501062000ef5575b505050811b01600b5560ff90565b015160001960f88460031b161c1916905538808062000ee7565b85870151885590960195948501948793509081019062000ed4565b600b60005284601f84600020920160051c820191601f860160051c015b82811062000f5757505062000e7d565b6000815501859062000f47565b90607f169062000e6a565b80516020908181101562000f9c5750601f82511162000e1d578082519201519080831062000e0e57501790565b906001600160401b038211620006e557600c54926001938481811c91168015620010bb575b83821014620006c457601f811162001081575b5081601f841160011462001015575092829391839260009462001009575b50501b916000199060031b1c191617600c5560ff90565b01519250388062000ff2565b919083601f198116600c60005284600020946000905b888383106200106657505050106200104c575b505050811b01600c5560ff90565b015160001960f88460031b161c191690553880806200103e565b8587015188559096019594850194879350908101906200102b565b600c60005284601f84600020920160051c820191601f860160051c015b828110620010ae57505062000fd4565b600081550185906200109e565b90607f169062000fc1565b6001600160a01b0390811660008181527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7602052604081205490929060ff166200114f5782805260086020526040832082845260205260408320600160ff1982541617905562001135620012bc565b16916000805160206200757c8339815191528180a4600190565b505090565b6001600160a01b0390811660008181527f51a495916474fe1a0c0fcfb65a8a97682b84a054118858cdd1f5dfd7fc0919eb60205260408120549092600080516020620075bc8339815191529160ff16620011ed576000805160206200757c8339815191529082855260086020526040852084865260205260408520600160ff19825416179055620011e4620012bc565b169380a4600190565b50505090565b60008080527f85da32aea425a83be1133c4e958580985fa04602ddf03ad35008a70703b20eb76020527fe3eaa97df54d66938ed55b4ec3f8335ad12a29512079af854e696c4d6dedf274547f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c919060ff16620012b7578181526008602090815260408083208380529091528120805460ff191660011790556001600160a01b036200129d620012bc565b16916000805160206200757c8339815191528280a4600190565b905090565b6080516001600160a01b0316331480620012ef575b15620012eb576013193601368111620007f1573560601c90565b3390565b506014361015620012d156fe60806040526004361015610015575b366142c257005b60003560e01c8063012b87291461036557806301ffc9a71461036057806304634d8d1461035b57806306fdde0314610356578063081812fc14610351578063095ea7b31461034c57806318160ddd146103475780631ee8b41b14610342578063212f69121461033d57806323b872dd146103385780632419f51b14610333578063248a9ca31461032e5780632a55205a146103295780632f2ff15d1461032457806333cfcb9f1461031f57806336568abe1461031a57806340c10f191461031557806342842e0e1461031057806342966c681461030b578063492e224b146103065780634a00cc4814610301578063572b6c05146102fc5780635944c753146102f75780636352211e146102f257806363b45e2d146102ed57806370a08231146102e85780637a70a895146102e35780637c3b1137146102de5780637da0a877146102d957806383040532146102d457806384b0196e146102cf57806391d14854146102ca578063938e3d7b146102c557806395d89b41146102c05780639fc4d68f146102bb578063a05112fc146102b6578063a217fddf146102b1578063a22cb465146102ac578063ac9650d8146102a7578063b88d4fde146102a2578063c22707ee1461029d578063c4376dd714610298578063c54c07e114610293578063c87b56dd1461028e578063ce0b601314610289578063ce80564214610284578063d37c353b1461027f578063d547741f1461027a578063e05688fe14610275578063e715032214610270578063e8a3d4851461026b578063e985e9c5146102665763ee7d2adf0361000e57612660565b612614565b612570565b612519565b612362565b612320565b612152565b61204b565b61200c565b611fed565b611daf565b611bdb565b611bb3565b611b62565b611afd565b611a15565b6119f9565b6119bc565b6118a8565b6117d5565b6116db565b611697565b61159f565b61156e565b6114cc565b6114a3565b6113ab565b6112d4565b6112b6565b611287565b6111a4565b611150565b610f94565b610e73565b610d3f565b610d1c565b610ca2565b610c4d565b610c0a565b610bc8565b610b1e565b610aef565b610ac9565b610ab7565b610a4f565b6109cc565b6109a9565b610900565b610889565b6107ad565b6106b4565b6105af565b610508565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761039b57604052565b61036a565b606081019081106001600160401b0382111761039b57604052565b602081019081106001600160401b0382111761039b57604052565b60c081019081106001600160401b0382111761039b57604052565b90601f801991011681019081106001600160401b0382111761039b57604052565b6040519061041f82610380565b565b6001600160401b03811161039b57601f01601f191660200190565b92919261044882610421565b9161045660405193846103f1565b829481845281830111610473578281602093846000960137010152565b600080fd5b9080601f83011215610473578160206104939335910161043c565b90565b602060031982011261047357600435906001600160401b0382116104735761049391600401610478565b60005b8381106104d35750506000910152565b81810151838201526020016104c3565b906020916104fc815180928185528580860191016104c0565b601f01601f1916010190565b346104735760208061052161051c36610496565b6147b9565b01519060409182519180830181845282518091528484019180868360051b8701019401926000965b8388106105565786860387f35b9091929394838061058c600193603f198b820301875285838b5163ffffffff60e01b8151168452015191818582015201906104e3565b970193019701969093929193610549565b6001600160e01b031981160361047357565b34610473576020366003190112610473576106166004356105cf8161059d565b6001600160e01b031981166301ffc9a760e01b811491908215610666575b8215610655575b8215610644575b821561061a575b505060405190151581529081906020820190565b0390f35b63152a902d60e11b1491508115610634575b503880610602565b61063e91506137e5565b3861062c565b915061064f816137e5565b916105fb565b635b5e139f60e01b811492506105f4565b6380ac58cd60e01b811492506105ed565b6001600160a01b0381160361047357565b602435906001600160601b038216820361047357565b604435906001600160601b038216820361047357565b34610473576040366003190112610473576004356106d181610677565b6106d9610688565b906106e26127ee565b6001600160601b03821661271080821161077e5750506001600160a01b038116156107615761073861075f92610728610719610412565b6001600160a01b039094168452565b6001600160601b03166020830152565b805160209091015160a01b6001600160a01b0319166001600160a01b039190911617600955565b005b604051635b6cc80560e11b815260006004820152602490fd5b0390fd5b6044925060405191636f483d0960e01b835260048301526024820152fd5b9060206104939281815201906104e3565b346104735760008060031936011261088657604051816002546107cf816118ec565b8084529060019081811690811561085e5750600114610805575b610616846107f9818803826103f1565b6040519182918261079c565b60028352602094507f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b82841061084b5750505081610616936107f992820101936107e9565b805485850187015292850192810161082f565b61061696506107f99450602092508593915060ff191682840152151560051b820101936107e9565b80fd5b34610473576020366003190112610473576004356000548110806108e4575b156108d2576000908152600660209081526040918290205491516001600160a01b03909216825290f35b6040516333d1c03960e21b8152600490fd5b50600081815260046020526040902054600160e01b16156108a8565b60403660031901126104735760043561091881610677565b6024356001600160a01b038061092d83613d57565b1690813303610978575b600093838552600660205261094f8160408720613811565b16907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258480a480f35b81600052600760205260ff61099133604060002061277c565b5416610937576040516367d9dca160e11b8152600490fd5b346104735760003660031901126104735760206000546001549003604051908152f35b34610473576000366003190112610473576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b906040610a3c610a2a84516060855260608501906104e3565b602085015184820360208601526104e3565b928101516001600160a01b031691015290565b3461047357602036600319011261047357610616610a77600435610a728161059d565b6148bd565b604051918291602083526020830190610a11565b606090600319011261047357600435610aa381610677565b90602435610ab081610677565b9060443590565b61075f610ac336610a8b565b91613dc6565b34610473576020366003190112610473576020610ae7600435612ef4565b604051908152f35b346104735760203660031901126104735760043560005260086020526020600160406000200154604051908152f35b3461047357604036600319011261047357600435600052600a602052604060002060405190610b4c82610380565b546001600160a01b03811680835260a09190911c602083015215610bba575b6020810151610b9e9061271090610b8d906001600160601b0316602435612a41565b92519204916001600160a01b031690565b604080516001600160a01b039290921682526020820192909252f35b50610bc3612a05565b610b6b565b346104735760403660031901126104735761075f602435600435610beb82610677565b806000526008602052610c056001604060002001546128f0565b612912565b34610473576040366003190112610473576024356001600160401b03811161047357610c3d61075f913690600401610478565b610c456127ee565b60043561340a565b3461047357604036600319011261047357602435610c6a81610677565b6001600160a01b0380610c7b613864565b1690821603610c905761075f90600435612995565b60405163334bd91960e11b8152600490fd5b3461047357604036600319011261047357600435610cbf81610677565b602435610cca61285e565b600054818101809111610d175760125410610ce85761075f9161420f565b60405162461bcd60e51b815260206004820152600760248201526621546f6b656e7360c81b6044820152606490fd5b612a2b565b61075f610d2836610a8b565b9060405192610d36846103bb565b600084526140dd565b3461047357602036600319011261047357600435610d5c81613d57565b60008281526006602052604090208054916001600160a01b03811691338085149084141715610d8a565b1590565b610e3d575b600093610d9b84613f10565b610e34575b50610daa82612762565b80546001600160801b030190554260a01b8217600360e01b17610dcc85611511565b55600160e11b811615610e01575b506000805160206150188339815191528280a461075f610dfc60015460010190565b600155565b60018401610e0e81611511565b5415610e1b575b50610dda565b83548114610e1557610e2c90611511565b553880610e15565b83905538610da0565b610e5c610d86610e5533610e5087612748565b61277c565b5460ff1690565b15610d8f57604051632ce44b5f60e11b8152600490fd5b34610473576020366003190112610473576020610e91600435613169565b6040519015158152f35b805190610eb060409283855283850190610a11565b90602080910151938181840391015283519182815281810182808560051b8401019601946000925b858410610ee9575050505050505090565b909192939495968580610f21600193601f1986820301885286838d5163ffffffff60e01b8151168452015191818582015201906104e3565b990194019401929594939190610ed8565b602080820190808352835180925260408301928160408460051b8301019501936000915b848310610f665750505050505090565b9091929394958480610f84600193603f198682030187528a51610e9b565b9801930193019194939290610f56565b346104735760008060031936011261088657604051630940198960e31b81529080826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561114b578192611127575b50815191610fff614f83565b80519280815b8681106110f257506110236110289161101e88886130eb565b612a63565b6145f0565b948193825b82811061109757505050915b83831061104e57604051806106168782610f32565b61108b6110919161107061106b6110658787612b7d565b51614640565b61478d565b61107a8289612b7d565b526110858188612b7d565b506130dd565b926130dd565b91611039565b6110af610d866110a78385612b7d565b515151614de4565b6110c2575b6110bd906130dd565b61102d565b946110ea6110bd916110d48885612b7d565b516110df828c612b7d565b52611085818b612b7d565b9590506110b4565b6110ff6110a78287612b7d565b611112575b61110d906130dd565b611005565b9061111f61110d916130dd565b919050611104565b6111449192503d8084833e61113c81836103f1565b81019061451a565b9038610ff3565b613ae4565b3461047357602036600319011261047357602060043561116f81610677565b6040519060018060a01b03807f0000000000000000000000000000000000000000000000000000000000000000169116148152f35b34610473576060366003190112610473576004356024356111c481610677565b6111cc61069e565b6111d46127ee565b6127106001600160601b0382168181116112635750506001600160a01b038216156112435761075f9261122e61123e9261121e61120f610412565b6001600160a01b039096168652565b6001600160601b03166020850152565b600052600a602052604060002090565b613830565b604051634b4f842960e11b81526004810184905260006024820152604490fd5b60649185916040519263dfd1fc1b60e01b8452600484015260248301526044820152fd5b346104735760203660031901126104735760206001600160a01b036112ad600435613d57565b16604051908152f35b34610473576000366003190112610473576020600f54604051908152f35b34610473576020366003190112610473576004356112f181610677565b6001600160a01b0316801561132157600052600560205260206001600160401b0360406000205416604051908152f35b6040516323d3ad8160e21b8152600490fd5b9181601f84011215610473578235916001600160401b038311610473576020838186019501011161047357565b90600319604081840112610473576004356001600160401b03918282116104735760809082860301126104735760040192602435918211610473576113a791600401611333565b9091565b34610473576113b936611360565b91906113d36113cb6060840184612adf565b8101906133eb565b926001600160a01b0390911691831561147857600054916113f485846130eb565b60125410610ce857610616957fff097c7d8b1957a4ff09ef1361b5fb54dcede3941ba836d0beb9d10bec725de69261142b926139b5565b93611436818561420f565b61144d611441613864565b6001600160a01b031690565b60408051948552602085019290925292a36040516001600160a01b0390911681529081906020820190565b60405162461bcd60e51b815260206004820152600360248201526271747960e81b6044820152606490fd5b346104735760206001600160a01b0360406114c061051c36610496565b51015116604051908152f35b34610473576000366003190112610473576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6000526004602052604060002090565b7f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c60005260086020527f85da32aea425a83be1133c4e958580985fa04602ddf03ad35008a70703b20eb790565b34610473576020366003190112610473576004356000526011602052602060ff604060002054166040519015158152f35b346104735760008060031936011261088657611649906115de7f0000000000000000000000000000000000000000000000000000000000000000612d00565b6116077f0000000000000000000000000000000000000000000000000000000000000000612df8565b9160405191611615836103bb565b818352604051948594600f60f81b865261163b60209360e08589015260e08801906104e3565b9086820360408801526104e3565b904660608601523060808601528260a086015284820360c08601528080855193848152019401925b82811061168057505050500390f35b835185528695509381019392810192600101611671565b3461047357604036600319011261047357602060ff6116cf6024356116bb81610677565b60043560005260088452604060002061277c565b54166040519015158152f35b34610473576116e936610496565b6116f16127ee565b80516001600160401b03811161039b57611715816117106014546118ec565b61319b565b602080601f831160011461175257508192600092611747575b5050600019600383901b1c191660019190911b17601455005b01519050388061172e565b6014600052601f198316939091907fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec926000905b8682106117bd57505083600195106117a4575b505050811b01601455005b015160001960f88460031b161c19169055388080611799565b80600185968294968601518155019501930190611786565b346104735760008060031936011261088657604051816003546117f7816118ec565b8084529060019081811690811561085e575060011461182057610616846107f9818803826103f1565b60038352602094507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8284106118665750505081610616936107f992820101936107e9565b805485850187015292850192810161184a565b9060406003198301126104735760043591602435906001600160401b038211610473576113a791600401611333565b34610473576106166118c26118bc36611879565b91613033565b6040519182916020835260208301906104e3565b634e487b7160e01b600052600060045260246000fd5b90600182811c9216801561191c575b602083101461190657565b634e487b7160e01b600052602260045260246000fd5b91607f16916118fb565b9060009291805491611937836118ec565b9182825260019384811690816000146119995750600114611959575b50505050565b90919394506000526020928360002092846000945b838610611985575050505001019038808080611953565b80548587018301529401938590820161196e565b9294505050602093945060ff191683830152151560051b01019038808080611953565b3461047357602036600319011261047357600435600052600e6020526106166119f26118c2604060002060405192838092611926565b03826103f1565b3461047357600036600319011261047357602060405160008152f35b3461047357604036600319011261047357600435611a3281610677565b6024359081151580920361047357336000526007602052611a5781604060002061277c565b60ff1981541660ff841617905560405191825260018060a01b0316907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b602080820190808352835180925260408301928160408460051b8301019501936000915b848310611acf5750505050505090565b9091929394958480611aed600193603f198682030187528a516104e3565b9801930193019194939290611abf565b34610473576020366003190112610473576001600160401b036004358181116104735736602382011215610473578060040135918211610473573660248360051b8301011161047357610616916024611b569201612b91565b60405191829182611a9b565b608036600319011261047357600435611b7a81610677565b602435611b8681610677565b606435916001600160401b03831161047357611ba961075f933690600401610478565b91604435916140dd565b3461047357610616611bc761051c36610496565b604051918291602083526020830190610e9b565b34610473576040611bf4611bee36611360565b916138bd565b825191151582526001600160a01b03166020820152f35b6001600160401b03811161039b5760051b60200190565b81601f8201121561047357803590611c3982611c0b565b92604092611c49845195866103f1565b808552602093848087019260051b8501019383851161047357858101925b858410611c78575050505050505090565b6001600160401b0384358181116104735783019184601f198489030112610473578451611ca481610380565b89840135611cb18161059d565b81528584013592831161047357611ccf888b80969581960101610478565b83820152815201930192611c67565b60031990602081830112610473576004908135916001600160401b038084116104735760408585850301126104735760405194611d1a86610380565b848301358281116104735760609086019182860301126104735760405190611d41826103a0565b83810135838111610473578585611d5a92840101610478565b825260248101359083821161047357611d798686604494840101610478565b60208401520135611d8981610677565b60408201528552602484013590811161047357611da7930101611c22565b602082015290565b3461047357611dbd36611cde565b611dcd611dc8614358565b614301565b805151611de4611ddc82614685565b541515614bbe565b611e006002611df283614640565b01546001600160a01b031690565b82516040908101516001600160a01b0393919284169190611e25908516831415614c1c565b611e388551611e3383614640565b6149ee565b6003611e4d81611e4784614640565b01614705565b805190611e6383611e5d86614640565b01614cc3565b60005b828110611fbc57505050602094858701918251519760005b898110611e8757005b80855190611e9491612b7d565b51611e9e90614a91565b8982875190611eac91612b7d565b5101518951808c81019283611ec091612b2d565b03601f1981018252611ed290826103f1565b5190206001600160e01b031991611eee91831690831614614a9f565b825182875190611efd91612b7d565b51611f0790614a91565b611f1090614885565b90611f1a916149ee565b83611f2488614640565b0182875190611f3291612b7d565b51611f3c91614b72565b82518901516001600160a01b0316908883885190611f5991612b7d565b51611f6390614a91565b918c858a5190611f7291612b7d565b51015192888d5192839216951693611f8a908261079c565b037f7f4649aa14a7e9abd7f21a02ea35b32c907d59bb701c52c0e028ddf57533c74c91a4611fb7906130dd565b611e7e565b80611fe3611fde611fd9611fd3611fe89587612b7d565b51614a91565b614885565b614d19565b6130dd565b611e66565b34610473576020366003190112610473576106166118c2600435613590565b3461047357602036600319011261047357602060043561202b8161059d565b6001600160a01b0390604090612040906148bd565b015116604051908152f35b346104735761205936611879565b9161206261285e565b61206b81612ef4565b612076848483613033565b92612090604051612086816103bb565b600081528361321a565b61209a848361340a565b6120a2613864565b906000194301438111610d17576120ff60946106169861211395604051948286936020850198893783019144602084015260018060601b03199060601b1660408301524260548301524060748201520360748101845201826103f1565b519020916000526013602052604060002090565b557f6df1d8db2a036436ffe0b2d1833f2c5f1e624818dfce2578c0faa4b83ef9998d60405180612143858261079c565b0390a26040519182918261079c565b34610473576060366003190112610473576001600160401b0360043560243582811161047357612186903690600401611333565b9091604435848111610473576121a0903690600401611333565b9390946121ab61285e565b846122b7575b50811561228a57601254926121c736828461043c565b9280850195868611610d1757600f5497600160401b89101561039b5761226a612265612277946122567f2a0365091ef1a40953c670dce28177e37520648a6fdc91506bffac0ab045570d996122438d6106169f80600161222a9201600f55612eb2565b90919082549060031b91821b91600019901b1916179055565b8c60005260106020526040600020613343565b61225f8b601255565b896130eb565b612a54565b9360405195869586613317565b0390a26040519081529081906020820190565b60405162461bcd60e51b81526020600482015260056024820152640c08185b5d60da1b6044820152606490fd5b848601604087820312610473578635918211610473576122d8918701610478565b51151580612313575b6122ec575b386121b1565b601254828101809111610d175761230e9061230836878961043c565b9061321a565b6122e6565b50602085013515156122e1565b346104735760403660031901126104735761075f60243560043561234382610677565b80600052600860205261235d6001604060002001546128f0565b612995565b346104735761237036611cde565b61237b611dc8614358565b80515161238f61238a82614d5a565b614990565b61239d8251611e3383614640565b81516040908101516001600160a01b0392906123bc9084161515614a24565b602092838501908151519560005b8781106123d357005b808461245161243f6124328a6124146124228e806124038a6123fc611fd36125149e8d51612b7d565b9a51612b7d565b510151935192839182018095612b2d565b03601f1981018352826103f1565b5190206001600160e01b03191690565b6001600160e01b03191690565b6001600160e01b031992831614614a9f565b61247361246d6114416002611df2611fd9611fd3888d51612b7d565b15614b07565b6124898451611e33611fd9611fd3868b51612b7d565b6124aa600361249789614640565b016124a3848951612b7d565b5190614b72565b83518801516001600160a01b0316907fb5a3e9571e367979a4a14de42b248d0837c26fd8e879846062abcf7cee1712736124e8611fd3858a51612b7d565b918b6124f5868b51612b7d565b5101519261250c898d51938493169616948261079c565b0390a36130dd565b6123ca565b34610473576040366003190112610473576001600160401b036004358181116104735761254a903690600401610478565b90602435908111610473576106169161256a6118c2923690600401611333565b916130f8565b34610473576000806003193601126108865760405181601454612592816118ec565b8084529060019081811690811561085e57506001146125bb57610616846107f9818803826103f1565b60148352602094507fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec5b8284106126015750505081610616936107f992820101936107e9565b80548585018701529285019281016125e5565b3461047357604036600319011261047357602060ff6116cf60043561263881610677565b6024359061264582610677565b6001600160a01b03166000908152600785526040902061277c565b346104735761266e36610496565b612679611dc8614358565b61268a61268582614eb6565b614bbe565b6126986002611df283614640565b6126b76126b26126ac6003611e4786614640565b93614640565b614d37565b8151906001600160a01b031660005b8281106126cf57005b806126e0611fd36127439387612b7d565b837f5968261591c9d57680edfe0bed3bb6a37ab7fb354578affd1e5be8ce18e6c9d361272d6020612711868b612b7d565b5101516040516001600160e01b0319909516949182918261079c565b0390a3611fe3611fde611fd9611fd38489612b7d565b6126c6565b6001600160a01b0316600090815260076020526040902090565b6001600160a01b0316600090815260056020526040902090565b9060018060a01b0316600052602052604060002090565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6600052600860205260ff906127e9907f51a495916474fe1a0c0fcfb65a8a97682b84a054118858cdd1f5dfd7fc0919eb61277c565b541690565b6127f6613864565b60008052600860205260ff61282b827f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c761277c565b5416156128355750565b60405163e2517d3f60e01b81526001600160a01b03909116600482015260006024820152604490fd5b612866613864565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66000819052600860205260ff6128bd837f51a495916474fe1a0c0fcfb65a8a97682b84a054118858cdd1f5dfd7fc0919eb61277c565b5416156128c8575050565b60405163e2517d3f60e01b81526001600160a01b039092166004830152602482015260449150fd5b6128f8613864565b9080600052600860205260ff6128bd83604060002061277c565b600090808252600860205260ff61292c846040852061277c565b541661298f578082526008602052612947836040842061277c565b805460ff191660011790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d6001600160a01b0380612984613864565b1694169280a4600190565b50905090565b600090808252600860205260ff6129af846040852061277c565b54161561298f5780825260086020526129cb836040842061277c565b805460ff191690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b6001600160a01b0380612984613864565b60405190612a1282610380565b6009546001600160a01b038116835260a01c6020830152565b634e487b7160e01b600052601160045260246000fd5b81810292918115918404141715610d1757565b600019810191908211610d1757565b91908203918211610d1757565b90612a7a82611c0b565b612a8760405191826103f1565b8281528092612a98601f1991611c0b565b019060005b828110612aa957505050565b806060602080938501015201612a9d565b6000198114610d175760010190565b634e487b7160e01b600052603260045260246000fd5b903590601e198136030182121561047357018035906001600160401b0382116104735760200191813603831361047357565b90821015612b28576113a79160051b810190612adf565b612ac9565b90612b40602092828151948592016104c0565b0190565b6020908161041f939594612b718760405198899585870137840191838301600081528151948592016104c0565b010380855201836103f1565b8051821015612b285760209160051b010190565b6001600160a01b03612ba1613864565b1633149160008093600014612c215750604051612bbd816103bb565b83815283368137905b612bcf81612a70565b935b818110612bdf575050505090565b80612c01612bfb85612bf5612c1c95878a612b11565b90612b44565b30612c84565b612c0b8288612b7d565b52612c168187612b7d565b50612aba565b612bd1565b36601319810194508411610d175760405190612c3c82610380565b60148252601481956020840137603482015290612bc6565b3d15612c7f573d90612c6582610421565b91612c7360405193846103f1565b82523d6000602084013e565b606090565b60008061049393602081519101845af4612c9c612c54565b9190612cc45750805115612cb257805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580612cf7575b612cd5575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b15612ccd565b60ff8114612d3e5760ff811690601f8211612d2c5760405191612d2283610380565b8252602082015290565b604051632cd44ac360e21b8152600490fd5b50604051600b54816000612d51836118ec565b808352600193808516908115612dd75750600114612d77575b50610493925003826103f1565b600b60009081527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db994602093509091905b818310612dbf575050610493935082010138612d6a565b85548784018501529485019486945091830191612da8565b905061049394506020925060ff191682840152151560051b82010138612d6a565b60ff8114612e1a5760ff811690601f8211612d2c5760405191612d2283610380565b50604051600c54816000612e2d836118ec565b808352600193808516908115612dd75750600114612e525750610493925003826103f1565b600c60009081527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c794602093509091905b818310612e9a575050610493935082010138612d6a565b85548784018501529485019486945091830191612e83565b600f54811015612b2857600f60005260206000200190600090565b600080516020614ff88339815191528054821015612b285760005260206000200190600090565b600f54811015612f2957600f6000527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802015490565b60405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b6044820152606490fd5b90929192612f6b81610421565b91612f7960405193846103f1565b82948284528282011161047357602061041f9301906104c0565b91906040838203126104735782516001600160401b03811161047357830181601f82011215610473576020918183612fcd93519101612f5e565b92015190565b926020809594612feb839594828151948592016104c0565b01918237019081520190565b15612ffe57565b60405162461bcd60e51b815260206004820152600d60248201526c496e636f7272656374206b657960981b6044820152606490fd5b92919092600052600e6020526119f2613056604060002060405192838092611926565b8051156130a4578161241461309b61308661041f9561307f866020808c99518301019101612f93565b96906130f8565b96604051928391602083019546918b88612fd3565b51902014612ff7565b60405162461bcd60e51b8152602060048201526011602482015270139bdd1a1a5b99c81d1bc81c995d99585b607a1b6044820152606490fd5b9060018201809211610d1757565b91908201809211610d1757565b909291928151916040918251956020938486890101815285885260005b8681106131255750505050505050565b815186810190848683376131498482878101868c820152038a8101845201826103f1565b5190208682870101511886828b0101528581018091111561311557612a2b565b600052600e60205261317f6040600020546118ec565b151590565b81811061318f575050565b60008155600101613184565b90601f82116131a8575050565b61041f9160146000526020600020906020601f840160051c830193106131d6575b601f0160051c0190613184565b90915081906131c9565b9190601f81116131ef57505050565b61041f926000526020600020906020601f840160051c830193106131d657601f0160051c0190613184565b9190916000526020600e81526040600020908351906001600160401b03821161039b576132518261324b85546118ec565b856131e0565b80601f831160011461328b575081929394600092613280575b50508160011b916000199060031b1c1916179055565b01519050388061326a565b90601f198316956132a185600052602060002090565b926000905b8882106132de575050836001959697106132c5575b505050811b019055565b015160001960f88460031b161c191690553880806132bb565b806001859682949686015181550195019301906132a6565b908060209392818452848401376000828201840152601f01601f1916010190565b939161049395936133359286526060602087015260608601916132f6565b9260408185039101526132f6565b91909182516001600160401b03811161039b5761336a8161336484546118ec565b846131e0565b602080601f831160011461339a5750819293946000926132805750508160011b916000199060031b1c1916179055565b90601f198316956133b085600052602060002090565b926000905b8882106133d3575050836001959697106132c557505050811b019055565b806001859682949686015181550195019301906133b5565b9190826040910312610473576020823561340481610677565b92013590565b80600052601160205260ff60406000205416613473576134587f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c928260005260106020526040600020613343565b613461816134f7565b604080519182526020820192909252a1565b60405162461bcd60e51b815260206004820152600c60248201526b2130ba31b410333937bd32b760a11b6044820152606490fd5b60405190600f548083528260209182820190600f60005283600020936000905b8282106134dd5750505061041f925003836103f1565b8554845260019586019588955093810193909101906134c7565b600f54906135036134a7565b600091825b8481106135465760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a590818985d18da1259608a1b6044820152606490fd5b6135508184612b7d565b5182146135655761356090612aba565b613508565b91929350508061357457505090565b9091506000198101908111610d175761358c91612b7d565b5190565b6135998161367b565b906135a3836136e0565b926135ad82613169565b156135dc575050506104936135cf916124146040519384926020840190612b2d565b600360fc1b815260010190565b906135e79291613761565b6040519060a08201604052608082019060008252905b6000190190600a9060308282060183530490816135fd57905061363f92613645610493936080601f199485810192030181526040519586936020850190612b2d565b90612b2d565b039081018352826103f1565b60609060208152600f60208201526e125b9d985b1a59081d1bdad95b9259608a1b60408201520190565b90600f54916136886134a7565b9060005b8481106136ac5760405162461bcd60e51b81528061077a60048201613651565b6136b68184612b7d565b5182106136ce57600181018091111561368c57612a2b565b935050826136db91612b7d565b519190565b90600f54916136ed6134a7565b600091825b8581106137125760405162461bcd60e51b81528061077a60048201613651565b61371c8184612b7d565b5182106137345760018101809111156136f257612a2b565b6119f294955061374991506104939392612b7d565b51815260106020526040809120905192838092611926565b919080600052601360205260406000205480156137df57600092806137c0575b5082820391808311610d175783146137aa578190068301809311610d17576104939206906130eb565b634e487b7160e01b600052601260045260246000fd5b9092506000198101908111610d17576137d890612ef4565b9138613781565b50505090565b63ffffffff60e01b16637965db0b60e01b8114908115613803575090565b6301ffc9a760e01b14919050565b80546001600160a01b0319166001600160a01b03909216919091179055565b90602060018060a01b03916138488382511685613811565b0151825490911660a09190911b6001600160a01b031916179055565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806138b2575b156138ae576013193601368111610d17573560601c90565b3390565b506014361015613896565b91610e5561397b610d869261397561398c9561396d6138db896139a1565b6138e760208b016139a1565b906139056138fe60408d01359c6060810190612adf565b369161043c565b602081519101206040519160208301937f242b17107e6aef17754836dd680cb66bbf39e46a5f20952950acbbae68643d02855260018060801b0380921660408501521660608301528b608083015260a082015260a08152613965816103d6565b519020613c17565b92369161043c565b90613a92565b93600052600d602052604060002090565b806139945791565b5061399e81612793565b91565b356001600160801b03811681036104735790565b92916139c191846138bd565b929015613a63576139d1816139a1565b426001600160801b03909116118015613a40575b613a1157613a04604061041f920135600052600d602052604060002090565b805460ff19166001179055565b60405162461bcd60e51b8152602060048201526007602482015266195e1c1a5c995960ca1b6044820152606490fd5b50613a5c613a50602083016139a1565b6001600160801b031690565b42116139e5565b60405162461bcd60e51b8152602060048201526007602482015266125b9d985b1a5960ca1b6044820152606490fd5b61049391613a9f91613aa8565b90929192613b8a565b8151919060418303613ad957613ad292506020820151906060604084015193015160001a90613af0565b9192909190565b505060009160029190565b6040513d6000823e3d90fd5b91906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038411613b5e57926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa1561114b5780516001600160a01b03811615613b5557918190565b50809160019190565b50505060009160039190565b60041115613b7457565b634e487b7160e01b600052602160045260246000fd5b613b9381613b6a565b80613b9c575050565b613ba581613b6a565b60018103613bbf5760405163f645eedf60e01b8152600490fd5b613bc881613b6a565b60028103613be95760405163fce698f760e01b815260048101839052602490fd5b80613bf5600392613b6a565b14613bfd5750565b6040516335e2f38360e21b81526004810191909152602490fd5b604290613c22613c3d565b906040519161190160f01b8352600283015260228201522090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613d2e575b15613c98577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613d28816103d6565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613c6f565b8060009081548110613d76575b604051636f96cda160e11b8152600490fd5b81526004906020918083526040928383205494600160e01b861615613d9d57505050613d64565b93929190935b8515613db157505050505090565b60001901808352818552838320549550613da3565b90613dd083613d57565b6001600160a01b0383811692828216849003613eff57600086815260066020526040902080549092613e116001600160a01b03881633908114908414171590565b613ed5575b8216958615613ec357613e4993613e3c92613e31858461404b565b613eb9575b50612762565b8054600019019055612762565b80546001019055600160e11b4260a01b84178117613e6686611511565b55811615613e85575b50600080516020615018833981519152600080a4565b60018401613e9281611511565b5415613e9f575b50613e6f565b6000548114613e9957613eb190611511565b553880613e99565b6000905538613e36565b604051633a954ecd60e21b8152600490fd5b613ee8610d86610e5533610e508b612748565b15613e1657604051632ce44b5f60e11b8152600490fd5b60405162a1148160e81b8152600490fd5b613f18611521565b9060009182805260205260ff6040832054161580613fb5575b80613fae575b613f3f575050565b613f4d60ff91610e50611521565b5416159081613f8f575b50613f5e57565b60405162461bcd60e51b815260206004820152600960248201526810aa2920a729a322a960b91b6044820152606490fd5b60ff9150604090613f9e611521565b8180526020522054161538613f57565b5081613f37565b506001600160a01b0381161515613f31565b613fcf611521565b60009081805260205260ff6040822054161580614044575b80614032575b613ff5575050565b604060ff91614002611521565b8180526020522054161590816140195750613f5e57565b60ff915061402990610e50611521565b54161538613f57565b506001600160a01b0382161515613fed565b5080613fe7565b614053611521565b6000805260205261406c60ff6040600020541615151590565b806140cb575b806140b9575b614080575050565b610d86610e5561409292610e50611521565b908161409f5750613f5e57565b6140b39150610e55610d8691610e50611521565b38613f57565b506001600160a01b0382161515614078565b506001600160a01b0381161515614072565b9291906140eb828286613dc6565b803b6140f75750505050565b61410093614166565b1561410e5738808080611953565b6040516368d2bf6b60e11b8152600490fd5b9081602091031261047357516104938161059d565b6001600160a01b039182168152911660208201526040810191909152608060608201819052610493929101906104e3565b9260209161418f936000604051809681958294630a85bd0160e11b9a8b85523360048601614135565b03926001600160a01b03165af1600091816141df575b506141d1576141b2612c54565b805190816141cc576040516368d2bf6b60e11b8152600490fd5b602001fd5b6001600160e01b0319161490565b61420191925060203d8111614208575b6141f981836103f1565b810190614120565b90386141a5565b503d6141ef565b9060009081549281156142b05761422581613fc7565b61422e81612762565b80546001600160401b0184020190556001600160a01b0316906001904260a01b81831460e11b17831761426086611511565b558401938160008051602061501883398151915291808587858180a4015b8581036142a157505050156142905755565b604051622e076360e81b8152600490fd5b8083918587858180a40161427e565b60405163b562e8dd60e01b8152600490fd5b600080806001600160a01b0360406142e483356001600160e01b0319166148bd565b015116368280378136915af43d82803e156142fd573d90f35b3d90fd5b1561430857565b60405162461bcd60e51b815260206004820152602260248201527f42617365526f757465723a2063616c6c6572206e6f7420617574686f72697a65604482015261321760f11b6064820152608490fd5b60ff6127e9614365613864565b6000805260086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c761277c565b9080601f8301121561047357815161049392602001612f5e565b91909160608184031261047357604051906143c8826103a0565b81938151916001600160401b039283811161047357826143e9918301614394565b84526020810151928311610473576144076040939284938301614394565b602085015201519161441883610677565b0152565b9190604092838183031261047357835161443581610380565b80948251936001600160401b039485811161047357816144569186016143ae565b8352602093848101519086821161047357019181601f840112156104735782519061448082611c0b565b9661448d825198896103f1565b828852868089019360051b8601019484861161047357878101935b8685106144ba57505050505050500152565b84518381116104735782019084601f198389030112610473578451906144df82610380565b8a8301516144ec8161059d565b825285830151918583116104735761450b898d80969581960101614394565b838201528152019401936144a8565b9060209081838203126104735782516001600160401b0393848211610473570181601f8201121561047357805161455081611c0b565b9461455e60405196876103f1565b818652848087019260051b8401019380851161047357858401925b85841061458a575050505050505090565b83518381116104735787916145a4848480948a010161441c565b815201930192614579565b604051906145bc826103a0565b600060408360608152606060208201520152565b604051906145dd82610380565b60606020836145ea6145af565b81520152565b906145fa82611c0b565b61460760405191826103f1565b8281528092614618601f1991611c0b565b019060005b82811061462957505050565b6020906146346145d0565b8282850101520161461d565b60206146599181604051938285809451938492016104c0565b81017f1a039940024227c284ceea7ab90e5603ce17de27c93816eef22d65b14ee0087581520301902090565b602061469e9181604051938285809451938492016104c0565b810160008051602061503883398151915281520301902090565b906040516146c5816103a0565b6040819381516146d9816119f28185611926565b835281516146ee816119f28160018601611926565b6020840152600201546001600160a01b0316910152565b90815461471181611c0b565b92604093614721855191826103f1565b828152809460208092019260005281600020906000935b85851061474757505050505050565b600284600192845161475881610380565b865460e01b6001600160e01b0319168152855161477b816119f281898c01611926565b83820152815201930194019391614738565b9060405161479a81610380565b60206147b4600383956147ac816146b8565b855201614705565b910152565b6147c16145d0565b506147cb81614685565b54600090156147e1575061106b61049391614640565b80614800926040518094819263611383f760e11b83526004830161079c565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561114b57819261484057505090565b909291503d8084833e61485381836103f1565b810190602081830312614881578051906001600160401b03821161487d576104939394500161441c565b8480fd5b8380fd5b63ffffffff60e01b166000527f1a039940024227c284ceea7ab90e5603ce17de27c93816eef22d65b14ee00876602052604060002090565b6148c56145af565b506148d76148d282614885565b6146b8565b604081015190916001600160a01b0391600091908316156148f85750505090565b81929350602460405180958193631097b48960e11b835263ffffffff60e01b1660048301527f0000000000000000000000000000000000000000000000000000000000000000165afa91821561114b57819261495357505090565b909291503d8084833e61496681836103f1565b810190602081830312614881578051906001600160401b03821161487d57610493939450016143ae565b1561499757565b60405162461bcd60e51b815260206004820152602960248201527f457874656e73696f6e53746174653a20657874656e73696f6e20616c726561646044820152683c9032bc34b9ba399760b91b6064820152608490fd5b600261041f926149ff815184613343565b614a10602082015160018501613343565b604001516001600160a01b03169101613811565b15614a2b57565b60405162461bcd60e51b815260206004820152603860248201527f457874656e73696f6e53746174653a20616464696e6720657874656e73696f6e604482015277103bb4ba3437baba1034b6b83632b6b2b73a30ba34b7b71760411b6064820152608490fd5b516001600160e01b03191690565b15614aa657565b60405162461bcd60e51b815260206004820152603360248201527f457874656e73696f6e53746174653a20666e2073656c6563746f7220616e642060448201527239b4b3b730ba3ab9329036b4b9b6b0ba31b41760691b6064820152608490fd5b15614b0e57565b60405162461bcd60e51b815260206004820152603660248201527f457874656e73696f6e53746174653a20657874656e73696f6e20616c726561646044820152753c9032bc34b9ba39903337b910333ab731ba34b7b71760511b6064820152608490fd5b908154600160401b81101561039b5760018101808455811015612b2857602060019161041f946000528160002090831b0192805160e01c63ffffffff1985541617845501519101613343565b15614bc557565b60405162461bcd60e51b815260206004820152602960248201527f457874656e73696f6e53746174653a20657874656e73696f6e20646f6573206e60448201526837ba1032bc34b9ba1760b91b6064820152608490fd5b15614c2357565b60405162461bcd60e51b815260206004820152602960248201527f457874656e73696f6e53746174653a2072652d616464696e672073616d6520656044820152683c3a32b739b4b7b71760b91b6064820152608490fd5b614c8481546118ec565b9081614c8e575050565b81601f60009311600114614ca0575055565b908083918252614cbf601f60208420940160051c840160018501613184565b5555565b805460009182815581614cd557505050565b6001600160ff1b0382168203610d175782526020822091600191821b8301925b838110614d025750505050565b808260029255614d13848201614c7a565b01614cf5565b6002600091614d2781614c7a565b614d3360018201614c7a565b0155565b600361041f91611e5d81614d19565b9190614d555761041f91613343565b6118d6565b614d6381614685565b54614dde57600080516020614ff88339815191528054600160401b81101561039b5760018101808355811015612b285781614dac84602093614dc1956000528460002001613343565b549281604051938285809451938492016104c0565b810160008051602061503883398151915281520301902055600190565b50600090565b6020614dfd9181604051938285809451938492016104c0565b810160008051602061503883398151915281520301902054151590565b600080516020614ff883398151915280548015614ea0576000190190614e3f82612ecd565b614d5557614e4d81546118ec565b9081614e5857505055565b601f8211600114614e6b57600091505555565b614e8d614e9d92826000526001601f6020600020920160051c82019101613184565b6000908082528160208120915555565b55565b634e487b7160e01b600052603160045260246000fd5b6040516020818351614ecb81838588016104c0565b60008051602061503883398151915290820190815203019020548015614f7c576000199181830191808311610d1757600080516020614ff883398151915254938401938411610d17578383614f339460009603614f39575b505050614f2e614e1a565b614685565b55600190565b614f2e614f6191614f6d614f4f614f7395612ecd565b5091614f686040518096818096611926565b03846103f1565b612ecd565b90614d46565b55388080614f23565b5050600090565b600080516020614ff8833981519152908154614f9e81611c0b565b92604093614fae855191826103f1565b828152809460208092019260005281600020906000935b858510614fd457505050505050565b60018481928451614fe9816119f2818a611926565b815201930194019391614fc556fe1a039940024227c284ceea7ab90e5603ce17de27c93816eef22d65b14ee00873ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1a039940024227c284ceea7ab90e5603ce17de27c93816eef22d65b14ee00874a164736f6c6343000814000a6080806040523461002857600080546001600160a01b031916331790556111ee908161002e8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8063012b872914610a49578063212f6912146109715780634a00cc481461074f5780637c3b113714610700578063c22707ee146106ad5763fdc9f2571461005e57600080fd5b346106a8576003196020368201126106a8576001600160401b036004358181116106a85760408382360301126106a8576040519261009b84610af9565b81600401358381116106a85760609083019182360301126106a857604051906100c382610b14565b60048101358481116106a8576100df9060043691840101610b50565b82526024810135908482116106a85761010060449260043691840101610b50565b602084015201356001600160a01b03811681036106a857604082015283526024810135908282116106a8570190366023830112156106a85760048201359161014783610cc3565b926101556040519485610b2f565b8084526024602085019160051b830101913683116106a85760248101915b83831061063a576020870186905260005487906001600160a01b031633036105e357805151906101a2826110f1565b1561058c57805160026101b484610d2f565b6101bf835182610fe2565b6101d0602084015160018301610fe2565b604092830151910180546001600160a01b0319166001600160a01b039283161790558251909101511615610526576020810151519160005b83811061021157005b63ffffffff60e01b610227826020860151610d1b565b51511660206102398382870151610d1b565b510151604051906102676020838161025a8183019586815193849201610ba6565b8101038085520183610b2f565b905190206001600160e01b031916036104c55763ffffffff60e01b610290826020860151610d1b565b51511660009081526000805160206111c283398151915260205260409020600201546001600160a01b031661046157825163ffffffff60e01b6102d7836020870151610d1b565b5151166000526000805160206111c283398151915260205260026040600020610301835182610fe2565b610312602084015160018301610fe2565b604090920151910180546001600160a01b0319166001600160a01b0392909216919091179055600361034383610d2f565b01610352826020860151610d1b565b518154600160401b81101561044b576001810180845581101561043557602060019161039e946000528160002090831b0192805160e01c63ffffffff1985541617845501519101610fe2565b60018060a01b036040845101511663ffffffff60e01b6103c2836020870151610d1b565b515116907fb5a3e9571e367979a4a14de42b248d0837c26fd8e879846062abcf7cee17127361041060206103f986828a0151610d1b565b510151604051918291602083526020830190610bc9565b0390a3600181018091111561020857634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60405162461bcd60e51b815260206004820152603660248201527f457874656e73696f6e53746174653a20657874656e73696f6e20616c726561646044820152753c9032bc34b9ba39903337b910333ab731ba34b7b71760511b6064820152608490fd5b60405162461bcd60e51b815260206004820152603360248201527f457874656e73696f6e53746174653a20666e2073656c6563746f7220616e642060448201527239b4b3b730ba3ab9329036b4b9b6b0ba31b41760691b6064820152608490fd5b60405162461bcd60e51b815260206004820152603860248201527f457874656e73696f6e53746174653a20616464696e6720657874656e73696f6e604482015277103bb4ba3437baba1034b6b83632b6b2b73a30ba34b7b71760411b6064820152608490fd5b60405162461bcd60e51b815260206004820152602960248201527f457874656e73696f6e53746174653a20657874656e73696f6e20616c726561646044820152683c9032bc34b9ba399760b91b6064820152608490fd5b60405162461bcd60e51b815260206004820152602960248201527f44656661756c74457874656e73696f6e5365743a20756e617574686f72697a65604482015268321031b0b63632b91760b91b6064820152608490fd5b82358581116106a8578201604060231982360301126106a8576040519161066083610af9565b60248201356001600160e01b0319811681036106a85783526044820135928784116106a857610699602094936024869536920101610b50565b83820152815201920191610173565b600080fd5b346106a85760203660031901126106a8576004356001600160401b0381116106a8576106e86106e36106fc923690600401610b50565b610e93565b604051918291602083526020830190610c2c565b0390f35b346106a85760203660031901126106a8576004356001600160401b0381116106a8576020906001600160a01b0390604090610743906106e3903690600401610b50565b51015116604051908152f35b346106a85760003660031901126106a8577f1a039940024227c284ceea7ab90e5603ce17de27c93816eef22d65b14ee00873805461078c81610cc3565b9061079a6040519283610b2f565b8082526020928383019060005283600020846000925b84841061095357508480516107c481610cc3565b916107d26040519384610b2f565b818352601f196107e183610cc3565b018460005b82811061093d5750505060005b82811061085c575050506040519082820192808352815180945260408301938160408260051b8601019301916000955b8287106108305785850386f35b90919293828061084c600193603f198a82030186528851610c2c565b9601920196019592919092610823565b61086f6108698284610d1b565b51610d2f565b60036040519161087e83610af9565b61088781610e54565b835201805461089581610cc3565b916108a36040519384610b2f565b818352600090815288812090898085015b8483106108fb5750925050508201526108cd8286610d1b565b526108d88185610d1b565b5060018101809111156107f357634e487b7160e01b600052601160045260246000fd5b60019160029160405161090d81610af9565b865460e01b6001600160e01b0319168152610929858801610dae565b838201528152019301910190918a906108b4565b610945610cfb565b8282880101520185906107e6565b600191829161096185610dae565b81520192019201919085906107b0565b346106a85760203660031901126106a85760043563ffffffff60e01b81168091036106a85761099e610cda565b506000526000805160206111c28339815191526020526109c16040600020610e54565b60408101516001600160a01b0316156109ec576106fc90604051918291602083526020830190610bee565b60405162461bcd60e51b815260206004820152602f60248201527f44656661756c74457874656e73696f6e5365743a206e6f20657874656e73696f60448201526e37103337b910333ab731ba34b7b71760891b6064820152608490fd5b346106a8576020806003193601126106a8576004356001600160401b0381116106a857610a7e6106e383923690600401610b50565b01516040519082820192808352815180945260408301938160408260051b8601019301916000955b828710610ab35785850386f35b909192938280610ae9600193603f198a82030186526040838a5163ffffffff60e01b815116845201519181858201520190610bc9565b9601920196019592919092610aa6565b604081019081106001600160401b0382111761044b57604052565b606081019081106001600160401b0382111761044b57604052565b90601f801991011681019081106001600160401b0382111761044b57604052565b81601f820112156106a8578035906001600160401b03821161044b5760405192610b84601f8401601f191660200185610b2f565b828452602083830101116106a857816000926020809301838601378301015290565b60005b838110610bb95750506000910152565b8181015183820152602001610ba9565b90602091610be281518092818552858086019101610ba6565b601f01601f1916010190565b906040610c19610c078451606085526060850190610bc9565b60208501518482036020860152610bc9565b928101516001600160a01b031691015290565b805190610c4160409283855283850190610bee565b90602080910151938181840391015283519182815281810182808560051b8401019601946000925b858410610c7a575050505050505090565b909192939495968580610cb2600193601f1986820301885286838d5163ffffffff60e01b815116845201519181858201520190610bc9565b990194019401929594939190610c69565b6001600160401b03811161044b5760051b60200190565b60405190610ce782610b14565b600060408360608152606060208201520152565b60405190610d0882610af9565b6060602083610d15610cda565b81520152565b80518210156104355760209160051b010190565b6020610d48918160405193828580945193849201610ba6565b81017f1a039940024227c284ceea7ab90e5603ce17de27c93816eef22d65b14ee0087581520301902090565b90600182811c92168015610da4575b6020831014610d8e57565b634e487b7160e01b600052602260045260246000fd5b91607f1691610d83565b9060405191826000825492610dc284610d74565b908184526001948581169081600014610e315750600114610dee575b5050610dec92500383610b2f565b565b9093915060005260209081600020936000915b818310610e19575050610dec93508201013880610dde565b85548884018501529485019487945091830191610e01565b915050610dec94506020925060ff191682840152151560051b8201013880610dde565b90604051610e6181610b14565b60408193610e6e81610dae565b8352610e7c60018201610dae565b6020840152600201546001600160a01b0316910152565b610e9b610cfb565b50604080519182815160209481610eb6879383858801610ba6565b81017f1a039940024227c284ceea7ab90e5603ce17de27c93816eef22d65b14ee008748152030190205415610f8757610eee90610d2f565b916003825193610efd85610af9565b610f0681610e54565b855201805490610f1582610cc3565b93610f2281519586610b2f565b828552600091825283822090848087015b858510610f465750505050505082015290565b6001916002918451610f5781610af9565b865460e01b6001600160e01b0319168152610f73858801610dae565b838201528152019301930192918590610f33565b815162461bcd60e51b815260048101849052602e60248201527f44656661756c74457874656e73696f6e5365743a20657874656e73696f6e206460448201526d37b2b9903737ba1032bc34b9ba1760911b6064820152608490fd5b91909182516001600160401b03811161044b57610fff8254610d74565b601f81116110a9575b50602080601f831160011461104557508192939460009261103a575b50508160011b916000199060031b1c1916179055565b015190503880611024565b90601f198316958460005282600020926000905b88821061109157505083600195969710611078575b505050811b019055565b015160001960f88460031b161c1916905538808061106e565b80600185968294968601518155019501930190611059565b600083815260208120601f840160051c810192602085106110e7575b601f0160051c01915b8281106110dc575050611008565b8181556001016110ce565b90925082906110c5565b6040518151906020830191611107818385610ba6565b8101906020817f1a039940024227c284ceea7ab90e5603ce17de27c93816eef22d65b14ee00874938481520301902054156000146111b9577f1a039940024227c284ceea7ab90e5603ce17de27c93816eef22d65b14ee0087391825491600160401b83101561044b57600183018085558310156104355783611197866020956111aa976000528660002001610fe2565b5494604051948593849251928391610ba6565b82019081520301902055600190565b50505060009056fe1a039940024227c284ceea7ab90e5603ce17de27c93816eef22d65b14ee00876a164736f6c6343000814000a2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec000000000000000000000000d8d7cc55608e0a72d18737852b89b8388d04870f000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000d8d7cc55608e0a72d18737852b89b8388d04870f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000c82bbe41f2cf04e3a8efa18f7032bdd7f6d98a81000000000000000000000000000000000000000000000000000000000000001b5065746f70696120417274696661637420436f6c6c656374696f6e0000000000000000000000000000000000000000000000000000000000000000000000000c50455420415254494641435400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042697066733a2f2f6261666b726569667165747a73646734717062707234376464346e6d6e3735786467717766617176376e6a6e776a62643562616b32637179706c610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000