Loading
[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadySameStatus", "type": "error" }, { "inputs": [], "name": "NotEnoughPermission", "type": "error" }, { "inputs": [], "name": "ZeroAddress", "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": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "isPublic", "type": "bool" } ], "name": "MintingStatusUpdated", "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" }, { "inputs": [], "name": "CREATOR_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "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": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "addMinter", "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": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "collectionID", "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": [ { "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": "string", "name": "projectID", "type": "string" }, { "internalType": "string", "name": "collectionID", "type": "string" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "string", "name": "baseURI", "type": "string" }, { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "bool", "name": "mintingPublic", "type": "bool" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isMintingPublic", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "player", "type": "address" }, { "internalType": "string", "name": "tokenURI", "type": "string" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "isPublic", "type": "bool" } ], "name": "mintingPublic", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "projectID", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "removeMinter", "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": "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": "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" } ]
60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6126c480620000f36000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80636c0360eb11610104578063a217fddf116100a2578063d0def52111610071578063d0def52114610418578063d53913931461042b578063d547741f14610452578063e985e9c51461046557600080fd5b8063a217fddf146103d7578063a22cb465146103df578063b88d4fde146103f2578063c87b56dd1461040557600080fd5b806391d14854116100de57806391d148541461037b57806395d89b41146103b4578063983b2d56146103bc5780639c30ea51146103cf57600080fd5b80636c0360eb1461033957806370a08231146103415780638aeda25a1461035457600080fd5b80632f2ff15d1161017c5780634db5806a1161014b5780634db5806a146102ff57806357f36e3d1461030b57806358b33e691461031e5780636352211e1461032657600080fd5b80632f2ff15d146102b35780633092afd5146102c657806336568abe146102d957806342842e0e146102ec57600080fd5b8063081812fc116101b8578063081812fc14610231578063095ea7b31461025c57806323b872dd1461026f578063248a9ca31461028257600080fd5b806301ffc9a7146101df578063059e055d1461020757806306fdde031461021c575b600080fd5b6101f26101ed366004612063565b6104a1565b60405190151581526020015b60405180910390f35b61021a610215366004612158565b6104b2565b005b610224610664565b6040516101fe91906122a3565b61024461023f3660046122b6565b6106f6565b6040516001600160a01b0390911681526020016101fe565b61021a61026a3660046122cf565b61071d565b61021a61027d3660046122f9565b61084f565b6102a56102903660046122b6565b600090815260c9602052604090206001015490565b6040519081526020016101fe565b61021a6102c1366004612335565b6108c6565b61021a6102d4366004612361565b6108eb565b61021a6102e7366004612335565b61096a565b61021a6102fa3660046122f9565b6109f2565b60ff80546101f2911681565b61021a61031936600461237c565b610a0d565b610224610ac2565b6102446103343660046122b6565b610ad1565b610224610b36565b6102a561034f366004612361565b610b45565b6102a57f828634d95e775031b9ff576b159a8509d3053581a8c9c4d7d86899e0afcd882f81565b6101f2610389366004612335565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610224610bdf565b61021a6103ca366004612361565b610bee565b610224610c69565b6102a5600081565b61021a6103ed366004612397565b610c78565b61021a6104003660046123c1565b610c83565b6102246104133660046122b6565b610d01565b6102a561042636600461243d565b610e05565b6102a57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61021a610460366004612335565b610ee8565b6101f261047336600461248b565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60006104ac82610f0d565b92915050565b600054610100900460ff16158080156104d25750600054600160ff909116105b806104ec5750303b1580156104ec575060005460ff166001145b6105635760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610586576000805461ff0019166101001790555b6105908686610f4b565b610598610fc0565b6105a0610fc0565b6105ca7f828634d95e775031b9ff576b159a8509d3053581a8c9c4d7d86899e0afcd882f8461102d565b87516105dd9060fc9060208b0190611fb4565b5086516105f19060fd9060208a0190611fb4565b5060ff805460ff191683151517905583516106139060fe906020870190611fb4565b50801561065a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b606060658054610673906124b5565b80601f016020809104026020016040519081016040528092919081815260200182805461069f906124b5565b80156106ec5780601f106106c1576101008083540402835291602001916106ec565b820191906000526020600020905b8154815290600101906020018083116106cf57829003601f168201915b5050505050905090565b6000610701826110cf565b506000908152606960205260409020546001600160a01b031690565b600061072882610ad1565b9050806001600160a01b0316836001600160a01b031614156107b25760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161055a565b336001600160a01b03821614806107ce57506107ce8133610473565b6108405760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161055a565b61084a8383611136565b505050565b61085933826111b1565b6108bb5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b606482015260840161055a565b61084a83838361122f565b600082815260c960205260409020600101546108e181611435565b61084a838361102d565b7f828634d95e775031b9ff576b159a8509d3053581a8c9c4d7d86899e0afcd882f61091581611435565b6001600160a01b03821661093c5760405163d92e233d60e01b815260040160405180910390fd5b6109667f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68361143f565b5050565b6001600160a01b03811633146109e85760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c660000000000000000000000000000000000606482015260840161055a565b610966828261143f565b61084a83838360405180602001604052806000815250610c83565b7f828634d95e775031b9ff576b159a8509d3053581a8c9c4d7d86899e0afcd882f610a3781611435565b60ff80541615158215151415610a79576040517f97f5467c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff805460ff19168315159081179091556040519081527ff62079051152e03bd87f33518b9ce4a5564414395b75afeef8a467e7ca4ee91b906020015b60405180910390a15050565b606060fd8054610673906124b5565b6000818152606760205260408120546001600160a01b0316806104ac5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e2049440000000000000000604482015260640161055a565b606060fe8054610673906124b5565b60006001600160a01b038216610bc35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e65720000000000000000000000000000000000000000000000606482015260840161055a565b506001600160a01b031660009081526068602052604090205490565b606060668054610673906124b5565b7f828634d95e775031b9ff576b159a8509d3053581a8c9c4d7d86899e0afcd882f610c1881611435565b6001600160a01b038216610c3f5760405163d92e233d60e01b815260040160405180910390fd5b6109667f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68361102d565b606060fc8054610673906124b5565b6109663383836114c2565b610c8d33836111b1565b610cef5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b606482015260840161055a565b610cfb84848484611591565b50505050565b6060610d0c826110cf565b60008281526097602052604081208054610d25906124b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d51906124b5565b8015610d9e5780601f10610d7357610100808354040283529160200191610d9e565b820191906000526020600020905b815481529060010190602001808311610d8157829003601f168201915b505050505090506000610daf610b36565b9050805160001415610dc2575092915050565b815115610df4578082604051602001610ddc9291906124f0565b60405160208183030381529060405292505050919050565b610dfd8461161a565b949350505050565b60ff805460009116610eb6573360009081527f51111423f5e835a1e334a686a7d9f998a65310f720d529827b76c12f396de482602052604090205460ff16158015610e7f57503360009081527f84b453f120a73c63d7585f415b66c181abba0fec178367e8fe03a594c35cdc5c602052604090205460ff16155b15610eb6576040517f291c032800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fb805460009182610ec783612535565b919050559050610ed78482611680565b610ee18184611818565b9392505050565b600082815260c96020526040902060010154610f0381611435565b61084a838361143f565b60006001600160e01b031982167f7965db0b0000000000000000000000000000000000000000000000000000000014806104ac57506104ac826118f2565b600054610100900460ff16610fb65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161055a565b6109668282611930565b600054610100900460ff1661102b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161055a565b565b600082815260c9602090815260408083206001600160a01b038516845290915290205460ff1661096657600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561108b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000818152606760205260409020546001600160a01b03166111335760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e2049440000000000000000604482015260640161055a565b50565b6000818152606960205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155819061117882610ad1565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806111bd83610ad1565b9050806001600160a01b0316846001600160a01b0316148061120457506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80610dfd5750836001600160a01b031661121d846106f6565b6001600160a01b031614949350505050565b826001600160a01b031661124282610ad1565b6001600160a01b0316146112a65760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161055a565b6001600160a01b0382166113215760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161055a565b826001600160a01b031661133482610ad1565b6001600160a01b0316146113985760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161055a565b6000818152606960209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61113381336119c2565b600082815260c9602090815260408083206001600160a01b038516845290915290205460ff161561096657600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b816001600160a01b0316836001600160a01b031614156115245760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161055a565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61159c84848461122f565b6115a884848484611a37565b610cfb5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161055a565b6060611625826110cf565b600061162f610b36565b9050600081511161164f5760405180602001604052806000815250610ee1565b8061165984611b9a565b60405160200161166a9291906124f0565b6040516020818303038152906040529392505050565b6001600160a01b0382166116d65760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161055a565b6000818152606760205260409020546001600160a01b03161561173b5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161055a565b6000818152606760205260409020546001600160a01b0316156117a05760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161055a565b6001600160a01b0382166000818152606860209081526040808320805460010190558483526067909152808220805473ffffffffffffffffffffffffffffffffffffffff19168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152606760205260409020546001600160a01b03166118a25760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201527f6578697374656e7420746f6b656e000000000000000000000000000000000000606482015260840161055a565b600082815260976020908152604090912082516118c192840190611fb4565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce790602001610ab6565b60006001600160e01b031982167f490649060000000000000000000000000000000000000000000000000000000014806104ac57506104ac82611c44565b600054610100900460ff1661199b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161055a565b81516119ae906065906020850190611fb4565b50805161084a906066906020840190611fb4565b600082815260c9602090815260408083206001600160a01b038516845290915290205460ff16610966576119f581611cdf565b611a00836020611cf1565b604051602001611a11929190612550565b60408051601f198184030181529082905262461bcd60e51b825261055a916004016122a3565b60006001600160a01b0384163b15611b8f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611a7b9033908990889088906004016125d1565b602060405180830381600087803b158015611a9557600080fd5b505af1925050508015611ac5575060408051601f3d908101601f19168201909252611ac29181019061260d565b60015b611b75573d808015611af3576040519150601f19603f3d011682016040523d82523d6000602084013e611af8565b606091505b508051611b6d5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161055a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610dfd565b506001949350505050565b60606000611ba783611ed2565b600101905060008167ffffffffffffffff811115611bc757611bc7612080565b6040519080825280601f01601f191660200182016040528015611bf1576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084611c3757611c3c565b611bfb565b509392505050565b60006001600160e01b031982167f80ac58cd000000000000000000000000000000000000000000000000000000001480611ca757506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806104ac57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316146104ac565b60606104ac6001600160a01b03831660145b60606000611d0083600261262a565b611d0b906002612649565b67ffffffffffffffff811115611d2357611d23612080565b6040519080825280601f01601f191660200182016040528015611d4d576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611d8457611d84612661565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611dcf57611dcf612661565b60200101906001600160f81b031916908160001a9053506000611df384600261262a565b611dfe906001612649565b90505b6001811115611e83577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611e3f57611e3f612661565b1a60f81b828281518110611e5557611e55612661565b60200101906001600160f81b031916908160001a90535060049490941c93611e7c81612677565b9050611e01565b508315610ee15760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161055a565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611f1b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611f47576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611f6557662386f26fc10000830492506010015b6305f5e1008310611f7d576305f5e100830492506008015b6127108310611f9157612710830492506004015b60648310611fa3576064830492506002015b600a83106104ac5760010192915050565b828054611fc0906124b5565b90600052602060002090601f016020900481019282611fe25760008555612028565b82601f10611ffb57805160ff1916838001178555612028565b82800160010185558215612028579182015b8281111561202857825182559160200191906001019061200d565b50612034929150612038565b5090565b5b808211156120345760008155600101612039565b6001600160e01b03198116811461113357600080fd5b60006020828403121561207557600080fd5b8135610ee18161204d565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156120b1576120b1612080565b604051601f8501601f19908116603f011681019082821181831017156120d9576120d9612080565b816040528093508581528686860111156120f257600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261211d57600080fd5b610ee183833560208501612096565b80356001600160a01b038116811461214357600080fd5b919050565b8035801515811461214357600080fd5b600080600080600080600060e0888a03121561217357600080fd5b873567ffffffffffffffff8082111561218b57600080fd5b6121978b838c0161210c565b985060208a01359150808211156121ad57600080fd5b6121b98b838c0161210c565b975060408a01359150808211156121cf57600080fd5b6121db8b838c0161210c565b965060608a01359150808211156121f157600080fd5b6121fd8b838c0161210c565b955060808a013591508082111561221357600080fd5b506122208a828b0161210c565b93505061222f60a0890161212c565b915061223d60c08901612148565b905092959891949750929550565b60005b8381101561226657818101518382015260200161224e565b83811115610cfb5750506000910152565b6000815180845261228f81602086016020860161224b565b601f01601f19169290920160200192915050565b602081526000610ee16020830184612277565b6000602082840312156122c857600080fd5b5035919050565b600080604083850312156122e257600080fd5b6122eb8361212c565b946020939093013593505050565b60008060006060848603121561230e57600080fd5b6123178461212c565b92506123256020850161212c565b9150604084013590509250925092565b6000806040838503121561234857600080fd5b823591506123586020840161212c565b90509250929050565b60006020828403121561237357600080fd5b610ee18261212c565b60006020828403121561238e57600080fd5b610ee182612148565b600080604083850312156123aa57600080fd5b6123b38361212c565b915061235860208401612148565b600080600080608085870312156123d757600080fd5b6123e08561212c565b93506123ee6020860161212c565b925060408501359150606085013567ffffffffffffffff81111561241157600080fd5b8501601f8101871361242257600080fd5b61243187823560208401612096565b91505092959194509250565b6000806040838503121561245057600080fd5b6124598361212c565b9150602083013567ffffffffffffffff81111561247557600080fd5b6124818582860161210c565b9150509250929050565b6000806040838503121561249e57600080fd5b6124a78361212c565b91506123586020840161212c565b600181811c908216806124c957607f821691505b602082108114156124ea57634e487b7160e01b600052602260045260246000fd5b50919050565b6000835161250281846020880161224b565b83519083019061251681836020880161224b565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156125495761254961251f565b5060010190565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161258881601785016020880161224b565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516125c581602884016020880161224b565b01602801949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526126036080830184612277565b9695505050505050565b60006020828403121561261f57600080fd5b8151610ee18161204d565b60008160001904831182151516156126445761264461251f565b500290565b6000821982111561265c5761265c61251f565b500190565b634e487b7160e01b600052603260045260246000fd5b6000816126865761268661251f565b50600019019056fea2646970667358221220de2fa0fb06041619bdccfe4ce3555688cb24e86996ab4bb5949d5ee9f345ed5b64736f6c63430008090033