[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" } ], "name": "ERC1967InvalidImplementation", "type": "error" }, { "inputs": [], "name": "ERC1967NonPayable", "type": "error" }, { "inputs": [], "name": "ERC721EnumerableForbiddenBatchMint", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "ERC721OutOfBoundsIndex", "type": "error" }, { "inputs": [], "name": "FailedCall", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [], "name": "UUPSUnauthorizedCallContext", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "slot", "type": "bytes32" } ], "name": "UUPSUnsupportedProxiableUUID", "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": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "NFTsMintedForLockedValue", "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": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "BLAST", "outputs": [ { "internalType": "contract IBlast", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "REQUIRED_LOCKED_VALUE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPGRADER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPGRADE_INTERFACE_VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "address", "name": "_recipient", "type": "address" } ], "name": "claimAllGas", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "gameLockStakingFactory", "outputs": [ { "internalType": "contract IGameLockStakingFactory", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "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": "_defaultAdmin", "type": "address" }, { "internalType": "address", "name": "_minter", "type": "address" }, { "internalType": "address", "name": "_upgrader", "type": "address" }, { "internalType": "address", "name": "_blastPointsAddress", "type": "address" }, { "internalType": "address", "name": "_pointsOperator", "type": "address" }, { "internalType": "address", "name": "_gameLockStakingFactory", "type": "address" } ], "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": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "lockedValuesUsedForMinting", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mintNFTForLockedValue", "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": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "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" } ], "name": "safeMint", "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": "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": [], "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": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612b4a620001046000396000818161154e0152818161157701526116dc0152612b4a6000f3fe60806040526004361061020f5760003560e01c80634f6ccce711610118578063a22cb465116100a0578063cc2a9a5b1161006f578063cc2a9a5b14610606578063d539139314610626578063d547741f1461065a578063e985e9c51461067a578063f72c0d8b1461069a57600080fd5b8063a22cb46514610575578063ad3cb1cc14610595578063b88d4fde146105c6578063c87b56dd146105e657600080fd5b806370a08231116100e757806370a08231146104f057806391d148541461051057806395d89b411461053057806397d7577614610545578063a217fddf1461056057600080fd5b80634f6ccce71461046e57806352d1902d1461048e5780636352211e146104a35780636857ed9c146104c357600080fd5b806327bf0f031161019b57806336568abe1161016a57806336568abe146103dc57806340d097c3146103fc57806342842e0e1461041c578063440b924f1461043c5780634f1ef2861461045b57600080fd5b806327bf0f03146103715780632f2ff15d146103865780632f745c59146103a657806332cb6b0c146103c657600080fd5b8063139973d4116101e2578063139973d4146102c557806318160ddd146102e557806323b872dd14610311578063248a9ca314610331578063272b13231461035157600080fd5b806301ffc9a71461021457806306fdde0314610249578063081812fc1461026b578063095ea7b3146102a3575b600080fd5b34801561022057600080fd5b5061023461022f3660046123f5565b6106ce565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b5061025e6106df565b6040516102409190612462565b34801561027757600080fd5b5061028b610286366004612475565b610783565b6040516001600160a01b039091168152602001610240565b3480156102af57600080fd5b506102c36102be3660046124a3565b610798565b005b3480156102d157600080fd5b5060025461028b906001600160a01b031681565b3480156102f157600080fd5b50600080516020612ad5833981519152545b604051908152602001610240565b34801561031d57600080fd5b506102c361032c3660046124cf565b6107a7565b34801561033d57600080fd5b5061030361034c366004612475565b610837565b34801561035d57600080fd5b506102c361036c366004612510565b610859565b34801561037d57600080fd5b506102c361092d565b34801561039257600080fd5b506102c36103a136600461252d565b610c68565b3480156103b257600080fd5b506103036103c13660046124a3565b610c84565b3480156103d257600080fd5b50610303614e2081565b3480156103e857600080fd5b506102c36103f736600461252d565b610cf8565b34801561040857600080fd5b506102c3610417366004612510565b610d2b565b34801561042857600080fd5b506102c36104373660046124cf565b610dda565b34801561044857600080fd5b506103036a0112704cffb9b70a00000081565b6102c3610469366004612600565b610df5565b34801561047a57600080fd5b50610303610489366004612475565b610e10565b34801561049a57600080fd5b50610303610e88565b3480156104af57600080fd5b5061028b6104be366004612475565b610ea5565b3480156104cf57600080fd5b506103036104de366004612510565b60016020526000908152604090205481565b3480156104fc57600080fd5b5061030361050b366004612510565b610eb0565b34801561051c57600080fd5b5061023461052b36600461252d565b610f0c565b34801561053c57600080fd5b5061025e610f44565b34801561055157600080fd5b5061028b6002604360981b0181565b34801561056c57600080fd5b50610303600081565b34801561058157600080fd5b506102c3610590366004612650565b610f83565b3480156105a157600080fd5b5061025e604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156105d257600080fd5b506102c36105e1366004612683565b610f8e565b3480156105f257600080fd5b5061025e610601366004612475565b610fa6565b34801561061257600080fd5b506102c36106213660046126ef565b611040565b34801561063257600080fd5b506103037f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b34801561066657600080fd5b506102c361067536600461252d565b6112d9565b34801561068657600080fd5b50610234610695366004612771565b6112f5565b3480156106a657600080fd5b506103037f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b60006106d982611342565b92915050565b600080516020612a9583398151915280546060919081906106ff9061279f565b80601f016020809104026020016040519081016040528092919081815260200182805461072b9061279f565b80156107785780601f1061074d57610100808354040283529160200191610778565b820191906000526020600020905b81548152906001019060200180831161075b57829003601f168201915b505050505091505090565b600061078e82611367565b506106d98261139f565b6107a38282336113d9565b5050565b6001600160a01b0382166107d657604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006107e38383336113e6565b9050836001600160a01b0316816001600160a01b031614610831576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016107cd565b50505050565b6000908152600080516020612af5833981519152602052604090206001015490565b6000610864816113fb565b6001600160a01b0382166108b15760405162461bcd60e51b81526020600482015260146024820152735052434e46543a205a65726f206164647265737360601b60448201526064016107cd565b60405163662aa11d60e01b81523060048201526001600160a01b03831660248201526002604360981b019063662aa11d906044016020604051808303816000875af1158015610904573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092891906127d9565b505050565b614e20610946600080516020612ad58339815191525490565b106109935760405162461bcd60e51b815260206004820152601a60248201527f5052434e46543a204d617820737570706c79207265616368656400000000000060448201526064016107cd565b6002546000906001600160a01b031663d063c2cc336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156109ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1091906127f2565b90506001600160a01b038116610a685760405162461bcd60e51b815260206004820152601960248201527f5052434e46543a205573657220686173206e6f20636c6f6e650000000000000060448201526064016107cd565b60008190506000816001600160a01b031663d2c469326040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad191906127d9565b3360009081526001602052604081205491925090610aef9083612825565b90506a0112704cffb9b70a000000811015610b4c5760405162461bcd60e51b815260206004820181905260248201527f5052434e46543a20496e73756666696369656e74206c6f636b656456616c756560448201526064016107cd565b6000610b636a0112704cffb9b70a00000083612838565b90506000610b7d600080516020612ad58339815191525490565b610b8990614e20612825565b905080821115610b97578091505b610bac6a0112704cffb9b70a0000008361285a565b3360009081526001602052604081208054909190610bcb908490612871565b909155503390507f9c36deda138707b5fb5a4b5f9b3ec73f3846b88214c43a2f8003accfbeee1591610c086a0112704cffb9b70a0000008561285a565b60408051918252602082018690520160405180910390a260008054905b83811015610c5e57600080549080610c3c83612884565b909155509150610c4c3383611408565b80610c5681612884565b915050610c25565b5050505050505050565b610c7182610837565b610c7a816113fb565b6108318383611422565b6000600080516020612a75833981519152610c9e84610eb0565b8310610ccf5760405163295f44f760e21b81526001600160a01b0385166004820152602481018490526044016107cd565b6001600160a01b0384166000908152602091825260408082208583529092522054905092915050565b6001600160a01b0381163314610d215760405163334bd91960e11b815260040160405180910390fd5b61092882826114c7565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610d55816113fb565b614e20610d6e600080516020612ad58339815191525490565b10610dbb5760405162461bcd60e51b815260206004820152601a60248201527f5052434e46543a204d617820737570706c79207265616368656400000000000060448201526064016107cd565b600080548180610dca83612884565b9190505590506109288382611408565b61092883838360405180602001604052806000815250610f8e565b610dfd611543565b610e06826115ea565b6107a38282611614565b6000600080516020612a75833981519152610e37600080516020612ad58339815191525490565b8310610e605760405163295f44f760e21b815260006004820152602481018490526044016107cd565b806002018381548110610e7557610e7561289d565b9060005260206000200154915050919050565b6000610e926116d1565b50600080516020612ab583398151915290565b60006106d982611367565b6000600080516020612a958339815191526001600160a01b038316610eeb576040516322718ad960e21b8152600060048201526024016107cd565b6001600160a01b039092166000908152600390920160205250604090205490565b6000918252600080516020612af5833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793018054606091600080516020612a95833981519152916106ff9061279f565b6107a333838361171a565b610f998484846107a7565b61083133858585856117cb565b6060610fb182611367565b506000610fee60408051808201909152601781527f68747470733a2f2f697066732e696f2f746f6b656e732f000000000000000000602082015290565b9050600081511161100e5760405180602001604052806000815250611039565b80611018846118f6565b6040516020016110299291906128b3565b6040516020818303038152906040525b9392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156110865750825b905060008267ffffffffffffffff1660011480156110a35750303b155b9050811580156110b1575080155b156110cf5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156110f957845460ff60401b1916600160401b1785555b61113c60405180604001604052806006815260200165141490d3919560d21b8152506040518060400160405280600381526020016250524360e81b815250611989565b61114461199b565b61114c61199b565b61115461199b565b600280546001600160a01b0319166001600160a01b03881617905561117a60008c611422565b506111a57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68b611422565b506111d07f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e38a611422565b506002604360981b016001600160a01b0316634e606c476040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561121357600080fd5b505af1158015611227573d6000803e3d6000fd5b50506040516336b91f2b60e01b81526001600160a01b038a811660048301528b1692506336b91f2b9150602401600060405180830381600087803b15801561126e57600080fd5b505af1158015611282573d6000803e3d6000fd5b5050505083156112cc57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b6112e282610837565b6112eb816113fb565b61083183836114c7565b6001600160a01b0391821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b03198216637965db0b60e01b14806106d957506106d9826119a3565b600080611373836119c8565b90506001600160a01b0381166106d957604051637e27328960e01b8152600481018490526024016107cd565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b031690565b6109288383836001611a02565b60006113f3848484611b18565b949350505050565b6114058133611c11565b50565b6107a3828260405180602001604052806000815250611c4a565b6000600080516020612af583398151915261143d8484610f0c565b6114bd576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556114733390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506106d9565b60009150506106d9565b6000600080516020612af58339815191526114e28484610f0c565b156114bd576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506106d9565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806115ca57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166115be600080516020612ab5833981519152546001600160a01b031690565b6001600160a01b031614155b156115e85760405163703e46dd60e11b815260040160405180910390fd5b565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e36107a3816113fb565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561166e575060408051601f3d908101601f1916820190925261166b918101906127d9565b60015b61169657604051634c9c8ce360e01b81526001600160a01b03831660048201526024016107cd565b600080516020612ab583398151915281146116c757604051632a87526960e21b8152600481018290526024016107cd565b6109288383611c62565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115e85760405163703e46dd60e11b815260040160405180910390fd5b600080516020612a958339815191526001600160a01b03831661175b57604051630b61174360e31b81526001600160a01b03841660048201526024016107cd565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b0383163b156118ef57604051630a85bd0160e11b81526001600160a01b0384169063150b7a029061180d9088908890879087906004016128e2565b6020604051808303816000875af1925050508015611848575060408051601f3d908101601f191682019092526118459181019061291f565b60015b6118b1573d808015611876576040519150601f19603f3d011682016040523d82523d6000602084013e61187b565b606091505b5080516000036118a957604051633250574960e11b81526001600160a01b03851660048201526024016107cd565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146118ed57604051633250574960e11b81526001600160a01b03851660048201526024016107cd565b505b5050505050565b6060600061190383611cb8565b600101905060008167ffffffffffffffff8111156119235761192361255d565b6040519080825280601f01601f19166020018201604052801561194d576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461195757509392505050565b611991611d90565b6107a38282611dd9565b6115e8611d90565b60006001600160e01b0319821663780e9d6360e01b14806106d957506106d982611e0a565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260409020546001600160a01b031690565b600080516020612a958339815191528180611a2557506001600160a01b03831615155b15611ae7576000611a3585611367565b90506001600160a01b03841615801590611a615750836001600160a01b0316816001600160a01b031614155b8015611a745750611a7281856112f5565b155b15611a9d5760405163a9fbf51f60e01b81526001600160a01b03851660048201526024016107cd565b8215611ae55784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600080611b26858585611e5a565b90506001600160a01b038116611baf57611baa84600080516020612ad5833981519152805460008381527f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0360205260408120829055600182018355919091527fa42f15e5d656f8155fd7419d740a6073999f19cd6e061449ce4a257150545bf20155565b611bd2565b846001600160a01b0316816001600160a01b031614611bd257611bd28185611f64565b6001600160a01b038516611bee57611be984612000565b6113f3565b846001600160a01b0316816001600160a01b0316146113f3576113f385856120d7565b611c1b8282610f0c565b6107a35760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107cd565b611c548383612132565b6109283360008585856117cb565b611c6b82612197565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cb05761092882826121fc565b6107a3612272565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611cf75772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611d23576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611d4157662386f26fc10000830492506010015b6305f5e1008310611d59576305f5e100830492506008015b6127108310611d6d57612710830492506004015b60648310611d7f576064830492506002015b600a83106106d95760010192915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166115e857604051631afcd79f60e31b815260040160405180910390fd5b611de1611d90565b600080516020612a9583398151915280611dfb8482612982565b50600181016108318382612982565b60006001600160e01b031982166380ac58cd60e01b1480611e3b57506001600160e01b03198216635b5e139f60e01b145b806106d957506301ffc9a760e01b6001600160e01b03198316146106d9565b6000600080516020612a9583398151915281611e75856119c8565b90506001600160a01b03841615611e9157611e91818587612291565b6001600160a01b03811615611ed157611eae600086600080611a02565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b03861615611f02576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b600080516020612a758339815191526000611f7e84610eb0565b60008481526001840160209081526040808320546001600160a01b03891684529186905290912091925090818314611fd8576000838152602082815260408083205485845281842081905583526001870190915290208290555b6000948552600190930160209081526040808620869055928552929092528220919091555050565b600080516020612ad583398151915254600080516020612a758339815191529060009061202f90600190612825565b600084815260038401602052604081205460028501805493945090928490811061205b5761205b61289d565b906000526020600020015490508084600201838154811061207e5761207e61289d565b6000918252602080832090910192909255828152600386019091526040808220849055868252812055600284018054806120ba576120ba612a42565b600190038181906000526020600020016000905590555050505050565b600080516020612a75833981519152600060016120f385610eb0565b6120fd9190612825565b6001600160a01b0390941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b6001600160a01b03821661215c57604051633250574960e11b8152600060048201526024016107cd565b600061216a838360006113e6565b90506001600160a01b03811615610928576040516339e3563760e11b8152600060048201526024016107cd565b806001600160a01b03163b6000036121cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016107cd565b600080516020612ab583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516122199190612a58565b600060405180830381855af49150503d8060008114612254576040519150601f19603f3d011682016040523d82523d6000602084013e612259565b606091505b50915091506122698583836122f5565b95945050505050565b34156115e85760405163b398979f60e01b815260040160405180910390fd5b61229c838383612351565b610928576001600160a01b0383166122ca57604051637e27328960e01b8152600481018290526024016107cd565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016107cd565b60608261230a57612305826123b6565b611039565b815115801561232157506001600160a01b0384163b155b1561234a57604051639996b31560e01b81526001600160a01b03851660048201526024016107cd565b5080611039565b60006001600160a01b038316158015906113f35750826001600160a01b0316846001600160a01b0316148061238b575061238b84846112f5565b806113f35750826001600160a01b03166123a48361139f565b6001600160a01b031614949350505050565b8051156123c65780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6001600160e01b03198116811461140557600080fd5b60006020828403121561240757600080fd5b8135611039816123df565b60005b8381101561242d578181015183820152602001612415565b50506000910152565b6000815180845261244e816020860160208601612412565b601f01601f19169290920160200192915050565b6020815260006110396020830184612436565b60006020828403121561248757600080fd5b5035919050565b6001600160a01b038116811461140557600080fd5b600080604083850312156124b657600080fd5b82356124c18161248e565b946020939093013593505050565b6000806000606084860312156124e457600080fd5b83356124ef8161248e565b925060208401356124ff8161248e565b929592945050506040919091013590565b60006020828403121561252257600080fd5b81356110398161248e565b6000806040838503121561254057600080fd5b8235915060208301356125528161248e565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261258457600080fd5b813567ffffffffffffffff8082111561259f5761259f61255d565b604051601f8301601f19908116603f011681019082821181831017156125c7576125c761255d565b816040528381528660208588010111156125e057600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561261357600080fd5b823561261e8161248e565b9150602083013567ffffffffffffffff81111561263a57600080fd5b61264685828601612573565b9150509250929050565b6000806040838503121561266357600080fd5b823561266e8161248e565b91506020830135801515811461255257600080fd5b6000806000806080858703121561269957600080fd5b84356126a48161248e565b935060208501356126b48161248e565b925060408501359150606085013567ffffffffffffffff8111156126d757600080fd5b6126e387828801612573565b91505092959194509250565b60008060008060008060c0878903121561270857600080fd5b86356127138161248e565b955060208701356127238161248e565b945060408701356127338161248e565b935060608701356127438161248e565b925060808701356127538161248e565b915060a08701356127638161248e565b809150509295509295509295565b6000806040838503121561278457600080fd5b823561278f8161248e565b915060208301356125528161248e565b600181811c908216806127b357607f821691505b6020821081036127d357634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156127eb57600080fd5b5051919050565b60006020828403121561280457600080fd5b81516110398161248e565b634e487b7160e01b600052601160045260246000fd5b818103818111156106d9576106d961280f565b60008261285557634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176106d9576106d961280f565b808201808211156106d9576106d961280f565b6000600182016128965761289661280f565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600083516128c5818460208801612412565b8351908301906128d9818360208801612412565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061291590830184612436565b9695505050505050565b60006020828403121561293157600080fd5b8151611039816123df565b601f82111561092857600081815260208120601f850160051c810160208610156129635750805b601f850160051c820191505b818110156118ed5782815560010161296f565b815167ffffffffffffffff81111561299c5761299c61255d565b6129b0816129aa845461279f565b8461293c565b602080601f8311600181146129e557600084156129cd5750858301515b600019600386901b1c1916600185901b1785556118ed565b600085815260208120601f198616915b82811015612a14578886015182559484019460019091019084016129f5565b5085821015612a325787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b60008251612a6a818460208701612412565b919091019291505056fe645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0202dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220cf149416f0a5f7aef11f754f6064e64c880750e59f76bbd7042ab19091d6deb564736f6c63430008140033