[ { "inputs": [ { "internalType": "uint256", "name": "initialSupply", "type": "uint256" } ], "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": "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": "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": "uint256", "name": "_amount", "type": "uint256" } ], "name": "burn", "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": [ { "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": "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" } ]
61016060405234801562000011575f80fd5b50604051620016b6380380620016b6833981016040819052620000349162000392565b6040518060400160405280600581526020016425b4b232b760d91b81525080604051806040016040528060018152602001603160f81b8152506040518060400160405280600581526020016425a4a222a760d91b8152506040518060400160405280600581526020016425a4a222a760d91b8152508160039081620000ba919062000448565b506004620000c9828262000448565b50620000db91508390506005620001a9565b61012052620000ec816006620001a9565b61014052815160208084019190912060e052815190820120610100524660a0526200017960e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250620001a2336200019c83670de0b6b3a764000062000528565b620001e1565b50620005ca565b5f602083511015620001c857620001c08362000221565b9050620001db565b81620001d5848262000448565b5060ff90505b92915050565b6001600160a01b038216620002105760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6200021d5f838362000263565b5050565b5f80829050601f815111156200024e578260405163305a27a960e01b815260040162000207919062000542565b80516200025b8262000590565b179392505050565b6001600160a01b03831662000291578060025f828254620002859190620005b4565b90915550620003039050565b6001600160a01b0383165f9081526020819052604090205481811015620002e55760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640162000207565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821662000321576002805482900390556200033f565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200038591815260200190565b60405180910390a3505050565b5f60208284031215620003a3575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620003d357607f821691505b602082108103620003f257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200044357805f5260205f20601f840160051c810160208510156200041f5750805b601f840160051c820191505b8181101562000440575f81556001016200042b565b50505b505050565b81516001600160401b03811115620004645762000464620003aa565b6200047c81620004758454620003be565b84620003f8565b602080601f831160018114620004b2575f84156200049a5750858301515b5f19600386901b1c1916600185901b1785556200050c565b5f85815260208120601f198616915b82811015620004e257888601518255948401946001909101908401620004c1565b50858210156200050057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620001db57620001db62000514565b5f602080835283518060208501525f5b81811015620005705785810183015185820160400152820162000552565b505f604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620003f2575f1960209190910360031b1b16919050565b80820180821115620001db57620001db62000514565b60805160a05160c05160e05161010051610120516101405161109a6200061c5f395f6107d301525f6107a601525f61071701525f6106ef01525f61064a01525f61067401525f61069e015261109a5ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806370a082311161008857806395d89b411161006357806395d89b41146101d1578063a9059cbb146101d9578063d505accf146101ec578063dd62ed3e146101ff575f80fd5b806370a082311461017b5780637ecebe00146101a357806384b0196e146101b6575f80fd5b806323b872dd116100c357806323b872dd1461013c578063313ce5671461014f5780633644e5151461015e57806342966c6814610166575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f80fd5b6100f1610237565b6040516100fe9190610de3565b60405180910390f35b61011a610115366004610e17565b6102c7565b60405190151581526020016100fe565b6002545b6040519081526020016100fe565b61011a61014a366004610e3f565b6102e0565b604051601281526020016100fe565b61012e610303565b610179610174366004610e78565b610311565b005b61012e610189366004610e8f565b6001600160a01b03165f9081526020819052604090205490565b61012e6101b1366004610e8f565b61031e565b6101be61033b565b6040516100fe9796959493929190610ea8565b6100f1610399565b61011a6101e7366004610e17565b6103a8565b6101796101fa366004610f5b565b6103b5565b61012e61020d366004610fc8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b60606003805461024690610ff9565b80601f016020809104026020016040519081016040528092919081815260200182805461027290610ff9565b80156102bd5780601f10610294576101008083540402835291602001916102bd565b820191905f5260205f20905b8154815290600101906020018083116102a057829003601f168201915b5050505050905090565b5f336102d4818585610522565b60019150505b92915050565b5f336102ed858285610534565b6102f88585856105c8565b506001949350505050565b5f61030c61063e565b905090565b61031b3382610767565b50565b6001600160a01b0381165f908152600760205260408120546102da565b5f6060805f805f606061034c61079f565b6103546107cc565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b60606004805461024690610ff9565b5f336102d48185856105c8565b834211156103f7576040517f62791302000000000000000000000000000000000000000000000000000000008152600481018590526024015b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886104428c6001600160a01b03165f90815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61049c826107f9565b90505f6104ab82878787610840565b9050896001600160a01b0316816001600160a01b03161461050b576040517f4b800e460000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301528b1660248201526044016103ee565b6105168a8a8a610522565b50505050505050505050565b61052f838383600161086c565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146105c257818110156105b4576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016103ee565b6105c284848484035f61086c565b50505050565b6001600160a01b0383166105f157604051634b637e8f60e11b81525f60048201526024016103ee565b6001600160a01b038216610633576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016103ee565b61052f838383610970565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561069657507f000000000000000000000000000000000000000000000000000000000000000046145b156106c057507f000000000000000000000000000000000000000000000000000000000000000090565b61030c604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b03821661079057604051634b637e8f60e11b81525f60048201526024016103ee565b61079b825f83610970565b5050565b606061030c7f00000000000000000000000000000000000000000000000000000000000000006005610aaf565b606061030c7f00000000000000000000000000000000000000000000000000000000000000006006610aaf565b5f6102da61080561063e565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b5f805f8061085088888888610b58565b9250925092506108608282610c20565b50909695505050505050565b6001600160a01b0384166108ae576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016103ee565b6001600160a01b0383166108f0576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016103ee565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156105c257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161096291815260200190565b60405180910390a350505050565b6001600160a01b03831661099a578060025f82825461098f9190611031565b90915550610a239050565b6001600160a01b0383165f9081526020819052604090205481811015610a05576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260248101829052604481018390526064016103ee565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610a3f57600280548290039055610a5d565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610aa291815260200190565b60405180910390a3505050565b606060ff8314610ac957610ac283610d23565b90506102da565b818054610ad590610ff9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0190610ff9565b8015610b4c5780601f10610b2357610100808354040283529160200191610b4c565b820191905f5260205f20905b815481529060010190602001808311610b2f57829003601f168201915b505050505090506102da565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610b9157505f91506003905082610c16565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610be2573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610c0d57505f925060019150829050610c16565b92505f91508190505b9450945094915050565b5f826003811115610c3357610c33611050565b03610c3c575050565b6001826003811115610c5057610c50611050565b03610c87576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115610c9b57610c9b611050565b03610cd5576040517ffce698f7000000000000000000000000000000000000000000000000000000008152600481018290526024016103ee565b6003826003811115610ce957610ce9611050565b0361079b576040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600481018290526024016103ee565b60605f610d2f83610d60565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f8111156102da576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81518084525f5b81811015610dc457602081850181015186830182015201610da8565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610df56020830184610da0565b9392505050565b80356001600160a01b0381168114610e12575f80fd5b919050565b5f8060408385031215610e28575f80fd5b610e3183610dfc565b946020939093013593505050565b5f805f60608486031215610e51575f80fd5b610e5a84610dfc565b9250610e6860208501610dfc565b9150604084013590509250925092565b5f60208284031215610e88575f80fd5b5035919050565b5f60208284031215610e9f575f80fd5b610df582610dfc565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e06020840152610ee460e084018a610da0565b8381036040850152610ef6818a610da0565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015610f4957835183529284019291840191600101610f2d565b50909c9b505050505050505050505050565b5f805f805f805f60e0888a031215610f71575f80fd5b610f7a88610dfc565b9650610f8860208901610dfc565b95506040880135945060608801359350608088013560ff81168114610fab575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610fd9575f80fd5b610fe283610dfc565b9150610ff060208401610dfc565b90509250929050565b600181811c9082168061100d57607f821691505b60208210810361102b57634e487b7160e01b5f52602260045260245ffd5b50919050565b808201808211156102da57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52602160045260245ffdfea2646970667358221220a78e40a12342f5cd71f4531edbb807f3e566e60c8ee33a156d87bc6c1f92777064736f6c63430008180033000000000000000000000000000000000000000000000000000000003b9aca00