[ { "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": "amount", "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": "startTrading", "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": "amount", "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" } ]
60c06040526005608090815264537075636960d81b60a0526008906100249082610657565b50604080518082019091526005815264535055434960d81b602082015260099061004e9082610657565b5061005b6012600a61080c565b61006a906461f313f880610821565b600a55348015610078575f80fd5b503360088054610087906105d4565b80601f01602080910402602001604051908101604052809291908181526020018280546100b3906105d4565b80156100fe5780601f106100d5576101008083540402835291602001916100fe565b820191905f5260205f20905b8154815290600101906020018083116100e157829003601f168201915b505050505060098054610110906105d4565b80601f016020809104026020016040519081016040528092919081815260200182805461013c906105d4565b80156101875780601f1061015e57610100808354040283529160200191610187565b820191905f5260205f20905b81548152906001019060200180831161016a57829003601f168201915b5050505050816003908161019b9190610657565b5060046101a88282610657565b5050506001600160a01b0381166101d957604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101e281610224565b50335f818152600660205260408082208054600160ff1991821681179092553084529190922080549091169091179055600a5461021f9190610275565b61084b565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b03821661029e5760405163ec442f0560e01b81525f60048201526024016101d0565b6102a95f83836102ad565b5050565b325f9081526006602052604090205460ff16156102d4576102cf83838361049a565b505050565b600c54600160a01b900460ff1661031c5760405162461bcd60e51b815260206004820152600c60248201526b13dc195b881b9bdd081e595d60a21b60448201526064016101d0565b600c546001600160a01b03838116911614801561034257506001600160a01b0383163014155b156103d2576001600160a01b0383165f908152600760205260409020543a11801561038357506001600160a01b0383165f9081526007602052604090205415155b156103d25760405162461bcd60e51b815260206004820152602c60248201525f8051602061152183398151915260448201526b040e8e4c2dce6cccae440e8f60a31b60648201526084016101d0565b600c546001600160a01b038381169116148015906103fe5750600c546001600160a01b03848116911614155b15610493576001600160a01b0383165f908152600760205260409020543a11801561043f57506001600160a01b0383165f9081526007602052604090205415155b156104935760405162461bcd60e51b815260206004820152603160248201525f80516020611521833981519152604482015270040e8e4c2dce6cccae440cce4deda40e8f607b1b60648201526084016101d0565b6102cf8383835b6001600160a01b0383166104c4578060025f8282546104b99190610838565b909155506105349050565b6001600160a01b0383165f90815260208190526040902054818110156105165760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016101d0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166105505760028054829003905561056e565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105b391815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806105e857607f821691505b60208210810361060657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156102cf57805f5260205f20601f840160051c810160208510156106315750805b601f840160051c820191505b81811015610650575f815560010161063d565b5050505050565b81516001600160401b03811115610670576106706105c0565b6106848161067e84546105d4565b8461060c565b602080601f8311600181146106b7575f84156106a05750858301515b5f19600386901b1c1916600185901b17855561070e565b5f85815260208120601f198616915b828110156106e5578886015182559484019460019091019084016106c6565b508582101561070257878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561076457815f190482111561074a5761074a610716565b8085161561075757918102915b93841c939080029061072f565b509250929050565b5f8261077a57506001610806565b8161078657505f610806565b816001811461079c57600281146107a6576107c2565b6001915050610806565b60ff8411156107b7576107b7610716565b50506001821b610806565b5060208310610133831016604e8410600b84101617156107e5575081810a610806565b6107ef838361072a565b805f190482111561080257610802610716565b0290505b92915050565b5f61081a60ff84168361076c565b9392505050565b808202811582820484141761080657610806610716565b8082018082111561080657610806610716565b610cc9806108585f395ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c806370a082311161008857806395d89b411161006357806395d89b4114610199578063a9059cbb146101a1578063dd62ed3e146101b4578063f2fde38b146101ec575f80fd5b806370a082311461014e578063715018a6146101765780638da5cb5b1461017e575f80fd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063293230b814610135578063313ce5671461013f575b5f80fd5b6100d76101ff565b6040516100e49190610b17565b60405180910390f35b6101006100fb366004610b60565b61028f565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b610100610130366004610b8a565b6102d7565b61013d610315565b005b604051601281526020016100e4565b61011461015c366004610bc8565b6001600160a01b03165f9081526020819052604090205490565b61013d610504565b6005546040516001600160a01b0390911681526020016100e4565b6100d7610517565b6101006101af366004610b60565b610526565b6101146101c2366004610bea565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61013d6101fa366004610bc8565b610533565b60606008805461020e90610c21565b80601f016020809104026020016040519081016040528092919081815260200182805461023a90610c21565b80156102855780601f1061025c57610100808354040283529160200191610285565b820191905f5260205f20905b81548152906001019060200180831161026857829003601f168201915b5050505050905090565b335f9081526006602052604081205460ff16156102c1576001600160a01b0383165f9081526007602052604090208290555b6102cb8383610575565b50600190505b92915050565b335f9081526006602052604081205460ff16156102fe576102f9848484610582565b61030b565b6103098484846106a8565b505b5060019392505050565b61031d6106cb565b600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561037f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a39190610c59565b6001600160a01b031663e6a4390530600b5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610402573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104269190610c59565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610470573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104949190610c59565b600c80547367ed2093c4a9aaf49963f13d4bdc5b042f7152bd5f5260066020527f5c539039ea5b3aa39599abbba758fb68d8682a09f45d82c90819c38e8caa2ba7805460ff191660011790556001600160a81b0319166001600160a01b039290921691909117600160a01b179055565b61050c6106cb565b6105155f6106f8565b565b60606009805461020e90610c21565b5f3361030b818585610749565b61053b6106cb565b6001600160a01b03811661056957604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610572816106f8565b50565b5f3361030b8185856107ab565b6001600160a01b0383166105ac578060025f8282546105a19190610c74565b9091555061061c9050565b6001600160a01b0383165f90815260208190526040902054818110156105fe5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610560565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661063857600280548290039055610656565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161069b91815260200190565b60405180910390a3505050565b5f336106b58582856107b8565b6106c0858585610749565b506001949350505050565b6005546001600160a01b031633146105155760405163118cdaa760e01b8152336004820152602401610560565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b03831661077257604051634b637e8f60e11b81525f6004820152602401610560565b6001600160a01b03821661079b5760405163ec442f0560e01b81525f6004820152602401610560565b6107a6838383610833565b505050565b6107a68383836001610a45565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461082d578181101561081f57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610560565b61082d84848484035f610a45565b50505050565b325f9081526006602052604090205460ff1615610855576107a6838383610582565b600c54600160a01b900460ff1661089d5760405162461bcd60e51b815260206004820152600c60248201526b13dc195b881b9bdd081e595d60a21b6044820152606401610560565b600c546001600160a01b0383811691161480156108c357506001600160a01b0383163014155b15610966576001600160a01b0383165f908152600760205260409020543a11801561090457506001600160a01b0383165f9081526007602052604090205415155b156109665760405162461bcd60e51b815260206004820152602c60248201527f4578636565647320746865205f74726164696e67436f756e74646f776e206f6e60448201526b040e8e4c2dce6cccae440e8f60a31b6064820152608401610560565b600c546001600160a01b038381169116148015906109925750600c546001600160a01b03848116911614155b15610a3a576001600160a01b0383165f908152600760205260409020543a1180156109d357506001600160a01b0383165f9081526007602052604090205415155b15610a3a5760405162461bcd60e51b815260206004820152603160248201527f4578636565647320746865205f74726164696e67436f756e74646f776e206f6e604482015270040e8e4c2dce6cccae440cce4deda40e8f607b1b6064820152608401610560565b6107a6838383610582565b6001600160a01b038416610a6e5760405163e602df0560e01b81525f6004820152602401610560565b6001600160a01b038316610a9757604051634a1406b160e11b81525f6004820152602401610560565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561082d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b0991815260200190565b60405180910390a350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610572575f80fd5b5f8060408385031215610b71575f80fd5b8235610b7c81610b4c565b946020939093013593505050565b5f805f60608486031215610b9c575f80fd5b8335610ba781610b4c565b92506020840135610bb781610b4c565b929592945050506040919091013590565b5f60208284031215610bd8575f80fd5b8135610be381610b4c565b9392505050565b5f8060408385031215610bfb575f80fd5b8235610c0681610b4c565b91506020830135610c1681610b4c565b809150509250929050565b600181811c90821680610c3557607f821691505b602082108103610c5357634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215610c69575f80fd5b8151610be381610b4c565b808201808211156102d157634e487b7160e01b5f52601160045260245ffdfea2646970667358221220f69e0f9f458a7f7537887184cd9ed8b648cafed965b3511aaa3132721489a36464736f6c634300081900334578636565647320746865205f74726164696e67436f756e74646f776e206f6e