[ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "bool", "name": "publicMint", "type": "bool" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "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": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PAUSER_ROLE", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "to", "type": "address[]" }, { "internalType": "uint256[]", "name": "tokenId", "type": "uint256[]" }, { "internalType": "string[]", "name": "uri", "type": "string[]" } ], "name": "mintMultiple", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" } ], "name": "mintWithTokenURI", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "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": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransfer", "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": "payable", "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b50604051620031a0380380620031a0833981016040819052620000349162000359565b82826200004133620000f8565b815162000056906001906020850190620001fc565b5080516200006c906002906020840190620001fc565b5050600c805460ff19169055506200008660003362000148565b620000b27f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63362000148565b620000de7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3362000148565b600e805460ff191691151591909117905550620004309050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b62000154828262000158565b5050565b6000828152600d602090815260408083206001600160a01b038516845290915290205460ff1662000154576000828152600d602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620001b83390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b8280546200020a90620003dd565b90600052602060002090601f0160209004810192826200022e576000855562000279565b82601f106200024957805160ff191683800117855562000279565b8280016001018555821562000279579182015b82811115620002795782518255916020019190600101906200025c565b50620002879291506200028b565b5090565b5b808211156200028757600081556001016200028c565b600082601f830112620002b457600080fd5b81516001600160401b0380821115620002d157620002d16200041a565b604051601f8301601f19908116603f01168101908282118183101715620002fc57620002fc6200041a565b816040528381526020925086838588010111156200031957600080fd5b600091505b838210156200033d57858201830151818301840152908201906200031e565b838211156200034f5760008385830101525b9695505050505050565b6000806000606084860312156200036f57600080fd5b83516001600160401b03808211156200038757600080fd5b6200039587838801620002a2565b94506020860151915080821115620003ac57600080fd5b50620003bb86828701620002a2565b92505060408401518015158114620003d257600080fd5b809150509250925092565b600181811c90821680620003f257607f821691505b602082108114156200041457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b612d6080620004406000396000f3fe60806040526004361061020f5760003560e01c80636352211e11610118578063a22cb465116100a0578063d547741f1161006f578063d547741f146105fa578063e63ab1e91461061a578063e985e9c51461064e578063eb79554914610697578063f2fde38b146106b757600080fd5b8063a22cb46514610573578063b88d4fde14610593578063c87b56dd146105a6578063d5391393146105c657600080fd5b80638462151c116100e75780638462151c146104de5780638da5cb5b1461050b57806391d148541461052957806395d89b4114610549578063a217fddf1461055e57600080fd5b80636352211e1461047457806370a0823114610494578063715018a6146104b45780638456cb59146104c957600080fd5b806336568abe1161019b57806342966c681161016a57806342966c68146103dc5780634f6ccce7146103fc57806350bb4e7f1461041c5780635a9c9eb81461043c5780635c975abb1461045c57600080fd5b806336568abe146103745780633f4ba83a14610394578063423f6cef146103a957806342842e0e146103c957600080fd5b806318160ddd116101e257806318160ddd146102c557806323b872dd146102e4578063248a9ca3146103045780632f2ff15d146103345780632f745c591461035457600080fd5b806301ffc9a71461021457806306fdde0314610249578063081812fc1461026b578063095ea7b3146102a3575b600080fd5b34801561022057600080fd5b5061023461022f36600461290f565b6106d7565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b5061025e6106e8565b6040516102409190612a25565b34801561027757600080fd5b5061028b6102863660046128d3565b61077a565b6040516001600160a01b039091168152602001610240565b3480156102af57600080fd5b506102c36102be3660046126ea565b610807565b005b3480156102d157600080fd5b506009545b604051908152602001610240565b3480156102f057600080fd5b506102c36102ff3660046125f6565b61091d565b34801561031057600080fd5b506102d661031f3660046128d3565b6000908152600d602052604090206001015490565b34801561034057600080fd5b506102c361034f3660046128ec565b61094f565b34801561036057600080fd5b506102d661036f3660046126ea565b6109de565b34801561038057600080fd5b506102c361038f3660046128ec565b610a74565b3480156103a057600080fd5b506102c3610aee565b3480156103b557600080fd5b506102c36103c43660046126ea565b610b3e565b6102c36103d73660046125f6565b610b59565b3480156103e857600080fd5b506102c36103f73660046128d3565b610b74565b34801561040857600080fd5b506102d66104173660046128d3565b610bee565b34801561042857600080fd5b5061023461043736600461279b565b610c81565b34801561044857600080fd5b506102346104573660046127f2565b610cf2565b34801561046857600080fd5b50600c5460ff16610234565b34801561048057600080fd5b5061028b61048f3660046128d3565b610de6565b3480156104a057600080fd5b506102d66104af3660046125a8565b610e5d565b3480156104c057600080fd5b506102c3610ee4565b3480156104d557600080fd5b506102c3610f48565b3480156104ea57600080fd5b506104fe6104f93660046125a8565b610f96565b60405161024091906129e1565b34801561051757600080fd5b506000546001600160a01b031661028b565b34801561053557600080fd5b506102346105443660046128ec565b611056565b34801561055557600080fd5b5061025e611081565b34801561056a57600080fd5b506102d6600081565b34801561057f57600080fd5b506102c361058e3660046126ae565b611090565b6102c36105a1366004612632565b611155565b3480156105b257600080fd5b5061025e6105c13660046128d3565b61118d565b3480156105d257600080fd5b506102d67f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b34801561060657600080fd5b506102c36106153660046128ec565b611198565b34801561062657600080fd5b506102d67f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561065a57600080fd5b506102346106693660046125c3565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b3480156106a357600080fd5b506102c36106b2366004612714565b611218565b3480156106c357600080fd5b506102c36106d23660046125a8565b61125a565b60006106e282611322565b92915050565b6060600180546106f790612c3c565b80601f016020809104026020016040519081016040528092919081815260200182805461072390612c3c565b80156107705780601f1061074557610100808354040283529160200191610770565b820191906000526020600020905b81548152906001019060200180831161075357829003601f168201915b5050505050905090565b600061078582611347565b6107eb5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b600061081282610de6565b9050806001600160a01b0316836001600160a01b031614156108805760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016107e2565b336001600160a01b038216148061089c575061089c8133610669565b61090e5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016107e2565b6109188383611364565b505050565b610928335b826113d2565b6109445760405162461bcd60e51b81526004016107e290612b27565b6109188383836114bc565b6000828152600d602052604090206001015461096c905b33611056565b6109d05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201526e0818591b5a5b881d1bc819dc985b9d608a1b60648201526084016107e2565b6109da8282611667565b5050565b60006109e983610e5d565b8210610a4b5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016107e2565b506001600160a01b03919091166000908152600760209081526040808320938352929052205490565b6001600160a01b0381163314610ae45760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107e2565b6109da82826116ed565b610b187f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33611056565b610b345760405162461bcd60e51b81526004016107e290612ad8565b610b3c611754565b565b6109da338383604051806020016040528060008152506117e7565b61091883838360405180602001604052806000815250611155565b610b7d33610922565b610be25760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b60648201526084016107e2565b610beb8161181a565b50565b6000610bf960095490565b8210610c5c5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016107e2565b60098281548110610c6f57610c6f612ce8565b90600052602060002001549050919050565b600e5460009060ff16610cd457610cb87f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633611056565b610cd45760405162461bcd60e51b81526004016107e290612a8a565b610cde8484611823565b610ce8838361183d565b5060019392505050565b600e5460009060ff16610d4557610d297f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633611056565b610d455760405162461bcd60e51b81526004016107e290612a8a565b60005b8451811015610ddb57610d8d858281518110610d6657610d66612ce8565b6020026020010151858381518110610d8057610d80612ce8565b6020026020010151611823565b610dc9848281518110610da257610da2612ce8565b6020026020010151848381518110610dbc57610dbc612ce8565b602002602001015161183d565b80610dd381612c77565b915050610d48565b506001949350505050565b6000818152600360205260408120546001600160a01b0316806106e25760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016107e2565b60006001600160a01b038216610ec85760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016107e2565b506001600160a01b031660009081526004602052604090205490565b6000546001600160a01b03163314610f3e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107e2565b610b3c60006118c8565b610f727f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33611056565b610f8e5760405162461bcd60e51b81526004016107e290612ad8565b610b3c611918565b60606000610fa383610e5d565b67ffffffffffffffff811115610fbb57610fbb612cfe565b604051908082528060200260200182016040528015610fe4578160200160208202803683370190505b50905060005b610ff384610e5d565b81101561104f576001600160a01b0384166000908152600760209081526040808320848452909152902054825183908390811061103257611032612ce8565b60209081029190910101528061104781612c77565b915050610fea565b5092915050565b6000918252600d602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600280546106f790612c3c565b6001600160a01b0382163314156110e95760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107e2565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61115f33836113d2565b61117b5760405162461bcd60e51b81526004016107e290612b27565b611187848484846117e7565b50505050565b60606106e282611993565b6000828152600d60205260409020600101546111b390610966565b610ae45760405162461bcd60e51b815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201526f2061646d696e20746f207265766f6b6560801b60648201526084016107e2565b61118733858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117e792505050565b6000546001600160a01b031633146112b45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107e2565b6001600160a01b0381166113195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107e2565b610beb816118c8565b60006001600160e01b03198216637965db0b60e01b14806106e257506106e282611b02565b6000908152600360205260409020546001600160a01b0316151590565b600081815260056020526040902080546001600160a01b0319166001600160a01b038416908117909155819061139982610de6565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006113dd82611347565b61143e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016107e2565b600061144983610de6565b9050806001600160a01b0316846001600160a01b031614806114845750836001600160a01b03166114798461077a565b6001600160a01b0316145b806114b457506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166114cf82610de6565b6001600160a01b0316146115375760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016107e2565b6001600160a01b0382166115995760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016107e2565b6115a4838383611b27565b6115af600082611364565b6001600160a01b03831660009081526004602052604081208054600192906115d8908490612bf9565b90915550506001600160a01b0382166000908152600460205260408120805460019290611606908490612bcd565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6116718282611056565b6109da576000828152600d602090815260408083206001600160a01b03851684529091529020805460ff191660011790556116a93390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6116f78282611056565b156109da576000828152600d602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600c5460ff1661179d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107e2565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6117f28484846114bc565b6117fe84848484611b78565b6111875760405162461bcd60e51b81526004016107e290612a38565b610beb81611c7a565b6109da828260405180602001604052806000815250611cba565b61184682611347565b6118a95760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016107e2565b6000828152600b60209081526040909120825161091892840190612341565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600c5460ff161561195e5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107e2565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586117ca3390565b606061199e82611347565b611a045760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b60648201526084016107e2565b6000828152600b602052604081208054611a1d90612c3c565b80601f0160208091040260200160405190810160405280929190818152602001828054611a4990612c3c565b8015611a965780601f10611a6b57610100808354040283529160200191611a96565b820191906000526020600020905b815481529060010190602001808311611a7957829003601f168201915b505050505090506000611ab460408051602081019091526000815290565b9050805160001415611ac7575092915050565b815115611af9578082604051602001611ae1929190612975565b60405160208183030381529060405292505050919050565b6114b484611ced565b60006001600160e01b0319821663780e9d6360e01b14806106e257506106e282611dc5565b600c5460ff1615611b6d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107e2565b610918838383611e15565b60006001600160a01b0384163b15610ddb57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611bbc9033908990889088906004016129a4565b602060405180830381600087803b158015611bd657600080fd5b505af1925050508015611c06575060408051601f3d908101601f19168201909252611c039181019061292c565b60015b611c60573d808015611c34576040519150601f19603f3d011682016040523d82523d6000602084013e611c39565b606091505b508051611c585760405162461bcd60e51b81526004016107e290612a38565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506114b4565b611c8381611ecd565b6000818152600b602052604090208054611c9c90612c3c565b159050610beb576000818152600b60205260408120610beb916123c5565b611cc48383611f74565b611cd16000848484611b78565b6109185760405162461bcd60e51b81526004016107e290612a38565b6060611cf882611347565b611d5c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016107e2565b6000611d7360408051602081019091526000815290565b90506000815111611d935760405180602001604052806000815250611dbe565b80611d9d846120b3565b604051602001611dae929190612975565b6040516020818303038152906040525b9392505050565b60006001600160e01b031982166380ac58cd60e01b1480611df657506001600160e01b03198216635b5e139f60e01b145b806106e257506301ffc9a760e01b6001600160e01b03198316146106e2565b6001600160a01b038316611e7057611e6b81600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155565b611e93565b816001600160a01b0316836001600160a01b031614611e9357611e9383826121b1565b6001600160a01b038216611eaa576109188161224e565b826001600160a01b0316826001600160a01b0316146109185761091882826122fd565b6000611ed882610de6565b9050611ee681600084611b27565b611ef1600083611364565b6001600160a01b0381166000908152600460205260408120805460019290611f1a908490612bf9565b909155505060008281526003602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b038216611fca5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107e2565b611fd381611347565b156120205760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107e2565b61202c60008383611b27565b6001600160a01b0382166000908152600460205260408120805460019290612055908490612bcd565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6060816120d75750506040805180820190915260018152600360fc1b602082015290565b8160005b811561210157806120eb81612c77565b91506120fa9050600a83612be5565b91506120db565b60008167ffffffffffffffff81111561211c5761211c612cfe565b6040519080825280601f01601f191660200182016040528015612146576020820181803683370190505b5090505b84156114b45761215b600183612bf9565b9150612168600a86612c92565b612173906030612bcd565b60f81b81838151811061218857612188612ce8565b60200101906001600160f81b031916908160001a9053506121aa600a86612be5565b945061214a565b600060016121be84610e5d565b6121c89190612bf9565b60008381526008602052604090205490915080821461221b576001600160a01b03841660009081526007602090815260408083208584528252808320548484528184208190558352600890915290208190555b5060009182526008602090815260408084208490556001600160a01b039094168352600781528383209183525290812055565b60095460009061226090600190612bf9565b6000838152600a60205260408120546009805493945090928490811061228857612288612ce8565b9060005260206000200154905080600983815481106122a9576122a9612ce8565b6000918252602080832090910192909255828152600a909152604080822084905585825281205560098054806122e1576122e1612cd2565b6001900381819060005260206000200160009055905550505050565b600061230883610e5d565b6001600160a01b039093166000908152600760209081526040808320868452825280832085905593825260089052919091209190915550565b82805461234d90612c3c565b90600052602060002090601f01602090048101928261236f57600085556123b5565b82601f1061238857805160ff19168380011785556123b5565b828001600101855582156123b5579182015b828111156123b557825182559160200191906001019061239a565b506123c19291506123fb565b5090565b5080546123d190612c3c565b6000825580601f106123e1575050565b601f016020900490600052602060002090810190610beb91905b5b808211156123c157600081556001016123fc565b600067ffffffffffffffff83111561242a5761242a612cfe565b61243d601f8401601f1916602001612b78565b905082815283838301111561245157600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b038116811461247f57600080fd5b919050565b600082601f83011261249557600080fd5b813560206124aa6124a583612ba9565b612b78565b80838252828201915082860187848660051b89010111156124ca57600080fd5b6000805b8681101561250d57823567ffffffffffffffff8111156124ec578283fd5b6124fa8b88838d0101612588565b86525093850193918501916001016124ce565b509198975050505050505050565b600082601f83011261252c57600080fd5b8135602061253c6124a583612ba9565b80838252828201915082860187848660051b890101111561255c57600080fd5b60005b8581101561257b5781358452928401929084019060010161255f565b5090979650505050505050565b600082601f83011261259957600080fd5b611dbe83833560208501612410565b6000602082840312156125ba57600080fd5b611dbe82612468565b600080604083850312156125d657600080fd5b6125df83612468565b91506125ed60208401612468565b90509250929050565b60008060006060848603121561260b57600080fd5b61261484612468565b925061262260208501612468565b9150604084013590509250925092565b6000806000806080858703121561264857600080fd5b61265185612468565b935061265f60208601612468565b925060408501359150606085013567ffffffffffffffff81111561268257600080fd5b8501601f8101871361269357600080fd5b6126a287823560208401612410565b91505092959194509250565b600080604083850312156126c157600080fd5b6126ca83612468565b9150602083013580151581146126df57600080fd5b809150509250929050565b600080604083850312156126fd57600080fd5b61270683612468565b946020939093013593505050565b6000806000806060858703121561272a57600080fd5b61273385612468565b935060208501359250604085013567ffffffffffffffff8082111561275757600080fd5b818701915087601f83011261276b57600080fd5b81358181111561277a57600080fd5b88602082850101111561278c57600080fd5b95989497505060200194505050565b6000806000606084860312156127b057600080fd5b6127b984612468565b925060208401359150604084013567ffffffffffffffff8111156127dc57600080fd5b6127e886828701612588565b9150509250925092565b60008060006060848603121561280757600080fd5b833567ffffffffffffffff8082111561281f57600080fd5b818601915086601f83011261283357600080fd5b813560206128436124a583612ba9565b8083825282820191508286018b848660051b890101111561286357600080fd5b600096505b8487101561288d5761287981612468565b835260019690960195918301918301612868565b50975050870135925050808211156128a457600080fd5b6128b08783880161251b565b935060408601359150808211156128c657600080fd5b506127e886828701612484565b6000602082840312156128e557600080fd5b5035919050565b600080604083850312156128ff57600080fd5b823591506125ed60208401612468565b60006020828403121561292157600080fd5b8135611dbe81612d14565b60006020828403121561293e57600080fd5b8151611dbe81612d14565b60008151808452612961816020860160208601612c10565b601f01601f19169290920160200192915050565b60008351612987818460208801612c10565b83519083019061299b818360208801612c10565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906129d790830184612949565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612a19578351835292840192918401916001016129fd565b50909695505050505050565b602081526000611dbe6020830184612949565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602e908201527f546174756d47656e6572616c3732313a206d7573742068617665206d696e746560408201526d1c881c9bdb19481d1bc81b5a5b9d60921b606082015260800190565b6020808252602f908201527f546174756d47656e6572616c3732313a206d757374206861766520706175736560408201526e7220726f6c6520746f20706175736560881b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff81118282101715612ba157612ba1612cfe565b604052919050565b600067ffffffffffffffff821115612bc357612bc3612cfe565b5060051b60200190565b60008219821115612be057612be0612ca6565b500190565b600082612bf457612bf4612cbc565b500490565b600082821015612c0b57612c0b612ca6565b500390565b60005b83811015612c2b578181015183820152602001612c13565b838111156111875750506000910152565b600181811c90821680612c5057607f821691505b60208210811415612c7157634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612c8b57612c8b612ca6565b5060010190565b600082612ca157612ca1612cbc565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610beb57600080fdfea2646970667358221220604dbe11b5ed7adf8ada9e6179f63e8af1cdcf36ad7416516f11ed969cb5460864736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000