This contract's source code is verified! Compiler
0.8.20+commit.a1b79de6
File 1 of 8: COIN.sol
pragma solidity 0.8.20;
import { SafeMath } from './libs/SafeMath.sol' ;
import { ERC20 } from './libs/ERC20.sol' ;
import { IUniswapV2Router02 } from './interfaces/IUniswapV2Router02.sol' ;
import { IUniswapV2Factory } from './interfaces/IUniswapV2Factory.sol' ;
import { IERC20 } from './interfaces/IERC20.sol' ;
contract COINBOT is ERC20 {
using SafeMath for uint256 ;
bool private swapping;
IUniswapV2Router02 public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
address public revShareAddress;
address public teamAddress;
uint256 public maxTransactionAmount;
uint256 public swapTokensAtAmount;
uint256 public maxWallet;
bool public limitsInEffect = true ;
bool public tradingActive = false ;
bool public swapBackEnabled = false ;
bool public banCapabilityRenounced = false ;
mapping (address = > bool ) banned;
uint256 public tradingTotalFees;
uint256 public tradingRevShareFee;
uint256 public tradingLiquidityFee;
uint256 public tradingTeamFee;
uint256 public tokensForRevShare;
uint256 public tokensForLiquidity;
uint256 public tokensForTeam;
mapping (address = > bool ) private _isExcludedFromFees;
mapping (address = > bool ) public _isExcludedMaxTransactionAmount;
mapping (address = > bool ) public aMMPairs;
event SetAMMPair (address indexed pair, bool indexed value ) ;
event revShareAddressUpdated (address indexed newAddress, address indexed oldAddress ) ;
event teamAddressUpdated (address indexed newAddress, address indexed oldAddress ) ;
event SwapToLP (uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ) ;
constructor (address uniswapRouter ) ERC20 ('CoinBot' , 'COINBT' ) {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(uniswapRouter);
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
address (this ),
_uniswapV2Router.WETH()
);
uint256 _tradingRevShareFee = 0 ;
uint256 _tradingLiquidityFee = 1 ;
uint256 _tradingTeamFee = 4 ;
uint256 totalSupply = 1_000_000 * 1e18 ;
maxTransactionAmount = 10_000 * 1e18 ;
maxWallet = 50_000 * 1e18 ;
swapTokensAtAmount = (totalSupply * 5 ) / 10000 ;
tradingRevShareFee = _tradingRevShareFee;
tradingLiquidityFee = _tradingLiquidityFee;
tradingTeamFee = _tradingTeamFee;
tradingTotalFees = tradingRevShareFee + tradingLiquidityFee + tradingTeamFee;
revShareAddress = address (0x0185c185007a3099480a3D929944a805141C67CA );
teamAddress = owner();
_isExcludedMaxTransactionAmount[uniswapRouter] = true ;
_isExcludedMaxTransactionAmount[uniswapV2Pair] = true ;
_setAMMPair(address (uniswapV2Pair), true );
_excludeFromRules(owner());
_excludeFromRules(address (this ));
_excludeFromRules(address (0xdead ));
_mint(msg .sender , totalSupply);
}
receive ( ) external payable {}
function enableTrading ( ) external onlyOwner {
tradingActive = true ;
swapBackEnabled = true ;
}
function removeLimits ( ) external onlyOwner returns (bool ) {
limitsInEffect = false ;
return true ;
}
function updateSwapTokensAtAmount (uint256 newAmount ) external onlyOwner returns (bool ) {
require (
newAmount > = (totalSupply() * 1 ) / 100000 ,
'Swap amount cannot be lower than 0.001% total supply.'
);
require (
newAmount < = (totalSupply() * 5 ) / 1000 ,
'Swap amount cannot be higher than 0.5% total supply.'
);
swapTokensAtAmount = newAmount;
return true ;
}
function updateMaxTxnAmount (uint256 newNum ) external onlyOwner {
require (
newNum > = ((totalSupply() * 5 ) / 1000 ) / 1e18 ,
'Cannot set maxTransactionAmount lower than 0.5%'
);
maxTransactionAmount = newNum * (10 * * 18 );
}
function updateMaxWalletAmount (uint256 newNum ) external onlyOwner {
require (newNum > = ((totalSupply() * 10 ) / 1000 ) / 1e18 , 'Cannot set maxWallet lower than 1.0%' );
maxWallet = newNum * (10 * * 18 );
}
function excludeFromFees (address _address, bool value ) external onlyOwner {
require (limitsInEffect, 'Cannot grant privileges after limits have been removed.' );
_isExcludedFromFees[_address] = value;
}
function excludeFromRules (address _address ) external onlyOwner {
require (limitsInEffect, 'Cannot grant privileges after limits have been removed.' );
_excludeFromRules(_address);
}
function _excludeFromRules (address _address ) internal {
_isExcludedFromFees[_address] = true ;
_isExcludedMaxTransactionAmount[_address] = true ;
}
function updateTradingFees (
uint256 _revShareFee,
uint256 _liquidityFee,
uint256 _teamFee
) external onlyOwner {
tradingRevShareFee = _revShareFee;
tradingLiquidityFee = _liquidityFee;
tradingTeamFee = _teamFee;
tradingTotalFees = tradingRevShareFee + tradingLiquidityFee + tradingTeamFee;
require (tradingTeamFee < = tradingRevShareFee, 'teamFee cannot be greater than revShareFee.' );
require (tradingTotalFees < = 5 , 'Buy fees must be <= 5.' );
}
function setAMMPair (address pair, bool value ) external onlyOwner {
require (pair ! = uniswapV2Pair, 'The pair cannot be removed from aMMPairs' );
_setAMMPair(pair, value);
}
function _setAMMPair (address pair, bool value ) private {
aMMPairs[pair] = value;
_isExcludedMaxTransactionAmount[pair] = value;
emit SetAMMPair(pair, value);
}
function updateRevShareAddress (address newRevShareAddress ) external onlyOwner {
emit revShareAddressUpdated(newRevShareAddress, revShareAddress);
_excludeFromRules(newRevShareAddress);
revShareAddress = newRevShareAddress;
}
function updateTeamAddress (address newAddress ) external onlyOwner {
emit teamAddressUpdated(newAddress, teamAddress);
_excludeFromRules(newAddress);
teamAddress = newAddress;
}
function _transfer (address from , address to, uint256 amount ) internal override {
require (from ! = address (0 ), 'ERC20: transfer from the zero address' );
require (to ! = address (0 ), 'ERC20: transfer to the zero address' );
require (! banned[from ], 'Sender banned' );
require (! banned[to], 'Receiver banned' );
if (amount = = 0 ) {
super ._transfer(from , to, 0 );
return ;
}
if (limitsInEffect) {
if (
from ! = owner() & & to ! = owner() & & to ! = address (0 ) & & to ! = address (0xdead ) & & ! swapping
) {
if (! tradingActive) {
require (_isExcludedFromFees[from ] | | _isExcludedFromFees[to], 'Trading is not active.' );
}
if (aMMPairs[from ] & & ! _isExcludedMaxTransactionAmount[to]) {
require (
amount < = maxTransactionAmount,
'Buy transfer amount exceeds the maxTransactionAmount.'
);
require (amount + balanceOf(to) < = maxWallet, 'Max wallet exceeded' );
}
else if (aMMPairs[to] & & ! _isExcludedMaxTransactionAmount[from ]) {
require (
amount < = maxTransactionAmount,
'Sell transfer amount exceeds the maxTransactionAmount.'
);
} else if (! _isExcludedMaxTransactionAmount[to]) {
require (amount + balanceOf(to) < = maxWallet, 'Max wallet exceeded' );
}
}
}
uint256 contractTokenBalance = balanceOf(address (this ));
bool canSwap = contractTokenBalance > = swapTokensAtAmount;
if (
canSwap & &
swapBackEnabled & &
! swapping & &
! aMMPairs[from ] & &
! _isExcludedFromFees[from ] & &
! _isExcludedFromFees[to]
) {
swapping = true ;
swapBack();
swapping = false ;
}
bool takeFee = ! swapping;
if (_isExcludedFromFees[from ] | | _isExcludedFromFees[to]) {
takeFee = false ;
}
uint256 fees = 0 ;
if (takeFee) {
if ((aMMPairs[to] | | aMMPairs[from ]) & & tradingTotalFees > 0 ) {
fees = amount.mul(tradingTotalFees).div(100 );
tokensForLiquidity + = (fees * tradingLiquidityFee) / tradingTotalFees;
tokensForTeam + = (fees * tradingTeamFee) / tradingTotalFees;
tokensForRevShare + = (fees * tradingRevShareFee) / tradingTotalFees;
}
if (fees > 0 ) {
super ._transfer(from , address (this ), fees);
}
amount - = fees;
}
super ._transfer(from , to, amount);
}
function swapTokensForEth (uint256 tokenAmount ) private {
address [] memory path = new address [](2 );
path[0 ] = address (this );
path[1 ] = uniswapV2Router.WETH();
_approve(address (this ), address (uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0 ,
path,
address (this ),
block .timestamp
);
}
function addLiquidity (uint256 tokenAmount, uint256 ethAmount ) private {
_approve(address (this ), address (uniswapV2Router), tokenAmount);
uniswapV2Router.addLiquidityETH{ value : ethAmount }(
address (this ),
tokenAmount,
0 ,
0 ,
owner(),
block .timestamp
);
}
function swapBack ( ) private {
uint256 contractBalance = balanceOf(address (this ));
uint256 totalTokensToSwap = tokensForLiquidity + tokensForRevShare + tokensForTeam;
bool success;
if (contractBalance = = 0 | | totalTokensToSwap = = 0 ) {
return ;
}
if (contractBalance > swapTokensAtAmount * 20 ) {
contractBalance = swapTokensAtAmount * 20 ;
}
uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2 ;
uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
uint256 initialETHBalance = address (this ).balance ;
swapTokensForEth(amountToSwapForETH);
uint256 ethBalance = address (this ).balance .sub(initialETHBalance);
uint256 ethForRevShare = ethBalance.mul(tokensForRevShare).div(
totalTokensToSwap - (tokensForLiquidity / 2 )
);
uint256 ethForTeam = ethBalance.mul(tokensForTeam).div(
totalTokensToSwap - (tokensForLiquidity / 2 )
);
uint256 ethForLiquidity = ethBalance - ethForRevShare - ethForTeam;
tokensForLiquidity = 0 ;
tokensForRevShare = 0 ;
tokensForTeam = 0 ;
(success, ) = address (teamAddress).call { value : ethForTeam }('' );
if (liquidityTokens > 0 & & ethForLiquidity > 0 ) {
addLiquidity(liquidityTokens, ethForLiquidity);
emit SwapToLP(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
}
(success, ) = address (revShareAddress).call { value : address (this ).balance }('' );
}
function withdrawStuckToken (address _token ) external onlyOwner {
require (_token ! = address (0 ), '_token address cannot be 0' );
uint256 _contractBalance = IERC20(_token).balanceOf(address (this ));
IERC20(_token).transfer (teamAddress, _contractBalance);
}
function withdrawStuckEth ( ) external onlyOwner {
(bool success, ) = teamAddress.call { value : address (this ).balance }('' );
require (success, 'Failed to withdraw ETH' );
}
function isBanned (address account ) external view returns (bool ) {
return banned[account];
}
function renounceBanCapability ( ) external onlyOwner {
banCapabilityRenounced = true ;
}
function ban (address _address ) external onlyOwner {
require (! banCapabilityRenounced, 'Team has revoked ban rights' );
require (
_address ! = address (uniswapV2Pair) & &
_address ! = address (0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ),
'Cannot ban Uniswap'
);
banned[_address] = true ;
}
function unban (address _addr ) external onlyOwner {
banned[_addr] = false ;
}
}
File 2 of 8: Context.sol
pragma solidity 0.8.20;
abstract contract Context {
function _msgSender ( ) internal view virtual returns (address payable ) {
return payable (msg .sender );
}
function _msgData ( ) internal view virtual returns (bytes memory ) {
this ;
return msg .data ;
}
}
File 3 of 8: ERC20.sol
pragma solidity 0.8.20;
import { Ownable } from '../libs/Owners.sol' ;
import { SafeMath } from '../libs/SafeMath.sol' ;
import { IERC20 } from '../interfaces/IERC20.sol' ;
contract ERC20 is Ownable , IERC20 {
using SafeMath for uint256 ;
mapping (address = > uint256 ) private _balances;
mapping (address = > mapping (address = > uint256 )) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor (string memory __name, string memory __symbol ) {
_name = __name;
_symbol = __symbol;
}
function name ( ) public view virtual returns (string memory ) {
return _name;
}
function symbol ( ) public view virtual returns (string memory ) {
return _symbol;
}
function decimals ( ) public view virtual override returns (uint8 ) {
return 18 ;
}
function totalSupply ( ) public view virtual override returns (uint256 ) {
return _totalSupply;
}
function balanceOf (address account ) public view virtual override returns (uint256 ) {
return _balances[account];
}
function transfer (address recipient, uint256 amount ) public virtual override returns (bool ) {
_transfer(_msgSender(), recipient, amount);
return true ;
}
function allowance (
address owner,
address spender
) public view virtual override returns (uint256 ) {
return _allowances[owner][spender];
}
function approve (address spender, uint256 amount ) public virtual 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] + addedValue);
return true ;
}
function decreaseAllowance (
address spender,
uint256 subtractedValue
) public virtual returns (bool ) {
uint256 currentAllowance = _allowances[_msgSender()][spender];
require (currentAllowance > = subtractedValue, 'ERC20: decreased allowance below zero' );
unchecked {
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
}
return true ;
}
function _transfer (address sender, address recipient, uint256 amount ) internal virtual {
require (sender ! = address (0 ), 'ERC20: transfer from the zero address' );
require (recipient ! = address (0 ), 'ERC20: transfer to the zero address' );
_beforeTokenTransfer(sender, recipient, amount);
uint256 senderBalance = _balances[sender];
require (senderBalance > = amount, 'ERC20: transfer amount exceeds balance' );
unchecked {
_balances[sender] = senderBalance - amount;
}
_balances[recipient] + = amount;
emit Transfer(sender, recipient, amount);
_afterTokenTransfer(sender, recipient, amount);
}
function _mint (address account, uint256 amount ) internal virtual {
require (account ! = address (0 ), 'ERC20: mint to the zero address' );
_beforeTokenTransfer(address (0 ), account, amount);
_totalSupply + = amount;
_balances[account] + = amount;
emit Transfer(address (0 ), account, amount);
_afterTokenTransfer(address (0 ), account, amount);
}
function _burn (address account, uint256 amount ) internal virtual {
require (account ! = address (0 ), 'ERC20: burn from the zero address' );
_beforeTokenTransfer(account, address (0 ), amount);
uint256 accountBalance = _balances[account];
require (accountBalance > = amount, 'ERC20: burn amount exceeds balance' );
unchecked {
_balances[account] = accountBalance - amount;
}
_totalSupply - = amount;
emit Transfer(account, address (0 ), amount);
_afterTokenTransfer(account, address (0 ), amount);
}
function _approve (address owner, address spender, uint256 amount ) internal virtual {
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 _beforeTokenTransfer (address from , address to, uint256 amount ) internal virtual {}
function _afterTokenTransfer (address from , address to, uint256 amount ) internal virtual {}
}
File 4 of 8: IERC20.sol
pragma solidity 0.8.20;
interface IERC20 {
function decimals ( ) external view returns (uint8 ) ;
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 ) ;
}
File 5 of 8: IUniswapV2Factory.sol
pragma solidity 0.8.20;
interface IUniswapV2Factory {
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 (uint256 ) external view returns (address pair ) ;
function allPairsLength ( ) external view returns (uint256 ) ;
function createPair (
address tokenA,
address tokenB
) external returns (address pair ) ;
function setFeeTo (address ) external ;
function setFeeToSetter (address ) external ;
event PairCreated (
address indexed token0,
address indexed token1,
address pair,
uint256
) ;
}
File 6 of 8: IUniswapV2Router02.sol
pragma solidity 0.8.20;
interface IUniswapV2Router02 {
function factory ( ) external pure returns (address ) ;
function WETH ( ) external pure returns (address ) ;
function addLiquidity (
address tokenA,
address tokenB,
uint256 amountADesired,
uint256 amountBDesired,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
) external returns (uint256 amountA, uint256 amountB, uint256 liquidity ) ;
function addLiquidityETH (
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (uint256 amountToken, uint256 amountETH, uint256 liquidity ) ;
function swapExactTokensForTokensSupportingFeeOnTransferTokens (
uint256 amountIn,
uint256 amountOutMin,
address [] calldata path,
address to,
uint256 deadline
) external ;
function swapExactETHForTokensSupportingFeeOnTransferTokens (
uint256 amountOutMin,
address [] calldata path,
address to,
uint256 deadline
) external payable ;
function swapExactTokensForETHSupportingFeeOnTransferTokens (
uint256 amountIn,
uint256 amountOutMin,
address [] calldata path,
address to,
uint256 deadline
) external ;
}
File 7 of 8: Owners.sol
pragma solidity 0.8.20;
import { Context } from './Context.sol' ;
abstract contract Ownable is Context {
address private _owner;
constructor ( ) {
_transferOwnership(_msgSender());
}
function owner ( ) public view virtual returns (address ) {
return _owner;
}
modifier onlyOwner ( ) {
require (owner() = = _msgSender(), 'Ownable: caller is not the owner' );
_ ;
}
function renounceOwnership ( ) public virtual onlyOwner {
_transferOwnership(address (0 ));
}
function transferOwnership (address newOwner ) public virtual onlyOwner {
require (newOwner ! = address (0 ), 'Ownable: new owner is the zero address' );
_transferOwnership(newOwner);
}
function _transferOwnership (address newOwner ) internal virtual {
_owner = newOwner;
}
}
File 8 of 8: SafeMath.sol
pragma solidity 0.8.20;
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;
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;
}
}
{
"compilationTarget" : {
"contracts/COIN.sol" : "COINBOT"
} ,
"evmVersion" : "shanghai" ,
"libraries" : { } ,
"metadata" : {
"bytecodeHash" : "ipfs"
} ,
"optimizer" : {
"enabled" : true ,
"runs" : 2000
} ,
"remappings" : [ ]
} [{"inputs":[{"internalType":"address","name":"uniswapRouter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAMMPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapToLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"revShareAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"teamAddressUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"aMMPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"ban","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"banCapabilityRenounced","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"excludeFromRules","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBanned","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceBanCapability","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revShareAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAMMPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForRevShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTeam","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingRevShareFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"unban","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRevShareAddress","type":"address"}],"name":"updateRevShareAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateTeamAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_revShareFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"}],"name":"updateTradingFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]