[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "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": [ { "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": [ { "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": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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" } ]
608060405234801562000010575f80fd5b50336040518060400160405280600681526020017f4e656f6e582000000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4e656f6e5820000000000000000000000000000000000000000000000000000081525081600390816200008f919062000851565b508060049081620000a1919062000851565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000117575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200010e919062000978565b60405180910390fd5b62000128816200014d60201b60201c565b5062000147336b02da67a93d8826f6383800006200021060201b60201c565b62000b87565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000283575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200027a919062000978565b60405180910390fd5b620002965f83836200029a60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620002f157620002e5816002546200052960201b90919060201c565b600281905550620003d4565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156200037d578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200037493929190620009a4565b60405180910390fd5b6200039282826200058b60201b90919060201c565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200042b576200041f816002546200058b60201b90919060201c565b600281905550620004bd565b6200047c815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546200052960201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200051c9190620009df565b60405180910390a3505050565b5f80828462000539919062000a27565b90508381101562000581576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005789062000abf565b60405180910390fd5b8091505092915050565b5f82821115620005d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005c99062000b2d565b60405180910390fd5b5f8284620005e1919062000b4d565b90508091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200066957607f821691505b6020821081036200067f576200067e62000624565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006e37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006a6565b620006ef8683620006a6565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000739620007336200072d8462000707565b62000710565b62000707565b9050919050565b5f819050919050565b620007548362000719565b6200076c620007638262000740565b848454620006b2565b825550505050565b5f90565b6200078262000774565b6200078f81848462000749565b505050565b5b81811015620007b657620007aa5f8262000778565b60018101905062000795565b5050565b601f8211156200080557620007cf8162000685565b620007da8462000697565b81016020851015620007ea578190505b62000802620007f98562000697565b83018262000794565b50505b505050565b5f82821c905092915050565b5f620008275f19846008026200080a565b1980831691505092915050565b5f62000841838362000816565b9150826002028217905092915050565b6200085c82620005ed565b67ffffffffffffffff811115620008785762000877620005f7565b5b62000884825462000651565b62000891828285620007ba565b5f60209050601f831160018114620008c7575f8415620008b2578287015190505b620008be858262000834565b8655506200092d565b601f198416620008d78662000685565b5f5b828110156200090057848901518255600182019150602085019450602081019050620008d9565b868310156200092057848901516200091c601f89168262000816565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620009608262000935565b9050919050565b620009728162000954565b82525050565b5f6020820190506200098d5f83018462000967565b92915050565b6200099e8162000707565b82525050565b5f606082019050620009b95f83018662000967565b620009c8602083018562000993565b620009d7604083018462000993565b949350505050565b5f602082019050620009f45f83018462000993565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000a338262000707565b915062000a408362000707565b925082820190508082111562000a5b5762000a5a620009fa565b5b92915050565b5f82825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f62000aa7601b8362000a61565b915062000ab48262000a71565b602082019050919050565b5f6020820190508181035f83015262000ad88162000a99565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f7700005f82015250565b5f62000b15601e8362000a61565b915062000b228262000adf565b602082019050919050565b5f6020820190508181035f83015262000b468162000b07565b9050919050565b5f62000b598262000707565b915062000b668362000707565b925082820390508181111562000b815762000b80620009fa565b5b92915050565b61129b8062000b955f395ff3fe608060405234801561000f575f80fd5b50600436106100b2575f3560e01c8063715018a61161006f578063715018a6146101a05780638da5cb5b146101aa57806395d89b41146101c8578063a9059cbb146101e6578063dd62ed3e14610216578063f2fde38b14610246576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce5671461015257806370a0823114610170575b5f80fd5b6100be610262565b6040516100cb9190610e11565b60405180910390f35b6100ee60048036038101906100e99190610ec2565b6102f2565b6040516100fb9190610f1a565b60405180910390f35b61010c610314565b6040516101199190610f42565b60405180910390f35b61013c60048036038101906101379190610f5b565b61031d565b6040516101499190610f1a565b60405180910390f35b61015a61034b565b6040516101679190610fc6565b60405180910390f35b61018a60048036038101906101859190610fdf565b610353565b6040516101979190610f42565b60405180910390f35b6101a8610398565b005b6101b26103ab565b6040516101bf9190611019565b60405180910390f35b6101d06103d3565b6040516101dd9190610e11565b60405180910390f35b61020060048036038101906101fb9190610ec2565b610463565b60405161020d9190610f1a565b60405180910390f35b610230600480360381019061022b9190611032565b610485565b60405161023d9190610f42565b60405180910390f35b610260600480360381019061025b9190610fdf565b610507565b005b6060600380546102719061109d565b80601f016020809104026020016040519081016040528092919081815260200182805461029d9061109d565b80156102e85780601f106102bf576101008083540402835291602001916102e8565b820191905f5260205f20905b8154815290600101906020018083116102cb57829003601f168201915b5050505050905090565b5f806102fc61058b565b9050610309818585610592565b600191505092915050565b5f600254905090565b5f8061032761058b565b90506103348582856105a4565b61033f858585610646565b60019150509392505050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6103a0610736565b6103a95f6107bd565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546103e29061109d565b80601f016020809104026020016040519081016040528092919081815260200182805461040e9061109d565b80156104595780601f1061043057610100808354040283529160200191610459565b820191905f5260205f20905b81548152906001019060200180831161043c57829003601f168201915b5050505050905090565b5f8061046d61058b565b905061047a818585610646565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61050f610736565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361057f575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016105769190611019565b60405180910390fd5b610588816107bd565b50565b5f33905090565b61059f8383836001610880565b505050565b5f6105af8484610485565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106405781811015610621578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610618939291906110cd565b60405180910390fd5b61063f84846106398585610a4f90919063ffffffff16565b5f610880565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106b6575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016106ad9190611019565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610726575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161071d9190611019565b60405180910390fd5b610731838383610aac565b505050565b61073e61058b565b73ffffffffffffffffffffffffffffffffffffffff1661075c6103ab565b73ffffffffffffffffffffffffffffffffffffffff16146107bb5761077f61058b565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016107b29190611019565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036108f0575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016108e79190611019565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610960575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016109579190611019565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610a49578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a409190610f42565b60405180910390a35b50505050565b5f82821115610a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8a9061114c565b60405180910390fd5b5f8284610aa09190611197565b90508091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610aff57610af481600254610d2a90919063ffffffff16565b600281905550610bdd565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610b88578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610b7f939291906110cd565b60405180910390fd5b610b9b8282610a4f90919063ffffffff16565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c3057610c2581600254610a4f90919063ffffffff16565b600281905550610cc0565b610c7f815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d2a90919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d1d9190610f42565b60405180910390a3505050565b5f808284610d3891906111ca565b905083811015610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7490611247565b60405180910390fd5b8091505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610dbe578082015181840152602081019050610da3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610de382610d87565b610ded8185610d91565b9350610dfd818560208601610da1565b610e0681610dc9565b840191505092915050565b5f6020820190508181035f830152610e298184610dd9565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e5e82610e35565b9050919050565b610e6e81610e54565b8114610e78575f80fd5b50565b5f81359050610e8981610e65565b92915050565b5f819050919050565b610ea181610e8f565b8114610eab575f80fd5b50565b5f81359050610ebc81610e98565b92915050565b5f8060408385031215610ed857610ed7610e31565b5b5f610ee585828601610e7b565b9250506020610ef685828601610eae565b9150509250929050565b5f8115159050919050565b610f1481610f00565b82525050565b5f602082019050610f2d5f830184610f0b565b92915050565b610f3c81610e8f565b82525050565b5f602082019050610f555f830184610f33565b92915050565b5f805f60608486031215610f7257610f71610e31565b5b5f610f7f86828701610e7b565b9350506020610f9086828701610e7b565b9250506040610fa186828701610eae565b9150509250925092565b5f60ff82169050919050565b610fc081610fab565b82525050565b5f602082019050610fd95f830184610fb7565b92915050565b5f60208284031215610ff457610ff3610e31565b5b5f61100184828501610e7b565b91505092915050565b61101381610e54565b82525050565b5f60208201905061102c5f83018461100a565b92915050565b5f806040838503121561104857611047610e31565b5b5f61105585828601610e7b565b925050602061106685828601610e7b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806110b457607f821691505b6020821081036110c7576110c6611070565b5b50919050565b5f6060820190506110e05f83018661100a565b6110ed6020830185610f33565b6110fa6040830184610f33565b949350505050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f7700005f82015250565b5f611136601e83610d91565b915061114182611102565b602082019050919050565b5f6020820190508181035f8301526111638161112a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6111a182610e8f565b91506111ac83610e8f565b92508282039050818111156111c4576111c361116a565b5b92915050565b5f6111d482610e8f565b91506111df83610e8f565b92508282019050808211156111f7576111f661116a565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f611231601b83610d91565b915061123c826111fd565b602082019050919050565b5f6020820190508181035f83015261125e81611225565b905091905056fea2646970667358221220157722c282569859b6a87a5c958b848dacad31102d103888f5ec2b138281f58964736f6c63430008180033