{"version":3,"sources":["assets/img/demo/presentation/intro/layer01.png","assets/img/demo/presentation/intro/layer02.png","assets/img/demo/presentation/intro/layer03.png","assets/img/demo/presentation/intro/layer04.png","assets/img/demo/presentation/intro/layer05.png","assets/img/demo/presentation/intro/layer06.png","assets/img/demo/presentation/intro/layer07.png","assets/img/demo/presentation/intro/layer08.png","assets/img/demo/presentation/intro/layer09.png","typechain/factories/Ownable__factory.ts","typechain/factories/ERC165__factory.ts","typechain/factories/IERC165__factory.ts","typechain/factories/ERC1155__factory.ts","typechain/factories/IERC1155__factory.ts","typechain/factories/IERC1155MetadataURI__factory.ts","typechain/factories/IERC1155Receiver__factory.ts","typechain/factories/ERC721__factory.ts","typechain/factories/IERC721__factory.ts","typechain/factories/IERC721Enumerable__factory.ts","typechain/factories/IERC721Metadata__factory.ts","typechain/factories/IERC721Receiver__factory.ts","typechain/factories/CryptopunksData__factory.ts","typechain/factories/ERC2981__factory.ts","typechain/factories/FirstDerivative__factory.ts","typechain/factories/IERC2981__factory.ts","typechain/factories/NoopPlaceholder__factory.ts","util/Constants.ts","connectors.ts","util/NetworkConnector.ts","components/StatsComponent.tsx","components/HeroSection.tsx","assets/img/eth.svg","components/PlaceholderImage.tsx","components/NFTCard.tsx","components/RecentDerivativesSection.tsx","components/PopularNFTSection.tsx","components/MintCollectionsRail.tsx","components/MintTokensRail.tsx","components/MintForm.tsx","util/ContractFascade.ts","components/ConnectWalletForm.tsx","assets/logos/metamask.svg","assets/logos/walletconnect.svg","components/MintModal.tsx","components/FaqSection.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["_abi","anonymous","inputs","indexed","internalType","name","type","outputs","stateMutability","utils","Interface","address","signerOrProvider","Contract","abi","ERC165__factory","_bytecode","ERC1155__factory","signer","uri_","overrides","ContractFactory","bytecode","ERC721__factory","name_","symbol_","CryptopunksData__factory","FirstDerivative__factory","symbol","NoopPlaceholder__factory","FIRST_DERIVATIVE_ADDRESS","CRYPTOPUNKS_ADDRESS","METADATA_RETRIEVER_HOST","POPULAR_COLLECTIONS","injected","InjectedConnector","supportedChainIds","network","NetworkConnector","urls","defaultChainId","walletconnect","WalletConnectConnector","rpc","qrcode","useEthNetwork","useWeb3React","active","library","activate","useEffect","a","connectToWeb3Network","fetchDerivativeMetadata","derivativeId","fetchMetadata","contractId","tokenId","fetch","toString","response","json","StatsComponent","useState","mintedCount","setMintedCount","ownerCount","setOwnerCount","firstDerivativeContract","connect","totalSupply","Promise","all","Array","from","toNumber","keys","map","index","ownerOf","allOwners","Set","size","calculateStatistics","className","HeroSection","element","document","querySelectorAll","i","length","Parallax","dispatch","onClick","this","displayMintModal","style","maxWidth","src","introLayerOne","alt","zIndex","introLayerTwo","introLayerThree","introLayerFour","introLayerFive","introLayerSix","introLayerSeven","introLayerEight","introLayerNine","React","Component","PlaceholderImage","props","isImageLoaded","setImageLoaded","uri","display","x","y","rx","ry","width","height","onLoad","NFTCard","handleMint","payload","metadata","image","startsWith","substr","saneImageUri","objectFit","viewBox","renderCardTitle","undefined","lastSalePrice","ethLogo","ethersUtils","formatEther","description","substring","truncatedDescription","displayButton","isZero","href","role","target","rel","RecentDerivativesSection","recentDerivatives","setRecentDerivatives","isLoading","setIsLoading","result","sub","isNegative","underlyingPromise","getUnderlying","metadataPromise","underlyingCollectionId","underlyingTokenId","push","underlyingMetadata","console","error","log","JSON","stringify","updateRecentDerivatives","id","BigNumber","reduce","resultArray","item","chunkIndex","Math","floor","derivativesChunk","derivative","PopularNFTSection","openSeaItems","setOpenSeaItems","isLoaded","setLoaded","getRawAssets","api","OpenSeaAPI","networkName","Network","Main","get","limit","offset","order_by","asset_contract_addresses","results","assets","j","assetFromJSON","sort","random","slice","asset","getDerivative","assetContract","collectionId","imageUrl","lastSale","totalPrice","items","loadOpenSeaItems","openseaItemsChunk","MintCollectionsRail","resolvedPopularCollections","setResolvedPopularCollections","collection","featured_image_url","image_url","resolvedCollections","getPopularCollectionsData","minHeight","minWidth","onCollection","maxHeight","MintTokensRail","resolvedTokens","setResolvedTokens","isResolved","setResolved","getAssets","asset_contract_address","order_direction","getTokens","token","imageUrlThumbnail","onTokenId","tokenAddress","ContractIdValidity","TokenIdValidity","ContractFascade","erc721","cryptopunksData","erc1155","Error","punkImageSvg","punkSvg","justSvg","encodedSvg","svgToMiniDataURI","MintForm","setContractId","contractInterface","setContractInterface","contractName","setContractName","EMPTY","isValidContractId","setIsValidContractId","setTokenId","tokenMetaData","setTokenMetaData","isValidTokenId","setIsValidTokenId","setDerivativeId","isMinting","setIsMinting","mintingStatus","setMintingStatus","event","currentTarget","value","getSigner","derivativePrice","price","mintDerivative","mintedTokenId","wait","receipt","transferEvents","events","filter","transferArgs","pop","args","MINTED","useBus","Create","contract","updateContractInterface","VALID","INVALID","updateContractValidity","updateContractName","PROGRESS","tokenMetadata","CLAIMED","updateTokenIdValidity","getContractIdValidationStateClass","onChange","placeholder","htmlFor","getTokenIdValidationStateClass","disabled","getMintbutton","fascade","erc165","supportsInterface","isErc721","isErc1155","ConnectionType","ConnectWalletForm","connectingMetamask","setConnectingMetamask","connectingWalletConnect","setConnectingWalletConnect","connectingLedger","setConnectingLedger","errorStatus","setErrorStatus","handleConnect","METAMASK","WALLET_CONNECT","LEDGER","provider","walletConnect","message","renderConnectingStatus","connecting","Row","Col","sm","metamask","MintModal","visible","setVisible","requestedContractId","setRequestedContractId","requestedTokenId","setRequestedTokenId","handleDismiss","Modal","show","onHide","centered","Header","closeButton","Title","Body","Footer","Button","variant","FaqSection","getLibrary","ethers","providers","Web3Provider","NetworkWeb3ReactRoot","createWeb3ReactRoot","App","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.bfe6fd8d.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/layer01.4f8530bc.png\";","export default __webpack_public_path__ + \"static/media/layer02.76c2e174.png\";","export default __webpack_public_path__ + \"static/media/layer03.b882888e.png\";","export default __webpack_public_path__ + \"static/media/layer04.ed646e25.png\";","export default __webpack_public_path__ + \"static/media/layer05.d5383b5d.png\";","export default __webpack_public_path__ + \"static/media/layer06.64f039dc.png\";","export default __webpack_public_path__ + \"static/media/layer07.64880d55.png\";","export default __webpack_public_path__ + \"static/media/layer08.91c26a95.png\";","export default __webpack_public_path__ + \"static/media/layer09.ee10ae97.png\";","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { Ownable, OwnableInterface } from \"../Ownable\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nexport class Ownable__factory {\n static readonly abi = _abi;\n static createInterface(): OwnableInterface {\n return new utils.Interface(_abi) as OwnableInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): Ownable {\n return new Contract(address, _abi, signerOrProvider) as Ownable;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { ERC165, ERC165Interface } from \"../ERC165\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport class ERC165__factory {\n static readonly abi = _abi;\n static createInterface(): ERC165Interface {\n return new utils.Interface(_abi) as ERC165Interface;\n }\n static connect(address: string, signerOrProvider: Signer | Provider): ERC165 {\n return new Contract(address, _abi, signerOrProvider) as ERC165;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { IERC165, IERC165Interface } from \"../IERC165\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport class IERC165__factory {\n static readonly abi = _abi;\n static createInterface(): IERC165Interface {\n return new utils.Interface(_abi) as IERC165Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IERC165 {\n return new Contract(address, _abi, signerOrProvider) as IERC165;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { ERC1155, ERC1155Interface } from \"../ERC1155\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"uri_\",\n type: \"string\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n indexed: false,\n internalType: \"uint256[]\",\n name: \"values\",\n type: \"uint256[]\",\n },\n ],\n name: \"TransferBatch\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"TransferSingle\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"string\",\n name: \"value\",\n type: \"string\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"URI\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"accounts\",\n type: \"address[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n ],\n name: \"balanceOfBatch\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"amounts\",\n type: \"uint256[]\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeBatchTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n name: \"uri\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nconst _bytecode =\n \"0x60806040523480156200001157600080fd5b506040516200186c3803806200186c833981810160405260208110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052506200010191506301ffc9a760e01b905062000137565b6200010c81620001bc565b6200011e636cdb3d1360e11b62000137565b620001306303a24d0760e21b62000137565b5062000271565b6001600160e01b0319808216141562000197576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b8051620001d1906003906020840190620001d5565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200021857805160ff191683800117855562000248565b8280016001018555821562000248579182015b82811115620002485782518255916020019190600101906200022b565b50620002569291506200025a565b5090565b5b808211156200025657600081556001016200025b565b6115eb80620002816000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f414610360578063a22cb465146104d7578063e985e9c514610505578063f242432a1461053357610087565b8062fdd58e1461008c57806301ffc9a7146100ca5780630e89341c146101055780632eb2c2d614610197575b600080fd5b6100b8600480360360408110156100a257600080fd5b506001600160a01b0381351690602001356105fe565b60408051918252519081900360200190f35b6100f1600480360360208110156100e057600080fd5b50356001600160e01b03191661066d565b604080519115158252519081900360200190f35b6101226004803603602081101561011b57600080fd5b503561068c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015c578181015183820152602001610144565b50505050905090810190601f1680156101895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61035e600480360360a08110156101ad57600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156101e157600080fd5b8201836020820111156101f357600080fd5b8035906020019184602083028401116401000000008311171561021557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561026557600080fd5b82018360208201111561027757600080fd5b8035906020019184602083028401116401000000008311171561029957600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156102e957600080fd5b8201836020820111156102fb57600080fd5b8035906020019184600183028401116401000000008311171561031d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610724945050505050565b005b6104876004803603604081101561037657600080fd5b81019060208101813564010000000081111561039157600080fd5b8201836020820111156103a357600080fd5b803590602001918460208302840111640100000000831117156103c557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561041557600080fd5b82018360208201111561042757600080fd5b8035906020019184602083028401116401000000008311171561044957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a22945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104c35781810151838201526020016104ab565b505050509050019250505060405180910390f35b61035e600480360360408110156104ed57600080fd5b506001600160a01b0381351690602001351515610b0e565b6100f16004803603604081101561051b57600080fd5b506001600160a01b0381358116916020013516610bfd565b61035e600480360360a081101561054957600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561058957600080fd5b82018360208201111561059b57600080fd5b803590602001918460018302840111640100000000831117156105bd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c2b945050505050565b60006001600160a01b0383166106455760405162461bcd60e51b815260040180806020018281038252602b815260200180611467602b913960400191505060405180910390fd5b5060009081526001602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b03191660009081526020819052604090205460ff1690565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107185780601f106106ed57610100808354040283529160200191610718565b820191906000526020600020905b8154815290600101906020018083116106fb57829003601f168201915b50505050509050919050565b81518351146107645760405162461bcd60e51b815260040180806020018281038252602881526020018061158e6028913960400191505060405180910390fd5b6001600160a01b0384166107a95760405162461bcd60e51b81526004018080602001828103825260258152602001806114bb6025913960400191505060405180910390fd5b6107b1610df6565b6001600160a01b0316856001600160a01b031614806107dc57506107dc856107d7610df6565b610bfd565b6108175760405162461bcd60e51b81526004018080602001828103825260328152602001806114e06032913960400191505060405180910390fd5b6000610821610df6565b9050610831818787878787610a1a565b60005b845181101561093257600085828151811061084b57fe5b60200260200101519050600085838151811061086357fe5b602002602001015190506108d0816040518060600160405280602a8152602001611512602a91396001600086815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002054610dfb9092919063ffffffff16565b60008381526001602090815260408083206001600160a01b038e811685529252808320939093558a16815220546109079082610e92565b60009283526001602081815260408086206001600160a01b038d168752909152909320555001610834565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156109b85781810151838201526020016109a0565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156109f75781810151838201526020016109df565b5050505090500194505050505060405180910390a4610a1a818787878787610ef3565b505050505050565b60608151835114610a645760405162461bcd60e51b81526004018080602001828103825260298152602001806115656029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610a7e57600080fd5b50604051908082528060200260200182016040528015610aa8578160200160208202803683370190505b50905060005b8451811015610b0657610ae7858281518110610ac657fe5b6020026020010151858381518110610ada57fe5b60200260200101516105fe565b828281518110610af357fe5b6020908102919091010152600101610aae565b509392505050565b816001600160a01b0316610b20610df6565b6001600160a01b03161415610b665760405162461bcd60e51b815260040180806020018281038252602981526020018061153c6029913960400191505060405180910390fd5b8060026000610b73610df6565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610bb7610df6565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6001600160a01b038416610c705760405162461bcd60e51b81526004018080602001828103825260258152602001806114bb6025913960400191505060405180910390fd5b610c78610df6565b6001600160a01b0316856001600160a01b03161480610c9e5750610c9e856107d7610df6565b610cd95760405162461bcd60e51b81526004018080602001828103825260298152602001806114926029913960400191505060405180910390fd5b6000610ce3610df6565b9050610d03818787610cf48861118b565b610cfd8861118b565b87610a1a565b610d4a836040518060600160405280602a8152602001611512602a913960008781526001602090815260408083206001600160a01b038d1684529091529020549190610dfb565b60008581526001602090815260408083206001600160a01b038b81168552925280832093909355871681522054610d819084610e92565b60008581526001602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610a1a8187878787876111cf565b335b90565b60008184841115610e8a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e4f578181015183820152602001610e37565b50505050905090810190601f168015610e7c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610eec576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b610f05846001600160a01b0316611359565b15610a1a57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610f93578181015183820152602001610f7b565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610fd2578181015183820152602001610fba565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561100e578181015183820152602001610ff6565b50505050905090810190601f16801561103b5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561106057600080fd5b505af192505050801561108557506040513d602081101561108057600080fd5b505160015b61111a57611091611365565b8061109c57506110e3565b60405162461bcd60e51b8152602060048201818152835160248401528351849391928392604401919085019080838360008315610e4f578181015183820152602001610e37565b60405162461bcd60e51b815260040180806020018281038252603481526020018061140b6034913960400191505060405180910390fd5b6001600160e01b031981167fbc197c8100000000000000000000000000000000000000000000000000000000146111825760405162461bcd60e51b815260040180806020018281038252602881526020018061143f6028913960400191505060405180910390fd5b50505050505050565b6040805160018082528183019092526060918291906020808301908036833701905050905082816000815181106111be57fe5b602090810291909101015292915050565b6111e1846001600160a01b0316611359565b15610a1a57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611270578181015183820152602001611258565b50505050905090810190601f16801561129d5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1580156112c057600080fd5b505af19250505080156112e557506040513d60208110156112e057600080fd5b505160015b6112f157611091611365565b6001600160e01b031981167ff23a6e6100000000000000000000000000000000000000000000000000000000146111825760405162461bcd60e51b815260040180806020018281038252602881526020018061143f6028913960400191505060405180910390fd5b3b151590565b60e01c90565b600060443d101561137557610df8565b600481823e6308c379a0611389825161135f565b1461139357610df8565b6040513d600319016004823e80513d67ffffffffffffffff81602484011181841117156113c35750505050610df8565b828401925082519150808211156113dd5750505050610df8565b503d830160208284010111156113f557505050610df8565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368a26469706673582212206838d0e831ac731450370c61c6e5d89c9799b3813cd98774b0f51a9685e4704264736f6c63430007030033\";\n\nexport class ERC1155__factory extends ContractFactory {\n constructor(signer?: Signer) {\n super(_abi, _bytecode, signer);\n }\n\n deploy(\n uri_: string,\n overrides?: Overrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(uri_, overrides || {}) as Promise;\n }\n getDeployTransaction(\n uri_: string,\n overrides?: Overrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(uri_, overrides || {});\n }\n attach(address: string): ERC1155 {\n return super.attach(address) as ERC1155;\n }\n connect(signer: Signer): ERC1155__factory {\n return super.connect(signer) as ERC1155__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): ERC1155Interface {\n return new utils.Interface(_abi) as ERC1155Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ERC1155 {\n return new Contract(address, _abi, signerOrProvider) as ERC1155;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { IERC1155, IERC1155Interface } from \"../IERC1155\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n indexed: false,\n internalType: \"uint256[]\",\n name: \"values\",\n type: \"uint256[]\",\n },\n ],\n name: \"TransferBatch\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"TransferSingle\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"string\",\n name: \"value\",\n type: \"string\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"URI\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"accounts\",\n type: \"address[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n ],\n name: \"balanceOfBatch\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"amounts\",\n type: \"uint256[]\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeBatchTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport class IERC1155__factory {\n static readonly abi = _abi;\n static createInterface(): IERC1155Interface {\n return new utils.Interface(_abi) as IERC1155Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IERC1155 {\n return new Contract(address, _abi, signerOrProvider) as IERC1155;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n IERC1155MetadataURI,\n IERC1155MetadataURIInterface,\n} from \"../IERC1155MetadataURI\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n indexed: false,\n internalType: \"uint256[]\",\n name: \"values\",\n type: \"uint256[]\",\n },\n ],\n name: \"TransferBatch\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"TransferSingle\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"string\",\n name: \"value\",\n type: \"string\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"URI\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"accounts\",\n type: \"address[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n ],\n name: \"balanceOfBatch\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"amounts\",\n type: \"uint256[]\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeBatchTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"uri\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport class IERC1155MetadataURI__factory {\n static readonly abi = _abi;\n static createInterface(): IERC1155MetadataURIInterface {\n return new utils.Interface(_abi) as IERC1155MetadataURIInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IERC1155MetadataURI {\n return new Contract(address, _abi, signerOrProvider) as IERC1155MetadataURI;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n IERC1155Receiver,\n IERC1155ReceiverInterface,\n} from \"../IERC1155Receiver\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"values\",\n type: \"uint256[]\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"onERC1155BatchReceived\",\n outputs: [\n {\n internalType: \"bytes4\",\n name: \"\",\n type: \"bytes4\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"onERC1155Received\",\n outputs: [\n {\n internalType: \"bytes4\",\n name: \"\",\n type: \"bytes4\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport class IERC1155Receiver__factory {\n static readonly abi = _abi;\n static createInterface(): IERC1155ReceiverInterface {\n return new utils.Interface(_abi) as IERC1155ReceiverInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IERC1155Receiver {\n return new Contract(address, _abi, signerOrProvider) as IERC1155Receiver;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { ERC721, ERC721Interface } from \"../ERC721\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"name_\",\n type: \"string\",\n },\n {\n internalType: \"string\",\n name: \"symbol_\",\n type: \"string\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"approved\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"baseURI\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"getApproved\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"ownerOf\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"tokenByIndex\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"tokenOfOwnerByIndex\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"tokenURI\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nconst _bytecode =\n \"0x60806040523480156200001157600080fd5b5060405162001daf38038062001daf833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405250620001b391506301ffc9a760e01b90506200021d565b8151620001c8906006906020850190620002a2565b508051620001de906007906020840190620002a2565b50620001f16380ac58cd60e01b6200021d565b62000203635b5e139f60e01b6200021d565b6200021563780e9d6360e01b6200021d565b50506200033e565b6001600160e01b031980821614156200027d576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002e557805160ff191683800117855562000315565b8280016001018555821562000315579182015b8281111562000315578251825591602001919060010190620002f8565b506200032392915062000327565b5090565b5b8082111562000323576000815560010162000328565b611a61806200034e6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80634f6ccce7116100b257806395d89b4111610081578063b88d4fde11610066578063b88d4fde146103a7578063c87b56dd1461046d578063e985e9c51461048a5761011b565b806395d89b4114610371578063a22cb465146103795761011b565b80634f6ccce7146103095780636352211e146103265780636c0360eb1461034357806370a082311461034b5761011b565b806318160ddd116100ee57806318160ddd1461025757806323b872dd146102715780632f745c59146102a757806342842e0e146102d35761011b565b806301ffc9a71461012057806306fdde0314610173578063081812fc146101f0578063095ea7b314610229575b600080fd5b61015f6004803603602081101561013657600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166104b8565b604080519115158252519081900360200190f35b61017b6104f3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b557818101518382015260200161019d565b50505050905090810190601f1680156101e25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020d6004803603602081101561020657600080fd5b5035610589565b604080516001600160a01b039092168252519081900360200190f35b6102556004803603604081101561023f57600080fd5b506001600160a01b0381351690602001356105eb565b005b61025f6106c6565b60408051918252519081900360200190f35b6102556004803603606081101561028757600080fd5b506001600160a01b038135811691602081013590911690604001356106d7565b61025f600480360360408110156102bd57600080fd5b506001600160a01b03813516906020013561072e565b610255600480360360608110156102e957600080fd5b506001600160a01b03813581169160208101359091169060400135610759565b61025f6004803603602081101561031f57600080fd5b5035610774565b61020d6004803603602081101561033c57600080fd5b503561078a565b61017b6107b2565b61025f6004803603602081101561036157600080fd5b50356001600160a01b0316610813565b61017b61087b565b6102556004803603604081101561038f57600080fd5b506001600160a01b03813516906020013515156108dc565b610255600480360360808110156103bd57600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103f857600080fd5b82018360208201111561040a57600080fd5b8035906020019184600183028401116401000000008311171561042c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109e1945050505050565b61017b6004803603602081101561048357600080fd5b5035610a3f565b61015f600480360360408110156104a057600080fd5b506001600160a01b0381358116916020013516610cc2565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561057f5780601f106105545761010080835404028352916020019161057f565b820191906000526020600020905b81548152906001019060200180831161056257829003601f168201915b5050505050905090565b600061059482610cf0565b6105cf5760405162461bcd60e51b815260040180806020018281038252602c815260200180611956602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006105f68261078a565b9050806001600160a01b0316836001600160a01b031614156106495760405162461bcd60e51b81526004018080602001828103825260218152602001806119da6021913960400191505060405180910390fd5b806001600160a01b031661065b610cfd565b6001600160a01b0316148061067c575061067c81610677610cfd565b610cc2565b6106b75760405162461bcd60e51b81526004018080602001828103825260388152602001806118a96038913960400191505060405180910390fd5b6106c18383610d01565b505050565b60006106d26002610d87565b905090565b6106e86106e2610cfd565b82610d92565b6107235760405162461bcd60e51b81526004018080602001828103825260318152602001806119fb6031913960400191505060405180910390fd5b6106c1838383610e36565b6001600160a01b03821660009081526001602052604081206107509083610f82565b90505b92915050565b6106c1838383604051806020016040528060008152506109e1565b600080610782600284610f8e565b509392505050565b60006107538260405180606001604052806029815260200161190b6029913960029190610faa565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561057f5780601f106105545761010080835404028352916020019161057f565b60006001600160a01b03821661085a5760405162461bcd60e51b815260040180806020018281038252602a8152602001806118e1602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061075390610d87565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561057f5780601f106105545761010080835404028352916020019161057f565b6108e4610cfd565b6001600160a01b0316826001600160a01b0316141561094a576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000610957610cfd565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff19169215159290921790915561099b610cfd565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6109f26109ec610cfd565b83610d92565b610a2d5760405162461bcd60e51b81526004018080602001828103825260318152602001806119fb6031913960400191505060405180910390fd5b610a3984848484610fc1565b50505050565b6060610a4a82610cf0565b610a855760405162461bcd60e51b815260040180806020018281038252602f8152602001806119ab602f913960400191505060405180910390fd5b60008281526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610b1a5780601f10610aef57610100808354040283529160200191610b1a565b820191906000526020600020905b815481529060010190602001808311610afd57829003601f168201915b505050505090506060610b2b6107b2565b9050805160001415610b3f575090506104ee565b815115610c005780826040516020018083805190602001908083835b60208310610b7a5780518252601f199092019160209182019101610b5b565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610bc25780518252601f199092019160209182019101610ba3565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506104ee565b80610c0a85611013565b6040516020018083805190602001908083835b60208310610c3c5780518252601f199092019160209182019101610c1d565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610c845780518252601f199092019160209182019101610c65565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000610753600283611122565b3390565b600081815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091558190610d4e8261078a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006107538261112e565b6000610d9d82610cf0565b610dd85760405162461bcd60e51b815260040180806020018281038252602c81526020018061187d602c913960400191505060405180910390fd5b6000610de38361078a565b9050806001600160a01b0316846001600160a01b03161480610e1e5750836001600160a01b0316610e1384610589565b6001600160a01b0316145b80610e2e5750610e2e8185610cc2565b949350505050565b826001600160a01b0316610e498261078a565b6001600160a01b031614610e8e5760405162461bcd60e51b81526004018080602001828103825260298152602001806119826029913960400191505060405180910390fd5b6001600160a01b038216610ed35760405162461bcd60e51b81526004018080602001828103825260248152602001806118596024913960400191505060405180910390fd5b610ede8383836106c1565b610ee9600082610d01565b6001600160a01b0383166000908152600160205260409020610f0b9082611132565b506001600160a01b0382166000908152600160205260409020610f2e908261113e565b50610f3b6002828461114a565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006107508383611160565b6000808080610f9d86866111c4565b9097909650945050505050565b6000610fb784848461123f565b90505b9392505050565b610fcc848484610e36565b610fd884848484611309565b610a395760405162461bcd60e51b81526004018080602001828103825260328152602001806118276032913960400191505060405180910390fd5b606081611054575060408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201526104ee565b8160005b811561106c57600101600a82049150611058565b60608167ffffffffffffffff8111801561108557600080fd5b506040519080825280601f01601f1916602001820160405280156110b0576020820181803683370190505b50859350905060001982015b831561111957600a840660300160f81b828280600190039350815181106110df57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506110bc565b50949350505050565b600061075083836114b3565b5490565b600061075083836114cb565b60006107508383611591565b6000610fb784846001600160a01b0385166115db565b815460009082106111a25760405162461bcd60e51b81526004018080602001828103825260228152602001806118056022913960400191505060405180910390fd5b8260000182815481106111b157fe5b9060005260206000200154905092915050565b8154600090819083106112085760405162461bcd60e51b81526004018080602001828103825260228152602001806119346022913960400191505060405180910390fd5b600084600001848154811061121957fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816112da5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561129f578181015183820152602001611287565b50505050905090810190601f1680156112cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106112ed57fe5b9060005260206000209060020201600101549150509392505050565b600061131d846001600160a01b0316611672565b61132957506001610e2e565b6060611461630a85bd0160e11b61133e610cfd565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156113a557818101518382015260200161138d565b50505050905090810190601f1680156113d25780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001611827603291396001600160a01b0388169190611678565b9050600081806020019051602081101561147a57600080fd5b50517fffffffff0000000000000000000000000000000000000000000000000000000016630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b6000818152600183016020526040812054801561158757835460001980830191908101906000908790839081106114fe57fe5b906000526020600020015490508087600001848154811061151b57fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061154b57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610753565b6000915050610753565b600061159d83836114b3565b6115d357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610753565b506000610753565b600082815260018401602052604081205480611640575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610fba565b8285600001600183038154811061165357fe5b9060005260206000209060020201600101819055506000915050610fba565b3b151590565b6060610fb784846000858561168c85611672565b6116dd576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061171c5780518252601f1990920191602091820191016116fd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461177e576040519150601f19603f3d011682016040523d82523d6000602084013e611783565b606091505b509150915061179382828661179e565b979650505050505050565b606083156117ad575081610fba565b8251156117bd5782518084602001fd5b60405162461bcd60e51b815260206004820181815284516024840152845185939192839260440191908501908083836000831561129f57818101518382015260200161128756fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a26469706673582212200a424db69646026786322843c022d83756be270f2459c4f88338b177cb07454d64736f6c63430007030033\";\n\nexport class ERC721__factory extends ContractFactory {\n constructor(signer?: Signer) {\n super(_abi, _bytecode, signer);\n }\n\n deploy(\n name_: string,\n symbol_: string,\n overrides?: Overrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(name_, symbol_, overrides || {}) as Promise;\n }\n getDeployTransaction(\n name_: string,\n symbol_: string,\n overrides?: Overrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(name_, symbol_, overrides || {});\n }\n attach(address: string): ERC721 {\n return super.attach(address) as ERC721;\n }\n connect(signer: Signer): ERC721__factory {\n return super.connect(signer) as ERC721__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): ERC721Interface {\n return new utils.Interface(_abi) as ERC721Interface;\n }\n static connect(address: string, signerOrProvider: Signer | Provider): ERC721 {\n return new Contract(address, _abi, signerOrProvider) as ERC721;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { IERC721, IERC721Interface } from \"../IERC721\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"approved\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"balance\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"getApproved\",\n outputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"ownerOf\",\n outputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"_approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nexport class IERC721__factory {\n static readonly abi = _abi;\n static createInterface(): IERC721Interface {\n return new utils.Interface(_abi) as IERC721Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IERC721 {\n return new Contract(address, _abi, signerOrProvider) as IERC721;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n IERC721Enumerable,\n IERC721EnumerableInterface,\n} from \"../IERC721Enumerable\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"approved\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"balance\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"getApproved\",\n outputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"ownerOf\",\n outputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"_approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"tokenByIndex\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"tokenOfOwnerByIndex\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nexport class IERC721Enumerable__factory {\n static readonly abi = _abi;\n static createInterface(): IERC721EnumerableInterface {\n return new utils.Interface(_abi) as IERC721EnumerableInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IERC721Enumerable {\n return new Contract(address, _abi, signerOrProvider) as IERC721Enumerable;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n IERC721Metadata,\n IERC721MetadataInterface,\n} from \"../IERC721Metadata\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"approved\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"balance\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"getApproved\",\n outputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"ownerOf\",\n outputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"_approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"tokenURI\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nexport class IERC721Metadata__factory {\n static readonly abi = _abi;\n static createInterface(): IERC721MetadataInterface {\n return new utils.Interface(_abi) as IERC721MetadataInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IERC721Metadata {\n return new Contract(address, _abi, signerOrProvider) as IERC721Metadata;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type {\n IERC721Receiver,\n IERC721ReceiverInterface,\n} from \"../IERC721Receiver\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"onERC721Received\",\n outputs: [\n {\n internalType: \"bytes4\",\n name: \"\",\n type: \"bytes4\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nexport class IERC721Receiver__factory {\n static readonly abi = _abi;\n static createInterface(): IERC721ReceiverInterface {\n return new utils.Interface(_abi) as IERC721ReceiverInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IERC721Receiver {\n return new Contract(address, _abi, signerOrProvider) as IERC721Receiver;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type {\n CryptopunksData,\n CryptopunksDataInterface,\n} from \"../CryptopunksData\";\n\nconst _abi = [\n {\n inputs: [],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n inputs: [\n {\n internalType: \"uint8\",\n name: \"index\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes\",\n name: \"encoding\",\n type: \"bytes\",\n },\n {\n internalType: \"string\",\n name: \"name\",\n type: \"string\",\n },\n ],\n name: \"addAsset\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint64\",\n name: \"key1\",\n type: \"uint64\",\n },\n {\n internalType: \"uint32\",\n name: \"value1\",\n type: \"uint32\",\n },\n {\n internalType: \"uint64\",\n name: \"key2\",\n type: \"uint64\",\n },\n {\n internalType: \"uint32\",\n name: \"value2\",\n type: \"uint32\",\n },\n {\n internalType: \"uint64\",\n name: \"key3\",\n type: \"uint64\",\n },\n {\n internalType: \"uint32\",\n name: \"value3\",\n type: \"uint32\",\n },\n {\n internalType: \"uint64\",\n name: \"key4\",\n type: \"uint64\",\n },\n {\n internalType: \"uint32\",\n name: \"value4\",\n type: \"uint32\",\n },\n ],\n name: \"addComposites\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint8\",\n name: \"index\",\n type: \"uint8\",\n },\n {\n internalType: \"bytes\",\n name: \"_punks\",\n type: \"bytes\",\n },\n ],\n name: \"addPunks\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"index\",\n type: \"uint16\",\n },\n ],\n name: \"punkAttributes\",\n outputs: [\n {\n internalType: \"string\",\n name: \"text\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"index\",\n type: \"uint16\",\n },\n ],\n name: \"punkImage\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"index\",\n type: \"uint16\",\n },\n ],\n name: \"punkImageSvg\",\n outputs: [\n {\n internalType: \"string\",\n name: \"svg\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"sealContract\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"_palette\",\n type: \"bytes\",\n },\n ],\n name: \"setPalette\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nconst _bytecode =\n \"0x60806040526005805460ff60a01b1916905534801561001d57600080fd5b50600580546001600160a01b03191633179055611aba8061003f6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806374beb0471161005b57806374beb0471461024557806376dfe29714610266578063844e2cd514610287578063dae2ae201461032d57610088565b806326b973641461008d5780633e5e0a961461013f57806368bd580e146101d55780636f2a6568146101dd575b600080fd5b61013d600480360360408110156100a357600080fd5b60ff82351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610464945050505050565b005b6101606004803603602081101561015557600080fd5b503561ffff1661052e565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019a578181015183820152602001610182565b50505050905090810190601f1680156101c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61013d610a68565b61013d60048036036101008110156101f457600080fd5b5067ffffffffffffffff813581169163ffffffff602082013581169260408301358116926060810135831692608082013583169260a083013582169260c08101359091169160e09091013516610b3a565b6101606004803603602081101561025b57600080fd5b503561ffff16610c51565b6101606004803603602081101561027c57600080fd5b503561ffff16611138565b61013d6004803603602081101561029d57600080fd5b8101906020810181356401000000008111156102b857600080fd5b8201836020820111156102ca57600080fd5b803590602001918460018302840111640100000000831117156102ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611399945050505050565b61013d6004803603606081101561034357600080fd5b60ff823516919081019060408101602082013564010000000081111561036857600080fd5b82018360208201111561037a57600080fd5b8035906020019184600183028401116401000000008311171561039c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156103ef57600080fd5b82018360208201111561040157600080fd5b8035906020019184600183028401116401000000008311171561042357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611452945050505050565b6005546001600160a01b031633146104b4576040805162461bcd60e51b815260206004820152600e60248201526d27b7363c903232b83637bcb2b91760911b604482015290519081900360640190fd5b600554600160a01b900460ff1615610506576040805162461bcd60e51b815260206004820152601060248201526f21b7b73a3930b1ba1039b2b0b632b21760811b604482015290519081900360640190fd5b60ff82166000908152600460209081526040909120825161052992840190611936565b505050565b60606127108261ffff161061054257600080fd5b60408051610900808252610920820190925260609160208201818036833701905050905060005b6008811015610a5f57606461ffff851681810460ff166000908152600460205260408120909290918491900660080261ffff16018154600181600116156101000203166002900481106105b857fe5b8154600116156105d75790600052602060002090602091828204019190065b9054600160f81b911a0260f81c90508015610a565760ff81166000908152600160208190526040822080549092916003916002918116156101000260001901160404905060005b81811015610a525761062e6119b4565b60405180608001604052806004868560030281546001816001161561010002031660029004811061065b57fe5b81546001161561067a5790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60f01660ff16901c815260200185846003028154600181600116156101000203166002900481106106b457fe5b8154600116156106d35790600052602060002090602091828204019190065b9054901a600160f81b0260f81c600f1660ff1681526020016004868560030260020181546001816001161561010002031660029004811061071057fe5b81546001161561072f5790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60f01660ff16901c8152602001858460030260020181546001816001161561010002031660029004811061076c57fe5b81546001161561078b5790600052602060002090602091828204019190065b9054901a600160f81b0260f81c600f169052905060005b6002811015610a485760005b6002811015610a3f57825160208401516002918202840190820283016018020160040290600184820284011b908590602002015116156109785760006108bf888760030260010181546001816001161561010002031660029004811061081057fe5b81546001161561082f5790600052602060002090602091828204019190065b9054901a600160f81b028c848151811061084557fe5b602001015160f81c60f81b8d856001018151811061085f57fe5b602001015160f81c60f81b8e866002018151811061087957fe5b602001015160f81c60f81b8f876003018151811061089357fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016611541565b90508060001a60f81b8b83815181106108d457fe5b60200101906001600160f81b031916908160001a9053508060011a60f81b8b836001018151811061090157fe5b60200101906001600160f81b031916908160001a9053508060021a60f81b8b836002018151811061092e57fe5b60200101906001600160f81b031916908160001a9053508060031a60f81b8b836003018151811061095b57fe5b60200101906001600160f81b031916908160001a90535050610a36565b606084015160016002850284011b1615610a3657600060f81b8a828151811061099d57fe5b60200101906001600160f81b031916908160001a905350600060f81b8a82600101815181106109c857fe5b60200101906001600160f81b031916908160001a905350600060f81b8a82600201815181106109f357fe5b60200101906001600160f81b031916908160001a90535060ff60f81b8a8260030181518110610a1e57fe5b60200101906001600160f81b031916908160001a9053505b506001016107ae565b506001016107a2565b505060010161061e565b5050505b50600101610569565b5090505b919050565b6005546001600160a01b03163314610ab8576040805162461bcd60e51b815260206004820152600e60248201526d27b7363c903232b83637bcb2b91760911b604482015290519081900360640190fd5b600554600160a01b900460ff1615610b0a576040805162461bcd60e51b815260206004820152601060248201526f21b7b73a3930b1ba1039b2b0b632b21760811b604482015290519081900360640190fd5b600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b6005546001600160a01b03163314610b8a576040805162461bcd60e51b815260206004820152600e60248201526d27b7363c903232b83637bcb2b91760911b604482015290519081900360640190fd5b600554600160a01b900460ff1615610bdc576040805162461bcd60e51b815260206004820152601060248201526f21b7b73a3930b1ba1039b2b0b632b21760811b604482015290519081900360640190fd5b67ffffffffffffffff978816600090815260036020526040808220805463ffffffff1990811663ffffffff9b8c1617909155978a16825280822080548916978a169790971790965593881684528484208054871693881693909317909255909516815220805490911692909116919091179055565b606080610c5d8361052e565b90506040518060a0016040528060628152602001611a23606291396040516020018082805190602001908083835b60208310610caa5780518252601f199092019160209182019101610c8b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405291506060600867ffffffffffffffff81118015610cfa57600080fd5b506040519080825280601f01601f191660200182016040528015610d25576020820181803683370190505b50905060005b60188110156110485760005b601881101561103f57600081836018020160040290506000858260030181518110610d5e57fe5b016020015160f81c11156110365760005b6004811015610e535760008682840181518110610d8857fe5b016020015160f81c90507f3031323334353637383961626364656600000000000000000000000000000000600f821660108110610dc157fe5b1a60f81b868360020260010181518110610dd757fe5b60200101906001600160f81b031916908160001a90535060041c600f167f30313233343536373839616263646566000000000000000000000000000000008160108110610e2057fe5b1a60f81b868360020281518110610e3357fe5b60200101906001600160f81b031916908160001a90535050600101610d6f565b5085610e5e83611848565b610e6785611848565b866040516020018085805190602001908083835b60208310610e9a5780518252601f199092019160209182019101610e7b565b51815160209384036101000a60001901801990921691161790527f3c7265637420783d220000000000000000000000000000000000000000000000919093019081528651600990910192870191508083835b60208310610f0b5780518252601f199092019160209182019101610eec565b51815160209384036101000a60001901801990921691161790527f2220793d22000000000000000000000000000000000000000000000000000000919093019081528551600590910192860191508083835b60208310610f7c5780518252601f199092019160209182019101610f5d565b6001836020036101000a038019825116818451168082178552505050505050905001806119e8603b9139603b0182805190602001908083835b60208310610fd45780518252601f199092019160209182019101610fb5565b6001836020036101000a038019825116818451168082178552505050505050905001807f222f3e000000000000000000000000000000000000000000000000000000000081525060030194505050505060405160208183030381529060405295505b50600101610d37565b50600101610d2b565b50826040518060400160405280600681526020017f3c2f7376673e00000000000000000000000000000000000000000000000000008152506040516020018083805190602001908083835b602083106110b25780518252601f199092019160209182019101611093565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106110fa5780518252601f1990920191602091820191016110db565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b60606127108261ffff161061114c57600080fd5b606461ffff8381168281049260089106021660005b60088110156113915760ff8316600090815260046020526040812080548484019060026000196101006001841615020190911604811061119d57fe5b8154600116156111bc5790600052602060002090602091828204019190065b9054600160f81b911a0260f81c905080156113825781156112e05784600260008360ff1660ff1681526020019081526020016000206040516020018083805190602001908083835b602083106112235780518252601f199092019160209182019101611204565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c20000000000000000000000000000000000000000000000000000000000000815250600201828054600181600116156101000203166002900480156112c45780601f106112a25761010080835404028352918201916112c4565b820191906000526020600020905b8154815290600101906020018083116112b0575b505092505050604051602081830303815290604052945061137d565b60ff8116600090815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383529192908301828280156113755780601f1061134a57610100808354040283529160200191611375565b820191906000526020600020905b81548152906001019060200180831161135857829003601f168201915b505050505094505b611388565b50611391565b50600101611161565b505050919050565b6005546001600160a01b031633146113e9576040805162461bcd60e51b815260206004820152600e60248201526d27b7363c903232b83637bcb2b91760911b604482015290519081900360640190fd5b600554600160a01b900460ff161561143b576040805162461bcd60e51b815260206004820152601060248201526f21b7b73a3930b1ba1039b2b0b632b21760811b604482015290519081900360640190fd5b805161144e906000906020840190611936565b5050565b6005546001600160a01b031633146114a2576040805162461bcd60e51b815260206004820152600e60248201526d27b7363c903232b83637bcb2b91760911b604482015290519081900360640190fd5b600554600160a01b900460ff16156114f4576040805162461bcd60e51b815260206004820152601060248201526f21b7b73a3930b1ba1039b2b0b632b21760811b604482015290519081900360640190fd5b60ff83166000908152600160209081526040909120835161151792850190611936565b5060ff83166000908152600260209081526040909120825161153b92840190611936565b50505050565b6000808660f81c60ff1660040290506000808260030181546001816001161561010002031660029004811061157257fe5b8154600116156115915790600052602060002090602091828204019190065b9054600160f81b911a0260f81c905060ff8114156116b0578060ff1660086000846002018154600181600116156101000203166002900481106115d057fe5b8154600116156115ef5790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60ff16901b601060008560010181546001816001161561010002031660029004811061162457fe5b8154600116156116435790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60ff16901b601860008681546001816001161561010002031660029004811061167557fe5b8154600116156116945790600052602060002090602091828204019190065b9054600160f81b911a0260f81c901b17171760e01b925061183d565b6000805460f886901c9061ff0060f089901c169062ff000060e88b901c169063ff00000060e08d901c169064ff00000000602088901b169060289087906002808c0191600019610100600183161502011604811061170a57fe5b8154600116156117295790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60ff1667ffffffffffffffff16901b603060008a60010181546001816001161561010002031660029004811061176857fe5b8154600116156117875790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60ff1667ffffffffffffffff16901b603860008b8154600181600116156101000203166002900481106117c357fe5b8154600116156117e25790600052602060002090602091828204019190065b9054600160f81b911a0260f81c901b1717171717171767ffffffffffffffff166000908152600360205260409020547fffffffff0000000000000000000000000000000000000000000000000000000060e09190911b169350505b505095945050505050565b606081611889575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610a63565b8160005b81156118a157600101600a8204915061188d565b60608167ffffffffffffffff811180156118ba57600080fd5b506040519080825280601f01601f1916602001820160405280156118e5576020820181803683370190505b5090505b841561192e5760001990910190600a850660300160f81b81838151811061190c57fe5b60200101906001600160f81b031916908160001a905350600a850494506118e9565b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061197757805160ff19168380011785556119a4565b828001600101855582156119a4579182015b828111156119a4578251825591602001919060010190611989565b506119b09291506119d2565b5090565b60405180608001604052806004906020820280368337509192915050565b5b808211156119b057600081556001016119d356fe222077696474683d223122206865696768743d2231222073686170652d72656e646572696e673d2263726973704564676573222066696c6c3d2223646174613a696d6167652f7376672b786d6c3b757466382c3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667222076657273696f6e3d22312e32222076696577426f783d22302030203234203234223ea264697066735822122026e4f5e8002222a0917a7303434f96575ba18642eab128d92ab4945812d18e0764736f6c63430007030033\";\n\nexport class CryptopunksData__factory extends ContractFactory {\n constructor(signer?: Signer) {\n super(_abi, _bytecode, signer);\n }\n\n deploy(\n overrides?: Overrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(overrides || {}) as Promise;\n }\n getDeployTransaction(\n overrides?: Overrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(overrides || {});\n }\n attach(address: string): CryptopunksData {\n return super.attach(address) as CryptopunksData;\n }\n connect(signer: Signer): CryptopunksData__factory {\n return super.connect(signer) as CryptopunksData__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): CryptopunksDataInterface {\n return new utils.Interface(_abi) as CryptopunksDataInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): CryptopunksData {\n return new Contract(address, _abi, signerOrProvider) as CryptopunksData;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { ERC2981, ERC2981Interface } from \"../ERC2981\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"royaltyInfo\",\n outputs: [\n {\n internalType: \"address\",\n name: \"_receiver\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_royaltyAmount\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport class ERC2981__factory {\n static readonly abi = _abi;\n static createInterface(): ERC2981Interface {\n return new utils.Interface(_abi) as ERC2981Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ERC2981 {\n return new Contract(address, _abi, signerOrProvider) as ERC2981;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type {\n FirstDerivative,\n FirstDerivativeInterface,\n} from \"../FirstDerivative\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"string\",\n name: \"name\",\n type: \"string\",\n },\n {\n internalType: \"string\",\n name: \"symbol\",\n type: \"string\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"approved\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"baseURI\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"derivativePrice\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"getApproved\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"getDepthOfDerivative\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"collection\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"getDerivative\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"getUnderlying\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"maxDerivativeDepth\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"collection\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"mintDerivative\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"ownerOf\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"royaltyInfo\",\n outputs: [\n {\n internalType: \"address\",\n name: \"_receiver\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_royaltyAmount\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"price\",\n type: \"uint256\",\n },\n ],\n name: \"setDerivativePrice\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"depth\",\n type: \"uint256\",\n },\n ],\n name: \"setMaxDerivativeDepth\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"royalty\",\n type: \"uint256\",\n },\n ],\n name: \"setRoyalties\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"tokenByIndex\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"tokenOfOwnerByIndex\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"tokenURI\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalSupply\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"transferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"withdraw\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n];\n\nconst _bytecode =\n \"0x60806040523480156200001157600080fd5b506040516200354538038062003545833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405250839150829050620001b56301ffc9a760e01b620002ac565b8151620001ca906006906020850190620003b3565b508051620001e0906007906020840190620003b3565b50620001f36380ac58cd60e01b620002ac565b62000205635b5e139f60e01b620002ac565b6200021763780e9d6360e01b620002ac565b506200022c905063152a902d60e11b620002ac565b60006200023862000331565b600c80546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000294336103e862000335565b50506001600e55665c5edcbc290000600d556200044f565b6001600160e01b031980821614156200030c576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b3390565b6127108111156200038d576040805162461bcd60e51b815260206004820152601a60248201527f45524332393831526f79616c746965733a20546f6f2068696768000000000000604482015290519081900360640190fd5b600a80546001600160a01b0319166001600160a01b039390931692909217909155600b55565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003f657805160ff191683800117855562000426565b8280016001018555821562000426579182015b828111156200042657825182559160200191906001019062000409565b506200043492915062000438565b5090565b5b8082111562000434576000815560010162000439565b6130e6806200045f6000396000f3fe6080604052600436106101d85760003560e01c80634f6ccce711610102578063a22cb46511610095578063c87b56dd11610064578063c87b56dd1461079e578063e71d541e146107c8578063e985e9c5146107f2578063f2fde38b1461082d576101d8565b8063a22cb46514610651578063b53226c61461068c578063b88d4fde146106a1578063bbf1b43614610774576101d8565b8063715018a6116100d1578063715018a6146105e85780638c5a5d2a146105fd5780638da5cb5b1461062757806395d89b411461063c576101d8565b80634f6ccce71461054c5780636352211e146105765780636c0360eb146105a057806370a08231146105b5576101d8565b8063233943011161017a5780632d4a58c5116101495780632d4a58c5146104a65780632f745c59146104bb5780633ccfd60b146104f457806342842e0e14610509576101d8565b806323394301146103ad57806323b872dd146103e65780632a55205a146104295780632b80183f1461047c576101d8565b8063095ea7b3116101b6578063095ea7b3146102f55780630f880afa1461033057806314bad9471461036c57806318160ddd14610398576101d8565b806301ffc9a7146101dd57806306fdde0314610225578063081812fc146102af575b600080fd5b3480156101e957600080fd5b506102116004803603602081101561020057600080fd5b50356001600160e01b031916610860565b604080519115158252519081900360200190f35b34801561023157600080fd5b5061023a610883565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027457818101518382015260200161025c565b50505050905090810190601f1680156102a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102bb57600080fd5b506102d9600480360360208110156102d257600080fd5b5035610919565b604080516001600160a01b039092168252519081900360200190f35b34801561030157600080fd5b5061032e6004803603604081101561031857600080fd5b506001600160a01b03813516906020013561097b565b005b34801561033c57600080fd5b5061035a6004803603602081101561035357600080fd5b5035610a56565b60408051918252519081900360200190f35b61035a6004803603604081101561038257600080fd5b506001600160a01b038135169060200135610aa9565b3480156103a457600080fd5b5061035a610c95565b3480156103b957600080fd5b5061035a600480360360408110156103d057600080fd5b506001600160a01b038135169060200135610ca6565b3480156103f257600080fd5b5061032e6004803603606081101561040957600080fd5b506001600160a01b03813581169160208101359091169060400135610cb2565b34801561043557600080fd5b506104596004803603604081101561044c57600080fd5b5080359060200135610d09565b604080516001600160a01b03909316835260208301919091528051918290030190f35b34801561048857600080fd5b5061032e6004803603602081101561049f57600080fd5b5035610d2a565b3480156104b257600080fd5b5061035a610e0f565b3480156104c757600080fd5b5061035a600480360360408110156104de57600080fd5b506001600160a01b038135169060200135610e15565b34801561050057600080fd5b5061032e610e37565b34801561051557600080fd5b5061032e6004803603606081101561052c57600080fd5b506001600160a01b03813581169160208101359091169060400135610ede565b34801561055857600080fd5b5061035a6004803603602081101561056f57600080fd5b5035610ef9565b34801561058257600080fd5b506102d96004803603602081101561059957600080fd5b5035610f0f565b3480156105ac57600080fd5b5061023a610f37565b3480156105c157600080fd5b5061035a600480360360208110156105d857600080fd5b50356001600160a01b0316610f98565b3480156105f457600080fd5b5061032e611000565b34801561060957600080fd5b5061032e6004803603602081101561062057600080fd5b50356110be565b34801561063357600080fd5b506102d9611137565b34801561064857600080fd5b5061023a611146565b34801561065d57600080fd5b5061032e6004803603604081101561067457600080fd5b506001600160a01b03813516906020013515156111a7565b34801561069857600080fd5b5061035a6112ac565b3480156106ad57600080fd5b5061032e600480360360808110156106c457600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156106ff57600080fd5b82018360208201111561071157600080fd5b8035906020019184600183028401116401000000008311171561073357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506112b2945050505050565b34801561078057600080fd5b5061032e6004803603602081101561079757600080fd5b5035611310565b3480156107aa57600080fd5b5061023a600480360360208110156107c157600080fd5b5035611389565b3480156107d457600080fd5b50610459600480360360208110156107eb57600080fd5b503561160a565b3480156107fe57600080fd5b506102116004803603604081101561081557600080fd5b506001600160a01b038135811691602001351661168d565b34801561083957600080fd5b5061032e6004803603602081101561085057600080fd5b50356001600160a01b03166116bb565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561090f5780601f106108e45761010080835404028352916020019161090f565b820191906000526020600020905b8154815290600101906020018083116108f257829003601f168201915b5050505050905090565b6000610924826117d0565b61095f5760405162461bcd60e51b815260040180806020018281038252602c815260200180612f75602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061098682610f0f565b9050806001600160a01b0316836001600160a01b031614156109d95760405162461bcd60e51b815260040180806020018281038252602181526020018061303b6021913960400191505060405180910390fd5b806001600160a01b03166109eb6117dd565b6001600160a01b03161480610a0c5750610a0c81610a076117dd565b61168d565b610a475760405162461bcd60e51b8152600401808060200182810382526038815260200180612e576038913960400191505060405180910390fd5b610a5183836117e1565b505050565b6000610a61826117d0565b610a6a57600080fd5b6001825b600080610a7a8361160a565b90925090506001600160a01b0382163014610a9b578394505050505061087e565b600190930192915050610a6e565b600034600d541115610b02576040805162461bcd60e51b815260206004820181905260248201527f4574682076616c75652073656e74206973206e6f742073756666696369656e74604482015290519081900360640190fd5b610b1c6001600160a01b0384166380ac58cd60e01b61184f565b80610b3c5750610b3c6001600160a01b038416636cdb3d1360e11b61184f565b80610b6357506001600160a01b03831673b47e3cd837ddf8e4c57f05d70ab865de6e193bbb145b610b9e5760405162461bcd60e51b8152600401808060200182810382526042815260200180612fa16042913960600191505060405180910390fd5b610ba8838361186b565b15610be45760405162461bcd60e51b8152600401808060200182810382526031815260200180612ee26031913960400191505060405180910390fd5b6001600160a01b038316301415610c4157600e54610c0183610a56565b6001011115610c415760405162461bcd60e51b8152600401808060200182810382526025815260200180612dbc6025913960400191505060405180910390fd5b6000610c4b610c95565b6001019050610c5b848483611892565b610c82816040518060400160405280876001600160a01b03168152602001868152506118b7565b610c8c33826118ef565b90505b92915050565b6000610ca16002611909565b905090565b6000610c8c838361186b565b610cc3610cbd6117dd565b82611914565b610cfe5760405162461bcd60e51b81526004018080602001828103825260318152602001806130806031913960400191505060405180910390fd5b610a518383836119b8565b600a54600b546001600160a01b0390911690612710908302045b9250929050565b610d326117dd565b6001600160a01b0316610d43611137565b6001600160a01b031614610d9e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610e0c306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610dda57600080fd5b505afa158015610dee573d6000803e3d6000fd5b505050506040513d6020811015610e0457600080fd5b505182611b04565b50565b600e5481565b6001600160a01b0382166000908152600160205260408120610c8c9083611b81565b610e3f6117dd565b6001600160a01b0316610e50611137565b6001600160a01b031614610eab576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6040514790339082156108fc029083906000818181858888f19350505050158015610eda573d6000803e3d6000fd5b5050565b610a51838383604051806020016040528060008152506112b2565b600080610f07600284611b8d565b509392505050565b6000610c8f82604051806060016040528060298152602001612eb96029913960029190611ba9565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561090f5780601f106108e45761010080835404028352916020019161090f565b60006001600160a01b038216610fdf5760405162461bcd60e51b815260040180806020018281038252602a815260200180612e8f602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600160205260409020610c8f90611909565b6110086117dd565b6001600160a01b0316611019611137565b6001600160a01b031614611074576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600c546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600c80546001600160a01b0319169055565b6110c66117dd565b6001600160a01b03166110d7611137565b6001600160a01b031614611132576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600d55565b600c546001600160a01b031690565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561090f5780601f106108e45761010080835404028352916020019161090f565b6111af6117dd565b6001600160a01b0316826001600160a01b03161415611215576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b80600560006112226117dd565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556112666117dd565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b600d5481565b6112c36112bd6117dd565b83611914565b6112fe5760405162461bcd60e51b81526004018080602001828103825260318152602001806130806031913960400191505060405180910390fd5b61130a84848484611bc0565b50505050565b6113186117dd565b6001600160a01b0316611329611137565b6001600160a01b031614611384576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600e55565b6060611394826117d0565b6113cf5760405162461bcd60e51b815260040180806020018281038252602f81526020018061300c602f913960400191505060405180910390fd5b6000806113db8461160a565b90925090506113fa6001600160a01b0383166380ac58cd60e01b61184f565b1561153957816001600160a01b031663c87b56dd826040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561144357600080fd5b505afa158015611457573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561148057600080fd5b81019080805160405193929190846401000000008211156114a057600080fd5b9083019060208201858111156114b557600080fd5b82516401000000008111828201881017156114cf57600080fd5b82525081516020918201929091019080838360005b838110156114fc5781810151838201526020016114e4565b50505050905090810190601f1680156115295780820380516001836020036101000a031916815260200191505b506040525050509250505061087e565b6115536001600160a01b038316636cdb3d1360e11b61184f565b1561159c57816001600160a01b0316630e89341c826040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561144357600080fd5b6001600160a01b03821673b47e3cd837ddf8e4c57f05d70ab865de6e193bbb14156115d3576115ca81611c12565b9250505061087e565b60405162461bcd60e51b815260040180806020018281038252602481526020018061305c6024913960400191505060405180910390fd5b600080611616836117d0565b611667576040805162461bcd60e51b815260206004820152601c60248201527f517565727920666f72206e6f6e2d6578697374696e6720746f6b656e00000000604482015290519081900360640190fd5b5050600090815260106020526040902080546001909101546001600160a01b0390911691565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6116c36117dd565b6001600160a01b03166116d4611137565b6001600160a01b03161461172f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166117745760405162461bcd60e51b8152600401808060200182810382526026815260200180612d966026913960400191505060405180910390fd5b600c546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610c8f600283611de5565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061181682610f0f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061185a83611df1565b8015610c8c5750610c8c8383611e24565b6000600f600061187b8585611e4a565b815260200190815260200160002054905092915050565b80600f60006118a18686611e4a565b8152602081019190915260400160002055505050565b6000918252601060209081526040909220815181546001600160a01b0319166001600160a01b03909116178155910151600190910155565b610eda828260405180602001604052806000815250611e8f565b6000610c8f82611ee1565b600061191f826117d0565b61195a5760405162461bcd60e51b815260040180806020018281038252602c815260200180612e2b602c913960400191505060405180910390fd5b600061196583610f0f565b9050806001600160a01b0316846001600160a01b031614806119a05750836001600160a01b031661199584610919565b6001600160a01b0316145b806119b057506119b0818561168d565b949350505050565b826001600160a01b03166119cb82610f0f565b6001600160a01b031614611a105760405162461bcd60e51b8152600401808060200182810382526029815260200180612fe36029913960400191505060405180910390fd5b6001600160a01b038216611a555760405162461bcd60e51b8152600401808060200182810382526024815260200180612de16024913960400191505060405180910390fd5b611a60838383610a51565b611a6b6000826117e1565b6001600160a01b0383166000908152600160205260409020611a8d9082611ee5565b506001600160a01b0382166000908152600160205260409020611ab09082611ef1565b50611abd60028284611efd565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b612710811115611b5b576040805162461bcd60e51b815260206004820152601a60248201527f45524332393831526f79616c746965733a20546f6f2068696768000000000000604482015290519081900360640190fd5b600a80546001600160a01b0319166001600160a01b039390931692909217909155600b55565b6000610c8c8383611f13565b6000808080611b9c8686611f77565b9097909650945050505050565b6000611bb6848484611ff2565b90505b9392505050565b611bcb8484846119b8565b611bd7848484846120bc565b61130a5760405162461bcd60e51b8152600401808060200182810382526032815260200180612d646032913960400191505060405180910390fd5b606080611c1e83612224565b90506060611d4b611c2e85612425565b611c3784612534565b60405160200180807f7b226e616d65223a2243727970746f50756e6b2023000000000000000000000081525060150183805190602001908083835b60208310611c915780518252601f199092019160209182019101611c72565b6001836020036101000a03801982511681845116808217855250505050505090500180612cf76025913960250182805190602001908083835b60208310611ce95780518252601f199092019160209182019101611cca565b6001836020036101000a038019825116818451168082178552505050505050905001807f227d00000000000000000000000000000000000000000000000000000000000081525060020192505050604051602081830303815290604052612534565b90508060405160200180807f646174613a6170706c696361696f6e2f6a736f6e3b6261736536342c00000000815250601c0182805190602001908083835b60208310611da85780518252601f199092019160209182019101611d89565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405292505050919050565b6000610c8c83836126b9565b6000611e04826301ffc9a760e01b611e24565b8015610c8f5750611e1d826001600160e01b0319611e24565b1592915050565b6000806000611e3385856126d1565b91509150818015611e415750805b95945050505050565b6000828260405160200180836001600160a01b031660601b81526014018281526020019250505060405160208183030381529060405280519060200120905092915050565b611e998383612803565b611ea660008484846120bc565b610a515760405162461bcd60e51b8152600401808060200182810382526032815260200180612d646032913960400191505060405180910390fd5b5490565b6000610c8c8383612931565b6000610c8c83836129f7565b6000611bb684846001600160a01b038516612a41565b81546000908210611f555760405162461bcd60e51b8152600401808060200182810382526022815260200180612d1c6022913960400191505060405180910390fd5b826000018281548110611f6457fe5b9060005260206000200154905092915050565b815460009081908310611fbb5760405162461bcd60e51b8152600401808060200182810382526022815260200180612f536022913960400191505060405180910390fd5b6000846000018481548110611fcc57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161208d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561205257818101518382015260200161203a565b50505050905090810190601f16801561207f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106120a057fe5b9060005260206000209060020201600101549150509392505050565b60006120d0846001600160a01b0316612ad8565b6120dc575060016119b0565b60606121ea630a85bd0160e11b6120f16117dd565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612158578181015183820152602001612140565b50505050905090810190601f1680156121855780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001612d64603291396001600160a01b0388169190612ade565b9050600081806020019051602081101561220357600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b6060807316f5a35647d6f03d5d3da7b35409d65ba03af3b26374beb04761224a85612aed565b6040518263ffffffff1660e01b8152600401808261ffff16815260200191505060006040518083038186803b15801561228257600080fd5b505afa158015612296573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156122bf57600080fd5b81019080805160405193929190846401000000008211156122df57600080fd5b9083019060208201858111156122f457600080fd5b825164010000000081118282018810171561230e57600080fd5b82525081516020918201929091019080838360005b8381101561233b578181015183820152602001612323565b50505050905090810190601f1680156123685780820380516001836020036101000a031916815260200191505b5060405250505090506060601882510367ffffffffffffffff8111801561238e57600080fd5b506040519080825280601f01601f1916602001820160405280156123b9576020820181803683370190505b50905060005b8151811015610f07578281601801815181106123d757fe5b602001015160f81c60f81b8282815181106123ee57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001016123bf565b606081612466575060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015261087e565b8160005b811561247e57600101600a8204915061246a565b60608167ffffffffffffffff8111801561249757600080fd5b506040519080825280601f01601f1916602001820160405280156124c2576020820181803683370190505b50859350905060001982015b831561252b57600a840660300160f81b828280600190039350815181106124f157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506124ce565b50949350505050565b6060815160001415612555575060408051602081019091526000815261087e565b6060604051806060016040528060408152602001612f136040913990506000600384516002018161258257fe5b04600402905060608160200167ffffffffffffffff811180156125a457600080fd5b506040519080825280601f01601f1916602001820160405280156125cf576020820181803683370190505b509050818152600183018586518101602084015b8183101561263d5760039283018051603f601282901c811687015160f890811b8552600c83901c8216880151811b6001860152600683901c8216880151811b60028601529116860151901b938201939093526004016125e3565b6003895106600181146126575760028114612683576126ab565b7f3d3d0000000000000000000000000000000000000000000000000000000000006001198301526126ab565b7f3d000000000000000000000000000000000000000000000000000000000000006000198301525b509398975050505050505050565b60009081526001919091016020526040902054151590565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b1781529151815160009384939284926060926001600160a01b038a169261753092879282918083835b602083106127595780518252601f19909201916020918201910161273a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303818686fa925050503d80600081146127ba576040519150601f19603f3d011682016040523d82523d6000602084013e6127bf565b606091505b50915091506020815110156127dd5760008094509450505050610d23565b818180602001905160208110156127f357600080fd5b5051909890975095505050505050565b6001600160a01b03821661285e576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b612867816117d0565b156128b9576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b6128c560008383610a51565b6001600160a01b03821660009081526001602052604090206128e79082611ef1565b506128f460028284611efd565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600081815260018301602052604081205480156129ed578354600019808301919081019060009087908390811061296457fe5b906000526020600020015490508087600001848154811061298157fe5b6000918252602080832090910192909255828152600189810190925260409020908401905586548790806129b157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610c8f565b6000915050610c8f565b6000612a0383836126b9565b612a3957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610c8f565b506000610c8f565b600082815260018401602052604081205480612aa6575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055611bb9565b82856000016001830381548110612ab957fe5b9060005260206000209060020201600101819055506000915050611bb9565b3b151590565b6060611bb68484600085612b34565b6000620100008210612b305760405162461bcd60e51b8152600401808060200182810382526026815260200180612d3e6026913960400191505060405180910390fd5b5090565b606082471015612b755760405162461bcd60e51b8152600401808060200182810382526026815260200180612e056026913960400191505060405180910390fd5b612b7e85612ad8565b612bcf576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310612c0e5780518252601f199092019160209182019101612bef565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612c70576040519150601f19603f3d011682016040523d82523d6000602084013e612c75565b606091505b5091509150612c85828286612c90565b979650505050505050565b60608315612c9f575081611bb9565b825115612caf5782518084602001fd5b60405162461bcd60e51b815260206004820181815284516024840152845185939192839260440191908501908083836000831561205257818101518382015260200161203a56fe222c22696d616765223a22646174613a696d6167652f7376672b786d6c3b6261736536342c456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647353616665436173743a2076616c756520646f65736e27742066697420696e20313620626974734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734465726976617469766520776f756c6420657863656564206d6178696d756d2064657074684552433732313a207472616e7366657220746f20746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e446572697661746976652068617320616c7265616479206265656e2069737375656420666f72207468697320746f6b656e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4465726976617469766520636f6c6c656374696f6e206973206e6f74204552433732312c2045524331313535206f7220737570706f72746564204e465420747970654552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572556e737570706f7274656420756e6465726c79696e6720636f6e747261637420747970654552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220dde8afc5adb45fb63e8b9b21bfdea02bf54652fae750f3a14d3b3c178c81cc9664736f6c63430007030033\";\n\nexport class FirstDerivative__factory extends ContractFactory {\n constructor(signer?: Signer) {\n super(_abi, _bytecode, signer);\n }\n\n deploy(\n name: string,\n symbol: string,\n overrides?: Overrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(\n name,\n symbol,\n overrides || {}\n ) as Promise;\n }\n getDeployTransaction(\n name: string,\n symbol: string,\n overrides?: Overrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(name, symbol, overrides || {});\n }\n attach(address: string): FirstDerivative {\n return super.attach(address) as FirstDerivative;\n }\n connect(signer: Signer): FirstDerivative__factory {\n return super.connect(signer) as FirstDerivative__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): FirstDerivativeInterface {\n return new utils.Interface(_abi) as FirstDerivativeInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): FirstDerivative {\n return new Contract(address, _abi, signerOrProvider) as FirstDerivative;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport { Provider } from \"@ethersproject/providers\";\nimport type { IERC2981, IERC2981Interface } from \"../IERC2981\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_tokenId\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"_value\",\n type: \"uint256\",\n },\n ],\n name: \"royaltyInfo\",\n outputs: [\n {\n internalType: \"address\",\n name: \"_receiver\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_royaltyAmount\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nexport class IERC2981__factory {\n static readonly abi = _abi;\n static createInterface(): IERC2981Interface {\n return new utils.Interface(_abi) as IERC2981Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IERC2981 {\n return new Contract(address, _abi, signerOrProvider) as IERC2981;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type {\n NoopPlaceholder,\n NoopPlaceholderInterface,\n} from \"../NoopPlaceholder\";\n\nconst _abi = [\n {\n inputs: [],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n indexed: false,\n internalType: \"uint256[]\",\n name: \"values\",\n type: \"uint256[]\",\n },\n ],\n name: \"TransferBatch\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"TransferSingle\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"string\",\n name: \"value\",\n type: \"string\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"URI\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n ],\n name: \"balanceOf\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"accounts\",\n type: \"address[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n ],\n name: \"balanceOfBatch\",\n outputs: [\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n ],\n name: \"isApprovedForAll\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256[]\",\n name: \"ids\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"amounts\",\n type: \"uint256[]\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeBatchTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"id\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"operator\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes4\",\n name: \"interfaceId\",\n type: \"bytes4\",\n },\n ],\n name: \"supportsInterface\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n name: \"uri\",\n outputs: [\n {\n internalType: \"string\",\n name: \"\",\n type: \"string\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n];\n\nconst _bytecode =\n \"0x60806040523480156200001157600080fd5b5060408051808201909152601381527f68747470733a2f2f706c616365686f6c646572000000000000000000000000006020820152620000586301ffc9a760e01b6200008e565b620000638162000113565b62000075636cdb3d1360e11b6200008e565b620000876303a24d0760e21b6200008e565b50620001c8565b6001600160e01b03198082161415620000ee576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b8051620001289060039060208401906200012c565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200016f57805160ff19168380011785556200019f565b828001600101855582156200019f579182015b828111156200019f57825182559160200191906001019062000182565b50620001ad929150620001b1565b5090565b5b80821115620001ad5760008155600101620001b2565b6115eb80620001d86000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f414610360578063a22cb465146104d7578063e985e9c514610505578063f242432a1461053357610087565b8062fdd58e1461008c57806301ffc9a7146100ca5780630e89341c146101055780632eb2c2d614610197575b600080fd5b6100b8600480360360408110156100a257600080fd5b506001600160a01b0381351690602001356105fe565b60408051918252519081900360200190f35b6100f1600480360360208110156100e057600080fd5b50356001600160e01b03191661066d565b604080519115158252519081900360200190f35b6101226004803603602081101561011b57600080fd5b503561068c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015c578181015183820152602001610144565b50505050905090810190601f1680156101895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61035e600480360360a08110156101ad57600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156101e157600080fd5b8201836020820111156101f357600080fd5b8035906020019184602083028401116401000000008311171561021557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561026557600080fd5b82018360208201111561027757600080fd5b8035906020019184602083028401116401000000008311171561029957600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156102e957600080fd5b8201836020820111156102fb57600080fd5b8035906020019184600183028401116401000000008311171561031d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610724945050505050565b005b6104876004803603604081101561037657600080fd5b81019060208101813564010000000081111561039157600080fd5b8201836020820111156103a357600080fd5b803590602001918460208302840111640100000000831117156103c557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561041557600080fd5b82018360208201111561042757600080fd5b8035906020019184602083028401116401000000008311171561044957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a22945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104c35781810151838201526020016104ab565b505050509050019250505060405180910390f35b61035e600480360360408110156104ed57600080fd5b506001600160a01b0381351690602001351515610b0e565b6100f16004803603604081101561051b57600080fd5b506001600160a01b0381358116916020013516610bfd565b61035e600480360360a081101561054957600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561058957600080fd5b82018360208201111561059b57600080fd5b803590602001918460018302840111640100000000831117156105bd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c2b945050505050565b60006001600160a01b0383166106455760405162461bcd60e51b815260040180806020018281038252602b815260200180611467602b913960400191505060405180910390fd5b5060009081526001602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b03191660009081526020819052604090205460ff1690565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107185780601f106106ed57610100808354040283529160200191610718565b820191906000526020600020905b8154815290600101906020018083116106fb57829003601f168201915b50505050509050919050565b81518351146107645760405162461bcd60e51b815260040180806020018281038252602881526020018061158e6028913960400191505060405180910390fd5b6001600160a01b0384166107a95760405162461bcd60e51b81526004018080602001828103825260258152602001806114bb6025913960400191505060405180910390fd5b6107b1610df6565b6001600160a01b0316856001600160a01b031614806107dc57506107dc856107d7610df6565b610bfd565b6108175760405162461bcd60e51b81526004018080602001828103825260328152602001806114e06032913960400191505060405180910390fd5b6000610821610df6565b9050610831818787878787610a1a565b60005b845181101561093257600085828151811061084b57fe5b60200260200101519050600085838151811061086357fe5b602002602001015190506108d0816040518060600160405280602a8152602001611512602a91396001600086815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002054610dfb9092919063ffffffff16565b60008381526001602090815260408083206001600160a01b038e811685529252808320939093558a16815220546109079082610e92565b60009283526001602081815260408086206001600160a01b038d168752909152909320555001610834565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156109b85781810151838201526020016109a0565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156109f75781810151838201526020016109df565b5050505090500194505050505060405180910390a4610a1a818787878787610ef3565b505050505050565b60608151835114610a645760405162461bcd60e51b81526004018080602001828103825260298152602001806115656029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610a7e57600080fd5b50604051908082528060200260200182016040528015610aa8578160200160208202803683370190505b50905060005b8451811015610b0657610ae7858281518110610ac657fe5b6020026020010151858381518110610ada57fe5b60200260200101516105fe565b828281518110610af357fe5b6020908102919091010152600101610aae565b509392505050565b816001600160a01b0316610b20610df6565b6001600160a01b03161415610b665760405162461bcd60e51b815260040180806020018281038252602981526020018061153c6029913960400191505060405180910390fd5b8060026000610b73610df6565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610bb7610df6565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6001600160a01b038416610c705760405162461bcd60e51b81526004018080602001828103825260258152602001806114bb6025913960400191505060405180910390fd5b610c78610df6565b6001600160a01b0316856001600160a01b03161480610c9e5750610c9e856107d7610df6565b610cd95760405162461bcd60e51b81526004018080602001828103825260298152602001806114926029913960400191505060405180910390fd5b6000610ce3610df6565b9050610d03818787610cf48861118b565b610cfd8861118b565b87610a1a565b610d4a836040518060600160405280602a8152602001611512602a913960008781526001602090815260408083206001600160a01b038d1684529091529020549190610dfb565b60008581526001602090815260408083206001600160a01b038b81168552925280832093909355871681522054610d819084610e92565b60008581526001602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610a1a8187878787876111cf565b335b90565b60008184841115610e8a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e4f578181015183820152602001610e37565b50505050905090810190601f168015610e7c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610eec576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b610f05846001600160a01b0316611359565b15610a1a57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610f93578181015183820152602001610f7b565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610fd2578181015183820152602001610fba565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561100e578181015183820152602001610ff6565b50505050905090810190601f16801561103b5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561106057600080fd5b505af192505050801561108557506040513d602081101561108057600080fd5b505160015b61111a57611091611365565b8061109c57506110e3565b60405162461bcd60e51b8152602060048201818152835160248401528351849391928392604401919085019080838360008315610e4f578181015183820152602001610e37565b60405162461bcd60e51b815260040180806020018281038252603481526020018061140b6034913960400191505060405180910390fd5b6001600160e01b031981167fbc197c8100000000000000000000000000000000000000000000000000000000146111825760405162461bcd60e51b815260040180806020018281038252602881526020018061143f6028913960400191505060405180910390fd5b50505050505050565b6040805160018082528183019092526060918291906020808301908036833701905050905082816000815181106111be57fe5b602090810291909101015292915050565b6111e1846001600160a01b0316611359565b15610a1a57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611270578181015183820152602001611258565b50505050905090810190601f16801561129d5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1580156112c057600080fd5b505af19250505080156112e557506040513d60208110156112e057600080fd5b505160015b6112f157611091611365565b6001600160e01b031981167ff23a6e6100000000000000000000000000000000000000000000000000000000146111825760405162461bcd60e51b815260040180806020018281038252602881526020018061143f6028913960400191505060405180910390fd5b3b151590565b60e01c90565b600060443d101561137557610df8565b600481823e6308c379a0611389825161135f565b1461139357610df8565b6040513d600319016004823e80513d67ffffffffffffffff81602484011181841117156113c35750505050610df8565b828401925082519150808211156113dd5750505050610df8565b503d830160208284010111156113f557505050610df8565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368a26469706673582212205b5c4336aee208154e23f8b8399115e68041251372363b47f99eb1f17e08d29464736f6c63430007030033\";\n\nexport class NoopPlaceholder__factory extends ContractFactory {\n constructor(signer?: Signer) {\n super(_abi, _bytecode, signer);\n }\n\n deploy(\n overrides?: Overrides & { from?: string | Promise }\n ): Promise {\n return super.deploy(overrides || {}) as Promise;\n }\n getDeployTransaction(\n overrides?: Overrides & { from?: string | Promise }\n ): TransactionRequest {\n return super.getDeployTransaction(overrides || {});\n }\n attach(address: string): NoopPlaceholder {\n return super.attach(address) as NoopPlaceholder;\n }\n connect(signer: Signer): NoopPlaceholder__factory {\n return super.connect(signer) as NoopPlaceholder__factory;\n }\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): NoopPlaceholderInterface {\n return new utils.Interface(_abi) as NoopPlaceholderInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): NoopPlaceholder {\n return new Contract(address, _abi, signerOrProvider) as NoopPlaceholder;\n }\n}\n","export const FIRST_DERIVATIVE_ADDRESS : string = \"0x8B333EE34B692450D85580c8B33B48949e09a916\";\n\nexport const CRYPTOPUNKS_ADDRESS : string = '0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB';\n\nexport const CRYPTOPUNKS_DATA_ADDRESS : string = '0x16F5A35647D6F03D5D3da7b35409D65ba03aF3B2';\n\nexport const METADATA_RETRIEVER_HOST : string = 'q1eqjq6hld.execute-api.us-east-1.amazonaws.com';\n\nexport const POPULAR_COLLECTIONS : string[] = \n[CRYPTOPUNKS_ADDRESS, // cryptopunks\n'0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270', // artblocks curated\n'0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d', // boredape yacht club\n'0x1a92f7381b9f03921564a437210bb9396471050c', // CoolCats\n'0x4b3406a41399c7fd2ba65cbc93697ad9e7ea61e5', // Lostpoets\n'0x12d2d1bed91c24f878f37e66bd829ce7197e4d14', // Galactic Apes\n'0xe785e82358879f061bc3dcac6f0444462d4b5330', // world of women\n'0x60e4d786628fea6478f785a6d7e704777c86a7c6', // mutant ape yacht club\n];\n\n","import { InjectedConnector } from '@web3-react/injected-connector'\nimport { NetworkConnector } from '@web3-react/network-connector'\nimport { WalletConnectConnector } from '@web3-react/walletconnect-connector'\n//import { WalletLinkConnector } from '@web3-react/walletlink-connector'\n//import { LedgerConnector } from '@web3-react/ledger-connector'\n\n//const POLLING_INTERVAL = 12000\n//const RPC_URLS: { [chainId: number]: string } = {\n// 1: process.env.RPC_URL_1 as string,\n// 4: process.env.RPC_URL_4 as string\n//}\n\nexport const injected = new InjectedConnector({ supportedChainIds: [1, 3, 4, 5, 31337, 1337] })\n\nexport const network = new NetworkConnector({\n urls: { 31337: \"http://127.0.0.1:8545/\", 1: \"https://eth-mainnet.alchemyapi.io/v2/dO2C6PZhvT1CkWS4uhR9T54qvRcs_AzM\" },\n defaultChainId: 1\n})\n\nexport const walletconnect = new WalletConnectConnector({\n rpc: { 1: \"https://mainnet.infura.io/v3/84842078b09946638c03157f83405213\" },\n qrcode: true\n})\n\n//export const walletlink = new WalletLinkConnector({\n// url: RPC_URLS[1],\n// appName: 'web3-react example',\n// supportedChainIds: [1, 3, 4, 5, 42, 10, 137, 69, 420, 80001]\n//})\n\n//export const ledger = new LedgerConnector({ chainId: 1, url: RPC_URLS[1], pollingInterval: POLLING_INTERVAL })","import {useEffect} from 'react';\nimport { useWeb3React } from '@web3-react/core';\nimport { network } from '../connectors';\nimport { NFTMetadata } from './NFTMetadata';\nimport { METADATA_RETRIEVER_HOST } from './Constants';\nimport { FIRST_DERIVATIVE_ADDRESS } from './Constants';\n\nexport const useEthNetwork = () => {\n const { active, library, activate } = useWeb3React(\"network\");\n\n useEffect(() => {\n async function connectToWeb3Network() {\n if (!active) {\n await activate(network);\n }\n }\n\n connectToWeb3Network();\n }, [active, activate]);\n\n return [active, library];\n};\n\nexport async function fetchJson(request: string): Promise {\n if (request.startsWith(\"ipfs://ipfs\")) {\n request = \"https://ipfs.io/ipfs\" + request.substr(\"ipfs://ipfs\".length);\n } else if (request.startsWith(\"ipfs://\")) {\n request = \"https://ipfs.io/ipfs/\" + request.substr(\"ipfs://\".length);\n }\n\n if (request.startsWith(\"https://api.artblocks.io/token\")) {\n request = \"https://token.artblocks.io\" + request.substr(\"https://api.artblocks.io/token\".length);\n }\n\n const response = await fetch(request);\n const body = await response.json();\n return body;\n}\n\nexport async function fetchDerivativeMetadata(derivativeId: string) : Promise {\n return await fetchMetadata(FIRST_DERIVATIVE_ADDRESS, derivativeId, \"721\");\n}\n\nexport async function fetchMetadata(contractId: string, tokenId: string, type: string) : Promise {\n const response = await fetch(`https://${METADATA_RETRIEVER_HOST}/v1/getTokenMetadata?contractId=${contractId.toString()}&tokenId=${tokenId.toString()}&type=${type}`);\n return response.json();\n}","import { BigNumber } from '@ethersproject/bignumber';\nimport React, { useEffect, useState } from 'react';\nimport { FirstDerivative__factory } from '../typechain';\nimport { FIRST_DERIVATIVE_ADDRESS } from '../util/Constants';\nimport { useEthNetwork } from '../util/NetworkConnector';\n\nexport default function StatsComponent() {\n\n const [mintedCount, setMintedCount] = useState(0);\n const [ownerCount, setOwnerCount] = useState(0);\n const [active, library] = useEthNetwork();\n\n useEffect(() => {\n async function calculateStatistics() {\n const firstDerivativeContract = FirstDerivative__factory.connect(FIRST_DERIVATIVE_ADDRESS, library);\n const totalSupply : BigNumber = await firstDerivativeContract.totalSupply();\n const allOwners: string[] = await Promise.all(Array.from(Array(totalSupply.toNumber()).keys()).map((index) => {\n return firstDerivativeContract.ownerOf(index + 1);\n }));\n\n setMintedCount(totalSupply.toNumber());\n setOwnerCount(new Set(allOwners).size);\n }\n\n if (active) calculateStatistics();\n }, [active, library]);\n\n return (
\n
\n
{mintedCount}
\n
Minted Derivatives
\n
\n
\n
{ownerCount}
\n
Owners
\n
\n
\n);\n}","import React from 'react';\nimport Parallax from 'parallax-js';\n\nimport CSS from 'csstype';\nimport {dispatch} from 'use-bus';\n\nimport introLayerOne from '../assets/img/demo/presentation/intro/layer01.png';\nimport introLayerTwo from '../assets/img/demo/presentation/intro/layer02.png';\nimport introLayerThree from '../assets/img/demo/presentation/intro/layer03.png';\nimport introLayerFour from '../assets/img/demo/presentation/intro/layer04.png';\nimport introLayerFive from '../assets/img/demo/presentation/intro/layer05.png';\nimport introLayerSix from '../assets/img/demo/presentation/intro/layer06.png';\nimport introLayerSeven from '../assets/img/demo/presentation/intro/layer07.png';\nimport introLayerEight from '../assets/img/demo/presentation/intro/layer08.png';\nimport introLayerNine from '../assets/img/demo/presentation/intro/layer09.png';\nimport StatsComponent from './StatsComponent';\n\nexport class HeroSection extends React.Component {\n\n\n componentDidMount() {\n var element = document.querySelectorAll('.parallax');\n\n for (var i = 0; i < element.length; i++) {\n new Parallax(element[i]);\n }\n }\n\n displayMintModal() {\n dispatch('@mintModal/display');\n }\n\n render() {\n const parallaxStyle: CSS.Properties = {\n maxWidth: '920px'\n }\n \n const parallalxLayerTwoStyle: CSS.Properties = {\n zIndex: 2\n }\n \n const parallalxLayerThreeStyle: CSS.Properties = {\n zIndex: 3\n }\n \n const parallalxLayerFourStyle: CSS.Properties = {\n zIndex: 4\n }\n \n return (\n
\n
\n
\n
\n
\n

\n Get a First Derivative\n

\n

Discover and collect affordable NFT derivatives which track the NFTs you already love.

\n
\n \n
\n
\n \n
\n
\n
\n
\n
\"Layer\"/
\n
\"layer\"/
\n
\"Layer\"/
\n
\"Layer\"/
\n
\"Layer\"/
\n
\"Layer\"/
\n
\"Layer\"/
\n
\"Layer\"/
\n
\"Layer\"/
\n
\n
\n
\n
\n
\n );\n }\n}","export default __webpack_public_path__ + \"static/media/eth.ca4e2c89.svg\";","import {useState} from 'react';\nimport ContentLoader from 'react-content-loader';\n\ninterface PlaceholderImageProps {\n className: string;\n uri: string | undefined;\n alt: string;\n style: React.CSSProperties;\n onClick?: () => void;\n}\n\nexport default function PlaceholderImage(props : PlaceholderImageProps) {\n const [isImageLoaded, setImageLoaded] = useState(\"\");\n\n return (
\n
\n \n \n \n
\n\n
\n {props.alt} {setImageLoaded(props.uri ?? \"\");}} onClick={props.onClick}/>\n
\n
);\n}","import { NFTMetadata } from '../util/NFTMetadata';\n\nimport { FIRST_DERIVATIVE_ADDRESS } from '../util/Constants';\nimport { BigNumber } from '@ethersproject/bignumber';\n\nimport {dispatch} from 'use-bus';\nimport { utils as ethersUtils} from 'ethers';\nimport ethLogo from '../assets/img/eth.svg';\nimport PlaceholderImage from './PlaceholderImage';\nimport ContentLoader from 'react-content-loader';\n\ninterface NFTCardProps {\n metadata : NFTMetadata | undefined;\n contractId : string;\n tokenId : string;\n derivativeId: BigNumber;\n displayButton: boolean;\n lastSalePrice : string | undefined;\n}\n\n\nexport default function NFTCard(props : NFTCardProps) {\n\n async function handleMint() {\n dispatch({type: '@mintModal/display', payload: {contractId: props.contractId, tokenId: props.tokenId}});\n };\n\n function actionButton() {\n if (!props.displayButton) return (<>);\n\n if (props.derivativeId.isZero()) {\n return ();\n } else {\n return (View derivative);\n }\n }\n\n function truncatedDescription() {\n const description = props.metadata?.description;\n\n if (description !== undefined && description !== null && description.length > 150) {\n return description.substring(0, 150) + \"...\";\n }\n\n return description;\n }\n\n function saneImageUri() {\n if (props.metadata?.image.startsWith(\"ipfs://ipfs\")) {\n return \"https://ipfs.io/ipfs/\" + props.metadata?.image.substr(\"ipfs://ipfs/\".length);\n } else if (props.metadata?.image.startsWith(\"ipfs://\")) {\n return \"https://ipfs.io/ipfs/\" + props.metadata?.image.substr(\"ipfs://\".length);\n }\n\n return props.metadata?.image;\n }\n\n function renderLastSalePrice() {\n if (props.lastSalePrice !== undefined) return (

Underlying price: \"Price {ethersUtils.formatEther(props.lastSalePrice).toString()}

);\n else return (<>);\n }\n\n function renderCardTitle() {\n if (props.metadata) {\n return props.metadata?.name;\n } else {\n return (\n \n );\n }\n }\n \n return (\n
\n \n\n
\n
{renderCardTitle()}
\n {renderLastSalePrice()}\n

{truncatedDescription()}

\n\n {actionButton()}\n
\n
\n );\n\n}","import React, { useEffect, useState } from 'react';\nimport { FirstDerivative__factory } from '../typechain';\nimport { FIRST_DERIVATIVE_ADDRESS } from '../util/Constants';\nimport { BigNumber } from '@ethersproject/bignumber';\nimport { NFTMetadata } from '../util/NFTMetadata';\nimport NFTCard from './NFTCard';\nimport { fetchDerivativeMetadata, useEthNetwork } from '../util/NetworkConnector';\n\nexport default function RecentDerivativesSection() {\n\n const [ active, library ] = useEthNetwork();\n const [recentDerivatives, setRecentDerivatives] = useState([]);\n const [isLoading, setIsLoading] = useState(true);\n\n interface RecentDerivative {\n tokenId : BigNumber;\n underlyingCollectionId: string;\n underlyingTokenId: BigNumber;\n underlyingMetadata: NFTMetadata;\n }\n\n useEffect(() => {\n async function updateRecentDerivatives() {\n try {\n const firstDerivativeContract = FirstDerivative__factory.connect(FIRST_DERIVATIVE_ADDRESS, library);\n const totalSupply = await firstDerivativeContract.totalSupply();\n let result : RecentDerivative[] = [];\n \n for (let i=0;i<9;i++) {\n let tokenId = totalSupply.sub(i);\n \n if (!tokenId.isNegative() && !tokenId.isZero()) {\n const underlyingPromise : Promise<[string, BigNumber]> = firstDerivativeContract.getUnderlying(tokenId);\n const metadataPromise : Promise = fetchDerivativeMetadata(tokenId.toString());\n\n try {\n const [[underlyingCollectionId, underlyingTokenId], metadata] = await Promise.all([underlyingPromise, metadataPromise]); \n result.push({tokenId: tokenId, underlyingCollectionId: underlyingCollectionId, underlyingTokenId: underlyingTokenId, underlyingMetadata: metadata});\n } catch (error) {\n console.error(error);\n }\n }\n }\n \n console.log(\"Setting recent derivatives: \" + JSON.stringify(result));\n setRecentDerivatives(result);\n setIsLoading(false);\n } catch (e) {\n console.error(e);\n } \n }\n console.log(\"Conditionally updating recent derivatives: \" + active);\n if (active) updateRecentDerivatives();\n }, [active, library]);\n\n function renderRecentDerivatives() {\n if (!isLoading) {\n return recentDerivatives.reduce((resultArray : RecentDerivative[][], item, index) => { \n const chunkIndex = Math.floor(index/4);\n \n if (!resultArray[chunkIndex]) {\n resultArray[chunkIndex] = []; // start a new chunk\n }\n \n resultArray[chunkIndex].push(item);\n \n return resultArray;\n }, []).map((derivativesChunk : RecentDerivative[]) => {\n return (
\n {derivativesChunk.map((derivative : RecentDerivative) => {\n return (
{}
);\n })}\n
)\n }); \n } else {\n return (
\n
{}
\n
{}
\n
{}
\n
);\n }\n }\n\n return (\n
\n
\n
\n

Recently minted First Derivatives

\n

The latest from the first derivative mint

\n
\n {renderRecentDerivatives()}\n
\n
\n );\n\n}","import { BigNumber } from '@ethersproject/bignumber';\nimport React, { useEffect, useState } from 'react';\nimport { FirstDerivative, FirstDerivative__factory } from '../typechain';\nimport { FIRST_DERIVATIVE_ADDRESS, POPULAR_COLLECTIONS } from '../util/Constants';\nimport { useEthNetwork } from '../util/NetworkConnector';\nimport { NFTMetadata } from '../util/NFTMetadata';\nimport NFTCard from './NFTCard';\nimport { Network, OpenSeaAPI } from 'opensea-js';\nimport { assetFromJSON } from 'opensea-js/lib/utils';\nimport { OpenSeaAsset } from 'opensea-js/lib/types';\n\ninterface OpenseaItem {\n collectionId: string,\n tokenId: string,\n metadata: NFTMetadata,\n derivativeId: BigNumber,\n lastSalePrice: string | undefined\n}\n\nexport default function PopularNFTSection() {\n const [openSeaItems, setOpenSeaItems] = useState([]);\n const [isLoaded, setLoaded] = useState(false);\n const [active, library] = useEthNetwork();\n\n async function getRawAssets() : Promise {\n const api = new OpenSeaAPI({networkName: Network.Main});\n const json = await api.get('/api/v1/assets/', {limit: 50, offset: 0, order_by:\"sale_price\", asset_contract_addresses: POPULAR_COLLECTIONS});\n const results = json.assets.map((j: any) => assetFromJSON(j));\n\n return results.sort(() => .5 - Math.random()).slice(0,20);\n }\n\n useEffect(() => {\n async function loadOpenSeaItems() {\n const assets = await getRawAssets();\n const items = await Promise.all(assets.map(async (asset) => {\n const firstDerivativeContract : FirstDerivative = FirstDerivative__factory.connect(FIRST_DERIVATIVE_ADDRESS, library);\n\n let derivativeId : BigNumber;\n\n try {\n derivativeId = await firstDerivativeContract.getDerivative(asset.assetContract.address, BigNumber.from(asset.tokenId));\n } catch(e) {\n console.error(e);\n derivativeId = BigNumber.from(0);\n }\n\n return {\n collectionId: asset.assetContract.address,\n tokenId: asset.tokenId ?? \"\",\n metadata: {\n name: asset.name,\n description: asset.description,\n image: asset.imageUrl\n },\n derivativeId: derivativeId,\n lastSalePrice: asset.lastSale?.totalPrice\n }\n }));\n\n setOpenSeaItems(items);\n setLoaded(true);\n }\n\n if (active) loadOpenSeaItems();\n }, [active, library]);\n\n function renderItems() {\n if (isLoaded) {\n return openSeaItems.reduce((resultArray : OpenseaItem[][], item, index) => { \n const chunkIndex = Math.floor(index/4)\n \n if (!resultArray[chunkIndex]) {\n resultArray[chunkIndex] = [] // start a new chunk\n }\n \n resultArray[chunkIndex].push(item)\n \n return resultArray\n }, []).map((openseaItemsChunk : OpenseaItem[], index: number) => {\n return (
\n {openseaItemsChunk.map((item : OpenseaItem) => {\n return (
{}
);\n })}\n
)\n })\n } else {\n return (\n <>\n
\n
{}
\n
{}
\n
{}
\n
{}
\n
\n\n
\n
{}
\n
{}
\n
{}
\n
{}
\n
\n \n );\n }\n }\n\n return (\n \n
\n
\n
\n

Popular NFTs

\n

Browse for inspiration

\n
\n {renderItems()}\n
\n
\n\n );\n}","import React, {useEffect, useState} from 'react';\nimport { Network, OpenSeaAPI } from 'opensea-js';\nimport { POPULAR_COLLECTIONS } from '../util/Constants';\nimport PlaceholderImage from './PlaceholderImage';\n\ninterface ResolvedPopularCollection {\n address: string;\n name: string;\n image: string;\n}\n\ninterface MintCollectionsRailProps {\n onCollection: (collectionId: string) => void;\n}\n\nexport default function MintCollectionsRail(props: MintCollectionsRailProps) {\n\n const [resolvedPopularCollections, setResolvedPopularCollections] = useState([])\n const [isLoaded, setLoaded] = useState(false);\n\n useEffect(() => {\n async function getPopularCollectionsData() {\n const api = new OpenSeaAPI({networkName: Network.Main});\n const resolvedCollections = await Promise.all(POPULAR_COLLECTIONS.map(async (address) => {\n const result = await api.get(\"/api/v1/asset_contract/\" + address);\n return {image: result.collection.featured_image_url ?? result.image_url, name: result.collection.name, address: address};\n }));\n \n setResolvedPopularCollections(resolvedCollections);\n setLoaded(true);\n }\n\n getPopularCollectionsData();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(resolvedPopularCollections)]);\n\n function renderCollections() {\n if (isLoaded) {\n return resolvedPopularCollections.map((collection) => {\n return (
\n props.onCollection(collection.address)} alt={collection.name} />\n
\n );\n });\n } else {\n return (<>\n
\n
\n
\n
\n
\n
\n \n );\n }\n }\n\n return (\n
\n {renderCollections()}\n
);\n}","import React, {useEffect, useState} from 'react';\nimport { Network, OpenSeaAPI } from 'opensea-js';\nimport { OpenSeaAsset } from 'opensea-js/lib/types';\nimport PlaceholderImage from './PlaceholderImage';\n\ninterface MintTokenRailProps {\n collectionId: string;\n onTokenId: (tokenId: string) => void\n}\n\nexport default function MintTokensRail(props: MintTokenRailProps) {\n\n const [resolvedTokens, setResolvedTokens] = useState([])\n const [isResolved, setResolved] = useState(false);\n\n useEffect(() => {\n setResolved(false);\n }, [props.collectionId]);\n\n useEffect(() => {\n async function getTokens() {\n const api = new OpenSeaAPI({networkName: Network.Main});\n const assets = await api.getAssets({asset_contract_address: props.collectionId, order_by: \"sale_price\", order_direction: \"desc\"});\n\n setResolvedTokens(assets.assets);\n setResolved(true);\n }\n\n if (props.collectionId.length > 0) getTokens();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(resolvedTokens), props.collectionId]);\n\n function renderCollections() {\n if (isResolved) {\n return resolvedTokens.map((token) => {\n return (
\n props.onTokenId(token.tokenId ?? token.tokenAddress)} style={{minHeight: \"100px\", minWidth: \"100px\", maxWidth: \"100px\", maxHeight: \"100px\", objectFit: \"cover\"}} alt=\"NFT\" />\n
\n );\n });\n } else {\n return (<>\n
\n
\n
\n
\n
\n
\n \n );\n }\n }\n\n return (\n
\n {renderCollections()}\n
);\n}","import React, {useEffect, useState} from 'react';\nimport { useWeb3React } from \"@web3-react/core\"\nimport { BigNumber, ContractTransaction } from 'ethers';\nimport { NFTMetadata } from '../util/NFTMetadata';\nimport NFTCard from './NFTCard';\nimport { FIRST_DERIVATIVE_ADDRESS } from '../util/Constants';\nimport useBus from 'use-bus';\n\nimport './MintForm.css'\nimport MintCollectionsRail from './MintCollectionsRail';\nimport MintTokensRail from './MintTokensRail';\nimport { ContractFascade } from '../util/ContractFascade';\nimport { FirstDerivative, FirstDerivative__factory } from '../typechain';\n\nenum ContractIdValidity {\n EMPTY, VALID, INVALID\n}\n\nenum TokenIdValidity {\n EMPTY, VALID, INVALID, CLAIMED, PROGRESS, MINTED\n}\n\ninterface MintFormProps {\n contractId: string | undefined;\n tokenId: string | undefined;\n}\n\nexport default function MintForm(props: MintFormProps) {\n\n const [contractId, setContractId] = useState(props.contractId ?? '');\n const [contractInterface, setContractInterface] = useState(undefined);\n const [contractName, setContractName] = useState('');\n const [isValidContractId, setIsValidContractId] = useState(ContractIdValidity.EMPTY);\n\n const [tokenId, setTokenId] = useState(props.tokenId ?? '');\n const [tokenMetaData, setTokenMetaData] = useState(undefined);\n const [isValidTokenId, setIsValidTokenId] = useState(TokenIdValidity.EMPTY);\n const [derivativeId, setDerivativeId] = useState(BigNumber.from(0));\n const [isMinting, setIsMinting] = useState(false);\n const [mintingStatus, setMintingStatus] = useState('');\n\n const { library } = useWeb3React()\n\n async function handleContractIdChange(event: React.FormEvent) {\n setContractId(event.currentTarget.value);\n setIsValidContractId(ContractIdValidity.EMPTY);\n }\n\n const handleTokenIdChange = (event : React.FormEvent) => {\n setTokenId(event.currentTarget.value);\n setIsValidTokenId(TokenIdValidity.EMPTY);\n };\n\n useBus('@mintModal/display', (event) => {\n console.log(\"Got @mintModal/display\");\n setContractId(event.payload.contractId);\n setTokenId(event.payload.tokenId);\n }, [contractId, tokenId]);\n\n useEffect(() => {\n async function updateContractInterface() {\n try {\n const contract : ContractFascade = await ContractFascade.Create(contractId, library);\n setContractInterface(contract);\n } catch (error) {\n console.error(error);\n setContractInterface(undefined);\n }\n }\n\n updateContractInterface();\n }, [contractId, library]);\n\n\n useEffect(() => {\n async function updateContractValidity() {\n if (contractId === '') {\n setIsValidContractId(ContractIdValidity.EMPTY);\n return;\n }\n\n if (contractInterface !== undefined) {\n setIsValidContractId(ContractIdValidity.VALID);\n } else {\n setIsValidContractId(ContractIdValidity.INVALID);\n }\n }\n\n updateContractValidity();\n }, [contractId, contractInterface]);\n\n useEffect(() => {\n async function updateContractName() {\n if (contractInterface === undefined) {\n setContractName('');\n return;\n }\n\n try {\n setContractName(await contractInterface.name());\n } catch (e) {\n console.error(e);\n setContractName('');\n }\n }\n\n updateContractName();\n }, [contractInterface]);\n\n useEffect(() => {\n async function updateTokenIdValidity() {\n if (tokenId === '' || contractInterface === undefined) {\n setIsValidTokenId(TokenIdValidity.EMPTY);\n setTokenMetaData(undefined);\n setDerivativeId(BigNumber.from(0));\n return;\n }\n\n setIsValidTokenId(TokenIdValidity.PROGRESS);\n\n try {\n console.log(\"Querying for tokenUri\");\n const metadata = await contractInterface.tokenMetadata(tokenId);\n\n setTokenMetaData(metadata);\n\n const firstDerivativeContract = FirstDerivative__factory.connect(FIRST_DERIVATIVE_ADDRESS, library);\n const derivativeId = await firstDerivativeContract.getDerivative(contractId, tokenId);\n\n setDerivativeId(derivativeId);\n\n if (derivativeId.isZero()) {\n setIsValidTokenId(TokenIdValidity.VALID); \n } else {\n setIsValidTokenId(TokenIdValidity.CLAIMED);\n }\n } catch (e) {\n console.error(e);\n setIsValidTokenId(TokenIdValidity.INVALID);\n setTokenMetaData(undefined);\n }\n }\n\n updateTokenIdValidity();\n }, [contractInterface, contractId, tokenId, library]);\n\n /*\n useEffect(() => {\n async function updateTokenMetaData() {\n if (tokenUri === '') {\n setTokenMetaData(undefined);\n return;\n }\n\n setIsLoadingTokenMetadata(true);\n\n try {\n const metadata : NFTMetadata = await fetchJson(tokenUri);\n\n setTokenMetaData(metadata);\n } catch (e) {\n console.error(e);\n setTokenMetaData(undefined);\n }\n\n setIsLoadingTokenMetadata(false);\n }\n\n updateTokenMetaData();\n }, [tokenUri]);\n*/\n function getContractIdValidationStateClass() {\n switch (isValidContractId) {\n case ContractIdValidity.EMPTY : return '';\n case ContractIdValidity.VALID : return 'is-valid';\n case ContractIdValidity.INVALID: return 'is-invalid';\n }\n }\n\n function getTokenIdValidationStateClass() {\n switch (isValidTokenId) {\n case TokenIdValidity.EMPTY: return '';\n case TokenIdValidity.VALID: return 'is-valid';\n case TokenIdValidity.INVALID: return 'is-invalid';\n case TokenIdValidity.CLAIMED: return 'is-invalid';\n case TokenIdValidity.MINTED: return 'is-valid';\n }\n }\n\n function getTokenCard() {\n if (isValidTokenId === TokenIdValidity.PROGRESS) {\n return ();\n } else if (tokenMetaData !== undefined) {\n return ();\n }\n\n return (<>)\n }\n\n function getTokenIdInvalidDescription() {\n if (isValidTokenId === TokenIdValidity.INVALID) {\n return (
No such token
);\n } else if (isValidTokenId === TokenIdValidity.CLAIMED) {\n return (
Derivative already claimed
);\n } else if (isValidTokenId === TokenIdValidity.MINTED) {\n return (
Minted!
);\n } else {\n return (<>);\n }\n }\n\n function getMintbutton() {\n switch (isValidTokenId) {\n case TokenIdValidity.MINTED:\n case TokenIdValidity.CLAIMED:\n return (View derivative);\n case TokenIdValidity.EMPTY:\n case TokenIdValidity.INVALID:\n return ();\n case TokenIdValidity.VALID:\n if (isMinting) {\n return ();\n } else {\n return ();\n }\n }\n }\n\n async function handleMint() {\n if (isMinting) return;\n setIsMinting(true);\n setMintingStatus('Creating transaction...');\n\n const firstDerivativeContract : FirstDerivative = FirstDerivative__factory.connect(FIRST_DERIVATIVE_ADDRESS, library.getSigner());\n const price = await firstDerivativeContract.derivativePrice();\n\n try {\n const mintedTokenId : ContractTransaction = await firstDerivativeContract.mintDerivative(contractId, tokenId, {value: price});\n\n setMintingStatus(\"Waiting for 1 confirmation...\");\n\n const receipt = await mintedTokenId.wait(1);\n const transferEvents = receipt.events?.filter((x) => {return x.event === \"Transfer\"});\n const transferArgs = transferEvents?.pop()?.args;\n\n if (transferArgs && transferArgs.length === 3) {\n const tokenId : BigNumber = transferArgs[2];\n setDerivativeId(tokenId);\n setIsValidTokenId(TokenIdValidity.MINTED);\n }\n\n setMintingStatus(\"\");\n } catch (error) {\n console.error(error);\n setMintingStatus(\"Minting failed!\");\n }\n\n setIsMinting(false);\n }\n\n function renderTokensRail() {\n if (isValidContractId === ContractIdValidity.VALID) {\n return (
\n
\n {setTokenId(tokenId)}} />\n
\n
);\n } else {\n return (<>);\n }\n\n }\n\n return (\n
\n
\n

Enter an NFT contract and token ID:

\n
\n\n
\n
\n
\n \n \n
{contractName}
\n
\n\n
\n \n \n {getTokenIdInvalidDescription()}\n
\n\n
\n {getMintbutton()}\n
\n\n
\n

{mintingStatus}

\n
\n
\n\n
\n {getTokenCard()}\n
\n
\n\n
\n

Or browse popular collections

\n
\n\n
\n
\n {setContractId(collectionId); setTokenId(\"\");}}/>\n
\n
\n\n {renderTokensRail()}\n
\n );\n\n\n}","import { Provider } from '@ethersproject/abstract-provider';\nimport { BigNumberish } from '@ethersproject/bignumber';\nimport { ERC165, ERC165__factory, ERC721, ERC721__factory } from '../typechain/';\nimport { CryptopunksData } from '../typechain/CryptopunksData';\nimport { CryptopunksData__factory } from '../typechain/factories/CryptopunksData__factory';\nimport { CRYPTOPUNKS_ADDRESS, CRYPTOPUNKS_DATA_ADDRESS } from './Constants';\nimport svgToMiniDataURI from 'mini-svg-data-uri';\nimport { ERC1155 } from '../typechain/ERC1155';\nimport { ERC1155__factory } from '../typechain/factories/ERC1155__factory';\nimport { NFTMetadata } from './NFTMetadata';\nimport { fetchMetadata } from './NetworkConnector';\n\nexport class ContractFascade {\n\n private contractId : string;\n\n private erc721 : ERC721 | undefined;\n private cryptopunksData : CryptopunksData | undefined;\n private erc1155 : ERC1155 | undefined;\n\n private constructor(contractId : string) {\n this.contractId = contractId;\n }\n\n public async name() : Promise {\n if (this.erc721 !== undefined) {\n return await this.erc721.name();\n } else if (this.erc1155 !== undefined) {\n return \"ERC1155\";\n } else if (this.cryptopunksData !== undefined) {\n return \"CryptoPunks\";\n }\n\n throw new Error(\"Not a supported contract\");\n }\n\n public async tokenMetadata(tokenId : BigNumberish) : Promise {\n if (this.erc721 !== undefined) {\n return await fetchMetadata(this.contractId, tokenId.toString(), \"721\");\n } else if (this.erc1155 !== undefined) {\n return await fetchMetadata(this.contractId, tokenId.toString(), \"1155\");\n } else if (this.cryptopunksData !== undefined) {\n console.log(\"Querying for svg: \" + tokenId);\n const punkSvg = await this.cryptopunksData.punkImageSvg(tokenId);\n const justSvg = punkSvg.substr(\"data:image/svg+xml;utf8,\".length);\n const encodedSvg = svgToMiniDataURI(justSvg);\n\n return {\"name\" : `CryptoPunk #${tokenId}`, \"image\": encodedSvg, \"description\" : \"\"};\n }\n\n throw new Error(\"Not a supported contract\");\n }\n\n public static Create = async(contractId : string, library : Provider) => {\n const fascade = new ContractFascade(contractId);\n\n if (contractId === CRYPTOPUNKS_ADDRESS) {\n fascade.cryptopunksData = CryptopunksData__factory.connect(CRYPTOPUNKS_DATA_ADDRESS, library);\n } else {\n const erc165 : ERC165 = ERC165__factory.connect(contractId, library);\n const isErc721 : boolean = await erc165.supportsInterface(\"0x80ac58cd\");\n const isErc1155 : boolean = await erc165.supportsInterface(\"0xd9b67a26\");\n\n if (isErc721) {\n fascade.erc721 = ERC721__factory.connect(contractId, library);\n } else if (isErc1155) {\n fascade.erc1155 = ERC1155__factory.connect(contractId, library);\n } else {\n throw new Error(\"Contract is not derivative capable\");\n }\n }\n\n return fascade;\n }\n\n}","import React, {useEffect, useState} from 'react';\nimport { Row, Col } from 'react-bootstrap';\nimport { useWeb3React } from \"@web3-react/core\"\nimport { injected, walletconnect as walletConnect } from \"../connectors\"\n\nimport metamask from '../assets/logos/metamask.svg';\nimport walletconnect from '../assets/logos/walletconnect.svg';\n//import ledger from '../assets/logos/ledger.png';\n\nenum ConnectionType {\n METAMASK, WALLET_CONNECT, LEDGER\n}\n\nexport default function ConnectWalletForm() {\n\n const { active, activate } = useWeb3React()\n\n const [connectingMetamask, setConnectingMetamask] = useState(false);\n const [connectingWalletConnect, setConnectingWalletConnect] = useState(false);\n const [connectingLedger, setConnectingLedger] = useState(false);\n const [errorStatus, setErrorStatus] = useState('');\n\n useEffect(() => {\n if (active) {\n setConnectingMetamask(false);\n setConnectingWalletConnect(false);\n setConnectingLedger(false);\n setErrorStatus('');\n }\n }, [active]);\n\n async function handleConnect(type : ConnectionType) {\n if (connectingMetamask || connectingWalletConnect || connectingLedger) return;\n\n setErrorStatus('');\n\n let provider;\n\n switch (type) {\n case ConnectionType.METAMASK: \n setConnectingMetamask(true); \n provider = injected;\n break;\n case ConnectionType.WALLET_CONNECT: \n setConnectingWalletConnect(true); \n provider = walletConnect;\n break;\n case ConnectionType.LEDGER: \n setConnectingLedger(true); \n provider = walletConnect;\n break;\n default:\n console.log(\"Assertion failed\");\n return;\n }\n\n await activate(provider, (error: Error) => {\n setErrorStatus(error.message);\n setConnectingMetamask(false);\n setConnectingWalletConnect(false);\n setConnectingLedger(false);\n });\n };\n\n function renderConnectingStatus(connecting : boolean) {\n if (connecting) return (
);\n else return (<>);\n }\n\n function renderErrorStatus() {\n if (errorStatus !== '') {\n return (
{errorStatus}
);\n } else {\n return (<>);\n }\n }\n\n return (\n <>\n \n \n {handleConnect(ConnectionType.METAMASK);}} href=\"/#\" className=\"text-decoration-none\">\n \"MetaMask\"\n

MetaMask

\n

Connect your Metamask wallet

\n {renderConnectingStatus(connectingMetamask)}\n
\n \n \n {handleConnect(ConnectionType.WALLET_CONNECT);}} href=\"/#\" className=\"text-decoration-none\">\n \"Wallet\n

Wallet Connect

\n

Scan with WalletConnect to connect

\n {renderConnectingStatus(connectingWalletConnect)}\n
\n \n { /*\n \n \"Ledger\"\n

Ledger

\n

Connect your Ledger wallet

\n {renderConnectingStatus(connectingLedger)}\n \n */ }\n
\n\n {renderErrorStatus()}\n ); \n}","export default __webpack_public_path__ + \"static/media/metamask.c901ad35.svg\";","export default __webpack_public_path__ + \"static/media/walletconnect.66f98648.svg\";","import React, {useState} from 'react';\n\nimport { useWeb3React } from \"@web3-react/core\"\nimport MintForm from './MintForm';\nimport { Modal, Button } from 'react-bootstrap';\nimport ConnectWalletForm from './ConnectWalletForm';\nimport useBus from 'use-bus';\n\nexport default function MintModal() {\n\n const { active } = useWeb3React()\n\n const [visible, setVisible] = useState(false);\n\n const [requestedContractId, setRequestedContractId] = useState(undefined);\n const [requestedTokenId, setRequestedTokenId] = useState(undefined);\n\n useBus('@mintModal/display', (event) => {\n setRequestedContractId(event.payload?.contractId);\n setRequestedTokenId(event.payload?.tokenId);\n setVisible(true);\n }, [visible]);\n\n const handleDismiss = () => {\n setVisible(false);\n }\n\n function contentTitle() {\n if (active) return \"Create a First Derivative\";\n else return \"Connect your wallet\";\n }\n\n function contentBody() {\n if (active) return ()\n else return ()\n }\n\n return (\n \n {contentTitle()}\n \n \n {contentBody()}\n \n \n \n \n );\n}","export default function FaqSection() {\n return (
\n
\n

