[ { "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" }, { "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": "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": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferWithLog", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561000f575f5ffd5b506040518060400160405280600a81526020017f43686565736562616c6c000000000000000000000000000000000000000000008152506040518060400160405280600a81526020017f43686565736562616c6c00000000000000000000000000000000000000000000815250816003908161008b91906105df565b50806004908161009b91906105df565b5050505f6b0d92317d0be89d0fee40000090506100be338261010460201b60201c565b5f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506107c3565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610174575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161016b91906106ed565b60405180910390fd5b6101855f838361018960201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036101d9578060025f8282546101cd9190610733565b925050819055506102a7565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610262578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161025993929190610775565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102ee578060025f8282540392505081905550610338565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161039591906107aa565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061041d57607f821691505b6020821081036104305761042f6103d9565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610457565b61049c8683610457565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6104e06104db6104d6846104b4565b6104bd565b6104b4565b9050919050565b5f819050919050565b6104f9836104c6565b61050d610505826104e7565b848454610463565b825550505050565b5f5f905090565b610524610515565b61052f8184846104f0565b505050565b5b81811015610552576105475f8261051c565b600181019050610535565b5050565b601f8211156105975761056881610436565b61057184610448565b81016020851015610580578190505b61059461058c85610448565b830182610534565b50505b505050565b5f82821c905092915050565b5f6105b75f198460080261059c565b1980831691505092915050565b5f6105cf83836105a8565b9150826002028217905092915050565b6105e8826103a2565b67ffffffffffffffff811115610601576106006103ac565b5b61060b8254610406565b610616828285610556565b5f60209050601f831160018114610647575f8415610635578287015190505b61063f85826105c4565b8655506106a6565b601f19841661065586610436565b5f5b8281101561067c57848901518255600182019150602085019450602081019050610657565b868310156106995784890151610695601f8916826105a8565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106d7826106ae565b9050919050565b6106e7816106cd565b82525050565b5f6020820190506107005f8301846106de565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61073d826104b4565b9150610748836104b4565b92508282019050808211156107605761075f610706565b5b92915050565b61076f816104b4565b82525050565b5f6060820190506107885f8301866106de565b6107956020830185610766565b6107a26040830184610766565b949350505050565b5f6020820190506107bd5f830184610766565b92915050565b611509806107d05f395ff3fe608060405234801561000f575f5ffd5b50600436106100b2575f3560e01c806370a082311161006f57806370a08231146101a05780638da5cb5b146101d057806395d89b41146101ee578063a9059cbb1461020c578063dd62ed3e1461023c578063f2fde38b1461026c576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce567146101525780633f96b8c114610170575b5f5ffd5b6100be610288565b6040516100cb9190610f21565b60405180910390f35b6100ee60048036038101906100e99190610fd2565b610318565b6040516100fb919061102a565b60405180910390f35b61010c61033a565b6040516101199190611052565b60405180910390f35b61013c6004803603810190610137919061106b565b610343565b604051610149919061102a565b60405180910390f35b61015a61047e565b60405161016791906110d6565b60405180910390f35b61018a60048036038101906101859190610fd2565b610486565b604051610197919061102a565b60405180910390f35b6101ba60048036038101906101b591906110ef565b6105ba565b6040516101c79190611052565b60405180910390f35b6101d86105ff565b6040516101e59190611129565b60405180910390f35b6101f6610624565b6040516102039190610f21565b60405180910390f35b61022660048036038101906102219190610fd2565b6106b4565b604051610233919061102a565b60405180910390f35b61025660048036038101906102519190611142565b610783565b6040516102639190611052565b60405180910390f35b610286600480360381019061028191906110ef565b610805565b005b606060038054610297906111ad565b80601f01602080910402602001604051908101604052809291908181526020018280546102c3906111ad565b801561030e5780601f106102e55761010080835404028352916020019161030e565b820191905f5260205f20905b8154815290600101906020018083116102f157829003601f168201915b5050505050905090565b5f5f6103226109c0565b905061032f8185856109c7565b600191505092915050565b5f600254905090565b5f61034e8433610783565b821115610390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038790611227565b60405180910390fd5b610399846105ba565b8211156103db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d29061128f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610449576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610440906112f7565b60405180910390fd5b6104548484846109d9565b6104738433846104648833610783565b61046e9190611342565b6109c7565b600190509392505050565b5f6012905090565b5f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ec906112f7565b60405180910390fd5b6104fe336105ba565b821115610540576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105379061128f565b60405180910390fd5b61054b3384846109d9565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105a89190611052565b60405180910390a36001905092915050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054610633906111ad565b80601f016020809104026020016040519081016040528092919081815260200182805461065f906111ad565b80156106aa5780601f10610681576101008083540402835291602001916106aa565b820191905f5260205f20905b81548152906001019060200180831161068d57829003601f168201915b5050505050905090565b5f6106be336105ba565b821115610700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f79061128f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361076e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610765906112f7565b60405180910390fd5b6107793384846109d9565b6001905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086a906113bf565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f99061144d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b6109d48383836001610ac9565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a49575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610a409190611129565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ab9575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610ab09190611129565b60405180910390fd5b610ac4838383610c98565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b39575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610b309190611129565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ba9575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610ba09190611129565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610c92578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c899190611052565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ce8578060025f828254610cdc919061146b565b92505081905550610db6565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610d71578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610d689392919061149e565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dfd578060025f8282540392505081905550610e47565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ea49190611052565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610ef382610eb1565b610efd8185610ebb565b9350610f0d818560208601610ecb565b610f1681610ed9565b840191505092915050565b5f6020820190508181035f830152610f398184610ee9565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f6e82610f45565b9050919050565b610f7e81610f64565b8114610f88575f5ffd5b50565b5f81359050610f9981610f75565b92915050565b5f819050919050565b610fb181610f9f565b8114610fbb575f5ffd5b50565b5f81359050610fcc81610fa8565b92915050565b5f5f60408385031215610fe857610fe7610f41565b5b5f610ff585828601610f8b565b925050602061100685828601610fbe565b9150509250929050565b5f8115159050919050565b61102481611010565b82525050565b5f60208201905061103d5f83018461101b565b92915050565b61104c81610f9f565b82525050565b5f6020820190506110655f830184611043565b92915050565b5f5f5f6060848603121561108257611081610f41565b5b5f61108f86828701610f8b565b93505060206110a086828701610f8b565b92505060406110b186828701610fbe565b9150509250925092565b5f60ff82169050919050565b6110d0816110bb565b82525050565b5f6020820190506110e95f8301846110c7565b92915050565b5f6020828403121561110457611103610f41565b5b5f61111184828501610f8b565b91505092915050565b61112381610f64565b82525050565b5f60208201905061113c5f83018461111a565b92915050565b5f5f6040838503121561115857611157610f41565b5b5f61116585828601610f8b565b925050602061117685828601610f8b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806111c457607f821691505b6020821081036111d7576111d6611180565b5b50919050565b7f496e73756666696369656e7420616c6c6f77616e6365000000000000000000005f82015250565b5f611211601683610ebb565b915061121c826111dd565b602082019050919050565b5f6020820190508181035f83015261123e81611205565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f611279601483610ebb565b915061128482611245565b602082019050919050565b5f6020820190508181035f8301526112a68161126d565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373000000005f82015250565b5f6112e1601c83610ebb565b91506112ec826112ad565b602082019050919050565b5f6020820190508181035f83015261130e816112d5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61134c82610f9f565b915061135783610f9f565b925082820390508181111561136f5761136e611315565b5b92915050565b7f4e6577206f776e65722063616e6e6f74206265207a65726f20616464726573735f82015250565b5f6113a9602083610ebb565b91506113b482611375565b602082019050919050565b5f6020820190508181035f8301526113d68161139d565b9050919050565b7f4f6e6c79207468652063757272656e74206f776e65722063616e207472616e735f8201527f666572206f776e65727368697000000000000000000000000000000000000000602082015250565b5f611437602d83610ebb565b9150611442826113dd565b604082019050919050565b5f6020820190508181035f8301526114648161142b565b9050919050565b5f61147582610f9f565b915061148083610f9f565b925082820190508082111561149857611497611315565b5b92915050565b5f6060820190506114b15f83018661111a565b6114be6020830185611043565b6114cb6040830184611043565b94935050505056fea2646970667358221220cc77d2d84c047349604d2437d6ffa6ad2b0f105ea5ff5489d46f7117ca54b6c664736f6c634300081b0033