[ { "inputs": [ { "internalType": "address", "name": "manager_", "type": "address" }, { "internalType": "address", "name": "owner_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "FragmentAlreadyRegistered", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "FragmentUnregistered", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" } ], "name": "IncorrectNonce", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "NotAuthorized", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "NotFrozen", "type": "error" }, { "inputs": [], "name": "OutOfIDs", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "UnsupportedTokenId", "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": true, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "address[]", "name": "attributeAddresses", "type": "address[]" }, { "indexed": false, "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "Change", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "address[]", "name": "attributeAddresses", "type": "address[]" }, { "indexed": false, "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "Forge", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Frozen", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Locked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "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": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "permissions", "type": "uint256" } ], "name": "PermissionChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "target", "type": "address" }, { "indexed": true, "internalType": "address", "name": "fragment", "type": "address" } ], "name": "Redact", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "target", "type": "address" }, { "indexed": true, "internalType": "address", "name": "fragment", "type": "address" }, { "indexed": false, "internalType": "uint8", "name": "idx", "type": "uint8" } ], "name": "Register", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "addr", "type": "address" } ], "name": "SchemaChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Thawed", "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": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Unlocked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "target", "type": "address" }, { "indexed": true, "internalType": "address", "name": "fragment", "type": "address" } ], "name": "Unredact", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "newAttrAddress", "type": "address" }, { "internalType": "uint256", "name": "newAttrTokenId", "type": "uint256" } ], "name": "addAttribute", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint64", "name": "liteRef", "type": "uint64" }, { "internalType": "uint256", "name": "targetMetadataId", "type": "uint256" } ], "name": "addReference", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint64", "name": "liteRef", "type": "uint64" } ], "name": "addReference", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint64[]", "name": "liteRefs", "type": "uint64[]" } ], "name": "addReferenceBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint64[]", "name": "liteRefs", "type": "uint64[]" }, { "internalType": "uint256", "name": "targetMetadataId", "type": "uint256" } ], "name": "addReferenceBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "enum IElephant.ActionType", "name": "action", "type": "uint8" }, { "internalType": "address", "name": "oldAddress", "type": "address" }, { "internalType": "uint256", "name": "oldTokenId", "type": "uint256" }, { "internalType": "address", "name": "newAddress", "type": "address" }, { "internalType": "uint256", "name": "newTokenId", "type": "uint256" } ], "internalType": "struct IElephant.AttributeEdit[]", "name": "edits", "type": "tuple[]" } ], "name": "editAttributes", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "attributeAddresses", "type": "address[]" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "forge", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "frozen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getDynamicReferenceCount", "outputs": [ { "internalType": "uint256", "name": "count", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getFreezeNonce", "outputs": [ { "internalType": "uint256", "name": "nonce", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getLiteReference", "outputs": [ { "internalType": "uint64", "name": "liteRef", "type": "uint64" }, { "internalType": "bool", "name": "redacted", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "id", "type": "uint8" } ], "name": "getReferenceAddress", "outputs": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "bool", "name": "redacted", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "liteRef", "type": "uint64" } ], "name": "getReferenceAddressAndTokenId", "outputs": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "getReferenceId", "outputs": [ { "internalType": "uint8", "name": "id", "type": "uint8" }, { "internalType": "bool", "name": "redacted", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getScopeName", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "imageURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "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": "tokenId", "type": "uint256" } ], "name": "loadAllStaticReferences", "outputs": [ { "internalType": "address[]", "name": "addresses", "type": "address[]" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "idx", "type": "uint256" } ], "name": "loadAttribute", "outputs": [ { "internalType": "address", "name": "attributeAddress", "type": "address" }, { "internalType": "uint256", "name": "attributeTokenId", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "loadAttributes", "outputs": [ { "internalType": "address[]", "name": "attributeAddresses", "type": "address[]" }, { "internalType": "uint256[]", "name": "attributeTokenIds", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "offset", "type": "uint256" }, { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "loadDynamicReferencePage", "outputs": [ { "internalType": "address[]", "name": "addresses", "type": "address[]" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "loadMetadata", "outputs": [ { "components": [ { "internalType": "uint64[8]", "name": "attributeLiteRefs", "type": "uint64[8]" }, { "internalType": "string", "name": "name", "type": "string" } ], "internalType": "struct IElephant.Metadata", "name": "data", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "loadName", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "loadPackedMetadata", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "slot", "type": "uint256" } ], "name": "loadPackedMetadataSlot", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "ourTokenId", "type": "uint256" }, { "internalType": "uint256", "name": "idx", "type": "uint256" } ], "name": "loadReferenceAddressAndTokenId", "outputs": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "locked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint64[8]", "name": "attributeLiteRefs", "type": "uint64[8]" }, { "internalType": "string", "name": "name", "type": "string" } ], "internalType": "struct IElephant.Metadata", "name": "data", "type": "tuple" } ], "name": "packMetadata", "outputs": [ { "internalType": "uint256[]", "name": "slots", "type": "uint256[]" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "id", "type": "uint8" } ], "name": "redactReferenceAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "registerReferenceAddress", "outputs": [ { "internalType": "uint8", "name": "id", "type": "uint8" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "attrAddress", "type": "address" }, { "internalType": "uint256", "name": "attrTokenId", "type": "uint256" } ], "name": "removeAttribute", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint64", "name": "liteRef", "type": "uint64" }, { "internalType": "uint256", "name": "targetMetadataId", "type": "uint256" } ], "name": "removeReference", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint64", "name": "liteRef", "type": "uint64" } ], "name": "removeReference", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" } ], "name": "safeTransferFromWithFreezeNonce", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" } ], "name": "safeTransferFromWithFreezeNonce", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "schema", "outputs": [ { "components": [ { "internalType": "uint256", "name": "version", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "permissionId", "type": "uint256" }, { "internalType": "enum IPatchworkMetadata.FieldType", "name": "fieldType", "type": "uint8" }, { "internalType": "uint256", "name": "fieldCount", "type": "uint256" }, { "internalType": "enum IPatchworkMetadata.FieldVisibility", "name": "visibility", "type": "uint8" }, { "internalType": "uint256", "name": "slot", "type": "uint256" }, { "internalType": "uint256", "name": "offset", "type": "uint256" }, { "internalType": "string", "name": "key", "type": "string" } ], "internalType": "struct IPatchworkMetadata.MetadataSchemaEntry[]", "name": "entries", "type": "tuple[]" } ], "internalType": "struct IPatchworkMetadata.MetadataSchema", "name": "", "type": "tuple" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "schemaURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "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": "tokenId", "type": "uint256" }, { "internalType": "bool", "name": "frozen_", "type": "bool" } ], "name": "setFrozen", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bool", "name": "locked_", "type": "bool" } ], "name": "setLocked", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "permissions", "type": "uint256" } ], "name": "setPermissions", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "uint64[8]", "name": "attributeLiteRefs", "type": "uint64[8]" }, { "internalType": "string", "name": "name", "type": "string" } ], "internalType": "struct IElephant.Metadata", "name": "data", "type": "tuple" } ], "name": "storeMetadata", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "name", "type": "string" } ], "name": "storeName", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256[]", "name": "data", "type": "uint256[]" } ], "name": "storePackedMetadata", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "slot", "type": "uint256" }, { "internalType": "uint256", "name": "data", "type": "uint256" } ], "name": "storePackedMetadataSlot", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "currentAttrAddress", "type": "address" }, { "internalType": "uint256", "name": "currentAttrTokenId", "type": "uint256" }, { "internalType": "address", "name": "newAttrAddress", "type": "address" }, { "internalType": "uint256", "name": "newAttrTokenId", "type": "uint256" } ], "name": "swapAttribute", "outputs": [], "stateMutability": "nonpayable", "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": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" } ], "name": "transferFromWithFreezeNonce", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "slots", "type": "uint256[]" } ], "name": "unpackMetadata", "outputs": [ { "components": [ { "internalType": "uint64[8]", "name": "attributeLiteRefs", "type": "uint64[8]" }, { "internalType": "string", "name": "name", "type": "string" } ], "internalType": "struct IElephant.Metadata", "name": "data", "type": "tuple" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "id", "type": "uint8" } ], "name": "unredactReferenceAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a06040523480156200001157600080fd5b50604051620054a3380380620054a38339810160408190526200003491620001a0565b60405180604001604052806009815260200168656c657068616e747360b81b81525060405180604001604052806009815260200168456c657068616e747360b81b81525060405180604001604052806008815260200167115311541210539560c21b81525084848084848160009081620000af91906200027f565b506001620000be82826200027f565b5050506001600160a01b038116620000f057604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000fb8162000131565b5060076200010a86826200027f565b50506001600160a01b031660805250506010805460ff19166001179055506200034b915050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200019b57600080fd5b919050565b60008060408385031215620001b457600080fd5b620001bf8362000183565b9150620001cf6020840162000183565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020357607f821691505b6020821081036200022457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027a576000816000526020600020601f850160051c81016020861015620002555750805b601f850160051c820191505b81811015620002765782815560010162000261565b5050505b505050565b81516001600160401b038111156200029b576200029b620001d8565b620002b381620002ac8454620001ee565b846200022a565b602080601f831160018114620002eb5760008415620002d25750858301515b600019600386901b1c1916600185901b17855562000276565b600085815260208120601f198616915b828110156200031c57888601518255948401946001909101908401620002fb565b50858210156200033b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080516151046200039f60003960008181610da301528181610fe8015281816112ce01528181611e2401528181612cce01528181612d5b015281816134310152818161357601526136c401526151046000f3fe608060405234801561001057600080fd5b50600436106103db5760003560e01c80636352211e1161020a578063b45a3c0e11610125578063e985e9c5116100b8578063f4a586d011610087578063f4a586d014610985578063f8895cc814610998578063fc361d12146109ad578063fcf59c23146109c0578063fe82129c146109d357600080fd5b8063e985e9c514610934578063e9ac044014610947578063f2fde38b1461096a578063f44c3bf71461097d57600080fd5b8063c87b56dd116100f4578063c87b56dd146108e8578063cd56d2a3146108fb578063e19267ed1461090e578063e64f16b21461092157600080fd5b8063b45a3c0e1461088c578063b88d4fde146108af578063bcba17e6146108c2578063c281e35f146108d557600080fd5b80637ca627571161019d57806399e390251161016c57806399e3902514610821578063a22cb46514610834578063a75573b814610847578063b277324a1461085a57600080fd5b80637ca62757146107e25780638da5cb5b146107f55780638f742d161461080657806395d89b411461081957600080fd5b806370a08231116101d957806370a0823114610794578063715018a6146107a757806372aba3e2146107af57806376b90b94146107c257600080fd5b80636352211e14610748578063635d284c1461075b57806367aadbca1461076e5780636b88ddaf1461078157600080fd5b806331eb76da116102fa57806352c854891161028d5780635c54b6981161025c5780635c54b698146106f65780635cf5944d146107095780635e2df5e11461071c578063604126bc1461072f57600080fd5b806352c85489146106b457806352ce1bd0146106c7578063538cae22146106db57806358e23bac146106ee57600080fd5b806342842e0e116102c957806342842e0e1461065b57806342966c681461066e578063443ae4e4146106815780634decc6871461069457600080fd5b806331eb76da146105b75780633ac4d765146105d75780633d0cb063146106355780633f196b731461064857600080fd5b80630cced9d71161037257806323b872dd1161034157806323b872dd1461052557806326dc2d59146105385780632bea79a9146105915780632e14303c146105a457600080fd5b80630cced9d7146104d657806317937570146104f757806318160ddd1461050a578063214b146f1461051257600080fd5b8063095ea7b3116103ae578063095ea7b3146104695780630a3cc9891461047e5780630a98b4b1146104915780630ca5f0e4146104a457600080fd5b806301ffc9a7146103e0578063056bb56b1461040857806306fdde0314610429578063081812fc1461043e575b600080fd5b6103f36103ee3660046140ae565b6109f8565b60405190151581526020015b60405180910390f35b61041b6104163660046140cb565b610a32565b6040516103ff929190614120565b610431610a47565b6040516103ff91906141d1565b61045161044c3660046140cb565b610ad9565b6040516001600160a01b0390911681526020016103ff565b61047c6104773660046141f9565b610b02565b005b61047c61048c366004614235565b610b11565b61047c61049f366004614261565b610bf5565b6104b76104b23660046142ca565b610c12565b604080516001600160a01b0390931683526020830191909152016103ff565b6104e96104e4366004614329565b610c41565b6040519081526020016103ff565b6104b7610505366004614394565b610e66565b6104e9610ee3565b61047c6105203660046143b6565b610efa565b61047c610533366004614431565b610fba565b610578610546366004614472565b6001600160a01b03166000908152600e602090815260408083205460ff908116808552600f9093529220549092911690565b6040805160ff90931683529015156020830152016103ff565b6104b761059f366004614394565b611054565b61047c6105b236600461448f565b6110c9565b6105ca6105c53660046140cb565b61118c565b6040516103ff91906144b2565b6106166105e536600461448f565b60ff9081166000908152600d6020908152604080832054600f909252909120546001600160a01b0390911692911690565b604080516001600160a01b0390931683529015156020830152016103ff565b61047c610643366004614508565b6111f5565b61047c61065636600461453d565b61121d565b61047c610669366004614431565b611231565b61047c61067c3660046140cb565b61124c565b61047c61068f3660046146ff565b611416565b6106a76106a23660046140cb565b611467565b6040516103ff9190614745565b6106a76106c2366004614758565b6114c9565b6104e96106d53660046140cb565b50600090565b61047c6106e936600461480b565b611620565b610431611668565b61047c61070436600461448f565b611688565b6104e9610717366004614394565b611748565b61043161072a3660046140cb565b61177b565b61041b61073d366004614847565b606080935093915050565b6104516107563660046140cb565b6117be565b61047c610769366004614873565b6117c9565b61047c61077c366004614508565b6118a9565b61047c61078f366004614235565b6118d1565b6104e96107a2366004614472565b6119d8565b61047c611a20565b61047c6107bd3660046148de565b611a34565b6104e96107d03660046140cb565b6000908152600a602052604090205490565b61047c6107f036600461453d565b611b8d565b6006546001600160a01b0316610451565b6104316108143660046140cb565b611b98565b610431611bc9565b61047c61082f366004614847565b611bd8565b61047c610842366004614929565b611c36565b6105ca610855366004614955565b611c41565b61086d6108683660046141f9565b611d68565b604080516001600160401b0390931683529015156020830152016103ff565b6103f361089a3660046140cb565b6000908152600c602052604090205460ff1690565b61047c6108bd366004614989565b611df6565b61047c6108d03660046149f4565b611e8c565b61047c6108e33660046149f4565b612117565b6104316108f63660046140cb565b612372565b61047c610909366004614a17565b6123d9565b61047c61091c3660046141f9565b61246b565b61047c61092f366004614a5d565b6124eb565b6103f3610942366004614aaf565b612514565b6103f36109553660046140cb565b6000908152600b602052604090205460ff1690565b61047c610978366004614472565b612542565b610431612580565b61047c610993366004614a17565b61258f565b6109a0612619565b6040516103ff9190614b12565b61047c6109bb366004614bf3565b612791565b61041b6109ce3660046140cb565b612825565b6109e66109e1366004614472565b61297e565b60405160ff90911681526020016103ff565b60006001600160e01b03198216632aeeb90160e01b1480610a1d5750610a1d82612ac3565b80610a2c5750610a2c82612b31565b92915050565b606080610a3e83612825565b91509150915091565b606060008054610a5690614c66565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8290614c66565b8015610acf5780601f10610aa457610100808354040283529160200191610acf565b820191906000526020600020905b815481529060010190602001808311610ab257829003601f168201915b5050505050905090565b6000610ae482612b66565b506000828152600460205260409020546001600160a01b0316610a2c565b610b0d828233612b9f565b5050565b81610b1b816117be565b6001600160a01b0316336001600160a01b031614610b5357604051634a0bfec160e01b81523360048201526024015b60405180910390fd5b6000838152600c602052604090205460ff1680151583151514610bef576000848152600c60205260409020805460ff19168415801591909117909155610bc35760405184907f032bc66be43dbccb7487781d168eb7bda224628a3b2c3388bdf69b532a3a161190600090a2610bef565b60405184907ff27b6ce5b2f5e68ddb2fd95a8a909d4ecf1daaac270935fff052feacb24f184290600090a25b50505050565b610c028585858585612bac565b610c0b85612dc3565b5050505050565b60ff603882901c166000908152600d60205260409020546001600160a01b03169166ffffffffffffff90911690565b6000838214610cb85760405162461bcd60e51b815260206004820152603960248201527f4174747269627574652061646472657373657320616e6420746f6b656e20496460448201527f73206d757374206265207468652073616d65206c656e677468000000000000006064820152608401610b4a565b6011543390610cc78282612e60565b60408051600380825260808201909252906020820160608036833750505060008281526009602090815260409091208251610d089391929190910190613f74565b5060118054906000610d1983614cb6565b9190505550610d8c8288888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808c0282810182019093528b82529093508b92508a918291850190849080828437600092019190915250612e7a92505050565b60405163157e2e3760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063157e2e3790610de2908a908a908a908a9030908990600401614d3f565b600060405180830381600087803b158015610dfc57600080fd5b505af1158015610e10573d6000803e3d6000fd5b5050505080826001600160a01b03167f59bb4301be0256ec147f2e1cce8bda1bfa28649663000b5757c3340d502eacae89898989604051610e549493929190614d85565b60405180910390a39695505050505050565b60008080610e75600485614dc2565b90506000610e84826004614dd6565b610e8e9086614ded565b90506000610e9d826040614dd6565b6000888152600960205260409020805485908110610ebd57610ebd614e00565b9060005260206000200154901c9050610ed581610c12565b909890975095505050505050565b6000601254601154610ef59190614ded565b905090565b610f03836133ff565b610f1f5760405162461bcd60e51b8152600401610b4a90614e16565b610f5e82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061345e92505050565b600084815260096020526040902080546002908110610f7f57610f7f614e00565b600091825260208220019190915560405184917ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce791a2505050565b6040516311b590b760e21b81526001600160a01b0384811660048301528381166024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906346d642dc90606401600060405180830381600087803b15801561102c57600080fd5b505af1158015611040573d6000803e3d6000fd5b5050505061104f838383613483565b505050565b6000828152600960205260408120819081611070600486614dc2565b9050600061107f600487614e3e565b61108a906040614dd6565b90506000818484815481106110a1576110a1614e00565b9060005260206000200154901c90506110b981610c12565b95509550505050505b9250929050565b6110d1613508565b6110f057604051634a0bfec160e01b8152336004820152602401610b4a565b60ff81166000908152600d60205260409020546001600160a01b031661112c576040516324ab13eb60e11b815260006004820152602401610b4a565b60ff81166000908152600f60209081526040808320805460ff19166001179055600d9091528082205490516001600160a01b039091169130917fb070ea08179bdba9edf4681c8c5219f670d2cb68520755ab85e5615cc97053e89190a350565b611194613fbf565b6000828152600960209081526040918290208054835181840281018401909452808452610a2c93928301828280156111eb57602002820191906000526020600020905b8154815260200190600101908083116111d7575b5050505050611c41565b80156112135760405162461bcd60e51b8152600401610b4a90614e52565b61104f8383611e8c565b611228838383613512565b61104f83612dc3565b61104f83838360405180602001604052806000815250611df6565b8033611257826117be565b6001600160a01b03161461127d5760405162461bcd60e51b8152600401610b4a90614e16565b60008061128984612825565b9150915060005b600881101561139b5760006001600160a01b03168382815181106112b6576112b6614e00565b60200260200101516001600160a01b031614611393577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663792bbea784838151811061130d5761130d614e00565b602002602001015184848151811061132757611327614e00565b60200260200101516040518363ffffffff1660e01b81526004016113609291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b15801561137a57600080fd5b505af115801561138e573d6000803e3d6000fd5b505050505b600101611290565b50836113a6856117be565b6001600160a01b03167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca560405160405180910390a360008481526009602052604081206113f291613fdf565b6113fb846135d9565b6012805490600061140b83614cb6565b919050555050505050565b61141f826133ff565b61143b5760405162461bcd60e51b8152600401610b4a90614e16565b611444816114c9565b6000838152600960209081526040909120825161104f9391929190910190613f74565b6000818152600960209081526040918290208054835181840281018401909452808452606093928301828280156114bd57602002820191906000526020600020905b8154815260200190600101908083116114a9575b50505050509050919050565b6040805160038082526080820190925260609160208201838036833750508351606081015160408083015194955060c09190911b6001600160c01b0319169360801b67ffffffffffffffff60801b169250906001602002015185516001600160401b0390911690911b90600060200201516001600160401b03161717178160008151811061155957611559614e00565b6020908102919091010152815160e081015160c01b6001600160c01b03191690608090600660200201516001600160401b0316901b604084600001516005600881106115a7576115a7614e00565b602002015185516001600160401b0390911690911b90600460200201516001600160401b0316171717816001815181106115e3576115e3614e00565b6020026020010181815250506115fc826020015161345e565b8160028151811061160f5761160f614e00565b602002602001018181525050919050565b8161162a816133ff565b61164957604051634a0bfec160e01b8152336004820152602401610b4a565b60008381526009602090815260409091208351610bef92850190613f74565b60606040518060600160405280602b81526020016150a4602b9139905090565b611690613508565b6116af57604051634a0bfec160e01b8152336004820152602401610b4a565b60ff81166000908152600d60205260409020546001600160a01b03166116eb576040516324ab13eb60e11b815260006004820152602401610b4a565b60ff81166000908152600f60209081526040808320805460ff19169055600d9091528082205490516001600160a01b039091169130917fce9147c6c4024e0b0ed474eacb30ac60d9557641ac852eab959d26a2fe35a87c9190a350565b600082815260096020526040812080548390811061176857611768614e00565b9060005260206000200154905092915050565b60008181526009602052604081208054606092919060029081106117a1576117a1614e00565b906000526020600020015490506117b781613614565b9392505050565b6000610a2c82612b66565b60005b8181101561189f5760008383838181106117e8576117e8614e00565b905060a002018036038101906117fe9190614e7f565b905060008151600281111561181557611815614ae8565b036118325761182d8582606001518360800151613512565b611896565b60018151600281111561184757611847614ae8565b036118695761182d858260200151836040015184606001518560800151612bac565b60028151600281111561187e5761187e614ae8565b0361189657611896858260200151836040015161366d565b506001016117cc565b5061104f83612dc3565b80156118c75760405162461bcd60e51b8152600401610b4a90614e52565b61104f8383612117565b816118db816117be565b6001600160a01b0316336001600160a01b03161461190e57604051634a0bfec160e01b8152336004820152602401610b4a565b6000838152600b602052604090205460ff1680151583151514610bef578215611976576000848152600b6020526040808220805460ff191660011790555185917f4d69b51fee53c28bd8b61fe008151577ca65160b5248f6225e74d64fd4cf732891a2610bef565b6000848152600a6020526040812080549161199083614cb6565b90915550506000848152600b6020526040808220805460ff191690555185917fd7ea826caa575891b88b771d03fe1da3092d4a65c5adeaccc99be085978cebe891a250505050565b60006001600160a01b038216611a04576040516322718ad960e21b815260006004820152602401610b4a565b506001600160a01b031660009081526003602052604090205490565b611a286136f3565b611a326000613720565b565b611a3d836133ff565b611a595760405162461bcd60e51b8152600401610b4a90614e16565b6000838152600960205260408120905b6002811015610c0b57818181548110611a8457611a84614e00565b9060005260206000200154600014611ade5760405162461bcd60e51b815260206004820152601760248201527f616c72656164792068617665207265666572656e6365730000000000000000006044820152606401610b4a565b6000805b6004811015611b5d57600081611af9856004614dd6565b611b039190614f0a565b9050858110611b125750611b5d565b611b1d826040614dd6565b878783818110611b2f57611b2f614e00565b9050602002016020810190611b4491906142ca565b6001600160401b0316901b929092179150600101611ae2565b508015611b845780838381548110611b7757611b77614e00565b6000918252602090912001555b50600101611a69565b61122883838361366d565b6060611ba382613772565b604051602001611bb39190614f1d565b6040516020818303038152906040529050919050565b606060018054610a5690614c66565b82611be2816133ff565b611c0157604051634a0bfec160e01b8152336004820152602401610b4a565b6000848152600960205260409020805483919085908110611c2457611c24614e00565b60009182526020909120015550505050565b610b0d338383613805565b611c49613fbf565b600082600081518110611c5e57611c5e614e00565b60200260200101519050808260000151600060088110611c8057611c80614e00565b6001600160401b03928316602091820292909201919091528351604084811c841691909201528351608084901c909216910152815160c082901c606090910152825183906001908110611cd557611cd5614e00565b60200260200101519050808260000151600460088110611cf757611cf7614e00565b6001600160401b03928316602090910291909101528251604083901c821660a0909101528251608083901c90911660c09182015282519082901c60e0909101528251611d5d9084906002908110611d5057611d50614e00565b6020026020010151613614565b602083015250919050565b6001600160a01b0382166000908152600e6020526040812054819060ff16808203611d9a5760008092509250506110c2565b66ffffffffffffff841115611dc557604051638ce0857d60e01b815260048101859052602401610b4a565b60ff8181166000908152600f602052604090205460389290921b67ff00000000000000169490941795931693505050565b6040516311b590b760e21b81526001600160a01b0385811660048301528481166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906346d642dc90606401600060405180830381600087803b158015611e6857600080fd5b505af1158015611e7c573d6000803e3d6000fd5b50505050610bef848484846138a4565b611e95826133ff565b611eb15760405162461bcd60e51b8152600401610b4a90614e16565b6000828152600960205260408120805490919082908290611ed457611ed4614e00565b90600052602060002001549050826001600160401b0316816001600160401b031603611f2a578067ffffffffffffffff191682600081548110611f1957611f19614e00565b600091825260209091200155610bef565b826001600160401b0316604082901c6001600160401b031603611f69578067ffffffffffffffff60401b191682600081548110611f1957611f19614e00565b826001600160401b0316608082901c6001600160401b031603611fa8578067ffffffffffffffff60801b191682600081548110611f1957611f19614e00565b6001600160401b03831660c082901c03611fd957806001600160c01b031682600081548110611f1957611f19614e00565b81600181548110611fec57611fec614e00565b90600052602060002001549050826001600160401b0316816001600160401b031603612031578067ffffffffffffffff191682600181548110611f1957611f19614e00565b826001600160401b0316604082901c6001600160401b031603612070578067ffffffffffffffff60401b191682600181548110611f1957611f19614e00565b826001600160401b0316608082901c6001600160401b0316036120af578067ffffffffffffffff60801b191682600181548110611f1957611f19614e00565b6001600160401b03831660c082901c036120e057806001600160c01b031682600181548110611f1957611f19614e00565b60405162461bcd60e51b815260206004820152600c60248201526b4e6f207265666572656e636560a01b6044820152606401610b4a565b612120826133ff565b61213c5760405162461bcd60e51b8152600401610b4a90614e16565b600082815260096020526040812080549091908290829061215f5761215f614e00565b90600052602060002001549050806001600160401b031660000361219c57826001600160401b0316811782600081548110611f1957611f19614e00565b604081901c6001600160401b03166000036121d4576040836001600160401b0316901b811782600081548110611f1957611f19614e00565b608081901c6001600160401b031660000361220c576080836001600160401b0316901b811782600081548110611f1957611f19614e00565b60c081901c60000361223b5760c0836001600160401b0316901b811782600081548110611f1957611f19614e00565b8160018154811061224e5761224e614e00565b90600052602060002001549050806001600160401b031660000361228b57826001600160401b0316811782600181548110611f1957611f19614e00565b604081901c6001600160401b03166000036122c3576040836001600160401b0316901b811782600181548110611f1957611f19614e00565b608081901c6001600160401b03166000036122fb576080836001600160401b0316901b811782600181548110611f1957611f19614e00565b60c081901c60000361232a5760c0836001600160401b0316901b811782600181548110611f1957611f19614e00565b60405162461bcd60e51b815260206004820152601c60248201527f4e6f207265666572656e636520736c6f747320617661696c61626c65000000006044820152606401610b4a565b606061237d82612b66565b5060006123886138bb565b905060008151116123a857604051806020016040528060008152506117b7565b806123b284613772565b6040516020016123c3929190614f71565b6040516020818303038152906040529392505050565b81816123f4826000908152600b602052604090205460ff1690565b61241a576040516307045dd960e01b815230600482015260248101839052604401610b4a565b6000828152600a6020526040902054811461245857604051631081e84160e21b81523060048201526024810183905260448101829052606401610b4a565b612463868686610fba565b505050505050565b612473613508565b61249257604051634a0bfec160e01b8152336004820152602401610b4a565b6001600160a01b03821660008181526008602052604090819020839055517faffd0d436417235189c464f3463b54b1009e5aebc9e8e089f1f176e2231f2f92906124df9084815260200190565b60405180910390a25050565b80156125095760405162461bcd60e51b8152600401610b4a90614e52565b610bef848484611a34565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61254a6136f3565b6001600160a01b03811661257457604051631e4fbdf760e01b815260006004820152602401610b4a565b61257d81613720565b50565b606060078054610a5690614c66565b81816125aa826000908152600b602052604090205460ff1690565b6125d0576040516307045dd960e01b815230600482015260248101839052604401610b4a565b6000828152600a6020526040902054811461260e57604051631081e84160e21b81523060048201526024810183905260448101829052606401610b4a565b612463868686611231565b60408051808201825260008082526060602083018190528351600280825291810190945291929091816020015b61264e613ffd565b8152602001906001900390816126465790505060408051610100810182526000808252602082015291925081016011815260086020820152604001600081526020016000815260200160008152602001604051806040016040528060118152602001706174747269627574654c6974655265667360781b815250815250816000815181106126de576126de614e00565b60200260200101819052506040518061010001604052806001815260200160018152602001600f601381111561271657612716614ae8565b815260016020820152604001600081526020016002815260200160008152602001604051806040016040528060048152602001636e616d6560e01b8152508152508160018151811061276a5761276a614e00565b60200260200101819052506040518060400160405280600181526020018281525091505090565b82816127ac826000908152600b602052604090205460ff1690565b6127d2576040516307045dd960e01b815230600482015260248101839052604401610b4a565b6000828152600a6020526040902054811461281057604051631081e84160e21b81523060048201526024810183905260448101829052606401610b4a565b61281c87878787611df6565b50505050505050565b600081815260096020908152604091829020825160088082526101208201909452606093849382016101008036833750506040805160088082526101208201909252929550905060208201610100803683370190505091506000808260008154811061289357612893614e00565b9060005260206000200154905060005b60088110156129755760006128b9600483614dc2565b9050838111156128e6578481815481106128d5576128d5614e00565b906000526020600020015492508093505b60006128f3600484614e3e565b6128fe906040614dd6565b905083811c60008061290f83610c12565b91509150818b878151811061292657612926614e00565b60200260200101906001600160a01b031690816001600160a01b031681525050808a878151811061295957612959614e00565b60209081029190910101525050600190930192506128a3915050565b50505050915091565b6000612988613508565b6129a757604051634a0bfec160e01b8152336004820152602401610b4a565b60105460ff908116908190036129d0576040516398d81d7f60e01b815260040160405180910390fd5b6010805460ff169060006129e383614fa0565b82546101009290920a60ff8181021990931691831602179091556001600160a01b0385166000908152600e602052604090205416159050612a4257604051632cbd243960e21b81526001600160a01b0384166004820152602401610b4a565b60ff81166000818152600d6020908152604080832080546001600160a01b0319166001600160a01b038916908117909155808452600e835292819020805460ff19168517905551928352909130917f0aadf4a66762bfc29fb130d2e24b49ee0c08cdad373fc52ff027c1909acd496b910160405180910390a390505b919050565b60006001600160e01b0319821663075ad2d560e51b1480612af457506001600160e01b03198216635a2d1e0760e11b145b80612b0757506001600160e01b03198216155b80612b2257506001600160e01b0319821663f44c3bf760e01b145b80610a2c5750610a2c826138db565b60006001600160e01b0319821663209fddd160e21b1480610a2c57506301ffc9a760e01b6001600160e01b0319831614610a2c565b6000818152600260205260408120546001600160a01b031680610a2c57604051637e27328960e01b815260048101849052602401610b4a565b61104f838383600161392b565b8433612bb7826117be565b6001600160a01b031614612bdd5760405162461bcd60e51b8152600401610b4a90614e16565b60405162080f7160eb1b81526004810185905260009081906001600160a01b0388169063407b8800906024016040805180830381865afa158015612c25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c499190614fbf565b90925090506001600160a01b03821630148015612c6557508781145b612ca85760405162461bcd60e51b81526020600482015260146024820152736e6f742061737369676e656420746f207468697360601b6044820152606401610b4a565b60405163792bbea760e01b81526001600160a01b038881166004830152602482018890527f0000000000000000000000000000000000000000000000000000000000000000169063792bbea790604401600060405180830381600087803b158015612d1257600080fd5b505af1158015612d26573d6000803e3d6000fd5b5050604051636a72780f60e01b81526001600160a01b03888116600483015260248201889052306044830152606482018c90527f0000000000000000000000000000000000000000000000000000000000000000169250636a72780f9150608401600060405180830381600087803b158015612da157600080fd5b505af1158015612db5573d6000803e3d6000fd5b505050505050505050505050565b600080612dcf83612825565b915091506000612dde846117be565b9050612deb818484612e7a565b83816001600160a01b03167fec40280f1fdbf5d3c17d36a0ca545a8ac154f9b9cd92dbe8b205dc9936fd4acd8585604051612e27929190614120565b60405180910390a360405184907ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce790600090a250505050565b610b0d828260405180602001604052806000815250613a31565b612eba6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60005b83518110156131e25760006001600160a01b0316848281518110612ee357612ee3614e00565b60200260200101516001600160a01b031603156131da57846001600160a01b0316848281518110612f1657612f16614e00565b60200260200101516001600160a01b0316636352211e858481518110612f3e57612f3e614e00565b60200260200101516040518263ffffffff1660e01b8152600401612f6491815260200190565b602060405180830381865afa158015612f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa59190614fed565b6001600160a01b03161461300c5760405162461bcd60e51b815260206004820152602860248201527f546865206f776e6572206d757374206f776e20616c6c20617474726962757465604482015267103a37b5b2b7399760c11b6064820152608401610b4a565b600084828151811061302057613020614e00565b60200260200101516001600160a01b031663da08b00385848151811061304857613048614e00565b60200260200101516040518263ffffffff1660e01b815260040161306e91815260200190565b602060405180830381865afa15801561308b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130af919061500a565b905060068160068111156130c5576130c5614ae8565b036130de578251836130d682614cb6565b9052506131d8565b60008160068111156130f2576130f2614ae8565b0361310757602083018051906130d682614cb6565b600181600681111561311b5761311b614ae8565b0361313057604083018051906130d682614cb6565b600481600681111561314457613144614ae8565b0361315957606083018051906130d682614cb6565b600281600681111561316d5761316d614ae8565b0361318257608083018051906130d682614cb6565b600581600681111561319657613196614ae8565b036131ab5760a083018051906130d682614cb6565b60038160068111156131bf576131bf614ae8565b036131d85760c083018051906131d482614cb6565b9052505b505b600101612ebd565b5080516001108015906131fa57506001816020015111155b801561320b57506001816040015111155b801561321c57506001816060015111155b801561322d57506001816080015111155b801561323e575060018160a0015111155b801561324f575060018160c0015111155b6132af5760405162461bcd60e51b815260206004820152602b60248201527f4f6e6c79206f6e65206f6620656163682061747472696275746520747970652060448201526a34b99030b63637bbb2b21760a91b6064820152608401610b4a565b80602001516001146133035760405162461bcd60e51b815260206004820152601e60248201527f4261636b67726f756e64206174747269627574652072657175697265642e00006044820152606401610b4a565b80604001516001146133575760405162461bcd60e51b815260206004820152601860248201527f42617365206174747269627574652072657175697265642e00000000000000006044820152606401610b4a565b80608001516001146133ab5760405162461bcd60e51b815260206004820152601860248201527f45796573206174747269627574652072657175697265642e00000000000000006044820152606401610b4a565b8060c00151600114610bef5760405162461bcd60e51b815260206004820152601960248201527f4d6f757468206174747269627574652072657175697265642e000000000000006044820152606401610b4a565b60006134136006546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610a2c575050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331490565b805160009082818303613474576000925061347c565b602081015192505b5050919050565b6001600160a01b0382166134ad57604051633250574960e11b815260006004820152602401610b4a565b60006134ba838333613a48565b9050836001600160a01b0316816001600160a01b031614610bef576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610b4a565b6000610ef5613b41565b823361351d826117be565b6001600160a01b0316146135435760405162461bcd60e51b8152600401610b4a90614e16565b604051636a72780f60e01b81526001600160a01b03848116600483015260248201849052306044830152606482018690527f00000000000000000000000000000000000000000000000000000000000000001690636a72780f906084015b600060405180830381600087803b1580156135bb57600080fd5b505af11580156135cf573d6000803e3d6000fd5b5050505050505050565b60006135e86000836000613a48565b90506001600160a01b038116610b0d57604051637e27328960e01b815260048101839052602401610b4a565b604080516020810183905260609160009101604051602081830303815290604052905080601f8151811061364a5761364a614e00565b01602001516001600160f81b031916156136645792915050565b6117b781613b6e565b8233613678826117be565b6001600160a01b03161461369e5760405162461bcd60e51b8152600401610b4a90614e16565b60405163792bbea760e01b81526001600160a01b038481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063792bbea7906044016135a1565b6006546001600160a01b03163314611a325760405163118cdaa760e01b8152336004820152602401610b4a565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6060600061377f83613c4b565b60010190506000816001600160401b0381111561379e5761379e614564565b6040519080825280601f01601f1916602001820160405280156137c8576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846137d2575b509392505050565b6001600160a01b03821661383757604051630b61174360e31b81526001600160a01b0383166004820152602401610b4a565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6138af848484610fba565b610bef84848484613d23565b606060405180606001604052806028815260200161507c60289139905090565b60006001600160e01b031982166380ac58cd60e01b148061390c57506001600160e01b03198216635b5e139f60e01b145b80610a2c57506301ffc9a760e01b6001600160e01b0319831614610a2c565b808061393f57506001600160a01b03821615155b15613a0157600061394f84612b66565b90506001600160a01b0383161580159061397b5750826001600160a01b0316816001600160a01b031614155b801561398e575061398c8184612514565b155b156139b75760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610b4a565b81156139ff5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b613a3b8383613e45565b61104f6000848484613d23565b6000828152600260205260408120546001600160a01b0390811690831615613a7557613a75818486613eaa565b6001600160a01b03811615613ab357613a9260008560008061392b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615613ae2576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6000613b556006546001600160a01b031690565b6001600160a01b0316336001600160a01b031614905090565b606060005b828181518110613b8557613b85614e00565b01602001516001600160f81b03191615613bab5780613ba381614cb6565b915050613b73565b6000816001600160401b03811115613bc557613bc5614564565b6040519080825280601f01601f191660200182016040528015613bef576020820181803683370190505b50905060005b828110156137fd57848181518110613c0f57613c0f614e00565b602001015160f81c60f81b828281518110613c2c57613c2c614e00565b60200101906001600160f81b031916908160001a905350600101613bf5565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613c8a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613cb6576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613cd457662386f26fc10000830492506010015b6305f5e1008310613cec576305f5e100830492506008015b6127108310613d0057612710830492506004015b60648310613d12576064830492506002015b600a8310610a2c5760010192915050565b6001600160a01b0383163b15610bef57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290613d6590339088908790879060040161502b565b6020604051808303816000875af1925050508015613da0575060408051601f3d908101601f19168201909252613d9d9181019061505e565b60015b613e09573d808015613dce576040519150601f19603f3d011682016040523d82523d6000602084013e613dd3565b606091505b508051600003613e0157604051633250574960e11b81526001600160a01b0385166004820152602401610b4a565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610c0b57604051633250574960e11b81526001600160a01b0385166004820152602401610b4a565b6001600160a01b038216613e6f57604051633250574960e11b815260006004820152602401610b4a565b6000613e7d83836000613a48565b90506001600160a01b0381161561104f576040516339e3563760e11b815260006004820152602401610b4a565b613eb5838383613f0e565b61104f576001600160a01b038316613ee357604051637e27328960e01b815260048101829052602401610b4a565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610b4a565b60006001600160a01b03831615801590613f6c5750826001600160a01b0316846001600160a01b03161480613f485750613f488484612514565b80613f6c57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b828054828255906000526020600020908101928215613faf579160200282015b82811115613faf578251825591602001919060010190613f94565b50613fbb929150614064565b5090565b6040518060400160405280613fd2614079565b8152602001606081525090565b508054600082559060005260206000209081019061257d9190614064565b60405180610100016040528060008152602001600081526020016000601381111561402a5761402a614ae8565b8152602001600081526020016000600181111561404957614049614ae8565b81526020016000815260200160008152602001606081525090565b5b80821115613fbb5760008155600101614065565b6040518061010001604052806008906020820280368337509192915050565b6001600160e01b03198116811461257d57600080fd5b6000602082840312156140c057600080fd5b81356117b781614098565b6000602082840312156140dd57600080fd5b5035919050565b60008151808452602080850194506020840160005b83811015614115578151875295820195908201906001016140f9565b509495945050505050565b604080825283519082018190526000906020906060840190828701845b828110156141625781516001600160a01b03168452928401929084019060010161413d565b505050838103602085015261417781866140e4565b9695505050505050565b60005b8381101561419c578181015183820152602001614184565b50506000910152565b600081518084526141bd816020860160208601614181565b601f01601f19169290920160200192915050565b6020815260006117b760208301846141a5565b6001600160a01b038116811461257d57600080fd5b6000806040838503121561420c57600080fd5b8235614217816141e4565b946020939093013593505050565b80358015158114612abe57600080fd5b6000806040838503121561424857600080fd5b8235915061425860208401614225565b90509250929050565b600080600080600060a0868803121561427957600080fd5b85359450602086013561428b816141e4565b93506040860135925060608601356142a2816141e4565b949793965091946080013592915050565b80356001600160401b0381168114612abe57600080fd5b6000602082840312156142dc57600080fd5b6117b7826142b3565b60008083601f8401126142f757600080fd5b5081356001600160401b0381111561430e57600080fd5b6020830191508360208260051b85010111156110c257600080fd5b6000806000806040858703121561433f57600080fd5b84356001600160401b038082111561435657600080fd5b614362888389016142e5565b9096509450602087013591508082111561437b57600080fd5b50614388878288016142e5565b95989497509550505050565b600080604083850312156143a757600080fd5b50508035926020909101359150565b6000806000604084860312156143cb57600080fd5b8335925060208401356001600160401b03808211156143e957600080fd5b818601915086601f8301126143fd57600080fd5b81358181111561440c57600080fd5b87602082850101111561441e57600080fd5b6020830194508093505050509250925092565b60008060006060848603121561444657600080fd5b8335614451816141e4565b92506020840135614461816141e4565b929592945050506040919091013590565b60006020828403121561448457600080fd5b81356117b7816141e4565b6000602082840312156144a157600080fd5b813560ff811681146117b757600080fd5b6020808252825160009190828483015b60088210156144ea5782516001600160401b03168152918301916001919091019083016144c2565b50505050602083015161012083810152613f6c6101408401826141a5565b60008060006060848603121561451d57600080fd5b8335925061452d602085016142b3565b9150604084013590509250925092565b60008060006060848603121561455257600080fd5b833592506020840135614461816141e4565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561459c5761459c614564565b60405290565b60405161010081016001600160401b038111828210171561459c5761459c614564565b604051601f8201601f191681016001600160401b03811182821017156145ed576145ed614564565b604052919050565b600082601f83011261460657600080fd5b81356001600160401b0381111561461f5761461f614564565b614632601f8201601f19166020016145c5565b81815284602083860101111561464757600080fd5b816020850160208301376000918101602001919091529392505050565b6000610120828403121561467757600080fd5b61467f61457a565b905082601f83011261469057600080fd5b6146986145a2565b806101008401858111156146ab57600080fd5b845b818110156146cc576146be816142b3565b8452602093840193016146ad565b509083523590506001600160401b038111156146e757600080fd5b6146f3848285016145f5565b60208301525092915050565b6000806040838503121561471257600080fd5b8235915060208301356001600160401b0381111561472f57600080fd5b61473b85828601614664565b9150509250929050565b6020815260006117b760208301846140e4565b60006020828403121561476a57600080fd5b81356001600160401b0381111561478057600080fd5b613f6c84828501614664565b600082601f83011261479d57600080fd5b813560206001600160401b038211156147b8576147b8614564565b8160051b6147c78282016145c5565b92835284810182019282810190878511156147e157600080fd5b83870192505b84831015614800578235825291830191908301906147e7565b979650505050505050565b6000806040838503121561481e57600080fd5b8235915060208301356001600160401b0381111561483b57600080fd5b61473b8582860161478c565b60008060006060848603121561485c57600080fd5b505081359360208301359350604090920135919050565b60008060006040848603121561488857600080fd5b8335925060208401356001600160401b03808211156148a657600080fd5b818601915086601f8301126148ba57600080fd5b8135818111156148c957600080fd5b87602060a08302850101111561441e57600080fd5b6000806000604084860312156148f357600080fd5b8335925060208401356001600160401b0381111561491057600080fd5b61491c868287016142e5565b9497909650939450505050565b6000806040838503121561493c57600080fd5b8235614947816141e4565b915061425860208401614225565b60006020828403121561496757600080fd5b81356001600160401b0381111561497d57600080fd5b613f6c8482850161478c565b6000806000806080858703121561499f57600080fd5b84356149aa816141e4565b935060208501356149ba816141e4565b92506040850135915060608501356001600160401b038111156149dc57600080fd5b6149e8878288016145f5565b91505092959194509250565b60008060408385031215614a0757600080fd5b82359150614258602084016142b3565b60008060008060808587031215614a2d57600080fd5b8435614a38816141e4565b93506020850135614a48816141e4565b93969395505050506040820135916060013590565b60008060008060608587031215614a7357600080fd5b8435935060208501356001600160401b03811115614a9057600080fd5b614a9c878288016142e5565b9598909750949560400135949350505050565b60008060408385031215614ac257600080fd5b8235614acd816141e4565b91506020830135614add816141e4565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60028110614b0e57614b0e614ae8565b9052565b6000602080835260608084018551838601528286015160408060408801528282518085526080945060808901915060808160051b8a0101878501945060005b82811015614be457607f198b83030184528551610100815184528a8201518b8501528682015160148110614b8757614b87614ae8565b84880152818a01518a85015288820151614ba38a860182614afe565b5060a0828101519085015260c0808301519085015260e091820151918401819052614bd0818501836141a5565b978b0197958b019593505050600101614b51565b509a9950505050505050505050565b600080600080600060a08688031215614c0b57600080fd5b8535614c16816141e4565b94506020860135614c26816141e4565b93506040860135925060608601356001600160401b03811115614c4857600080fd5b614c54888289016145f5565b95989497509295608001359392505050565b600181811c90821680614c7a57607f821691505b602082108103614c9a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600060018201614cc857614cc8614ca0565b5060010190565b8183526000602080850194508260005b85811015614115578135614cf2816141e4565b6001600160a01b031687529582019590820190600101614cdf565b81835260006001600160fb1b03831115614d2657600080fd5b8260051b80836020870137939093016020019392505050565b608081526000614d5360808301888a614ccf565b8281036020840152614d66818789614d0d565b6001600160a01b03959095166040840152505060600152949350505050565b604081526000614d99604083018688614ccf565b8281036020840152614800818587614d0d565b634e487b7160e01b600052601260045260246000fd5b600082614dd157614dd1614dac565b500490565b8082028115828204841417610a2c57610a2c614ca0565b81810381811115610a2c57610a2c614ca0565b634e487b7160e01b600052603260045260246000fd5b6020808252600e908201526d1b9bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600082614e4d57614e4d614dac565b500690565b602080825260139082015272125b9d985b1a59081b595d1859185d18481251606a1b604082015260600190565b600060a08284031215614e9157600080fd5b60405160a081018181106001600160401b0382111715614eb357614eb3614564565b604052823560038110614ec557600080fd5b81526020830135614ed5816141e4565b6020820152604083810135908201526060830135614ef2816141e4565b60608201526080928301359281019290925250919050565b80820180821115610a2c57610a2c614ca0565b7f68747470733a2f2f656c657068616e74732e66756e2f6173736574732f656c658152657068616e742f60d01b602082015260008251614f64816026850160208701614181565b9190910160260192915050565b60008351614f83818460208801614181565b835190830190614f97818360208801614181565b01949350505050565b600060ff821660ff8103614fb657614fb6614ca0565b60010192915050565b60008060408385031215614fd257600080fd5b8251614fdd816141e4565b6020939093015192949293505050565b600060208284031215614fff57600080fd5b81516117b7816141e4565b60006020828403121561501c57600080fd5b8151600781106117b757600080fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614177908301846141a5565b60006020828403121561507057600080fd5b81516117b78161409856fe68747470733a2f2f656c657068616e74732e66756e2f6d657461646174612f656c657068616e742f68747470733a2f2f656c657068616e74732e66756e2f736368656d61732f656c657068616e742e6a736f6ea26469706673582212208dc918ca365bbb3936e3ad11c01b9c774e89a994c28c7e92daca63d5f1815f2264736f6c6343000817003300000000000000000000000000000000001616e65bb9fda42dfbb7155406549b0000000000000000000000003feab664aac5550765cdda720dd10a2874a63601