First Derivative FAQ

\n
\n
\n
\n
\n
\n

What is an NFT derivative?

\n

First Derivative is a distributed ethereum smart contract that allows anyone to mint their own NFT which \"tracks\" an existing underlying NFT, similar to a financial derivative that tracks an underlying commodity or security.

\n
\n
\n
\n
\n

How many First Derivatives can there be?

\n

There can only ever be a single First Derivative NFT for each underlying NFT. Once a derivative for an individual NFT has been claimed, a second can not be minted for the same underlying NFT.

\n
\n
\n
\n
\n

What NFT formats does First Derivative support?

\n

All minted First Derivative tokens are ERC-721, but can track underlying ERC-721, ERC-1155, or CryptoPunks.

\n
\n
\n
\n\n
\n
\n
\n

How do my derivatives display in my wallet?

\n

First Derivatives are ERC-721 NFTs that track an underlying NFT, so they will display identically to the underlying NFT in your wallet (or on an NFT marketplace like OpenSea). For example, a First Derivative of CryptoPunk #42 will display identically to CryptoPunk #42.

\n
\n
\n
\n
\n

Can I mint a derivative of a derivative?

\n

That would be a \"second derivative.\" The depth of allowable derivatives is controlled by the First Derivative smart contract, and is currently set to 1. In the future, deeper derivatives may be possible.

\n
\n
\n
\n
\n

How is an ERC-721 tokenURI generated for underlying NFTs like CryptoPunks with no tokenURI equivalent?

\n

The First Derivative contract synthesizes a data URI on-chain which resolves to a JSON blob that describes the underlying and includes an encoded image data URI in SVG format from the CryptoPunksData smart contract.

\n
\n
\n
\n
\n
\n\n\n );\n}","import React from 'react';\n\nimport './App.css';\n\nimport { createWeb3ReactRoot, Web3ReactProvider } from '@web3-react/core';\nimport { ethers } from 'ethers';\n\nimport { HeroSection } from './components/HeroSection';\nimport RecentDerivativesSection from './components/RecentDerivativesSection';\nimport PopularNFTSection from './components/PopularNFTSection';\nimport MintModal from './components/MintModal';\nimport FaqSection from './components/FaqSection';\n\nfunction getLibrary(provider: ethers.providers.ExternalProvider) {\n return new ethers.providers.Web3Provider(provider);\n}\n\nconst NetworkWeb3ReactRoot = createWeb3ReactRoot(\"network\");\n\nfunction App() {\n\n return (\n \n \n
\n \n \n \n \n \n
\n
\n
\n
\n );\n}\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}