[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyDeployed", "type": "error" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "CallerNotFactory", "type": "error" }, { "inputs": [], "name": "CollectionAlreadyInitialized", "type": "error" }, { "inputs": [], "name": "DeploymentFailed", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [], "name": "ETHTransferFailed", "type": "error" }, { "inputs": [], "name": "ExceedsMaxFee", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InvalidAmount", "type": "error" }, { "inputs": [], "name": "InvalidCreatorSignature", "type": "error" }, { "inputs": [], "name": "InvalidDeployerSignature", "type": "error" }, { "inputs": [], "name": "InvalidDeploymentTime", "type": "error" }, { "inputs": [], "name": "InvalidEscrowContract", "type": "error" }, { "inputs": [], "name": "InvalidFactory", "type": "error" }, { "inputs": [], "name": "InvalidImplementation", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "InvalidNonce", "type": "error" }, { "inputs": [], "name": "InvalidOwner", "type": "error" }, { "inputs": [], "name": "InvalidPlatformAddress", "type": "error" }, { "inputs": [], "name": "InvalidPrice", "type": "error" }, { "inputs": [], "name": "InvalidRecipient", "type": "error" }, { "inputs": [], "name": "InvalidRecipientType", "type": "error" }, { "inputs": [], "name": "InvalidSignature", "type": "error" }, { "inputs": [], "name": "InvalidTokenId", "type": "error" }, { "inputs": [], "name": "MaxSupplyCannotDecrease", "type": "error" }, { "inputs": [], "name": "MaxSupplyExceeded", "type": "error" }, { "inputs": [], "name": "NoRewardsToWithdraw", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "RecipientTypeExists", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [], "name": "SignatureUsed", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "oldURIHash", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newURIHash", "type": "bytes32" } ], "name": "BaseURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "collectionAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "firstMinter", "type": "address" }, { "indexed": true, "internalType": "address", "name": "creator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isERC1155", "type": "bool" } ], "name": "CollectionDeployed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "name", "type": "string" }, { "indexed": false, "internalType": "string", "name": "symbol", "type": "string" }, { "indexed": false, "internalType": "string", "name": "baseURI", "type": "string" }, { "indexed": true, "internalType": "address", "name": "creator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "firstMinter", "type": "address" }, { "indexed": false, "internalType": "uint96", "name": "maxSupply", "type": "uint96" }, { "indexed": false, "internalType": "uint256", "name": "mintPrice", "type": "uint256" } ], "name": "CollectionInitialized", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldImpl", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newImpl", "type": "address" } ], "name": "ERC1155ImplementationUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldImpl", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newImpl", "type": "address" } ], "name": "ERC721ImplementationUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint96", "name": "amount", "type": "uint96" } ], "name": "ETHReceived", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldContract", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newContract", "type": "address" } ], "name": "EscrowContractUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "firstMinter", "type": "address" }, { "indexed": true, "internalType": "address", "name": "creator", "type": "address" } ], "name": "FirstMint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint96", "name": "newMaxSupply", "type": "uint96" } ], "name": "MaxSupplyUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newPrice", "type": "uint256" } ], "name": "MintPriceUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint16", "name": "bps", "type": "uint16" } ], "name": "RoyaltyUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint96", "name": "amount", "type": "uint96" }, { "indexed": false, "internalType": "string", "name": "uri", "type": "string" } ], "name": "TokenMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "creator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "escrowContract", "outputs": [ { "internalType": "contract IBaseMintEscrow", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "firstMinter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "string", "name": "baseURI_", "type": "string" }, { "internalType": "address", "name": "creator_", "type": "address" }, { "internalType": "address", "name": "escrowContract_", "type": "address" }, { "internalType": "uint96", "name": "maxSupply_", "type": "uint96" }, { "internalType": "address", "name": "firstMinter_", "type": "address" }, { "internalType": "uint256", "name": "mintPrice_", "type": "uint256" } ], "name": "initializeCollection", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint96", "name": "", "type": "uint96" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint96", "name": "_maxSupply", "type": "uint96" } ], "name": "setMaxSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newPrice", "type": "uint256" } ], "name": "setMintPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint96", "name": "", "type": "uint96" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "usedSignatures", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ]
608080604052346100b8577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166100a957506001600160401b036002600160401b031982821601610064575b604051612a2890816100be8239f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080610055565b63f92ee8a960e01b8152600490fd5b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816301ffc9a714611df15750806302d05d3f14611dc857806306fdde0314611cfa578063081812fc14611cb0578063095ea7b314611bcd57806309cf81c714611ba45780631249c58b146117e657806318160ddd146117bc57806323b872dd146117a45780633644e5151461171757806342842e0e146116e957806355f804b3146115415780636352211e146115105780636817c76c146114f25780636c0360eb146114ce57806370a0823114611478578063715018a61461140d57806384b0196e146111785780638da5cb5b1461114257806395d89b41146110615780639809525014610fce578063a22cb46514610f2c578063b88d4fde14610ecd578063c87b56dd14610e95578063d5abeb0114610e6e578063e1288dd6146102a7578063e42a96e71461027e578063e949580e14610217578063e985e9c5146101c8578063f2fde38b1461019b5763f4a0a5281461017657600080fd5b346101985760203660031901126101985761018f6124a2565b60043560065580f35b80fd5b5034610198576020366003190112610198576101c56101b8611ea6565b6101c06124a2565b6123e6565b80f35b5034610198576040366003190112610198576101e2611ea6565b6101f36101ed611ebc565b9161232b565b9060018060a01b0316600052602052602060ff604060002054166040519015158152f35b5034610198576020366003190112610198576004356001600160401b03811161027a576102656020809361025160ff943690600401611f5e565b908260405194838680955193849201611e5e565b82019081520301902054166040519015158152f35b5080fd5b50346101985780600319360112610198576005546040516001600160a01b039091168152602090f35b503461019857610100366003190112610198576004356001600160401b03811161027a576102d9903690600401611f5e565b906024356001600160401b03811161027a576102f9903690600401611f5e565b916044356001600160401b038111610e6a57610319903690600401611f5e565b926001600160a01b03906064358083169003610e6557608435918083168303610e655760a4356001600160601b0381168103610e655760c435948286168603610e655760008051602061297383398151915254946001600160401b0386161580610e57575b60016001600160401b038816149081610e4d575b159081610e44575b50610e325760016001600160401b03198716176000805160206129738339815191525560ff8660401c1615610e05575b6001600160601b0360045460601c16610df45783811615610de2576103ed6125f8565b6103f56125f8565b81516001600160401b038111610cc45761041d60008051602061287383398151915254611fa5565b601f8111610d6e575b50806020601f8211600114610ce3578a91610cd8575b508160011b916000199060031b1c191617600080516020612873833981519152555b84516001600160401b038111610cc4576104866000805160206129b383398151915254611fa5565b601f8111610c50575b50806020601f8211600114610bc5578a91610bba575b508160011b916000199060031b1c1916176000805160206129b3833981519152555b6040518060408101106001600160401b03604083011117610ba4576040810160405260018152603160f81b60208201526104ff6125f8565b6105076125f8565b82516001600160401b0381116109655761052f6000805160206128b383398151915254611fa5565b601f8111610b30575b50806020601f8211600114610aa5578b91610a9a575b508160011b916000199060031b1c1916176000805160206128b3833981519152555b8051906001600160401b038211610965579085929161059d6000805160206128f383398151915254611fa5565b601f8111610a17575b50602090601f8311600114610984578b919083610979575b50508160011b916000199060031b1c1916176000805160206128f3833981519152555b887fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10055887fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015561062f6125f8565b6106376125f8565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556106636125f8565b61066b6125f8565b6106766064356123e6565b166001600160601b0360a01b60055416176005556040516106a18161069a81612081565b0382611f22565b60208151910120958851948560208b0120956001600160401b038111610965576106cc600354611fa5565b601f81116108fe575b506020601f821160011461085257926001600160601b036107a18c9d6107937fa34d4eb2b0df5e53711fd1969804ec9b3803769634bf33402c4d15909ee15945989660ff9e9f96806107859a8e9991610847575b508160011b916000199060031b1c1916176003555b848b168519600454161760045560e43560065586606435168560a01b60015416176001558686168560a01b600254161760025560405198899860a08a5260a08a0190611e81565b9088820360208a0152611e81565b908682036040880152611e81565b9616606084015260e4356080840152169460643516930390a3604051937f7ca5daf0670648a949f888e3f2bbed51bebb247a3c25ad299b7240c9512617438680a360401c16156107ef575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29168ff00000000000000001960008051602061297383398151915254166000805160206129738339815191525560018152a180f35b905084015138610729565b60038b52600080516020612853833981519152908b5b601f19841681106108e657506107a160ff9b9c9d6107937fa34d4eb2b0df5e53711fd1969804ec9b3803769634bf33402c4d15909ee1594598966001876107859a976001600160601b03978f9a601f198116106108cd575b5050811b0160035561073e565b86015160001960f88460031b161c1916905538806108c0565b8d820151835560019092019160209182019101610868565b60038b52601f820160051c6000805160206128538339815191520160208310610950575b601f820160051c60008051602061285383398151915201811061094557506106d5565b8b8155600101610922565b50600080516020612853833981519152610922565b634e487b7160e01b8a52604160045260248afd5b0151905038806105be565b939291906000805160206128f38339815191528c52600080516020612993833981519152908c5b601f19841681106109fc5750600193949583601f198116106109e3575b505050811b016000805160206128f3833981519152556105e1565b015160001960f88460031b161c191690553880806109c8565b868201518355899550600190920191602091820191016109ab565b90919293506000805160206128f38339815191528b52601f830160051c6000805160206129938339815191520160208410610a85575b9087949392915b601f820160051c600080516020612993833981519152018110610a7757506105a6565b8c8155889550600101610a54565b50600080516020612993833981519152610a4d565b90508401513861054e565b91506000805160206128b38339815191528b526000805160206129138339815191528b925b601f1983168410610b18576001935082601f19811610610aff575b5050811b016000805160206128b383398151915255610570565b86015160001960f88460031b161c191690553880610ae5565b86810151825560209384019360019092019101610aca565b6000805160206128b38339815191528b52601f820160051c6000805160206129138339815191520160208310610b8f575b601f820160051c600080516020612913833981519152018110610b845750610538565b8b8155600101610b61565b50600080516020612913833981519152610b61565b634e487b7160e01b600052604160045260246000fd5b9050860151386104a5565b91506000805160206129b38339815191528a526000805160206128938339815191528a925b601f1983168410610c38576001935082601f19811610610c1f575b5050811b016000805160206129b3833981519152556104c7565b88015160001960f88460031b161c191690553880610c05565b88810151825560209384019360019092019101610bea565b6000805160206129b38339815191528a52601f820160051c6000805160206128938339815191520160208310610caf575b601f820160051c600080516020612893833981519152018110610ca4575061048f565b8a8155600101610c81565b50600080516020612893833981519152610c81565b634e487b7160e01b89526041600452602489fd5b90508301513861043c565b91506000805160206128738339815191528a526000805160206129d38339815191528a925b601f1983168410610d56576001935082601f19811610610d3d575b5050811b016000805160206128738339815191525561045e565b85015160001960f88460031b161c191690553880610d23565b85810151825560209384019360019092019101610d08565b6000805160206128738339815191528a52601f820160051c6000805160206129d38339815191520160208310610dcd575b601f820160051c6000805160206129d3833981519152018110610dc25750610426565b8a8155600101610d9f565b506000805160206129d3833981519152610d9f565b6040516316251c4360e01b8152600490fd5b60405162dc149f60e41b8152600490fd5b68ffffffffffffffffff1986166801000000000000000117600080516020612973833981519152556103ca565b60405163f92ee8a960e01b8152600490fd5b9050153861039a565b303b159150610392565b5060ff8660401c161561037e565b600080fd5b8280fd5b503461019857806003193601126101985760206001600160601b0360045416604051908152f35b503461019857602036600319011261019857610ec9610eb5600435612364565b604051918291602083526020830190611e81565b0390f35b503461019857608036600319011261019857610ee7611ea6565b610eef611ebc565b90604435606435926001600160401b038411610f2857610f166101c5943690600401611f5e565b92610f2283838361212d565b336124db565b8480fd5b503461019857604036600319011261019857610f46611ea6565b60243590811515809203610e6a576001600160a01b0316908115610fb557610f6d3361232b565b82600052602052604060002060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b604051630b61174360e31b815260048101839052602490fd5b5034610198576020366003190112610198576004356001600160601b03808216809203610e6557610ffd6124a2565b600454908160601c16821061104f576bffffffffffffffffffffffff191681176004556040519081527fd0806fe9891706c4a0174a3f1226450c56ae1bb539495f21aa15aaf8ceb6484390602090a180f35b6040516336ad355b60e01b8152600490fd5b50346101985780600319360112610198576040516000805160206129b3833981519152805482600061109283611fa5565b92838352602094600191866001821691826000146111205750506001146110d6575b50506110c292500383611f22565b610ec9604051928284938452830190611e81565b859250600052600080516020612893833981519152906000915b8583106111085750506110c2935082010185806110b4565b805483890185015287945086939092019181016110f0565b92509350506110c294915060ff191682840152151560051b82010185806110b4565b50346101985780600319360112610198576000805160206128d3833981519152546040516001600160a01b039091168152602090f35b50346101985780600319360112610198577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005415806113e4575b156113a7576040516000805160206128b38339815191528054926000836111d886611fa5565b918282526020946001978660018216918260001461138757505060011461133b575b5061120792500384611f22565b604051916000836000805160206128f38339815191529182549261122a84611fa5565b938484528560018216918260001461131b5750506001146112cf575b5061125692509694960386611f22565b6112876040519561126687611f07565b83875261079360405196600f60f81b885260e08589015260e0880190611e81565b904660608601523060808601528260a086015284820360c08601528080875193848152019601925b8281106112bc5785870386f35b83518752958101959281019284016112af565b9150506000528382600080516020612993833981519152886000915b858310611302575050611256935082010138611246565b80919294505483858a01015201910183908887936112eb565b60ff19168582015261125695151560051b85010192503891506112469050565b9150506000528383600080516020612913833981519152876000915b85831061136e5750506112079350820101386111fa565b80919294505483858a0101520191018490878793611357565b60ff19168582015261120795151560051b85010192503891506111fa9050565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10154156111b2565b50346101985780600319360112610198576114266124a2565b6000805160206128d383398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461019857602036600319011261019857611492611ea6565b906001600160a01b038216156114b65760206114ad836122f2565b54604051908152f35b602490604051906322718ad960e21b82526004820152fd5b5034610198578060031936011261019857610ec9604051610eb58161069a81611fdf565b50346101985780600319360112610198576020600654604051908152f35b503461019857602036600319011261019857602061152f60043561245a565b6040516001600160a01b039091168152f35b50346101985760209081600319360112610198576001600160401b0391600435838111610e6a57611576903690600401611f5e565b9261157f6124a2565b60405161158f8161069a81611fdf565b828151910120908451918284870120907f7ca5daf0670648a949f888e3f2bbed51bebb247a3c25ad299b7240c9512617438680a381116116d5576003916115d68354611fa5565b601f8111611686575b5080601f8311600114611619575083948293949261160e575b50508160011b9160001990841b1c191617905580f35b0151905038806115f8565b838552601f19831695600080516020612853833981519152929186905b88821061166e57505083600195969710611656575b505050811b01905580f35b015160001983861b60f8161c1916905538808061164b565b80600185968294968601518155019501930190611636565b838552600080516020612853833981519152601f840160051c8101918385106116cb575b601f0160051c01905b8181106116c057506115df565b8581556001016116b3565b90915081906116aa565b634e487b7160e01b83526041600452602483fd5b5034610198576101c56116fb36611ed2565b906040519261170984611f07565b858452610f2283838361212d565b5034610198578060031936011261019857611730612627565b61173861274f565b906040519160208301917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8352604084015260608301524660808301523060a083015260a0825260c08201908282106001600160401b03831117610ba457602092826040525190208152f35b5034610198576101c56117b636611ed2565b9161212d565b503461019857806003193601126101985760206001600160601b0360045460601c16604051908152f35b5080600319360112610198577f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f006002815414611b9257600281556004546001600160601b0390818160601c16828216811015611b80576006543410611b6f5760016001600160601b0360601b910160601b16906001600160601b0360601b1916178060045560601c16906040519161187d83611f07565b8383523315611b565780845260008051602061293383398151915260209381855260018060a01b039183836040892054168015159283611b17575b6118c1336122f2565b60018154019055828a52885260408920336001600160601b0360a01b82541617905533907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a80a4611afe57333b611a16575b503461196c575b506001927fdac60924bb4b314abff5558afcbe9451aa7a13a23f5e64bb974f07b50bce534961194983612364565b9160408051918783528201528061196533946040830190611e81565b0390a35580f35b848080803485600554165af16119806120fd565b5015611a0457849060055416803b1561027a578190608460405180948193631c1b183760e21b83523060048401528760248401523460448401523360648401525af180156119f9571561191b576001600160401b0381116119e557604052600161191b565b634e487b7160e01b85526041600452602485fd5b6040513d87823e3d90fd5b60405163b12d13eb60e01b8152600490fd5b604051858180611a4e630a85bd0160e11b958683523360048401528b6024840152886044840152608060648401526084830190611e81565b03818a335af1879181611aba575b50611a8d5785611a6a6120fd565b80519182611a8a57604051633250574960e11b8152336004820152602490fd5b01fd5b6001600160e01b03191603611aa25738611914565b604051633250574960e11b8152336004820152602490fd5b9091508681813d8311611af7575b611ad28183611f22565b81010312611af357516001600160e01b031981168103611af3579038611a5c565b8780fd5b503d611ac8565b6040516339e3563760e11b815260048101879052602490fd5b60008381526000805160206129538339815191526020526040902080546001600160a01b0319169055611b49826122f2565b80546000190190556118b8565b604051633250574960e11b815260048101859052602490fd5b60405162bfc92160e01b8152600490fd5b604051638a164f6360e01b8152600490fd5b604051633ee5aeb560e01b8152600490fd5b50346101985780600319360112610198576002546040516001600160a01b039091168152602090f35b503461019857604036600319011261019857611be7611ea6565b602435611bf38161245a565b33151580611c9d575b80611c7f575b611c67576001600160a01b039283169282918491167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258680a482526000805160206129538339815191526020526040822080546001600160a01b031916909117905580f35b60405163a9fbf51f60e01b8152336004820152602490fd5b50611c898161232b565b33855260205260ff60408520541615611c02565b506001600160a01b038116331415611bfc565b503461019857602036600319011261019857602090600435611cd18161245a565b5081526000805160206129538339815191528252604060018060a01b0391205416604051908152f35b5034610198578060031936011261019857604051908082600080516020612873833981519152928354611d2c81611fa5565b9384845260209560019287600182169182600014611da4575050600114611d5d575b5050506110c292500383611f22565b8152859250906000805160206129d38339815191525b858310611d8c5750506110c29350820101388080611d4e565b80548389018501528794508693909201918101611d73565b9350945050506110c294915060ff191682840152151560051b820101388080611d4e565b50346101985780600319360112610198576001546040516001600160a01b039091168152602090f35b90503461027a57602036600319011261027a5760043563ffffffff60e01b8116809103610e6a57602092506380ac58cd60e01b8114908115611e4d575b8115611e3c575b5015158152f35b6301ffc9a760e01b14905038611e35565b635b5e139f60e01b81149150611e2e565b60005b838110611e715750506000910152565b8181015183820152602001611e61565b90602091611e9a81518092818552858086019101611e5e565b601f01601f1916010190565b600435906001600160a01b0382168203610e6557565b602435906001600160a01b0382168203610e6557565b6060906003190112610e65576001600160a01b03906004358281168103610e6557916024359081168103610e65579060443590565b602081019081106001600160401b03821117610ba457604052565b90601f801991011681019081106001600160401b03821117610ba457604052565b6001600160401b038111610ba457601f01601f191660200190565b81601f82011215610e6557803590611f7582611f43565b92611f836040519485611f22565b82845260208383010111610e6557816000926020809301838601378301015290565b90600182811c92168015611fd5575b6020831014611fbf57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611fb4565b60035460009291611fef82611fa5565b8082529160209060019081811690811561205c5750600114612012575b50505050565b929394506003600052600080516020612853833981519152926000935b85851061204957505050602092500101903880808061200c565b805485850184015293820193810161202f565b92505050602093945060ff929192191683830152151560051b0101903880808061200c565b6003546000929161209182611fa5565b8082529160209060019081811690811561205c57506001146120b35750505050565b929394506003600052600080516020612853833981519152926000935b8585106120ea57505050602092500101903880808061200c565b80548585018401529382019381016120d0565b3d15612128573d9061210e82611f43565b9161211c6040519384611f22565b82523d6000602084013e565b606090565b6001600160a01b03828116939184156122d95782600095818752600080516020612933833981519152958660205260409785898220541697889233151580612233575b50906121a27fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9392856121f4576122f2565b8054600101905585825260205289812080546001600160a01b0319168517905580a416928383036121d35750505050565b6064945051926364283d7b60e01b8452600484015260248301526044820152fd5b60008881526000805160206129538339815191526020526040902080546001600160a01b0319169055612226866122f2565b80546000190190556122f2565b919350919394508061228a575b156122515791879187949338612170565b88878961226e576024915190637e27328960e01b82526004820152fd5b604491519063177e802f60e01b82523360048301526024820152fd5b5033881480156122bd575b80612240575086835260008051602061295383398151915260205233868a8520541614612240565b506122c78861232b565b33845260205260ff8984205416612295565b604051633250574960e11b815260006004820152602490fd5b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793036020526040902090565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020526040902090565b600090815260008051602061293383398151915260205260409020546001600160a01b0316156123a15760405161239e8161069a81612081565b90565b60405162461bcd60e51b815260206004820152601f60248201527f55524920717565727920666f72206e6f6e6578697374656e7420746f6b656e006044820152606490fd5b6001600160a01b03908116908115612441576000805160206128d383398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600081815260008051602061293383398151915260205260409020546001600160a01b031690811561248a575090565b60249060405190637e27328960e01b82526004820152fd5b6000805160206128d3833981519152546001600160a01b031633036124c357565b60405163118cdaa760e01b8152336004820152602490fd5b9293823b6124eb575b5050505050565b61252f9060018060a01b038094169560405194859481630a85bd0160e11b988988521660048701521660248501526044840152608060648401526084830190611e81565b03906020816000938185885af1908290826125af575b505061257d57826125546120fd565b805191908261257657604051633250574960e11b815260048101839052602490fd5b9050602001fd5b6001600160e01b03191603612597575038808080806124e4565b60249060405190633250574960e11b82526004820152fd5b909192506020813d6020116125f0575b816125cc60209383611f22565b8101031261027a5751906001600160e01b0319821682036101985750903880612545565b3d91506125bf565b60ff6000805160206129738339815191525460401c161561261557565b604051631afcd79f60e31b8152600490fd5b6040516000906000805160206128b3833981519152918183549161264a83611fa5565b92838352602090602084019660019160018116908160001461272b57506001146126dc575b50505061267e92500382611f22565b5190811561268a572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156126b75790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b60009081526000805160206129138339815191529590935091905b828410612713575061267e94505050810160200138808061266f565b855487850183015294850194869450928101926126f7565b925050506020925061267e94915060ff19168652151560051b82010138808061266f565b6040516000906000805160206128f3833981519152918183549161277283611fa5565b92838352602090602084019660019160018116908160001461282e57506001146127df575b5050506127a692500382611f22565b519081156127b2572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156126b75790565b60009081526000805160206129938339815191529590935091905b82841061281657506127a6945050508101602001388080612797565b855487850183015294850194869450928101926127fa565b92505050602092506127a694915060ff19168652151560051b82010138808061279756fec2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300f4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456ea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1029016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10342ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930280bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7580bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930137c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81a26469706673582212206c33110eb10b10e8b1db829ff8a2d35719e3ef11bbbf4c40c24139e8e249cae564736f6c63430008180033