[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "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": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "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": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "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": 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" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "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": "bool", "name": "allGas", "type": "bool" } ], "name": "claimGas", "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": [], "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": "renounceOwnership", "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" } ]
61016060405234801562000011575f80fd5b5033604051806040016040528060058152602001644f68204e6f60d81b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060058152602001644f68204e6f60d81b815250604051806040016040528060048152602001634f484e4f60e01b815250816003908162000098919062000565565b506004620000a7828262000565565b50620000b99150839050600562000291565b61012052620000ca81600662000291565b61014052815160208084019190912060e052815190820120610100524660a0526200015760e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200019057604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6200019b81620002c9565b50620001c633620001af6012600a6200073e565b620001c0906402540be40062000755565b6200031a565b7343000000000000000000000000000000000000026001600160a01b0316634e606c476040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000213575f80fd5b505af115801562000226573d5f803e3d5ffd5b50506040516336b91f2b60e01b8152336004820152732536fe9ab3f511540f2f9e2ec2a805005c3dd80092506336b91f2b91506024015f604051808303815f87803b15801562000274575f80fd5b505af115801562000287573d5f803e3d5ffd5b50505050620007f7565b5f602083511015620002b057620002a88362000356565b9050620002c3565b81620002bd848262000565565b5060ff90505b92915050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620003455760405163ec442f0560e01b81525f600482015260240162000187565b620003525f838362000398565b5050565b5f80829050601f8151111562000383578260405163305a27a960e01b81526004016200018791906200076f565b80516200039082620007bd565b179392505050565b6001600160a01b038316620003c6578060025f828254620003ba9190620007e1565b90915550620004389050565b6001600160a01b0383165f90815260208190526040902054818110156200041a5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640162000187565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216620004565760028054829003905562000474565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004ba91815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620004f057607f821691505b6020821081036200050f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200056057805f5260205f20601f840160051c810160208510156200053c5750805b601f840160051c820191505b818110156200055d575f815560010162000548565b50505b505050565b81516001600160401b03811115620005815762000581620004c7565b6200059981620005928454620004db565b8462000515565b602080601f831160018114620005cf575f8415620005b75750858301515b5f19600386901b1c1916600185901b17855562000629565b5f85815260208120601f198616915b82811015620005ff57888601518255948401946001909101908401620005de565b50858210156200061d57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200068557815f190482111562000669576200066962000631565b808516156200067757918102915b93841c93908002906200064a565b509250929050565b5f826200069d57506001620002c3565b81620006ab57505f620002c3565b8160018114620006c45760028114620006cf57620006ef565b6001915050620002c3565b60ff841115620006e357620006e362000631565b50506001821b620002c3565b5060208310610133831016604e8410600b841016171562000714575081810a620002c3565b62000720838362000645565b805f190482111562000736576200073662000631565b029392505050565b5f6200074e60ff8416836200068d565b9392505050565b8082028115828204841417620002c357620002c362000631565b5f602080835283518060208501525f5b818110156200079d578581018301518582016040015282016200077f565b505f604082860101526040601f19601f8301168501019250505092915050565b805160208083015191908110156200050f575f1960209190910360031b1b16919050565b80820180821115620002c357620002c362000631565b60805160a05160c05160e051610100516101205161014051611558620008495f395f610b1b01525f610aee01525f6109ce01525f6109a601525f61090101525f61092b01525f61095501526115585ff3fe608060405234801561000f575f80fd5b5060043610610115575f3560e01c80637ecebe00116100ad578063a9059cbb1161007d578063d505accf11610063578063d505accf14610259578063dd62ed3e1461026c578063f2fde38b146102b1575f80fd5b8063a9059cbb14610233578063b943cbbb14610246575f80fd5b80637ecebe00146101d557806384b0196e146101e85780638da5cb5b1461020357806395d89b411461022b575f80fd5b8063313ce567116100e8578063313ce5671461017f5780633644e5151461018e57806370a0823114610196578063715018a6146101cb575f80fd5b806306fdde0314610119578063095ea7b31461013757806318160ddd1461015a57806323b872dd1461016c575b5f80fd5b6101216102c4565b60405161012e919061121d565b60405180910390f35b61014a61014536600461125e565b610354565b604051901515815260200161012e565b6002545b60405190815260200161012e565b61014a61017a366004611286565b61036d565b6040516012815260200161012e565b61015e610390565b61015e6101a43660046112bf565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b6101d361039e565b005b61015e6101e33660046112bf565b6103b1565b6101f06103db565b60405161012e97969594939291906112d8565b60085460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161012e565b610121610439565b61014a61024136600461125e565b610448565b6101d3610254366004611398565b610455565b6101d36102673660046113b7565b610552565b61015e61027a366004611424565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260016020908152604080832093909416825291909152205490565b6101d36102bf3660046112bf565b610700565b6060600380546102d390611455565b80601f01602080910402602001604051908101604052809291908181526020018280546102ff90611455565b801561034a5780601f106103215761010080835404028352916020019161034a565b820191905f5260205f20905b81548152906001019060200180831161032d57829003601f168201915b5050505050905090565b5f33610361818585610760565b60019150505b92915050565b5f3361037a858285610772565b61038585858561083f565b506001949350505050565b5f6103996108e8565b905090565b6103a6610a1e565b6103af5f610a71565b565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260076020526040812054610367565b5f6060805f805f60606103ec610ae7565b6103f4610b14565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6060600480546102d390611455565b5f3361036181858561083f565b61045d610a1e565b80156104f9576040517f954fa5ee0000000000000000000000000000000000000000000000000000000081523060048201523360248201527343000000000000000000000000000000000000029063954fa5ee906044015b6020604051808303815f875af11580156104d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f591906114a6565b5050565b6040517f662aa11d0000000000000000000000000000000000000000000000000000000081523060048201523360248201527343000000000000000000000000000000000000029063662aa11d906044016104b5565b50565b83421115610594576040517f62791302000000000000000000000000000000000000000000000000000000008152600481018590526024015b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105ec8c73ffffffffffffffffffffffffffffffffffffffff165f90815260076020526040902080546001810190915590565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61065382610b41565b90505f61066282878787610b88565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106e9576040517f4b800e4600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301528b16602482015260440161058b565b6106f48a8a8a610760565b50505050505050505050565b610708610a1e565b73ffffffffffffffffffffffffffffffffffffffff8116610757576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f600482015260240161058b565b61054f81610a71565b61076d8383836001610bb4565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610839578181101561082b576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018290526044810183905260640161058b565b61083984848484035f610bb4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661088e576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f600482015260240161058b565b73ffffffffffffffffffffffffffffffffffffffff82166108dd576040517fec442f050000000000000000000000000000000000000000000000000000000081525f600482015260240161058b565b61076d838383610cf9565b5f3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801561094d57507f000000000000000000000000000000000000000000000000000000000000000046145b1561097757507f000000000000000000000000000000000000000000000000000000000000000090565b610399604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60085473ffffffffffffffffffffffffffffffffffffffff1633146103af576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161058b565b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60606103997f00000000000000000000000000000000000000000000000000000000000000006005610ea0565b60606103997f00000000000000000000000000000000000000000000000000000000000000006006610ea0565b5f610367610b4d6108e8565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b5f805f80610b9888888888610f49565b925092509250610ba8828261103c565b50909695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416610c03576040517fe602df050000000000000000000000000000000000000000000000000000000081525f600482015260240161058b565b73ffffffffffffffffffffffffffffffffffffffff8316610c52576040517f94280d620000000000000000000000000000000000000000000000000000000081525f600482015260240161058b565b73ffffffffffffffffffffffffffffffffffffffff8085165f9081526001602090815260408083209387168352929052208290558015610839578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ceb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d30578060025f828254610d2591906114bd565b90915550610de09050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526020819052604090205481811015610db5576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602481018290526044810183905260640161058b565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610e0957600280548290039055610e34565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e9391815260200190565b60405180910390a3505050565b606060ff8314610eba57610eb38361113f565b9050610367565b818054610ec690611455565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef290611455565b8015610f3d5780601f10610f1457610100808354040283529160200191610f3d565b820191905f5260205f20905b815481529060010190602001808311610f2057829003601f168201915b50505050509050610367565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610f8257505f91506003905082611032565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610fd3573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661102957505f925060019150829050611032565b92505f91508190505b9450945094915050565b5f82600381111561104f5761104f6114f5565b03611058575050565b600182600381111561106c5761106c6114f5565b036110a3576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156110b7576110b76114f5565b036110f1576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240161058b565b6003826003811115611105576111056114f5565b036104f5576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240161058b565b60605f61114b8361117c565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f811115610367576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81518084525f5b818110156111e0576020818501810151868301820152016111c4565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61122f60208301846111bc565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611259575f80fd5b919050565b5f806040838503121561126f575f80fd5b61127883611236565b946020939093013593505050565b5f805f60608486031215611298575f80fd5b6112a184611236565b92506112af60208501611236565b9150604084013590509250925092565b5f602082840312156112cf575f80fd5b61122f82611236565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e0602084015261131460e084018a6111bc565b8381036040850152611326818a6111bc565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b818110156113865783518352928401929184019160010161136a565b50909c9b505050505050505050505050565b5f602082840312156113a8575f80fd5b8135801515811461122f575f80fd5b5f805f805f805f60e0888a0312156113cd575f80fd5b6113d688611236565b96506113e460208901611236565b95506040880135945060608801359350608088013560ff81168114611407575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215611435575f80fd5b61143e83611236565b915061144c60208401611236565b90509250929050565b600181811c9082168061146957607f821691505b6020821081036114a0577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f602082840312156114b6575f80fd5b5051919050565b80820180821115610367577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffdfea26469706673582212209b842ea49e08aa47ad8de98a8b911f83f424c355628e0300ce313a24efb04e0f64736f6c63430008180033