[ { "inputs": [ { "internalType": "address", "name": "_defaultAdmin", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "_royaltyRecipient", "type": "address" }, { "internalType": "uint128", "name": "_royaltyBps", "type": "uint128" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "BatchMintInvalidBatchId", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "BatchMintInvalidTokenId", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "batchId", "type": "uint256" } ], "name": "BatchMintMetadataFrozen", "type": "error" }, { "inputs": [], "name": "ContractMetadataUnauthorized", "type": "error" }, { "inputs": [], "name": "OwnableUnauthorized", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "max", "type": "uint256" }, { "internalType": "uint256", "name": "actual", "type": "uint256" } ], "name": "RoyaltyExceededMaxFeeBps", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "RoyaltyInvalidRecipient", "type": "error" }, { "inputs": [], "name": "RoyaltyUnauthorized", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "_approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "prevURI", "type": "string" }, { "indexed": false, "internalType": "string", "name": "newURI", "type": "string" } ], "name": "ContractURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newRoyaltyRecipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "newRoyaltyBps", "type": "uint256" } ], "name": "DefaultRoyalty", "type": "event" }, { "anonymous": false, "inputs": [], "name": "MetadataFrozen", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnerUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "royaltyRecipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "royaltyBps", "type": "uint256" } ], "name": "RoyaltyForToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "_values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "_value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "_id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "batchFrozen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "_amounts", "type": "uint256[]" }, { "internalType": "string", "name": "_baseURI", "type": "string" } ], "name": "batchMintTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "_amounts", "type": "uint256[]" } ], "name": "burnBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBaseURICount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_index", "type": "uint256" } ], "name": "getBatchIdAtIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDefaultRoyaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "getRoyaltyInfoForToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "string", "name": "_tokenURI", "type": "string" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mintTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes[]", "name": "data", "type": "bytes[]" } ], "name": "multicall", "outputs": [ { "internalType": "bytes[]", "name": "results", "type": "bytes[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextTokenIdToMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "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": "_uri", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_royaltyRecipient", "type": "address" }, { "internalType": "uint256", "name": "_royaltyBps", "type": "uint256" } ], "name": "setDefaultRoyaltyInfo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "setOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "address", "name": "_recipient", "type": "address" }, { "internalType": "uint256", "name": "_bps", "type": "uint256" } ], "name": "setRoyaltyInfoForToken", "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": "", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b506040516200362438038062003624833981016040819052620000349162000250565b8383600062000044838262000392565b50600162000053828262000392565b50505062000067856200008760201b60201c565b6200007c826001600160801b038316620000d9565b50505050506200045e565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a35050565b6127108111156200010c57604051630a4930ad60e31b815261271060048201526024810182905260440160405180910390fd5b600780546001600160a01b0384166001600160b01b03199091168117600160a01b61ffff851602179091556040518281527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb9060200160405180910390a25050565b80516001600160a01b03811681146200018657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001b357600080fd5b81516001600160401b0380821115620001d057620001d06200018b565b604051601f8301601f19908116603f01168101908282118183101715620001fb57620001fb6200018b565b816040528381526020925086838588010111156200021857600080fd5b600091505b838210156200023c57858201830151818301840152908201906200021d565b600093810190920192909252949350505050565b600080600080600060a086880312156200026957600080fd5b62000274866200016e565b60208701519095506001600160401b03808211156200029257600080fd5b620002a089838a01620001a1565b95506040880151915080821115620002b757600080fd5b50620002c688828901620001a1565b935050620002d7606087016200016e565b60808701519092506001600160801b0381168114620002f557600080fd5b809150509295509295909350565b600181811c908216806200031857607f821691505b6020821081036200033957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200038d57600081815260208120601f850160051c81016020861015620003685750805b601f850160051c820191505b81811015620003895782815560010162000374565b5050505b505050565b81516001600160401b03811115620003ae57620003ae6200018b565b620003c681620003bf845462000303565b846200033f565b602080601f831160018114620003fe5760008415620003e55750858301515b600019600386901b1c1916600185901b17855562000389565b600085815260208120601f198616915b828110156200042f578886015182559484019460019091019084016200040e565b50858210156200044e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6131b6806200046e6000396000f3fe608060405234801561001057600080fd5b50600436106101ce5760003560e01c80638304053211610104578063ac9650d8116100a2578063e8a3d48511610071578063e8a3d48514610457578063e985e9c51461045f578063f242432a1461048d578063f5298aca146104a057600080fd5b8063ac9650d8146103e6578063b03f452814610406578063b24f2d3914610419578063bd85b0391461043757600080fd5b8063949c09f7116100de578063949c09f7146103a557806395d89b41146103b85780639bcf7a15146103c0578063a22cb465146103d357600080fd5b806383040532146103545780638da5cb5b14610377578063938e3d7b1461039257600080fd5b80632eb2c2d6116101715780634e1273f41161014b5780634e1273f414610306578063600dd5ea1461032657806363b45e2d146103395780636b20c4541461034157600080fd5b80632eb2c2d6146102b65780633b1475a7146102c95780634cc157df146102d157600080fd5b80630e89341c116101ad5780630e89341c1461024957806313af40351461025c5780632419f51b146102715780632a55205a1461028457600080fd5b8062fdd58e146101d357806301ffc9a71461021157806306fdde0314610234575b600080fd5b6101fe6101e136600461249d565b600260209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61022461021f3660046124dd565b6104b3565b6040519015158152602001610208565b61023c610520565b604051610208919061254a565b61023c61025736600461255d565b6105ae565b61026f61026a366004612576565b61069c565b005b6101fe61027f36600461255d565b6106cd565b610297610292366004612591565b610724565b604080516001600160a01b039093168352602083019190915201610208565b61026f6102c43660046126fc565b610761565b600c546101fe565b6102e46102df36600461255d565b6107f0565b604080516001600160a01b03909316835261ffff909116602083015201610208565b6103196103143660046127a5565b61085b565b60405161020891906128aa565b61026f61033436600461249d565b61096f565b6009546101fe565b61026f61034f3660046128bd565b6109a2565b61022461036236600461255d565b600b6020526000908152604090205460ff1681565b6006546040516001600160a01b039091168152602001610208565b61026f6103a0366004612930565b610b44565b61026f6103b3366004612964565b610b72565b61023c610d6d565b61026f6103ce3660046129fc565b610d7a565b61026f6103e1366004612a31565b610daf565b6103f96103f4366004612a6d565b610e67565b6040516102089190612ae1565b61026f610414366004612b43565b610fd6565b6007546001600160a01b03811690600160a01b900461ffff166102e4565b6101fe61044536600461255d565b600d6020526000908152604090205481565b61023c6110c9565b61022461046d366004612ba1565b600360209081526000928352604080842090915290825290205460ff1681565b61026f61049b366004612bd4565b6110d6565b61026f6104ae366004612c38565b61115e565b60006301ffc9a760e01b6001600160e01b0319831614806104e45750636cdb3d1360e11b6001600160e01b03198316145b806104ff57506303a24d0760e21b6001600160e01b03198316145b8061051a57506001600160e01b0319821663152a902d60e11b145b92915050565b6000805461052d90612c6b565b80601f016020809104026020016040519081016040528092919081815260200182805461055990612c6b565b80156105a65780601f1061057b576101008083540402835291602001916105a6565b820191906000526020600020905b81548152906001019060200180831161058957829003601f168201915b505050505081565b6000818152600460205260408120805460609291906105cc90612c6b565b80601f01602080910402602001604051908101604052809291908181526020018280546105f890612c6b565b80156106455780601f1061061a57610100808354040283529160200191610645565b820191906000526020600020905b81548152906001019060200180831161062857829003601f168201915b5050505050905060008151111561065c5792915050565b600061066784611253565b905080610673856113d1565b604051602001610684929190612ca5565b60405160208183030381529060405292505050919050565b6106a46114d9565b6106c1576040516316ccb9cb60e11b815260040160405180910390fd5b6106ca81611506565b50565b60006106d860095490565b82106106ff57604051630793127760e11b8152600481018390526024015b60405180910390fd5b6009828154811061071257610712612cd4565b90600052602060002001549050919050565b600080600080610733866107f0565b90945084925061ffff16905061271061074c8287612d00565b6107569190612d2d565b925050509250929050565b6001600160a01b03851633148061079b57506001600160a01b038516600090815260036020908152604080832033845290915290205460ff165b6107dc5760405162461bcd60e51b81526020600482015260126024820152710853d5d3915497d3d497d054141493d5915160721b60448201526064016106f6565b6107e98585858585611558565b5050505050565b6000818152600860209081526040808320815180830190925280546001600160a01b0316808352600190910154928201929092528291156108375780516020820151610851565b6007546001600160a01b03811690600160a01b900461ffff165b9250925050915091565b6060815183511461087e5760405162461bcd60e51b81526004016106f690612d41565b600083516001600160401b03811115610899576108996125b3565b6040519080825280602002602001820160405280156108c2578160200160208202803683370190505b50905060005b845181101561096757600260008683815181106108e7576108e7612cd4565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600085838151811061092357610923612cd4565b602002602001015181526020019081526020016000205482828151811061094c5761094c612cd4565b602090810291909101015261096081612d6a565b90506108c8565b509392505050565b6109776114d9565b61099457604051636fae358160e11b815260040160405180910390fd5b61099e828261170b565b5050565b336001600160a01b0384168114806109df57506001600160a01b0380851660009081526003602090815260408083209385168352929052205460ff165b610a1f5760405162461bcd60e51b81526020600482015260116024820152702ab730b8383937bb32b21031b0b63632b960791b60448201526064016106f6565b8151835114610a625760405162461bcd60e51b815260206004820152600f60248201526e098cadccee8d040dad2e6dac2e8c6d608b1b60448201526064016106f6565b60005b8351811015610b3257828181518110610a8057610a80612cd4565b602002602001015160026000876001600160a01b03166001600160a01b031681526020019081526020016000206000868481518110610ac157610ac1612cd4565b60200260200101518152602001908152602001600020541015610b205760405162461bcd60e51b8152602060048201526017602482015276139bdd08195b9bdd59da081d1bdad95b9cc81bdddb9959604a1b60448201526064016106f6565b610b2b600182612d83565b9050610a65565b50610b3e84848461179b565b50505050565b610b4c6114d9565b610b6957604051639f7f092560e01b815260040160405180910390fd5b6106ca81611950565b610b7a6114d9565b610bc05760405162461bcd60e51b81526020600482015260176024820152762737ba1030baba3437b934bd32b2103a379036b4b73a1760491b60448201526064016106f6565b6000825111610c085760405162461bcd60e51b815260206004820152601460248201527326b4b73a34b733903d32b937903a37b5b2b7399760611b60448201526064016106f6565b8151835114610c4c5760405162461bcd60e51b815260206004820152601060248201526f2632b733ba341036b4b9b6b0ba31b41760811b60448201526064016106f6565b6000610c57600c5490565b9050806000805b8651811015610d2d57600019878281518110610c7c57610c7c612cd4565b602002602001015103610cc65783878281518110610c9c57610c9c612cd4565b6020908102919091010152610cb2600185612d83565b9350610cbf600183612d83565b9150610d1b565b83878281518110610cd957610cd9612cd4565b602002602001015110610d1b5760405162461bcd60e51b815260206004820152600a6024820152691a5b9d985b1a59081a5960b21b60448201526064016106f6565b610d26600182612d83565b9050610c5e565b508015610d4257610d3f828286611a2c565b50505b82600c81905550610d6487878760405180602001604052806000815250611a90565b50505050505050565b6001805461052d90612c6b565b610d826114d9565b610d9f57604051636fae358160e11b815260040160405180910390fd5b610daa838383611beb565b505050565b336001600160a01b0383168103610df95760405162461bcd60e51b815260206004820152600e60248201526d20a8282927ab24a723afa9a2a62360911b60448201526064016106f6565b6001600160a01b03818116600081815260036020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191015b60405180910390a3505050565b6060816001600160401b03811115610e8157610e816125b3565b604051908082528060200260200182016040528015610eb457816020015b6060815260200190600190039081610e9f5790505b509050336000805b84811015610fcd578115610f3b57610f1930878784818110610ee057610ee0612cd4565b9050602002810190610ef29190612d96565b86604051602001610f0593929190612de3565b604051602081830303815290604052611c96565b848281518110610f2b57610f2b612cd4565b6020026020010181905250610fbb565b610f9d30878784818110610f5157610f51612cd4565b9050602002810190610f639190612d96565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c9692505050565b848281518110610faf57610faf612cd4565b60200260200101819052505b80610fc581612d6a565b915050610ebc565b50505092915050565b610fde6114d9565b6110245760405162461bcd60e51b81526020600482015260176024820152762737ba1030baba3437b934bd32b2103a379036b4b73a1760491b60448201526064016106f6565b600080611030600c5490565b90506000198503611066578091506001600c60008282546110519190612d83565b9091555061106190508185611cc2565b6110a6565b8085106110a25760405162461bcd60e51b815260206004820152600a6024820152691a5b9d985b1a59081a5960b21b60448201526064016106f6565b8491505b6110c186838560405180602001604052806000815250611cda565b505050505050565b6005805461052d90612c6b565b6001600160a01b03851633148061111057506001600160a01b038516600090815260036020908152604080832033845290915290205460ff165b6111515760405162461bcd60e51b81526020600482015260126024820152710853d5d3915497d3d497d054141493d5915160721b60448201526064016106f6565b6107e98585858585611db3565b336001600160a01b03841681148061119b57506001600160a01b0380851660009081526003602090815260408083209385168352929052205460ff165b6111db5760405162461bcd60e51b81526020600482015260116024820152702ab730b8383937bb32b21031b0b63632b960791b60448201526064016106f6565b6001600160a01b03841660009081526002602090815260408083208684529091529020548211156112485760405162461bcd60e51b8152602060048201526017602482015276139bdd08195b9bdd59da081d1bdad95b9cc81bdddb9959604a1b60448201526064016106f6565b610b3e848484611ed9565b6060600061126060095490565b9050600060098054806020026020016040519081016040528092919081815260200182805480156112b057602002820191906000526020600020905b81548152602001906001019080831161129c575b5050505050905060005b828110156113b4578181815181106112d4576112d4612cd4565b60200260200101518510156113a257600a60008383815181106112f9576112f9612cd4565b60200260200101518152602001908152602001600020805461131a90612c6b565b80601f016020809104026020016040519081016040528092919081815260200182805461134690612c6b565b80156113935780601f1061136857610100808354040283529160200191611393565b820191906000526020600020905b81548152906001019060200180831161137657829003601f168201915b50505050509350505050919050565b6113ad600182612d83565b90506112ba565b506040516309797f6960e21b8152600481018590526024016106f6565b6060816000036113f85750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611422578061140c81612d6a565b915061141b9050600a83612d2d565b91506113fc565b6000816001600160401b0381111561143c5761143c6125b3565b6040519080825280601f01601f191660200182016040528015611466576020820181803683370190505b5090505b84156114d15761147b600183612e09565b9150611488600a86612e1c565b611493906030612d83565b60f81b8183815181106114a8576114a8612cd4565b60200101906001600160f81b031916908160001a9053506114ca600a86612d2d565b945061146a565b949350505050565b60006114ed6006546001600160a01b031690565b6001600160a01b0316336001600160a01b031614905090565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a35050565b81518351146115795760405162461bcd60e51b81526004016106f690612d41565b6001600160a01b03841661159f5760405162461bcd60e51b81526004016106f690612e30565b336115ae818787878787611ffe565b60005b84518110156116a55760008582815181106115ce576115ce612cd4565b6020026020010151905060008583815181106115ec576115ec612cd4565b6020908102919091018101516001600160a01b038b16600090815260028352604080822086835290935291909120549091508181101561163e5760405162461bcd60e51b81526004016106f690612e56565b6001600160a01b03808b16600090815260026020818152604080842088855282528084208787039055938d1683529081528282208683529052908120805484929061168a908490612d83565b925050819055505050508061169e90612d6a565b90506115b1565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516116f5929190612e80565b60405180910390a46110c181878787878761210a565b61271081111561173957604051630a4930ad60e31b81526127106004820152602481018290526044016106f6565b600780546001600160a01b0384166001600160b01b03199091168117600160a01b61ffff851602179091556040518281527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb9060200160405180910390a25050565b6001600160a01b0383166117e25760405162461bcd60e51b815260206004820152600e60248201526d232927a6afad22a927afa0a2222960911b60448201526064016106f6565b80518251146118035760405162461bcd60e51b81526004016106f690612d41565b600033905061182681856000868660405180602001604052806000815250611ffe565b60005b83518110156118f157600084828151811061184657611846612cd4565b60200260200101519050600084838151811061186457611864612cd4565b6020908102919091018101516001600160a01b03891660009081526002835260408082208683529093529190912054909150818110156118b65760405162461bcd60e51b81526004016106f690612e56565b6001600160a01b03881660009081526002602090815260408083209583529490529290922091039055806118e981612d6a565b915050611829565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611942929190612e80565b60405180910390a450505050565b60006005805461195f90612c6b565b80601f016020809104026020016040519081016040528092919081815260200182805461198b90612c6b565b80156119d85780601f106119ad576101008083540402835291602001916119d8565b820191906000526020600020905b8154815290600101906020018083116119bb57829003601f168201915b5050505050905081600590816119ee9190612ef4565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a168183604051611a20929190612fb3565b60405180910390a15050565b600080611a398486612d83565b60098054600181019091557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af018190556000818152600a60205260409020909250829150611a878482612ef4565b50935093915050565b6001600160a01b038416611ab65760405162461bcd60e51b81526004016106f690612e30565b8151835114611ad75760405162461bcd60e51b81526004016106f690612d41565b33611ae781600087878787611ffe565b60005b8451811015611b8357838181518110611b0557611b05612cd4565b602002602001015160026000886001600160a01b03166001600160a01b031681526020019081526020016000206000878481518110611b4657611b46612cd4565b602002602001015181526020019081526020016000206000828254611b6b9190612d83565b90915550819050611b7b81612d6a565b915050611aea565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611bd4929190612e80565b60405180910390a46107e98160008787878761210a565b612710811115611c1957604051630a4930ad60e31b81526127106004820152602481018290526044016106f6565b6040805180820182526001600160a01b038481168083526020808401868152600089815260088352869020945185546001600160a01b031916941693909317845591516001909301929092559151838152909185917f7365cf4122f072a3365c20d54eff9b38d73c096c28e1892ec8f5b0e403a0f12d9101610e5a565b6060611cbb838360405180606001604052806027815260200161315a6027913961225d565b9392505050565b6000828152600460205260409020610daa8282612ef4565b6001600160a01b038416611d005760405162461bcd60e51b81526004016106f690612e30565b33611d2081600087611d11886122d5565b611d1a886122d5565b87611ffe565b6001600160a01b038516600090815260026020908152604080832087845290915281208054859290611d53908490612d83565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46107e981600087878787612320565b6001600160a01b038416611dd95760405162461bcd60e51b81526004016106f690612e30565b33611de9818787611d11886122d5565b6001600160a01b038616600090815260026020908152604080832087845290915290205483811015611e2d5760405162461bcd60e51b81526004016106f690612e56565b6001600160a01b0380881660009081526002602081815260408084208a855282528084208987039055938a16835290815282822088835290529081208054869290611e79908490612d83565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610d64828888888888612320565b6001600160a01b038316611f205760405162461bcd60e51b815260206004820152600e60248201526d232927a6afad22a927afa0a2222960911b60448201526064016106f6565b33611f4f81856000611f31876122d5565b611f3a876122d5565b60405180602001604052806000815250611ffe565b6001600160a01b038416600090815260026020908152604080832086845290915290205482811015611f935760405162461bcd60e51b81526004016106f690612e56565b6001600160a01b03858116600081815260026020908152604080832089845282528083208887039055805189815291820188905291938616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b6001600160a01b0385166120855760005b83518110156120835782818151811061202a5761202a612cd4565b6020026020010151600d600086848151811061204857612048612cd4565b60200260200101518152602001908152602001600020600082825461206d9190612d83565b9091555061207c905081612d6a565b905061200f565b505b6001600160a01b0384166110c15760005b8351811015610d64578281815181106120b1576120b1612cd4565b6020026020010151600d60008684815181106120cf576120cf612cd4565b6020026020010151815260200190815260200160002060008282546120f49190612e09565b90915550612103905081612d6a565b9050612096565b6001600160a01b0384163b156110c15760405163bc197c8160e01b81526001600160a01b0385169063bc197c819061214e9089908990889088908890600401612fd8565b6020604051808303816000875af1925050508015612189575060408051601f3d908101601f1916820190925261218691810190613036565b60015b61220b57612195613053565b806308c379a0036121ce57506121a961306f565b806121b457506121d0565b8060405162461bcd60e51b81526004016106f6919061254a565b505b60405162461bcd60e51b815260206004820152601060248201526f10a2a92198989a9aa922a1a2a4ab22a960811b60448201526064016106f6565b6001600160e01b0319811663bc197c8160e01b14610d645760405162461bcd60e51b815260206004820152600f60248201526e1513d2d15394d7d491529150d51151608a1b60448201526064016106f6565b6060600080856001600160a01b03168560405161227a91906130f8565b600060405180830381855af49150503d80600081146122b5576040519150601f19603f3d011682016040523d82523d6000602084013e6122ba565b606091505b50915091506122cb868383876123fd565b9695505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061230f5761230f612cd4565b602090810291909101015292915050565b6001600160a01b0384163b156110c15760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906123649089908990889088908890600401613114565b6020604051808303816000875af192505050801561239f575060408051601f3d908101601f1916820190925261239c91810190613036565b60015b6123ab57612195613053565b6001600160e01b0319811663f23a6e6160e01b14610d645760405162461bcd60e51b815260206004820152600f60248201526e1513d2d15394d7d491529150d51151608a1b60448201526064016106f6565b6060831561246c578251600003612465576001600160a01b0385163b6124655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106f6565b50816114d1565b6114d183838151156121b45781518083602001fd5b80356001600160a01b038116811461249857600080fd5b919050565b600080604083850312156124b057600080fd5b6124b983612481565b946020939093013593505050565b6001600160e01b0319811681146106ca57600080fd5b6000602082840312156124ef57600080fd5b8135611cbb816124c7565b60005b838110156125155781810151838201526020016124fd565b50506000910152565b600081518084526125368160208601602086016124fa565b601f01601f19169290920160200192915050565b602081526000611cbb602083018461251e565b60006020828403121561256f57600080fd5b5035919050565b60006020828403121561258857600080fd5b611cbb82612481565b600080604083850312156125a457600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b03811182821017156125ee576125ee6125b3565b6040525050565b60006001600160401b0382111561260e5761260e6125b3565b5060051b60200190565b600082601f83011261262957600080fd5b81356020612636826125f5565b60405161264382826125c9565b83815260059390931b850182019282810191508684111561266357600080fd5b8286015b8481101561267e5780358352918301918301612667565b509695505050505050565b600082601f83011261269a57600080fd5b81356001600160401b038111156126b3576126b36125b3565b6040516126ca601f8301601f1916602001826125c9565b8181528460208386010111156126df57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561271457600080fd5b61271d86612481565b945061272b60208701612481565b935060408601356001600160401b038082111561274757600080fd5b61275389838a01612618565b9450606088013591508082111561276957600080fd5b61277589838a01612618565b9350608088013591508082111561278b57600080fd5b5061279888828901612689565b9150509295509295909350565b600080604083850312156127b857600080fd5b82356001600160401b03808211156127cf57600080fd5b818501915085601f8301126127e357600080fd5b813560206127f0826125f5565b6040516127fd82826125c9565b83815260059390931b850182019282810191508984111561281d57600080fd5b948201945b838610156128425761283386612481565b82529482019490820190612822565b9650508601359250508082111561285857600080fd5b5061286585828601612618565b9150509250929050565b600081518084526020808501945080840160005b8381101561289f57815187529582019590820190600101612883565b509495945050505050565b602081526000611cbb602083018461286f565b6000806000606084860312156128d257600080fd5b6128db84612481565b925060208401356001600160401b03808211156128f757600080fd5b61290387838801612618565b9350604086013591508082111561291957600080fd5b5061292686828701612618565b9150509250925092565b60006020828403121561294257600080fd5b81356001600160401b0381111561295857600080fd5b6114d184828501612689565b6000806000806080858703121561297a57600080fd5b61298385612481565b935060208501356001600160401b038082111561299f57600080fd5b6129ab88838901612618565b945060408701359150808211156129c157600080fd5b6129cd88838901612618565b935060608701359150808211156129e357600080fd5b506129f087828801612689565b91505092959194509250565b600080600060608486031215612a1157600080fd5b83359250612a2160208501612481565b9150604084013590509250925092565b60008060408385031215612a4457600080fd5b612a4d83612481565b915060208301358015158114612a6257600080fd5b809150509250929050565b60008060208385031215612a8057600080fd5b82356001600160401b0380821115612a9757600080fd5b818501915085601f830112612aab57600080fd5b813581811115612aba57600080fd5b8660208260051b8501011115612acf57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612b3657603f19888603018452612b2485835161251e565b94509285019290850190600101612b08565b5092979650505050505050565b60008060008060808587031215612b5957600080fd5b612b6285612481565b93506020850135925060408501356001600160401b03811115612b8457600080fd5b612b9087828801612689565b949793965093946060013593505050565b60008060408385031215612bb457600080fd5b612bbd83612481565b9150612bcb60208401612481565b90509250929050565b600080600080600060a08688031215612bec57600080fd5b612bf586612481565b9450612c0360208701612481565b9350604086013592506060860135915060808601356001600160401b03811115612c2c57600080fd5b61279888828901612689565b600080600060608486031215612c4d57600080fd5b612c5684612481565b95602085013595506040909401359392505050565b600181811c90821680612c7f57607f821691505b602082108103612c9f57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351612cb78184602088016124fa565b835190830190612ccb8183602088016124fa565b01949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761051a5761051a612cea565b634e487b7160e01b600052601260045260246000fd5b600082612d3c57612d3c612d17565b500490565b6020808252600f908201526e0988a9c8ea890be9a92a69a82a8869608b1b604082015260600190565b600060018201612d7c57612d7c612cea565b5060010190565b8082018082111561051a5761051a612cea565b6000808335601e19843603018112612dad57600080fd5b8301803591506001600160401b03821115612dc757600080fd5b602001915036819003821315612ddc57600080fd5b9250929050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b8181038181111561051a5761051a612cea565b600082612e2b57612e2b612d17565b500690565b6020808252600c908201526b2a27afad22a927afa0a2222960a11b604082015260600190565b60208082526010908201526f125394d551919250d251539517d0905360821b604082015260600190565b604081526000612e93604083018561286f565b8281036020840152612ea5818561286f565b95945050505050565b601f821115610daa57600081815260208120601f850160051c81016020861015612ed55750805b601f850160051c820191505b818110156110c157828155600101612ee1565b81516001600160401b03811115612f0d57612f0d6125b3565b612f2181612f1b8454612c6b565b84612eae565b602080601f831160018114612f565760008415612f3e5750858301515b600019600386901b1c1916600185901b1785556110c1565b600085815260208120601f198616915b82811015612f8557888601518255948401946001909101908401612f66565b5085821015612fa35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000612fc6604083018561251e565b8281036020840152612ea5818561251e565b6001600160a01b0386811682528516602082015260a0604082018190526000906130049083018661286f565b8281036060840152613016818661286f565b9050828103608084015261302a818561251e565b98975050505050505050565b60006020828403121561304857600080fd5b8151611cbb816124c7565b600060033d111561306c5760046000803e5060005160e01c5b90565b600060443d101561307d5790565b6040516003193d81016004833e81513d6001600160401b0381602484011181841117156130ac57505050505090565b82850191508151818111156130c45750505050505090565b843d87010160208285010111156130de5750505050505090565b6130ed602082860101876125c9565b509095945050505050565b6000825161310a8184602087016124fa565b9190910192915050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061314e9083018461251e565b97965050505050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f0d6b7a3df8e95b1ef53ef9094e01aa29088b582e00774dc5518128ded43726064736f6c63430008140033000000000000000000000000c0b53bd566229ee4e407ee70df130ce75798475700000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000de09b903c5d4aaf33d89160b70e13b4a46b5439a00000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000003313131000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033131310000000000000000000000000000000000000000000000000000000000