Address Contract Partially Verified
Address
0xD2c869382C7AC9f87Ff73548d029d67C0F9Dee31
Balance
0 ETH
Nonce
1
Code Size
13076 bytes
Creator
0x1e80f5f1...d4Ab at tx 0x9c026082...e327f0
Indexed Transactions
0
Contract Bytecode
13076 bytes
0x6080604052600436106102e05760003560e01c806352390c021161018457806395d89b41116100d6578063d49d51811161008a578063f2fde38b11610064578063f2fde38b14610846578063f375b25314610866578063f8b45b051461088657600080fd5b8063d49d5181146107ca578063dd62ed3e146107e0578063ea2f0b371461082657600080fd5b8063a9059cbb116100bb578063a9059cbb1461077f578063c9567bf91461079f578063d1475185146107b457600080fd5b806395d89b411461074a578063a457c2d71461075f57600080fd5b806370a082311161013857806388f820201161011257806388f82020146106d35780638da5cb5b1461070c5780638ee88c531461072a57600080fd5b806370a0823114610689578063715018a6146106a95780638203f5fe146106be57600080fd5b8063610d5b1911610169578063610d5b191461061a578063638b1b14146106535780636bc87c3a1461067357600080fd5b806352390c02146105c15780635342acb4146105e157600080fd5b8063313ce5671161023d5780633bd5d173116101f157806345596e2e116101cb57806345596e2e146105615780634680ff351461058157806349bd5a5e146105a157600080fd5b80633bd5d17314610501578063437823ec146105215780634549b0391461054157600080fd5b80633685d419116102225780633685d419146104ab57806339509351146104cb5780633b124fe7146104eb57600080fd5b8063313ce56714610469578063362a3c5d1461048b57600080fd5b806318160ddd1161029457806327c8f8351161027957806327c8f835146103f557806329b1c15c146104295780632d8381191461044957600080fd5b806318160ddd146103c057806323b872dd146103d557600080fd5b8063095ea7b3116102c5578063095ea7b31461033957806313114a9d146103695780631694505e1461038857600080fd5b8063061c82d0146102ec57806306fdde031461030e57600080fd5b366102e757005b600080fd5b3480156102f857600080fd5b5061030c610307366004612f53565b61089c565b005b34801561031a57600080fd5b506103236108ee565b6040516103309190612f6c565b60405180910390f35b34801561034557600080fd5b50610359610354366004612fd2565b610980565b6040519015158152602001610330565b34801561037557600080fd5b50600e545b604051908152602001610330565b34801561039457600080fd5b50601b546103a8906001600160a01b031681565b6040516001600160a01b039091168152602001610330565b3480156103cc57600080fd5b50600c5461037a565b3480156103e157600080fd5b506103596103f0366004612ffe565b610997565b34801561040157600080fd5b506103a87f000000000000000000000000000000000000000000000000000000000000dead81565b34801561043557600080fd5b5061030c61044436600461303f565b610a00565b34801561045557600080fd5b5061037a610464366004612f53565b610a6a565b34801561047557600080fd5b5060115460405160ff9091168152602001610330565b34801561049757600080fd5b5061030c6104a636600461303f565b610b01565b3480156104b757600080fd5b5061030c6104c636600461303f565b610ccc565b3480156104d757600080fd5b506103596104e6366004612fd2565b610e76565b3480156104f757600080fd5b5061037a60135481565b34801561050d57600080fd5b5061030c61051c366004612f53565b610eac565b34801561052d57600080fd5b5061030c61053c36600461303f565b610fa9565b34801561054d57600080fd5b5061037a61055c36600461305c565b611015565b34801561056d57600080fd5b5061030c61057c366004612f53565b6110a4565b34801561058d57600080fd5b5061030c61059c366004612f53565b6110f1565b3480156105ad57600080fd5b50601c546103a8906001600160a01b031681565b3480156105cd57600080fd5b5061030c6105dc36600461303f565b61113e565b3480156105ed57600080fd5b506103596105fc36600461303f565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561062657600080fd5b5061035961063536600461303f565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561065f57600080fd5b506003546103a8906001600160a01b031681565b34801561067f57600080fd5b5061037a60155481565b34801561069557600080fd5b5061037a6106a436600461303f565b6112af565b3480156106b557600080fd5b5061030c61130e565b3480156106ca57600080fd5b5061030c6113a0565b3480156106df57600080fd5b506103596106ee36600461303f565b6001600160a01b03166000908152600a602052604090205460ff1690565b34801561071857600080fd5b506000546001600160a01b03166103a8565b34801561073657600080fd5b5061030c610745366004612f53565b6115e1565b34801561075657600080fd5b5061032361162e565b34801561076b57600080fd5b5061035961077a366004612fd2565b61163d565b34801561078b57600080fd5b5061035961079a366004612fd2565b61168c565b3480156107ab57600080fd5b5061030c611699565b3480156107c057600080fd5b5061037a60175481565b3480156107d657600080fd5b5061037a60001981565b3480156107ec57600080fd5b5061037a6107fb366004613091565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561083257600080fd5b5061030c61084136600461303f565b611724565b34801561085257600080fd5b5061030c61086136600461303f565b61178d565b34801561087257600080fd5b5061030c61088136600461303f565b6118ac565b34801561089257600080fd5b5061037a60125481565b6000546001600160a01b031633146108e95760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064015b60405180910390fd5b601355565b6060600f80546108fd906130bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610929906130bf565b80156109765780601f1061094b57610100808354040283529160200191610976565b820191906000526020600020905b81548152906001019060200180831161095957829003601f168201915b5050505050905090565b600061098d338484611a2f565b5060015b92915050565b60006109a4848484611b87565b6109f684336109f185604051806060016040528060288152602001613272602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190612027565b611a2f565b5060019392505050565b6000546001600160a01b03163314610a485760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000600d54821115610ae45760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e730000000000000000000000000000000000000000000060648201526084016108e0565b6000610aee612061565b9050610afa8382612084565b9392505050565b6000546001600160a01b03163314610b495760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b6001600160a01b03811660009081526007602052604090205460ff16610bb15760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c697374656400000000000060448201526064016108e0565b60005b600854811015610cc857816001600160a01b031660088281548110610bdb57610bdb6130f9565b6000918252602090912001546001600160a01b031603610cb65760088054610c0590600190613125565b81548110610c1557610c156130f9565b600091825260209091200154600880546001600160a01b039092169183908110610c4157610c416130f9565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600790915260409020805460ff191690556008805480610c9057610c90613138565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610cc08161314e565b915050610bb4565b5050565b6000546001600160a01b03163314610d145760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b6001600160a01b0381166000908152600a602052604090205460ff16610d7c5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108e0565b60005b600b54811015610cc857816001600160a01b0316600b8281548110610da657610da66130f9565b6000918252602090912001546001600160a01b031603610e6457600b8054610dd090600190613125565b81548110610de057610de06130f9565b600091825260209091200154600b80546001600160a01b039092169183908110610e0c57610e0c6130f9565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600a90925220805460ff19169055600b805480610c9057610c90613138565b80610e6e8161314e565b915050610d7f565b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161098d9185906109f190866120c6565b336000818152600a602052604090205460ff1615610f325760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201527f6869732066756e6374696f6e000000000000000000000000000000000000000060648201526084016108e0565b6000610f3d83612125565b5050506001600160a01b038616600090815260046020526040902054939450610f6b93925084915050612180565b6001600160a01b038316600090815260046020526040902055600d54610f919082612180565b600d55600e54610fa190846120c6565b600e55505050565b6000546001600160a01b03163314610ff15760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6000600c548311156110695760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108e0565b8161108957600061107984612125565b5094965061099195505050505050565b600061109484612125565b5093965061099195505050505050565b6000546001600160a01b031633146110ec5760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b601955565b6000546001600160a01b031633146111395760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b601755565b6000546001600160a01b031633146111865760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b6001600160a01b0381166000908152600a602052604090205460ff16156111ef5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108e0565b6001600160a01b03811660009081526004602052604090205415611249576001600160a01b03811660009081526004602052604090205461122f90610a6a565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6001600160a01b0381166000908152600a602052604081205460ff16156112ec57506001600160a01b031660009081526005602052604090205490565b6001600160a01b03821660009081526004602052604090205461099190610a6a565b6000546001600160a01b031633146113565760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113e85760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561143f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114639190613167565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d49190613167565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155d9190613167565b601c80546001600160a01b03199081166001600160a01b0393841617909155601b805482169383169390931790925560008054909116815260096020526040808220805460ff19908116600190811790925530845291909220805490911690911790556003805490911673fee18884a9abd2cddc4fe80310c306836b66c37f179055565b6000546001600160a01b031633146116295760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b601555565b6060601080546108fd906130bf565b600061098d33846109f1856040518060600160405280602581526020016132ba602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190612027565b600061098d338484611b87565b6000546001600160a01b031633146116e15760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b600060158190556013556004601755601c80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16600160a81b17905542601a55565b6000546001600160a01b0316331461176c5760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b031633146117d55760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b6001600160a01b0381166118515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016108e0565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118f45760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b6001600160a01b038116737a250d5630b4cf539739df2c5dacb4c659f2488d036119605760405162461bcd60e51b815260206004820152601b60248201527f57652063616e6e6f7420626c61636b6c69737420556e6973776170000000000060448201526064016108e0565b6001600160a01b03811660009081526007602052604090205460ff16156119c95760405162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c6973746564000060448201526064016108e0565b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b038316611aaa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016108e0565b6001600160a01b038216611b265760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016108e0565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611c035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016108e0565b6001600160a01b038216611c7f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016108e0565b60008111611cf55760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016108e0565b6001600160a01b03821660009081526007602052604090205460ff1615611d5e5760405162461bcd60e51b815260206004820152601760248201527f596f752068617665206e6f20706f77657220686572652100000000000000000060448201526064016108e0565b3360009081526007602052604090205460ff1615611dbe5760405162461bcd60e51b815260206004820152601760248201527f596f752068617665206e6f20706f77657220686572652100000000000000000060448201526064016108e0565b601c546001600160a01b038481169116148015611de95750601b546001600160a01b03838116911614155b8015611e0e57506001600160a01b03821660009081526009602052604090205460ff16155b15611edb57601c54600160a81b900460ff16611e6c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e000000000000000060448201526064016108e0565b601a544203611edb576001600160a01b0382166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b03191690911790555b6000611ee6306112af565b601c54909150600160a01b900460ff16158015611f0c5750601c54600160a81b900460ff165b8015611f255750601c546001600160a01b038481169116145b15611f97578015611f9757601954601c54611f6091606491611f5a9190611f54906001600160a01b03166112af565b906121c2565b90612084565b811115611f8e57601954601c54611f8b91606491611f5a9190611f54906001600160a01b03166112af565b90505b611f9781612260565b601c546000906001600160a01b0386811691161480611fc35750601c546001600160a01b038581169116145b801561200b57506001600160a01b03851660009081526009602052604090205460ff168061200957506001600160a01b03841660009081526009602052604090205460ff165b155b15612014575060015b6120208585858461229d565b5050505050565b6000818484111561204b5760405162461bcd60e51b81526004016108e09190612f6c565b5060006120588486613125565b95945050505050565b600080600061206e6123ce565b909250905061207d8282612084565b9250505090565b6000610afa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612550565b6000806120d38385613184565b905083811015610afa5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108e0565b600080600080600080600080600080600061213f8c61257e565b935093509350935060008060006121608f87878761215b612061565b6125d1565b919f509d509b509599509397509195509350505050919395979092949650565b6000610afa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612027565b6000826000036121d457506000610991565b60006121e08385613197565b9050826121ed85836131ae565b14610afa5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f770000000000000000000000000000000000000000000000000000000000000060648201526084016108e0565b601c805460ff60a01b1916600160a01b17905561227c81612633565b47801561228c5761228c476127f8565b5050601c805460ff60a01b19169055565b806122aa576122aa612832565b6001600160a01b0384166000908152600a602052604090205460ff1680156122eb57506001600160a01b0383166000908152600a602052604090205460ff16155b15612300576122fb848484612877565b6123ac565b6001600160a01b0384166000908152600a602052604090205460ff1615801561234157506001600160a01b0383166000908152600a602052604090205460ff165b15612351576122fb848484612a49565b6001600160a01b0384166000908152600a602052604090205460ff16801561239157506001600160a01b0383166000908152600a602052604090205460ff165b156123a1576122fb848484612b91565b6123ac848484612ca3565b806123c8576123c8601454601355601654601555601854601755565b50505050565b600d54600c546000918291825b600b54811015612520578260046000600b84815481106123fd576123fd6130f9565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061246857508160056000600b8481548110612441576124416130f9565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561247e57600d54600c54945094505050509091565b6124c460046000600b8481548110612498576124986130f9565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612180565b925061250c60056000600b84815481106124e0576124e06130f9565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612180565b9150806125188161314e565b9150506123db565b50600c54600d5461253091612084565b82101561254757600d54600c549350935050509091565b90939092509050565b600081836125715760405162461bcd60e51b81526004016108e09190612f6c565b50600061205884866131ae565b600080600080600061258f86612d86565b9050600061259c87612da2565b905060006125a988612dbe565b905060006125c1836125bb8b87612180565b90612180565b9993985091965094509092505050565b60008080806125e089866121c2565b905060006125ee89876121c2565b905060006125fc89886121c2565b9050600061260a89896121c2565b9050600061261e826125bb85818989612180565b949d949c50929a509298505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612668576126686130f9565b6001600160a01b03928316602091820292909201810191909152601b54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156126da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fe9190613167565b81600181518110612711576127116130f9565b6001600160a01b039283166020918202929092010152601b546127379130911684611a2f565b601b546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac94790612789908590600090869030904290600401613214565b600060405180830381600087803b1580156127a357600080fd5b505af11580156127b7573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516127ec929190613250565b60405180910390a15050565b6003546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610cc8573d6000803e3d6000fd5b6013541580156128425750601554155b801561284e5750601754155b1561285557565b6013805460145560158054601655601780546018556000928390559082905555565b600080600080600080600061288b88612125565b965096509650965096509650965060006128a48a6112af565b905060006128b282876120c6565b9050601254811180156128d35750601c546001600160a01b038c8116911614155b156129375760405162461bcd60e51b815260206004820152602e60248201527f5472616e7366657220616d6f756e74206578636565647320746865204d61782060448201526d2bb0b63632ba1030b6b7bab73a1760911b60648201526084016108e0565b6001600160a01b038c1660009081526005602052604090205461295a908b612180565b6001600160a01b038d16600090815260056020908152604080832093909355600490522054612989908a612180565b6001600160a01b03808e1660009081526004602052604080822093909355908d16815220546129b890896120c6565b6001600160a01b038c166000908152600460205260409020556129da84612dda565b6129e48786612e63565b6129ee8c84612e87565b8a6001600160a01b03168c6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef88604051612a3391815260200190565b60405180910390a3505050505050505050505050565b6000806000806000806000612a5d88612125565b96509650965096509650965096506000612a768a6112af565b90506000612a8482876120c6565b905060125481118015612aa55750601c546001600160a01b038c8116911614155b15612b095760405162461bcd60e51b815260206004820152602e60248201527f5472616e7366657220616d6f756e74206578636565647320746865204d61782060448201526d2bb0b63632ba1030b6b7bab73a1760911b60648201526084016108e0565b6001600160a01b038c16600090815260046020526040902054612b2c908a612180565b6001600160a01b03808e16600090815260046020908152604080832094909455918e16815260059091522054612b6290876120c6565b6001600160a01b038c166000908152600560209081526040808320939093556004905220546129b890896120c6565b6000806000806000806000612ba588612125565b96509650965096509650965096506000612bbe8a6112af565b90506000612bcc82876120c6565b905060125481118015612bed5750601c546001600160a01b038c8116911614155b15612c515760405162461bcd60e51b815260206004820152602e60248201527f5472616e7366657220616d6f756e74206578636565647320746865204d61782060448201526d2bb0b63632ba1030b6b7bab73a1760911b60648201526084016108e0565b6001600160a01b038c16600090815260056020526040902054612c74908b612180565b6001600160a01b038d16600090815260056020908152604080832093909355600490522054612b2c908a612180565b6000806000806000806000612cb788612125565b96509650965096509650965096506000612cd08a6112af565b90506000612cde82876120c6565b905060125481118015612cff5750601c546001600160a01b038c8116911614155b15612d635760405162461bcd60e51b815260206004820152602e60248201527f5472616e7366657220616d6f756e74206578636565647320746865204d61782060448201526d2bb0b63632ba1030b6b7bab73a1760911b60648201526084016108e0565b6001600160a01b038c16600090815260046020526040902054612989908a612180565b60006109916064611f5a601354856121c290919063ffffffff16565b60006109916064611f5a601554856121c290919063ffffffff16565b60006109916064611f5a601754856121c290919063ffffffff16565b6000612de4612061565b90506000612df283836121c2565b30600090815260046020526040902054909150612e0f90826120c6565b30600090815260046020908152604080832093909355600a9052205460ff1615612e5e5730600090815260056020526040902054612e4d90846120c6565b306000908152600560205260409020555b505050565b600d54612e709083612180565b600d55600e54612e8090826120c6565b600e555050565b6000612e91612061565b90506000612e9f8284613197565b30600090815260046020526040902054909150612ebd908290613184565b30600090815260046020908152604080832093909355600a9052205460ff1615612f0d5730600090815260056020526040902054612efc908490613184565b306000908152600560205260409020555b60405183815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b600060208284031215612f6557600080fd5b5035919050565b600060208083528351808285015260005b81811015612f9957858101830151858201604001528201612f7d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612fcf57600080fd5b50565b60008060408385031215612fe557600080fd5b8235612ff081612fba565b946020939093013593505050565b60008060006060848603121561301357600080fd5b833561301e81612fba565b9250602084013561302e81612fba565b929592945050506040919091013590565b60006020828403121561305157600080fd5b8135610afa81612fba565b6000806040838503121561306f57600080fd5b823591506020830135801515811461308657600080fd5b809150509250929050565b600080604083850312156130a457600080fd5b82356130af81612fba565b9150602083013561308681612fba565b600181811c908216806130d357607f821691505b6020821081036130f357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156109915761099161310f565b634e487b7160e01b600052603160045260246000fd5b6000600182016131605761316061310f565b5060010190565b60006020828403121561317957600080fd5b8151610afa81612fba565b808201808211156109915761099161310f565b80820281158282048414176109915761099161310f565b6000826131cb57634e487b7160e01b600052601260045260246000fd5b500490565b600081518084526020808501945080840160005b838110156132095781516001600160a01b0316875295820195908201906001016131e4565b509495945050505050565b85815284602082015260a06040820152600061323360a08301866131d0565b6001600160a01b0394909416606083015250608001529392505050565b82815260406020820152600061326960408301846131d0565b94935050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204360283a64c941461971128f2292d3253f30947ec05ad7d24dd3b0889fd0637a64736f6c63430008120033
Verified Source Code Partial Match
Compiler: v0.8.18+commit.87f61d96
EVM: paris
Optimization: Yes (1000 runs)
WagieBot.sol 1304 lines
/**
██╗ ██╗ █████╗ ██████╗ ██╗███████╗██████╗ ██████╗ ████████╗
██║ ██║██╔══██╗██╔════╝ ██║██╔════╝██╔══██╗██╔═══██╗╚══██╔══╝
██║ █╗ ██║███████║██║ ███╗██║█████╗ ██████╔╝██║ ██║ ██║
██║███╗██║██╔══██║██║ ██║██║██╔══╝ ██╔══██╗██║ ██║ ██║
╚███╔███╔╝██║ ██║╚██████╔╝██║███████╗██████╔╝╚██████╔╝ ██║
╚══╝╚══╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝╚══════╝╚═════╝ ╚═════╝ ╚═╝
Bringing Sniping, Tracking, Trading, Copy Trading and more directly to your Messaging Apps.
Bot: t.me/wagiebot
Website: wagiebot.com
Twitter: twitter.com/0xWagieBot
Portal: t.me/wagiebotportal
In active development since February 2023 and Stealth Launched on July 10th 2023. Full Development logs available.
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.18;
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IERC20 {
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
);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly {
codehash := extcodehash(account)
}
return (codehash != accountHash && codehash != 0x0);
}
function sendValue(address payable recipient, uint256 amount) internal {
require(
address(this).balance >= amount,
"Address: insufficient balance"
);
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{value: amount}("");
require(
success,
"Address: unable to send value, recipient may have reverted"
);
}
function functionCall(
address target,
bytes memory data
) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return _functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return
functionCallWithValue(
target,
data,
value,
"Address: low-level call with value failed"
);
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(
address(this).balance >= value,
"Address: insufficient balance for call"
);
return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(
address target,
bytes memory data,
uint256 weiValue,
string memory errorMessage
) private returns (bytes memory) {
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: weiValue}(
data
);
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
contract Ownable is Context {
address private _owner;
address private _previousOwner;
uint256 private _lockTime;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(
newOwner != address(0),
"Ownable: new owner is the zero address"
);
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
// pragma solidity >=0.5.0;
interface IUniswapV2Factory {
event PairCreated(
address indexed token0,
address indexed token1,
address pair,
uint
);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(
address tokenA,
address tokenB
) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(
address tokenA,
address tokenB
) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
// pragma solidity >=0.5.0;
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(
address owner,
address spender
) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(
address from,
address to,
uint value
) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(
address owner,
address spender,
uint value,
uint deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
event Burn(
address indexed sender,
uint amount0,
uint amount1,
address indexed to
);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves()
external
view
returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(
uint amount0Out,
uint amount1Out,
address to,
bytes calldata data
) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
// pragma solidity >=0.6.2;
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
)
external
payable
returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable returns (uint[] memory amounts);
function swapTokensForExactETH(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactTokensForETH(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapETHForExactTokens(
uint amountOut,
address[] calldata path,
address to,
uint deadline
) external payable returns (uint[] memory amounts);
function quote(
uint amountA,
uint reserveA,
uint reserveB
) external pure returns (uint amountB);
function getAmountOut(
uint amountIn,
uint reserveIn,
uint reserveOut
) external pure returns (uint amountOut);
function getAmountIn(
uint amountOut,
uint reserveIn,
uint reserveOut
) external pure returns (uint amountIn);
function getAmountsOut(
uint amountIn,
address[] calldata path
) external view returns (uint[] memory amounts);
function getAmountsIn(
uint amountOut,
address[] calldata path
) external view returns (uint[] memory amounts);
}
// pragma solidity >=0.6.2;
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract WagieBot is Context, IERC20, Ownable {
using SafeMath for uint256;
using Address for address;
address payable public developmentAddress =
payable(0xfEe18884A9ABd2CdDc4fe80310C306836B66C37F); // Development Address
address public immutable deadAddress =
0x000000000000000000000000000000000000dEaD;
mapping(address => uint256) private _rOwned;
mapping(address => uint256) private _tOwned;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => bool) private _isSniper;
address[] private _confirmedSnipers;
mapping(address => bool) private _isExcludedFromFee;
mapping(address => bool) private _isExcluded;
address[] private _excluded;
uint256 public constant MAX = ~uint256(0);
uint256 private _tTotal = 10_000_000 * 10 ** 9;
uint256 private _rTotal = (MAX - (MAX % _tTotal));
uint256 private _tFeeTotal;
string private _name = "WagieBot";
string private _symbol = "WagieBot";
uint8 private _decimals = 9;
uint256 public maxWallet = 200_000 * 10 ** 9;
uint256 public _taxFee;
uint256 private _previousTaxFee = _taxFee;
uint256 public _liquidityFee;
uint256 private _previousLiquidityFee = _liquidityFee;
uint256 public _developmentFee;
uint256 private _previousDevelopmentFee = _developmentFee;
uint256 private _feeRate = 2;
uint256 launchTime;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;
bool inSwapAndLiquify;
bool tradingOpen = false;
event SwapETHForTokens(uint256 amountIn, address[] path);
event SwapTokensForETH(uint256 amountIn, address[] path);
modifier lockTheSwap() {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
constructor() {
_rOwned[_msgSender()] = _rTotal;
emit Transfer(address(0), _msgSender(), _tTotal);
}
function initContract() external onlyOwner {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
);
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
uniswapV2Router = _uniswapV2Router;
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
developmentAddress = payable(
0xfEe18884A9ABd2CdDc4fe80310C306836B66C37F
);
}
function openTrading() external onlyOwner {
_liquidityFee = 0;
_taxFee = 0;
_developmentFee = 4;
tradingOpen = true;
launchTime = block.timestamp;
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
if (_isExcluded[account]) return _tOwned[account];
return tokenFromReflection(_rOwned[account]);
}
function transfer(
address recipient,
uint256 amount
) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(
address owner,
address spender
) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(
address spender,
uint256 amount
) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(
sender,
_msgSender(),
_allowances[sender][_msgSender()].sub(
amount,
"ERC20: transfer amount exceeds allowance"
)
);
return true;
}
function increaseAllowance(
address spender,
uint256 addedValue
) public virtual returns (bool) {
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender].add(addedValue)
);
return true;
}
function decreaseAllowance(
address spender,
uint256 subtractedValue
) public virtual returns (bool) {
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender].sub(
subtractedValue,
"ERC20: decreased allowance below zero"
)
);
return true;
}
function isExcludedFromReward(address account) public view returns (bool) {
return _isExcluded[account];
}
function totalFees() public view returns (uint256) {
return _tFeeTotal;
}
function deliver(uint256 tAmount) public {
address sender = _msgSender();
require(
!_isExcluded[sender],
"Excluded addresses cannot call this function"
);
(uint256 rAmount, , , , , , ) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rTotal = _rTotal.sub(rAmount);
_tFeeTotal = _tFeeTotal.add(tAmount);
}
function reflectionFromToken(
uint256 tAmount,
bool deductTransferFee
) public view returns (uint256) {
require(tAmount <= _tTotal, "Amount must be less than supply");
if (!deductTransferFee) {
(uint256 rAmount, , , , , , ) = _getValues(tAmount);
return rAmount;
} else {
(, uint256 rTransferAmount, , , , , ) = _getValues(tAmount);
return rTransferAmount;
}
}
function tokenFromReflection(
uint256 rAmount
) public view returns (uint256) {
require(
rAmount <= _rTotal,
"Amount must be less than total reflections"
);
uint256 currentRate = _getRate();
return rAmount.div(currentRate);
}
function excludeFromReward(address account) public onlyOwner {
require(!_isExcluded[account], "Account is already excluded");
if (_rOwned[account] > 0) {
_tOwned[account] = tokenFromReflection(_rOwned[account]);
}
_isExcluded[account] = true;
_excluded.push(account);
}
function includeInReward(address account) external onlyOwner {
require(_isExcluded[account], "Account is already excluded");
for (uint256 i = 0; i < _excluded.length; i++) {
if (_excluded[i] == account) {
_excluded[i] = _excluded[_excluded.length - 1];
_tOwned[account] = 0;
_isExcluded[account] = false;
_excluded.pop();
break;
}
}
}
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);
}
function _transfer(address from, address to, uint256 amount) private {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
require(!_isSniper[to], "You have no power here!");
require(!_isSniper[msg.sender], "You have no power here!");
// buy
if (
from == uniswapV2Pair &&
to != address(uniswapV2Router) &&
!_isExcludedFromFee[to]
) {
require(tradingOpen, "Trading not yet enabled.");
//antibot
if (block.timestamp == launchTime) {
_isSniper[to] = true;
_confirmedSnipers.push(to);
}
}
uint256 contractTokenBalance = balanceOf(address(this));
//sell
if (!inSwapAndLiquify && tradingOpen && to == uniswapV2Pair) {
if (contractTokenBalance > 0) {
if (
contractTokenBalance >
balanceOf(uniswapV2Pair).mul(_feeRate).div(100)
) {
contractTokenBalance = balanceOf(uniswapV2Pair)
.mul(_feeRate)
.div(100);
}
swapTokens(contractTokenBalance);
}
}
bool takeFee = false;
//take fee only on swaps
if (
(from == uniswapV2Pair || to == uniswapV2Pair) &&
!(_isExcludedFromFee[from] || _isExcludedFromFee[to])
) {
takeFee = true;
}
_tokenTransfer(from, to, amount, takeFee);
}
function swapTokens(uint256 contractTokenBalance) private lockTheSwap {
swapTokensForEth(contractTokenBalance);
//Send to Development address
uint256 contractETHBalance = address(this).balance;
if (contractETHBalance > 0) {
sendETHToFee(address(this).balance);
}
}
function sendETHToFee(uint256 amount) private {
developmentAddress.transfer(amount);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this), // The contract
block.timestamp
);
emit SwapTokensForETH(tokenAmount, path);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
owner(),
block.timestamp
);
}
function _tokenTransfer(
address sender,
address recipient,
uint256 amount,
bool takeFee
) private {
if (!takeFee) removeAllFee();
if (_isExcluded[sender] && !_isExcluded[recipient]) {
_transferFromExcluded(sender, recipient, amount);
} else if (!_isExcluded[sender] && _isExcluded[recipient]) {
_transferToExcluded(sender, recipient, amount);
} else if (_isExcluded[sender] && _isExcluded[recipient]) {
_transferBothExcluded(sender, recipient, amount);
} else {
_transferStandard(sender, recipient, amount);
}
if (!takeFee) restoreAllFee();
}
function _transferStandard(
address sender,
address recipient,
uint256 tAmount
) private {
(
uint256 rAmount,
uint256 rTransferAmount,
uint256 rFee,
uint256 tTransferAmount,
uint256 tFee,
uint256 tLiquidity,
uint256 tDevelopment
) = _getValues(tAmount);
uint256 currBalance = balanceOf(recipient);
uint256 newBalance = currBalance.add(tTransferAmount);
if (newBalance > maxWallet && recipient != address(uniswapV2Pair)) {
revert("Transfer amount exceeds the Max Wallet amount.");
}
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
_reflectFee(rFee, tFee);
_takeDevelopment(sender, tDevelopment);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferToExcluded(
address sender,
address recipient,
uint256 tAmount
) private {
(
uint256 rAmount,
uint256 rTransferAmount,
uint256 rFee,
uint256 tTransferAmount,
uint256 tFee,
uint256 tLiquidity,
uint256 tDevelopment
) = _getValues(tAmount);
uint256 currBalance = balanceOf(recipient);
uint256 newBalance = currBalance.add(tTransferAmount);
if (newBalance > maxWallet && recipient != address(uniswapV2Pair)) {
revert("Transfer amount exceeds the Max Wallet amount.");
}
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
_reflectFee(rFee, tFee);
_takeDevelopment(sender, tDevelopment);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferFromExcluded(
address sender,
address recipient,
uint256 tAmount
) private {
(
uint256 rAmount,
uint256 rTransferAmount,
uint256 rFee,
uint256 tTransferAmount,
uint256 tFee,
uint256 tLiquidity,
uint256 tDevelopment
) = _getValues(tAmount);
uint256 currBalance = balanceOf(recipient);
uint256 newBalance = currBalance.add(tTransferAmount);
if (newBalance > maxWallet && recipient != address(uniswapV2Pair)) {
revert("Transfer amount exceeds the Max Wallet amount.");
}
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
_reflectFee(rFee, tFee);
_takeDevelopment(sender, tDevelopment);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferBothExcluded(
address sender,
address recipient,
uint256 tAmount
) private {
(
uint256 rAmount,
uint256 rTransferAmount,
uint256 rFee,
uint256 tTransferAmount,
uint256 tFee,
uint256 tLiquidity,
uint256 tDevelopment
) = _getValues(tAmount);
uint256 currBalance = balanceOf(recipient);
uint256 newBalance = currBalance.add(tTransferAmount);
if (newBalance > maxWallet && recipient != address(uniswapV2Pair)) {
revert("Transfer amount exceeds the Max Wallet amount.");
}
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeLiquidity(tLiquidity);
_reflectFee(rFee, tFee);
_takeDevelopment(sender, tDevelopment);
emit Transfer(sender, recipient, tTransferAmount);
}
function _reflectFee(uint256 rFee, uint256 tFee) private {
_rTotal = _rTotal.sub(rFee);
_tFeeTotal = _tFeeTotal.add(tFee);
}
function _getValues(
uint256 tAmount
)
private
view
returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256)
{
(
uint256 tTransferAmount,
uint256 tFee,
uint256 tLiquidity,
uint256 tDevelopment
) = _getTValues(tAmount);
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
tAmount,
tFee,
tLiquidity,
tDevelopment,
_getRate()
);
return (
rAmount,
rTransferAmount,
rFee,
tTransferAmount,
tFee,
tLiquidity,
tDevelopment
);
}
function _getTValues(
uint256 tAmount
) private view returns (uint256, uint256, uint256, uint256) {
uint256 tFee = calculateTaxFee(tAmount);
uint256 tLiquidity = calculateLiquidityFee(tAmount);
uint256 tDevelopment = calculateDevelopmentFee(tAmount);
uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
return (tTransferAmount, tFee, tLiquidity, tDevelopment);
}
function _getRValues(
uint256 tAmount,
uint256 tFee,
uint256 tLiquidity,
uint256 tDevelopment,
uint256 currentRate
) private pure returns (uint256, uint256, uint256) {
uint256 rAmount = tAmount.mul(currentRate);
uint256 rFee = tFee.mul(currentRate);
uint256 rLiquidity = tLiquidity.mul(currentRate);
uint256 rDevelopment = tDevelopment.mul(currentRate);
uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(
rDevelopment
);
return (rAmount, rTransferAmount, rFee);
}
function _getRate() private view returns (uint256) {
(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
return rSupply.div(tSupply);
}
function _getCurrentSupply() private view returns (uint256, uint256) {
uint256 rSupply = _rTotal;
uint256 tSupply = _tTotal;
for (uint256 i = 0; i < _excluded.length; i++) {
if (
_rOwned[_excluded[i]] > rSupply ||
_tOwned[_excluded[i]] > tSupply
) return (_rTotal, _tTotal);
rSupply = rSupply.sub(_rOwned[_excluded[i]]);
tSupply = tSupply.sub(_tOwned[_excluded[i]]);
}
if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
return (rSupply, tSupply);
}
function _takeLiquidity(uint256 tLiquidity) private {
uint256 currentRate = _getRate();
uint256 rLiquidity = tLiquidity.mul(currentRate);
_rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
if (_isExcluded[address(this)])
_tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
}
function _takeDevelopment(address sender, uint256 tDevelopment) internal {
uint256 currentRate = _getRate();
uint256 rLiquidity = tDevelopment * currentRate;
_rOwned[address(this)] = _rOwned[address(this)] + rLiquidity;
if (_isExcluded[address(this)])
_tOwned[address(this)] = _tOwned[address(this)] + tDevelopment;
emit Transfer(sender, address(this), tDevelopment); // Transparency is the key to success.
}
function calculateTaxFee(uint256 _amount) private view returns (uint256) {
return _amount.mul(_taxFee).div(10 ** 2);
}
function calculateLiquidityFee(
uint256 _amount
) private view returns (uint256) {
return _amount.mul(_liquidityFee).div(10 ** 2);
}
function calculateDevelopmentFee(
uint256 _amount
) private view returns (uint256) {
return _amount.mul(_developmentFee).div(10 ** 2);
}
function removeAllFee() private {
if (_taxFee == 0 && _liquidityFee == 0 && _developmentFee == 0) return;
_previousTaxFee = _taxFee;
_previousLiquidityFee = _liquidityFee;
_previousDevelopmentFee = _developmentFee;
_taxFee = 0;
_liquidityFee = 0;
_developmentFee = 0;
}
function restoreAllFee() private {
_taxFee = _previousTaxFee;
_liquidityFee = _previousLiquidityFee;
_developmentFee = _previousDevelopmentFee;
}
function isExcludedFromFee(address account) public view returns (bool) {
return _isExcludedFromFee[account];
}
function excludeFromFee(address account) public onlyOwner {
_isExcludedFromFee[account] = true;
}
function includeInFee(address account) public onlyOwner {
_isExcludedFromFee[account] = false;
}
function setTaxFeePercent(uint256 taxFee) external onlyOwner {
_taxFee = taxFee;
}
function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner {
_liquidityFee = liquidityFee;
}
function setDevelopmentFeePercent(
uint256 developmentFee
) external onlyOwner {
_developmentFee = developmentFee;
}
function setDevelopmentAddress(
address _developmentAddress
) external onlyOwner {
developmentAddress = payable(_developmentAddress);
}
function transferToAddressETH(
address payable recipient,
uint256 amount
) private {
recipient.transfer(amount);
}
function isRemovedSniper(address account) public view returns (bool) {
return _isSniper[account];
}
function _removeSniper(address account) external onlyOwner {
require(
account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,
"We cannot blacklist Uniswap"
);
require(!_isSniper[account], "Account is already blacklisted");
_isSniper[account] = true;
_confirmedSnipers.push(account);
}
function _amnestySniper(address account) external onlyOwner {
require(_isSniper[account], "Account is not blacklisted");
for (uint256 i = 0; i < _confirmedSnipers.length; i++) {
if (_confirmedSnipers[i] == account) {
_confirmedSnipers[i] = _confirmedSnipers[
_confirmedSnipers.length - 1
];
_isSniper[account] = false;
_confirmedSnipers.pop();
break;
}
}
}
function setFeeRate(uint256 rate) external onlyOwner {
_feeRate = rate;
}
//to recieve ETH from uniswapV2Router when swaping
receive() external payable {}
}
Read Contract
MAX 0xd49d5181 → uint256
_developmentFee 0xd1475185 → uint256
_liquidityFee 0x6bc87c3a → uint256
_taxFee 0x3b124fe7 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
deadAddress 0x27c8f835 → address
decimals 0x313ce567 → uint8
developmentAddress 0x638b1b14 → address
isExcludedFromFee 0x5342acb4 → bool
isExcludedFromReward 0x88f82020 → bool
isRemovedSniper 0x610d5b19 → bool
maxWallet 0xf8b45b05 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
reflectionFromToken 0x4549b039 → uint256
symbol 0x95d89b41 → string
tokenFromReflection 0x2d838119 → uint256
totalFees 0x13114a9d → uint256
totalSupply 0x18160ddd → uint256
uniswapV2Pair 0x49bd5a5e → address
uniswapV2Router 0x1694505e → address
Write Contract 21 functions
These functions modify contract state and require a wallet transaction to execute.
_amnestySniper 0x362a3c5d
address account
_removeSniper 0xf375b253
address account
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
deliver 0x3bd5d173
uint256 tAmount
excludeFromFee 0x437823ec
address account
excludeFromReward 0x52390c02
address account
includeInFee 0xea2f0b37
address account
includeInReward 0x3685d419
address account
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
initContract 0x8203f5fe
No parameters
openTrading 0xc9567bf9
No parameters
renounceOwnership 0x715018a6
No parameters
setDevelopmentAddress 0x29b1c15c
address _developmentAddress
setDevelopmentFeePercent 0x4680ff35
uint256 developmentFee
setFeeRate 0x45596e2e
uint256 rate
setLiquidityFeePercent 0x8ee88c53
uint256 liquidityFee
setTaxFeePercent 0x061c82d0
uint256 taxFee
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
Recent Transactions
No transactions found for this address