[ { "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": [ { "internalType": "address", "name": "_init", "type": "address" } ], "name": "init", "outputs": [], "stateMutability": "nonpayable", "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" } ]
608060405234801561000f575f80fd5b50336040518060400160405280600781526020017f464c49434b4c45000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f464c49434b4c4500000000000000000000000000000000000000000000000000815250816004908161008c9190610878565b50806005908161009c9190610878565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361010f575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101069190610986565b60405180910390fd5b61011e8161015e60201b60201c565b506101593361013161022160201b60201c565b600a61013d9190610b07565b655af3107a400061014e9190610b51565b61022960201b60201c565b610c7f565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610299575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016102909190610986565b60405180910390fd5b720758493cdee20f16997db387ec4bbc7fa9a085607902601060010202805f525f60205260405f20720758493cdee20f16997db387ec4bbc7fa9a085815550506102ea5f83836102ee60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361033e578060035f8282546103329190610b92565b9250508190555061040c565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156103c7578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016103be93929190610bd4565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610453578060035f828254039250508190555061054a565b610f2060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546104dc9190610b92565b1061050057620bd2236109e3826104f39190610b51565b6104fd9190610c36565b90505b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b60e460025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054036105d457610f2060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516106319190610c66565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806106b957607f821691505b6020821081036106cc576106cb610675565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261072e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826106f3565b61073886836106f3565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61077c61077761077284610750565b610759565b610750565b9050919050565b5f819050919050565b61079583610762565b6107a96107a182610783565b8484546106ff565b825550505050565b5f90565b6107bd6107b1565b6107c881848461078c565b505050565b5b818110156107eb576107e05f826107b5565b6001810190506107ce565b5050565b601f82111561083057610801816106d2565b61080a846106e4565b81016020851015610819578190505b61082d610825856106e4565b8301826107cd565b50505b505050565b5f82821c905092915050565b5f6108505f1984600802610835565b1980831691505092915050565b5f6108688383610841565b9150826002028217905092915050565b6108818261063e565b67ffffffffffffffff81111561089a57610899610648565b5b6108a482546106a2565b6108af8282856107ef565b5f60209050601f8311600181146108e0575f84156108ce578287015190505b6108d8858261085d565b86555061093f565b601f1984166108ee866106d2565b5f5b82811015610915578489015182556001820191506020850194506020810190506108f0565b86831015610932578489015161092e601f891682610841565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61097082610947565b9050919050565b61098081610966565b82525050565b5f6020820190506109995f830184610977565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610a21578086048111156109fd576109fc61099f565b5b6001851615610a0c5780820291505b8081029050610a1a856109cc565b94506109e1565b94509492505050565b5f82610a395760019050610af4565b81610a46575f9050610af4565b8160018114610a5c5760028114610a6657610a95565b6001915050610af4565b60ff841115610a7857610a7761099f565b5b8360020a915084821115610a8f57610a8e61099f565b5b50610af4565b5060208310610133831016604e8410600b8410161715610aca5782820a905083811115610ac557610ac461099f565b5b610af4565b610ad784848460016109d8565b92509050818404811115610aee57610aed61099f565b5b81810290505b9392505050565b5f60ff82169050919050565b5f610b1182610750565b9150610b1c83610afb565b9250610b497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610a2a565b905092915050565b5f610b5b82610750565b9150610b6683610750565b9250828202610b7481610750565b91508282048414831517610b8b57610b8a61099f565b5b5092915050565b5f610b9c82610750565b9150610ba783610750565b9250828201905080821115610bbf57610bbe61099f565b5b92915050565b610bce81610750565b82525050565b5f606082019050610be75f830186610977565b610bf46020830185610bc5565b610c016040830184610bc5565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610c4082610750565b9150610c4b83610750565b925082610c5b57610c5a610c09565b5b828204905092915050565b5f602082019050610c795f830184610bc5565b92915050565b61133d80610c8c5f395ff3fe608060405234801561000f575f80fd5b50600436106100cd575f3560e01c806370a082311161008a57806395d89b411161006457806395d89b41146101ff578063a9059cbb1461021d578063dd62ed3e1461024d578063f2fde38b1461027d576100cd565b806370a08231146101a7578063715018a6146101d75780638da5cb5b146101e1576100cd565b806306fdde03146100d1578063095ea7b3146100ef57806318160ddd1461011f57806319ab453c1461013d57806323b872dd14610159578063313ce56714610189575b5f80fd5b6100d9610299565b6040516100e69190610f18565b60405180910390f35b61010960048036038101906101049190610fc9565b610329565b6040516101169190611021565b60405180910390f35b6101276103e2565b6040516101349190611049565b60405180910390f35b61015760048036038101906101529190611062565b6103eb565b005b610173600480360381019061016e919061108d565b610436565b6040516101809190611021565b60405180910390f35b610191610464565b60405161019e91906110f8565b60405180910390f35b6101c160048036038101906101bc9190611062565b61046c565b6040516101ce9190611049565b60405180910390f35b6101df6104b1565b005b6101e96104c4565b6040516101f69190611120565b60405180910390f35b6102076104ec565b6040516102149190610f18565b60405180910390f35b61023760048036038101906102329190610fc9565b61057c565b6040516102449190611021565b60405180910390f35b61026760048036038101906102629190611139565b61059e565b6040516102749190611049565b60405180910390f35b61029760048036038101906102929190611062565b610620565b005b6060600480546102a8906111a4565b80601f01602080910402602001604051908101604052809291908181526020018280546102d4906111a4565b801561031f5780601f106102f65761010080835404028352916020019161031f565b820191905f5260205f20905b81548152906001019060200180831161030257829003601f168201915b5050505050905090565b5f806103336106a4565b905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036103cc578260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6103d78185856106ab565b600191505092915050565b5f600354905090565b6103f36106bd565b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f806104406106a4565b905061044d858285610744565b6104588585856107d6565b60019150509392505050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6104b96106bd565b6104c25f6108c6565b565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546104fb906111a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610527906111a4565b80156105725780601f1061054957610100808354040283529160200191610572565b820191905f5260205f20905b81548152906001019060200180831161055557829003601f168201915b5050505050905090565b5f806105866106a4565b90506105938185856107d6565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6106286106bd565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610698575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161068f9190611120565b60405180910390fd5b6106a1816108c6565b50565b5f33905090565b6106b88383836001610989565b505050565b6106c56106a4565b73ffffffffffffffffffffffffffffffffffffffff166106e36104c4565b73ffffffffffffffffffffffffffffffffffffffff1614610742576107066106a4565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016107399190611120565b60405180910390fd5b565b5f61074f848461059e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107d057818110156107c1578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016107b8939291906111d4565b60405180910390fd5b6107cf84848484035f610989565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610846575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161083d9190611120565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108b6575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016108ad9190611120565b60405180910390fd5b6108c1838383610b58565b505050565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036109f9575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016109f09190611120565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a69575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610a609190611120565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610b52578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b499190611049565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ba8578060035f828254610b9c9190611236565b92505081905550610c76565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610c31578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610c28939291906111d4565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cbd578060035f8282540392505081905550610db4565b610f2060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d469190611236565b10610d6a57620bd2236109e382610d5d9190611269565b610d6791906112d7565b90505b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b60e460025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403610e3e57610f2060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e9b9190611049565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610eea82610ea8565b610ef48185610eb2565b9350610f04818560208601610ec2565b610f0d81610ed0565b840191505092915050565b5f6020820190508181035f830152610f308184610ee0565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f6582610f3c565b9050919050565b610f7581610f5b565b8114610f7f575f80fd5b50565b5f81359050610f9081610f6c565b92915050565b5f819050919050565b610fa881610f96565b8114610fb2575f80fd5b50565b5f81359050610fc381610f9f565b92915050565b5f8060408385031215610fdf57610fde610f38565b5b5f610fec85828601610f82565b9250506020610ffd85828601610fb5565b9150509250929050565b5f8115159050919050565b61101b81611007565b82525050565b5f6020820190506110345f830184611012565b92915050565b61104381610f96565b82525050565b5f60208201905061105c5f83018461103a565b92915050565b5f6020828403121561107757611076610f38565b5b5f61108484828501610f82565b91505092915050565b5f805f606084860312156110a4576110a3610f38565b5b5f6110b186828701610f82565b93505060206110c286828701610f82565b92505060406110d386828701610fb5565b9150509250925092565b5f60ff82169050919050565b6110f2816110dd565b82525050565b5f60208201905061110b5f8301846110e9565b92915050565b61111a81610f5b565b82525050565b5f6020820190506111335f830184611111565b92915050565b5f806040838503121561114f5761114e610f38565b5b5f61115c85828601610f82565b925050602061116d85828601610f82565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806111bb57607f821691505b6020821081036111ce576111cd611177565b5b50919050565b5f6060820190506111e75f830186611111565b6111f4602083018561103a565b611201604083018461103a565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61124082610f96565b915061124b83610f96565b925082820190508082111561126357611262611209565b5b92915050565b5f61127382610f96565b915061127e83610f96565b925082820261128c81610f96565b915082820484148315176112a3576112a2611209565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6112e182610f96565b91506112ec83610f96565b9250826112fc576112fb6112aa565b5b82820490509291505056fea2646970667358221220c8820bd593e5411b2515ff225a20b218d83a61efc30bff1190ca1f1ce81c331464736f6c63430008190033