[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" } ], "name": "ERC1967InvalidImplementation", "type": "error" }, { "inputs": [], "name": "ERC1967NonPayable", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [], "name": "NotMinter", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "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": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "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": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "LogMint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isAllowed", "type": "bool" } ], "name": "LogSetIsMinter", "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": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "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": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "bool", "name": "isAllowed", "type": "bool" } ], "name": "setIsMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "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": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "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" } ]
60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051611e156100fd60003960008181610c6e01528181610c970152610dd80152611e156000f3fe60806040526004361061014b5760003560e01c8063715018a6116100b657806395d89b411161006f57806395d89b41146103c8578063a9059cbb146103dd578063ad3cb1cc146103fd578063d505accf1461042e578063dd62ed3e1461044e578063f2fde38b1461046e57600080fd5b8063715018a6146102e457806379cc6790146102f95780637ecebe001461031957806384b0196e146103395780638da5cb5b1461036157806390657147146103a857600080fd5b806340c10f191161010857806340c10f191461023a57806342966c681461025c5780634f1ef2861461027c57806352d1902d1461028f57806366eb399f146102a457806370a08231146102c457600080fd5b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101e9578063313ce567146102095780633644e51514610225575b600080fd5b34801561015c57600080fd5b5061016561048e565b6040516101729190611803565b60405180910390f35b34801561018757600080fd5b5061019b610196366004611832565b610537565b6040519015158152602001610172565b3480156101b757600080fd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b604051908152602001610172565b3480156101f557600080fd5b5061019b61020436600461185c565b610551565b34801561021557600080fd5b5060405160128152602001610172565b34801561023157600080fd5b506101db610577565b34801561024657600080fd5b5061025a610255366004611832565b610586565b005b34801561026857600080fd5b5061025a610277366004611898565b610607565b61025a61028a36600461193d565b610614565b34801561029b57600080fd5b506101db610633565b3480156102b057600080fd5b5061025a6102bf36600461199f565b610650565b3480156102d057600080fd5b506101db6102df3660046119db565b6106ae565b3480156102f057600080fd5b5061025a6106e1565b34801561030557600080fd5b5061025a610314366004611832565b6106f5565b34801561032557600080fd5b506101db6103343660046119db565b61070a565b34801561034557600080fd5b5061034e610715565b60405161017297969594939291906119f6565b34801561036d57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b039091168152602001610172565b3480156103b457600080fd5b5061025a6103c3366004611aaf565b6107c6565b3480156103d457600080fd5b506101656108eb565b3480156103e957600080fd5b5061019b6103f8366004611832565b61092a565b34801561040957600080fd5b50610165604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561043a57600080fd5b5061025a610449366004611b23565b610938565b34801561045a57600080fd5b506101db610469366004611b96565b610a91565b34801561047a57600080fd5b5061025a6104893660046119db565b610adb565b60606000600080516020611d808339815191525b90508060030180546104b390611bc9565b80601f01602080910402602001604051908101604052809291908181526020018280546104df90611bc9565b801561052c5780601f106105015761010080835404028352916020019161052c565b820191906000526020600020905b81548152906001019060200180831161050f57829003601f168201915b505050505091505090565b600033610545818585610b16565b60019150505b92915050565b60003361055f858285610b28565b61056a858585610b8e565b60019150505b9392505050565b6000610581610bed565b905090565b3360009081526020819052604090205460ff166105b657604051633e34a41b60e21b815260040160405180910390fd5b6105c08282610bf7565b816001600160a01b03167f9f494565851dbcb31fb5198ca217cda6833282fadb96ba9431bd19c82afc1dd3826040516105fb91815260200190565b60405180910390a25050565b6106113382610c2d565b50565b61061c610c63565b61062582610d08565b61062f8282610d10565b5050565b600061063d610dcd565b50600080516020611dc083398151915290565b610658610e16565b6001600160a01b03821660008181526020818152604091829020805460ff191685151590811790915591519182527f864c120baf84446175b013e5f72c6b05320f589b8fb1fb11548cf99597bcfa8a91016105fb565b600080600080516020611d808339815191525b6001600160a01b0390931660009081526020939093525050604090205490565b6106e9610e16565b6106f36000610e71565b565b610700823383610b28565b61062f8282610c2d565b600061054b82610ee2565b60006060808280808381600080516020611da0833981519152805490915015801561074257506001810154155b61078b5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b610793610f0b565b61079b610f4a565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff1660008115801561080c5750825b905060008267ffffffffffffffff1660011480156108295750303b155b905081158015610837575080155b156108555760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561087f57845460ff60401b1916600160401b1785555b6108898787610f62565b61089287610f74565b61089b88610f9f565b83156108e157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020611d80833981519152916104b390611bc9565b600033610545818585610b8e565b8342111561095c5760405163313c898160e11b815260048101859052602401610782565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886109c88c6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610a2382610fb0565b90506000610a3382878787610fdd565b9050896001600160a01b0316816001600160a01b031614610a7a576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610782565b610a858a8a8a610b16565b50505050505050505050565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b610ae3610e16565b6001600160a01b038116610b0d57604051631e4fbdf760e01b815260006004820152602401610782565b61061181610e71565b610b23838383600161100b565b505050565b6000610b348484610a91565b90506000198114610b885781811015610b7957604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610782565b610b888484848403600061100b565b50505050565b6001600160a01b038316610bb857604051634b637e8f60e11b815260006004820152602401610782565b6001600160a01b038216610be25760405163ec442f0560e01b815260006004820152602401610782565b610b238383836110f3565b6000610581611231565b6001600160a01b038216610c215760405163ec442f0560e01b815260006004820152602401610782565b61062f600083836110f3565b6001600160a01b038216610c5757604051634b637e8f60e11b815260006004820152602401610782565b61062f826000836110f3565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610cea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610cde600080516020611dc0833981519152546001600160a01b031690565b6001600160a01b031614155b156106f35760405163703e46dd60e11b815260040160405180910390fd5b610611610e16565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610d6a575060408051601f3d908101601f19168201909252610d6791810190611c03565b60015b610d9257604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610782565b600080516020611dc08339815191528114610dc357604051632a87526960e21b815260048101829052602401610782565b610b2383836112a5565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106f35760405163703e46dd60e11b815260040160405180910390fd5b33610e487f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146106f35760405163118cdaa760e01b8152336004820152602401610782565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006106c1565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1028054606091600080516020611da0833981519152916104b390611bc9565b60606000600080516020611da08339815191526104a2565b610f6a6112fb565b61062f8282611344565b610f7c6112fb565b61061181604051806040016040528060018152602001603160f81b815250611395565b610fa76112fb565b610611816113f6565b600061054b610fbd610bed565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610fef888888886113fe565b925092509250610fff82826114cd565b50909695505050505050565b600080516020611d808339815191526001600160a01b0385166110445760405163e602df0560e01b815260006004820152602401610782565b6001600160a01b03841661106e57604051634a1406b160e11b815260006004820152602401610782565b6001600160a01b038086166000908152600183016020908152604080832093881683529290522083905581156110ec57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516110e391815260200190565b60405180910390a35b5050505050565b600080516020611d808339815191526001600160a01b03841661112f57818160020160008282546111249190611c1c565b909155506111a19050565b6001600160a01b038416600090815260208290526040902054828110156111825760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610782565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b0383166111bf5760028101805483900390556111de565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161122391815260200190565b60405180910390a350505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61125c611586565b6112646115f0565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6112ae82611634565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156112f357610b238282611699565b61062f61170f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166106f357604051631afcd79f60e31b815260040160405180910390fd5b61134c6112fb565b600080516020611d808339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036113868482611c8d565b5060048101610b888382611c8d565b61139d6112fb565b600080516020611da08339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026113d78482611c8d565b50600381016113e68382611c8d565b5060008082556001909101555050565b610ae36112fb565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561143957506000915060039050826114c3565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561148d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114b9575060009250600191508290506114c3565b9250600091508190505b9450945094915050565b60008260038111156114e1576114e1611d4d565b036114ea575050565b60018260038111156114fe576114fe611d4d565b0361151c5760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561153057611530611d4d565b036115515760405163fce698f760e01b815260048101829052602401610782565b600382600381111561156557611565611d4d565b0361062f576040516335e2f38360e21b815260048101829052602401610782565b6000600080516020611da0833981519152816115a0610f0b565b8051909150156115b857805160209091012092915050565b815480156115c7579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b6000600080516020611da08339815191528161160a610f4a565b80519091501561162257805160209091012092915050565b600182015480156115c7579392505050565b806001600160a01b03163b60000361166a57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610782565b600080516020611dc083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516116b69190611d63565b600060405180830381855af49150503d80600081146116f1576040519150601f19603f3d011682016040523d82523d6000602084013e6116f6565b606091505b509150915061170685838361172e565b95945050505050565b34156106f35760405163b398979f60e01b815260040160405180910390fd5b6060826117435761173e8261178a565b610570565b815115801561175a57506001600160a01b0384163b155b1561178357604051639996b31560e01b81526001600160a01b0385166004820152602401610782565b5080610570565b80511561179a5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60005b838110156117ce5781810151838201526020016117b6565b50506000910152565b600081518084526117ef8160208601602086016117b3565b601f01601f19169290920160200192915050565b60208152600061057060208301846117d7565b80356001600160a01b038116811461182d57600080fd5b919050565b6000806040838503121561184557600080fd5b61184e83611816565b946020939093013593505050565b60008060006060848603121561187157600080fd5b61187a84611816565b925061188860208501611816565b9150604084013590509250925092565b6000602082840312156118aa57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156118e2576118e26118b1565b604051601f8501601f19908116603f0116810190828211818310171561190a5761190a6118b1565b8160405280935085815286868601111561192357600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561195057600080fd5b61195983611816565b9150602083013567ffffffffffffffff81111561197557600080fd5b8301601f8101851361198657600080fd5b611995858235602084016118c7565b9150509250929050565b600080604083850312156119b257600080fd5b6119bb83611816565b9150602083013580151581146119d057600080fd5b809150509250929050565b6000602082840312156119ed57600080fd5b61057082611816565b60ff60f81b881681526000602060e06020840152611a1760e084018a6117d7565b8381036040850152611a29818a6117d7565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611a7d57835183529284019291840191600101611a61565b50909c9b505050505050505050505050565b600082601f830112611aa057600080fd5b610570838335602085016118c7565b600080600060608486031215611ac457600080fd5b611acd84611816565b9250602084013567ffffffffffffffff80821115611aea57600080fd5b611af687838801611a8f565b93506040860135915080821115611b0c57600080fd5b50611b1986828701611a8f565b9150509250925092565b600080600080600080600060e0888a031215611b3e57600080fd5b611b4788611816565b9650611b5560208901611816565b95506040880135945060608801359350608088013560ff81168114611b7957600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611ba957600080fd5b611bb283611816565b9150611bc060208401611816565b90509250929050565b600181811c90821680611bdd57607f821691505b602082108103611bfd57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611c1557600080fd5b5051919050565b8082018082111561054b57634e487b7160e01b600052601160045260246000fd5b601f821115610b23576000816000526020600020601f850160051c81016020861015611c665750805b601f850160051c820191505b81811015611c8557828155600101611c72565b505050505050565b815167ffffffffffffffff811115611ca757611ca76118b1565b611cbb81611cb58454611bc9565b84611c3d565b602080601f831160018114611cf05760008415611cd85750858301515b600019600386901b1c1916600185901b178555611c85565b600085815260208120601f198616915b82811015611d1f57888601518255948401946001909101908401611d00565b5085821015611d3d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60008251611d758184602087016117b3565b919091019291505056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212208195d86701859c488d82bccb7ecd20c028a7006485b3c64020edaaa2f841d34164736f6c63430008190033