[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AdventureFreeNFT__NonexistentToken", "type": "error" }, { "inputs": [], "name": "AirdropMintInitializable__MaxAirdropSupplyAlreadyInitialized", "type": "error" }, { "inputs": [], "name": "AirdropMint__AirdropBatchSizeMustBeGreaterThanZero", "type": "error" }, { "inputs": [], "name": "AirdropMint__CannotMintToZeroAddress", "type": "error" }, { "inputs": [], "name": "AirdropMint__MaxAirdropSupplyCannotBeSetToMaxUint256", "type": "error" }, { "inputs": [], "name": "AirdropMint__MaxAirdropSupplyCannotBeSetToZero", "type": "error" }, { "inputs": [], "name": "AirdropMint__MaxAirdropSupplyExceeded", "type": "error" }, { "inputs": [], "name": "CreatorTokenBase__InvalidTransferValidatorContract", "type": "error" }, { "inputs": [], "name": "ERC721OpenZeppelinInitializable__AlreadyInitializedERC721", "type": "error" }, { "inputs": [], "name": "InitializableMaxSupplyBase__MaxSupplyAlreadyInitialized", "type": "error" }, { "inputs": [], "name": "InitializableOwnable__OwnerAlreadyInitialized", "type": "error" }, { "inputs": [], "name": "MaxSupplyBase__CannotClaimMoreThanMaximumAmountOfOwnerMints", "type": "error" }, { "inputs": [], "name": "MaxSupplyBase__CannotMintToAddressZero", "type": "error" }, { "inputs": [], "name": "MaxSupplyBase__MaxSupplyCannotBeSetToMaxUint256", "type": "error" }, { "inputs": [], "name": "MaxSupplyBase__MaxSupplyExceeded", "type": "error" }, { "inputs": [], "name": "MaxSupplyBase__MintedQuantityMustBeGreaterThanZero", "type": "error" }, { "inputs": [], "name": "MetadataURIInitializable__URIAlreadyInitialized", "type": "error" }, { "inputs": [], "name": "ShouldNotMintToBurnAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "autoApproved", "type": "bool" } ], "name": "AutomaticApprovalOfTransferValidatorSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "baseTokenURI", "type": "string" } ], "name": "BaseURISet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "DefaultRoyaltySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "maxSupply", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "maxOwnerMints", "type": "uint256" } ], "name": "MaxSupplyInitialized", "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": false, "internalType": "string", "name": "suffixURI", "type": "string" } ], "name": "SuffixURISet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "TokenRoyaltySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldValidator", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newValidator", "type": "address" } ], "name": "TransferValidatorUpdated", "type": "event" }, { "inputs": [], "name": "DEFAULT_TRANSFER_VALIDATOR", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "to", "type": "address[]" } ], "name": "airdropMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "autoApproveTransfersFromValidator", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseTokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getNextTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTransferValidationFunction", "outputs": [ { "internalType": "bytes4", "name": "functionSignature", "type": "bytes4" }, { "internalType": "bool", "name": "isViewFunction", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getTransferValidator", "outputs": [ { "internalType": "address", "name": "validator", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" } ], "name": "initializeERC721", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "maxAirdropMints_", "type": "uint256" } ], "name": "initializeMaxAirdropSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "maxSupply_", "type": "uint256" }, { "internalType": "uint256", "name": "maxOwnerMints_", "type": "uint256" } ], "name": "initializeMaxSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" } ], "name": "initializeOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI_", "type": "string" }, { "internalType": "string", "name": "suffixURI_", "type": "string" } ], "name": "initializeURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "isApproved", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupplyInitialized", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mintedSupply", "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": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "ownerMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "remainingAirdropSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "remainingOwnerMints", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "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": "bool", "name": "autoApprove", "type": "bool" } ], "name": "setAutomaticApprovalOfTransfersFromValidator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseTokenURI_", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "suffixURI_", "type": "string" } ], "name": "setSuffixURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "transferValidator_", "type": "address" } ], "name": "setTransferValidator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "suffixURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "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": [ { "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" } ]
60806040523480156200001157600080fd5b5060408051602080820183526000808352835191820190935291825290620000393362000089565b60046200004783826200024e565b5060056200005682826200024e565b5062000064915050620000d9565b6200008373721c0078c2328597ca70f5451fff5a7b38d4e94762000128565b6200031a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516000815273721c0078c2328597ca70f5451fff5a7b38d4e94760208201527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac910160405180910390a1565b6001600160a01b03811615620001a757803b8015620001a5576040805163fb2de5d760e01b81523060048201526102d1602482015290516001600160a01b0384169163fb2de5d791604480830192600092919082900301818387803b1580156200019157600080fd5b505af1925050508015620001a3575060015b505b505b50565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001d557607f821691505b602082108103620001f657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001a357600081815260208120601f850160051c81016020861015620002255750805b601f850160051c820191505b81811015620002465782815560010162000231565b505050505050565b81516001600160401b038111156200026a576200026a620001aa565b62000282816200027b8454620001c0565b84620001fc565b602080601f831160018114620002ba5760008415620002a15750858301515b600019600386901b1c1916600185901b17855562000246565b600085815260208120601f198616915b82811015620002eb57888601518255948401946001909101908401620002ca565b50858210156200030a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612bd8806200032a6000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c806370a0823111610186578063b88d4fde116100e3578063d547cfb711610097578063e985e9c511610071578063e985e9c5146105bb578063ee16edb7146105ce578063f2fde38b146105e157600080fd5b8063d547cfb714610598578063d5abeb01146105a0578063e4c2eaeb146105a857600080fd5b8063c87b56dd116100c8578063c87b56dd1461056a578063caa0f92a1461057d578063d147c97a1461058557600080fd5b8063b88d4fde1461054f578063c1bd8cf91461056257600080fd5b806395d89b411161013a578063a22cb4651161011f578063a22cb46514610521578063a9fc664e14610534578063b3bcea481461054757600080fd5b806395d89b41146105065780639e05d2401461050e57600080fd5b80638be18e571161016b5780638be18e57146104cf5780638c5f36bb146104e25780638da5cb5b146104f557600080fd5b806370a08231146104b4578063715018a6146104c757600080fd5b806329758bd41161023f578063484b973c116101f35780635944c753116101cd5780635944c7531461047a5780636221d13c1461048d5780636352211e146104a157600080fd5b8063484b973c1461044c57806355f804b31461045f578063590be7b51461047257600080fd5b806333b3a8071161022457806333b3a8071461041b57806342842e0e1461042657806346d362111461043957600080fd5b806329758bd4146103d75780632a55205a146103e957600080fd5b8063095ea7b3116102965780630d705df61161027b5780630d705df61461039657806323b872dd146103b1578063247946c9146103c457600080fd5b8063095ea7b31461037b578063098144d41461038e57600080fd5b806304634d8d116102c757806304634d8d1461033e57806306fdde0314610353578063081812fc1461036857600080fd5b806301463546146102e357806301ffc9a71461031b575b600080fd5b6102fe73721c0078c2328597ca70f5451fff5a7b38d4e94781565b6040516001600160a01b0390911681526020015b60405180910390f35b61032e61032936600461244b565b6105f4565b6040519015158152602001610312565b61035161034c36600461249b565b610605565b005b61035b61061b565b604051610312919061251e565b6102fe610376366004612531565b6106ad565b61035161038936600461254a565b6106d4565b6102fe6107ee565b6040805163657711f560e11b81526001602082015201610312565b6103516103bf366004612574565b61082e565b6103516103d236600461265c565b6108a5565b600f545b604051908152602001610312565b6103fc6103f73660046126c0565b61096b565b604080516001600160a01b039093168352602083019190915201610312565b60115460ff1661032e565b610351610434366004612574565b610a17565b6103516104473660046126e2565b610a32565b61035161045a36600461254a565b610b54565b61035161046d366004612757565b610bd5565b6010546103db565b61035161048836600461278c565b610c24565b600c5461032e90600160b01b900460ff1681565b6102fe6104af366004612531565b610c37565b6103db6104c23660046127c8565b610c9c565b610351610d36565b6103516104dd366004612757565b610d53565b6103516104f03660046127c8565b610d97565b6000546001600160a01b03166102fe565b61035b610df6565b61035161051c3660046127f3565b610e05565b61035161052f36600461280e565b610e75565b6103516105423660046127c8565b610e80565b61035b610f53565b61035161055d366004612838565b610fe1565b6103db611059565b61035b610578366004612531565b611075565b600d546103db565b61035161059336600461265c565b61110c565b61035b61112e565b600e546103db565b6103516105b6366004612531565b61113b565b61032e6105c93660046128b4565b611187565b6103516105dc3660046126c0565b6111eb565b6103516105ef3660046127c8565b61122e565b60006105ff826112bb565b92915050565b61060d6112e0565b61061782826112ea565b5050565b6060600a805461062a906128de565b80601f0160208091040260200160405190810160405280929190818152602001828054610656906128de565b80156106a35780601f10610678576101008083540402835291602001916106a3565b820191906000526020600020905b81548152906001019060200180831161068657829003601f168201915b5050505050905090565b60006106b88261133f565b506000908152600860205260409020546001600160a01b031690565b60006106df82610c37565b9050806001600160a01b0316836001600160a01b0316036107515760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061076d575061076d8133611187565b6107df5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610748565b6107e983836113a3565b505050565b600c546201000090046001600160a01b03168061082b57600c54610100900460ff1661082b575073721c0078c2328597ca70f5451fff5a7b38d4e9475b90565b6108383382611411565b61089a5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608401610748565b6107e9838383611470565b6108ad6112e0565b60035460ff16156108d157604051632be189cd60e01b815260040160405180910390fd5b6003805460ff191660019081179091556108eb838261295e565b507ff9c7803e94e0d3c02900d8a90893a6d5e90dd04d32a4cfe825520f82bf9f32f68260405161091b919061251e565b60405180910390a1600261092f828261295e565b507f65ccd57f8a46e7a6cfc4d214d84094e8ba5561ab50fd328f26e4c44052ffeba08160405161095f919061251e565b60405180910390a15050565b60008281526013602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b03169282019290925282916109e05750604080518082019091526012546001600160a01b0381168252600160a01b90046001600160601b031660208201525b6020810151600090612710906109ff906001600160601b031687612a34565b610a099190612a4b565b915196919550909350505050565b6107e983838360405180602001604052806000815250610fe1565b610a3a6112e0565b806000819003610a5d5760405163acf2370160e01b815260040160405180910390fd5b6000610a67611059565b9050601054821115610a8c57604051632a7ed66d60e11b815260040160405180910390fd5b610a9e610a998383612a6d565b611665565b60108054839003905560018101610ab483611699565b60005b83811015610b4c576000868683818110610ad357610ad3612a80565b9050602002016020810190610ae891906127c8565b90506001600160a01b038116610b1157604051630e84807d60e41b815260040160405180910390fd5b610b43878784818110610b2657610b26612a80565b9050602002016020810190610b3b91906127c8565b8385016116b3565b50600101610ab7565b505050505050565b610b5c6112e0565b6001600160a01b038216610b835760405163147487d560e11b815260040160405180910390fd5b600f54811115610ba65760405163081a4b7f60e01b815260040160405180910390fd5b610bbc81610bb2611059565b610a999190612a6d565b600f80548290039055610bcf82826116bd565b50505050565b610bdd6112e0565b6001610be9828261295e565b507ff9c7803e94e0d3c02900d8a90893a6d5e90dd04d32a4cfe825520f82bf9f32f681604051610c19919061251e565b60405180910390a150565b610c2c6112e0565b6107e983838361171d565b6000818152600660205260408120546001600160a01b0316806105ff5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610748565b60006001600160a01b038216610d1a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610748565b506001600160a01b031660009081526007602052604090205490565b610d3e611777565b6000805460ff60a01b1916600160a01b179055565b610d5b6112e0565b6002610d67828261295e565b507f65ccd57f8a46e7a6cfc4d214d84094e8ba5561ab50fd328f26e4c44052ffeba081604051610c19919061251e565b6000546001600160a01b0316151580610db95750600054600160a01b900460ff165b15610dd7576040516369fe088760e01b815260040160405180910390fd5b610de081611785565b506000805460ff60a01b1916600160a01b179055565b6060600b805461062a906128de565b610e0d6112e0565b600c8054821515600160b01b027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff9091161790556040517f6787c7f9a80aa0f5ceddab2c54f1f5169c0b88e75dd5e19d5e858a64144c7dbc90610c1990831515815260200190565b6106173383836117d5565b610e886112e0565b6001600160a01b038116803b15159015801590610ea3575080155b15610ec1576040516332483afb60e01b815260040160405180910390fd5b7fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac610eea6107ee565b604080516001600160a01b03928316815291851660208301520160405180910390a1600c80546001600160a01b03841662010000027fffffffffffffffffffff000000000000000000000000000000000000000000ff909116176101001790556106178261189b565b60028054610f60906128de565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8c906128de565b8015610fd95780601f10610fae57610100808354040283529160200191610fd9565b820191906000526020600020905b815481529060010190602001808311610fbc57829003601f168201915b505050505081565b610feb3383611411565b61104d5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608401610748565b610bcf8484848461191b565b60006001611066600d5490565b6110709190612a96565b905090565b6000818152600660205260409020546060906001600160a01b03166110ad5760405163ad42156960e01b815260040160405180910390fd5b60006110b76119a4565b905060008151116110d75760405180602001604052806000815250611105565b806110e1846119b3565b60026040516020016110f593929190612aa9565b6040516020818303038152906040525b9392505050565b6111168282611a53565b61111e611a96565b6106176111296107ee565b61189b565b60018054610f60906128de565b6111436112e0565b601154610100900460ff161561116c5760405163281158a960e21b815260040160405180910390fd5b6011805461ff00191661010017905561118481611ae5565b50565b6001600160a01b0382811660009081526009602090815260408083209385168352929052205460ff16806105ff57600c54600160b01b900460ff16156105ff576111cf6107ee565b6001600160a01b0316826001600160a01b031614905092915050565b6111f36112e0565b60115460ff16156112175760405163213c129760e11b815260040160405180910390fd5b6011805460ff191660011790556106178282611b35565b611236611b9f565b6001600160a01b0381166112b25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610748565b61118481611785565b60006001600160e01b0319821663152a902d60e11b14806105ff57506105ff82611bf9565b6112e8611b9f565b565b6112f48282611c39565b6040516001600160601b03821681526001600160a01b038316907f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef9060200160405180910390a25050565b6000818152600660205260409020546001600160a01b03166111845760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610748565b600081815260086020526040902080546001600160a01b0319166001600160a01b03841690811790915581906113d882610c37565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061141d83610c37565b9050806001600160a01b0316846001600160a01b0316148061144457506114448185611187565b806114685750836001600160a01b031661145d846106ad565b6001600160a01b0316145b949350505050565b826001600160a01b031661148382610c37565b6001600160a01b0316146114e75760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610748565b6001600160a01b0382166115495760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610748565b6115568383836001611d36565b826001600160a01b031661156982610c37565b6001600160a01b0316146115cd5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610748565b600081815260086020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260078552838620805460001901905590871680865283862080546001019055868652600690945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a46107e98383836001611d64565b6000611670600e5490565b905080156106175780821115610617576040516358662d6160e11b815260040160405180910390fd5b80600d60008282546116ab9190612a6d565b909155505050565b6106178282611d8b565b600080826000036116e1576040516363b2594760e01b815260040160405180910390fd5b5050600d54818101600019016116f683611699565b60005b838110156117155761170d858285016116b3565b6001016116f9565b509250929050565b611728838383611f2e565b6040516001600160601b03821681526001600160a01b0383169084907f7f5b076c952c0ec86e5425963c1326dd0f03a3595c19f81d765e8ff559a6e33c906020015b60405180910390a3505050565b61177f611b9f565b6112e860005b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b816001600160a01b0316836001600160a01b0316036118365760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610748565b6001600160a01b03838116600081815260096020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910161176a565b6001600160a01b0381161561118457803b8015610617576040805163fb2de5d760e01b81523060048201526102d1602482015290516001600160a01b0384169163fb2de5d791604480830192600092919082900301818387803b15801561190157600080fd5b505af1925050508015611912575060015b15610617575050565b611926848484611470565b6119328484848461203c565b610bcf5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610748565b60606001805461062a906128de565b606060006119c083612193565b600101905060008167ffffffffffffffff8111156119e0576119e06125b0565b6040519080825280601f01601f191660200182016040528015611a0a576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084611a1457509392505050565b611a5b6112e0565b600c5460ff1615611a7f5760405163c7a92d9960e01b815260040160405180910390fd5b600c805460ff191660011790556106178282612275565b604080516000815273721c0078c2328597ca70f5451fff5a7b38d4e94760208201527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac910160405180910390a1565b80600003611b0657604051632563209560e11b815260040160405180910390fd5b6000198103611b285760405163335bfaf560e01b815260040160405180910390fd5b601081905561118461228e565b6000198203611b5757604051630fd46e6760e11b815260040160405180910390fd5b600e829055600f819055611b6961228e565b60408051838152602081018390527fdc589a019ee1db2e96132d94ab25ea6587a689283849d4dca055d8742bcdf970910161095f565b6000546001600160a01b031633146112e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610748565b60006001600160e01b03198216632b435fdb60e21b1480611c2a57506001600160e01b0319821663503e914d60e11b145b806105ff57506105ff8261229f565b6127106001600160601b0382161115611ca75760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401610748565b6001600160a01b038216611cfd5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610748565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217601255565b60005b81811015611d5d57611d558585611d508487612a6d565b6122ef565b600101611d39565b5050505050565b60005b81811015611d5d57611d838585611d7e8487612a6d565b612345565b600101611d67565b6001600160a01b038216611de15760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610748565b6000818152600660205260409020546001600160a01b031615611e465760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610748565b611e54600083836001611d36565b6000818152600660205260409020546001600160a01b031615611eb95760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610748565b6001600160a01b038216600081815260076020908152604080832080546001019055848352600690915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4610617600083836001611d64565b6127106001600160601b0382161115611f9c5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401610748565b6001600160a01b038216611ff25760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606401610748565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752601390529190942093519051909116600160a01b029116179055565b60006001600160a01b0384163b1561218857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612080903390899088908890600401612b49565b6020604051808303816000875af19250505080156120bb575060408051601f3d908101601f191682019092526120b891810190612b85565b60015b61216e573d8080156120e9576040519150601f19603f3d011682016040523d82523d6000602084013e6120ee565b606091505b5080516000036121665760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610748565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611468565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106121dc577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310612208576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061222657662386f26fc10000830492506010015b6305f5e100831061223e576305f5e100830492506008015b612710831061225257612710830492506004015b60648310612264576064830492506002015b600a83106105ff5760010192915050565b600a612281838261295e565b50600b6107e9828261295e565b600d546000036112e8576001600d55565b60006001600160e01b031982166380ac58cd60e01b14806122d057506001600160e01b03198216635b5e139f60e01b145b806105ff57506301ffc9a760e01b6001600160e01b03198316146105ff565b6001600160a01b0383811615908316158180156123095750805b1561232757604051635cbd944160e01b815260040160405180910390fd5b8115612333575b611d5d565b8061232e57611d5d338686863461238c565b6001600160a01b03838116159083161581801561235f5750805b1561237d57604051635cbd944160e01b815260040160405180910390fd5b8161232e578061232e57611d5d565b60006123966107ee565b90506001600160a01b03811615610b4c576001600160a01b03811633036123bd5750611d5d565b60405163657711f560e11b81526001600160a01b038781166004830152868116602483015285811660448301526064820185905282169063caee23ea9060840160006040518083038186803b15801561241557600080fd5b505afa158015612429573d6000803e3d6000fd5b50505050505050505050565b6001600160e01b03198116811461118457600080fd5b60006020828403121561245d57600080fd5b813561110581612435565b80356001600160a01b038116811461247f57600080fd5b919050565b80356001600160601b038116811461247f57600080fd5b600080604083850312156124ae57600080fd5b6124b783612468565b91506124c560208401612484565b90509250929050565b60005b838110156124e95781810151838201526020016124d1565b50506000910152565b6000815180845261250a8160208601602086016124ce565b601f01601f19169290920160200192915050565b60208152600061110560208301846124f2565b60006020828403121561254357600080fd5b5035919050565b6000806040838503121561255d57600080fd5b61256683612468565b946020939093013593505050565b60008060006060848603121561258957600080fd5b61259284612468565b92506125a060208501612468565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156125e1576125e16125b0565b604051601f8501601f19908116603f01168101908282118183101715612609576126096125b0565b8160405280935085815286868601111561262257600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261264d57600080fd5b611105838335602085016125c6565b6000806040838503121561266f57600080fd5b823567ffffffffffffffff8082111561268757600080fd5b6126938683870161263c565b935060208501359150808211156126a957600080fd5b506126b68582860161263c565b9150509250929050565b600080604083850312156126d357600080fd5b50508035926020909101359150565b600080602083850312156126f557600080fd5b823567ffffffffffffffff8082111561270d57600080fd5b818501915085601f83011261272157600080fd5b81358181111561273057600080fd5b8660208260051b850101111561274557600080fd5b60209290920196919550909350505050565b60006020828403121561276957600080fd5b813567ffffffffffffffff81111561278057600080fd5b6114688482850161263c565b6000806000606084860312156127a157600080fd5b833592506127b160208501612468565b91506127bf60408501612484565b90509250925092565b6000602082840312156127da57600080fd5b61110582612468565b8035801515811461247f57600080fd5b60006020828403121561280557600080fd5b611105826127e3565b6000806040838503121561282157600080fd5b61282a83612468565b91506124c5602084016127e3565b6000806000806080858703121561284e57600080fd5b61285785612468565b935061286560208601612468565b925060408501359150606085013567ffffffffffffffff81111561288857600080fd5b8501601f8101871361289957600080fd5b6128a8878235602084016125c6565b91505092959194509250565b600080604083850312156128c757600080fd5b6128d083612468565b91506124c560208401612468565b600181811c908216806128f257607f821691505b60208210810361291257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156107e957600081815260208120601f850160051c8101602086101561293f5750805b601f850160051c820191505b81811015610b4c5782815560010161294b565b815167ffffffffffffffff811115612978576129786125b0565b61298c8161298684546128de565b84612918565b602080601f8311600181146129c157600084156129a95750858301515b600019600386901b1c1916600185901b178555610b4c565b600085815260208120601f198616915b828110156129f0578886015182559484019460019091019084016129d1565b5085821015612a0e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176105ff576105ff612a1e565b600082612a6857634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156105ff576105ff612a1e565b634e487b7160e01b600052603260045260246000fd5b818103818111156105ff576105ff612a1e565b600084516020612abc8285838a016124ce565b855191840191612acf8184848a016124ce565b8554920191600090612ae0816128de565b60018281168015612af85760018114612b0d57612b39565b60ff1984168752821515830287019450612b39565b896000528560002060005b84811015612b3157815489820152908301908701612b18565b505082870194505b50929a9950505050505050505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152612b7b60808301846124f2565b9695505050505050565b600060208284031215612b9757600080fd5b81516111058161243556fea264697066735822122047f1c556837df5f3725ce6188c11f6f0723cc599355a1915679663d2b60f1dd064736f6c63430008130033