ETH Price: $3,683.39 (+2.29%)

Token

ERC-20: DonutsCoin (DONUTS)
 

Overview

Max Total Supply

1,000,000 DONUTS

Holders

1,867

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
34 DONUTS

Value
$0.00
0xcf4629925eb3e81ac01a5f48e9558d15a052e220
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DonutsCoin

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : DonutsCoin.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;

//  /$$$$$$$                                  /$$               /$$$$$$            /$$
// | $$__  $$                                | $$              /$$__  $$          |__/
// | $$  \ $$  /$$$$$$  /$$$$$$$  /$$   /$$ /$$$$$$   /$$$$$$$| $$  \__/  /$$$$$$  /$$ /$$$$$$$
// | $$  | $$ /$$__  $$| $$__  $$| $$  | $$|_  $$_/  /$$_____/| $$       /$$__  $$| $$| $$__  $$
// | $$  | $$| $$  \ $$| $$  \ $$| $$  | $$  | $$   |  $$$$$$ | $$      | $$  \ $$| $$| $$  \ $$
// | $$  | $$| $$  | $$| $$  | $$| $$  | $$  | $$ /$$\____  $$| $$    $$| $$  | $$| $$| $$  | $$
// | $$$$$$$/|  $$$$$$/| $$  | $$|  $$$$$$/  |  $$$$//$$$$$$$/|  $$$$$$/|  $$$$$$/| $$| $$  | $$
// |_______/  \______/ |__/  |__/ \______/    \___/ |_______/  \______/  \______/ |__/|__/  |__/


/// @title DonutsCoin

/********************************************************************************************
  INTERFACE
********************************************************************************************/

interface IERC20 {
    // EVENT

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    // FUNCTION

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IPair {
    // FUNCTION

    function token0() external view returns (address);

    function token1() external view returns (address);
}

interface IFactory {
    // FUNCTION

    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}

interface IRouter {

    // FUNCTION

    function WETH() external pure returns (address);
        
    function factory() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(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 swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);

    function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}

interface ICommonError {
    // ERROR

    error CannotUseCurrentAddress(address current);

    error CannotUseCurrentValue(uint256 current);

    error CannotUseCurrentState(bool current);

    error InvalidAddress(address invalid);

    error InvalidValue(uint256 invalid);
}

/********************************************************************************************
  ACCESS
********************************************************************************************/

abstract contract Ownable {
    // DATA

    address private _owner;

    // MODIFIER

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    // ERROR

    error InvalidOwner(address account);

    error UnauthorizedAccount(address account);

    // CONSTRUCTOR

    constructor(address initialOwner) {
        _transferOwnership(initialOwner);
    }

    // EVENT

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    // FUNCTION

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        if (owner() != msg.sender) {
            revert UnauthorizedAccount(msg.sender);
        }
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert InvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

/********************************************************************************************
  TOKEN
********************************************************************************************/

contract DonutsCoin is Ownable, ICommonError, IERC20 {
    // DATA

    IRouter public router;

    string private constant NAME = "DonutsCoin";
    string private constant SYMBOL = "DONUTS";

    uint8 private constant DECIMALS = 18;

    uint256 private _totalSupply;

    uint256 public constant FEEDENOMINATOR = 10_000;
    uint256 public constant TRANSFERFEE = 0;

    uint256 public buyFee = 100;
    uint256 public sellFee = 200;
    uint256 public burnFeePercentage = 0; 
    uint256 public liquidityFeePercentage = 0; 
    uint256 public marketingFeePercentage = 0;

    address public marketingWallet = 0x7c983436362602Ca3A38a7d518409E1f08B10c66;
    address public projectWallet = 0x7c983436362602Ca3A38a7d518409E1f08B10c66;
    address public feeWallet = 0x7c983436362602Ca3A38a7d518409E1f08B10c66;

    uint256 public totalFeeCollected = 0;
    uint256 public minSwap = 1_000 ether;

    bool public tradeEnabled = false;
    bool public isFeeActive = false;
    bool public inSwap = false;
    bool public isSwapEnabled = false;

    address public pair;

    // MAPPING

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isExcludeFromFees;
    mapping(address => bool) public isPairLP;

    // MODIFIER

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    // ERROR

    error InvalidTradeEnabledState(bool current);

    error InvalidFeeActiveState(bool current);

    error InvalidSwapEnabledState(bool current);

    error PresaleAlreadyFinalized(bool current);

    error TradeDisabled();
    
    error InvalidFee();

    // CONSTRUCTOR

    constructor() Ownable(msg.sender) {
        _mint(projectWallet, 1_000_000 * 10 ** DECIMALS);

        router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IFactory(router.factory()).createPair(
            address(this),
            router.WETH()
        );

        isPairLP[pair] = true;

        isExcludeFromFees[msg.sender] = true;
        isExcludeFromFees[projectWallet] = true;
        isExcludeFromFees[address(router)] = true;
    }

    // EVENT

    event UpdateRouter(
        address oldRouter,
        address newRouter,
        address caller,
        uint256 timestamp
    );

    event UpdateMinSwap(
        uint256 oldMinSwap,
        uint256 newMinSwap,
        address caller,
        uint256 timestamp
    );

    event UpdateFeeActive(
        bool oldStatus,
        bool newStatus,
        address caller,
        uint256 timestamp
    );

    event UpdateSwapEnabled(
        bool oldStatus,
        bool newStatus,
        address caller,
        uint256 timestamp
    );

    event AutoRedeem(
        uint256 feeDistribution,
        uint256 amountToRedeem,
        address caller,
        uint256 timestamp
    );

    event EnableTrading(
        bool oldStatus,
        bool newStatus,
        address caller,
        uint256 timestamp
    );

    // FUNCTION

    /* General */

    receive() external payable {}

    function enableTrading() external onlyOwner {
        if (tradeEnabled) {
            revert InvalidTradeEnabledState(tradeEnabled);
        }
        if (isFeeActive) {
            revert InvalidFeeActiveState(isFeeActive);
        }
         if (isSwapEnabled) {
            revert InvalidSwapEnabledState(isSwapEnabled);
        }
        tradeEnabled = true;
        isFeeActive = true;
        isSwapEnabled = true;
    }

    /* Check */

    function isDonut() external pure returns (bool) {
        return true;
    }

    function circulatingSupply() external view returns (uint256) {
        return
            totalSupply() - balanceOf(address(0xdead)) - balanceOf(address(0));
    }

    /* Update */

    function updateRouter(address newRouter) external onlyOwner {
        if (address(router) == newRouter) {
            revert CannotUseCurrentAddress(newRouter);
        }
        address oldRouter = address(router);
        router = IRouter(newRouter);

        isExcludeFromFees[newRouter] = true;

        emit UpdateRouter(oldRouter, newRouter, msg.sender, block.timestamp);
        pair = IFactory(router.factory()).createPair(
            address(this),
            router.WETH()
        );
        isPairLP[pair] = true;
    }

    function updateMinSwap(uint256 newMinSwap) external onlyOwner {
        if (minSwap == newMinSwap) {
            revert CannotUseCurrentValue(newMinSwap);
        }
        uint256 oldMinSwap = minSwap;
        minSwap = newMinSwap;
        emit UpdateMinSwap(oldMinSwap, newMinSwap, msg.sender, block.timestamp);
    }

    function updateFeeActive(bool newStatus) external onlyOwner {
        if (isFeeActive == newStatus) {
            revert CannotUseCurrentState(newStatus);
        }
        bool oldStatus = isFeeActive;
        isFeeActive = newStatus;
        emit UpdateFeeActive(oldStatus, newStatus, msg.sender, block.timestamp);
    }

    function updateWallets(address _project, address _marketing, address _fee) external onlyOwner {
        projectWallet = _project;
        marketingWallet = _marketing;
        feeWallet = _fee;
    }

    function updateSwapEnabled(bool newStatus) external onlyOwner {
        if (isSwapEnabled == newStatus) { revert CannotUseCurrentState(newStatus); }
        bool oldStatus = isSwapEnabled;
        isSwapEnabled = newStatus;
        emit UpdateSwapEnabled(oldStatus, newStatus, msg.sender, block.timestamp);
    }

    function updateFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        if(_buyFee > 3000 || _sellFee > 3000 ) { revert InvalidFee(); }
        buyFee = _buyFee;
        sellFee = _sellFee;
    }

    function setFeePercentages(uint256 _burnFee, uint256 _liquidityFee, uint256 _marketingFee) public onlyOwner {
        require(_burnFee + _liquidityFee + _marketingFee <= 100, "Total fee percentage exceeds 100");
        burnFeePercentage = _burnFee;
        liquidityFeePercentage = _liquidityFee;
        marketingFeePercentage = _marketingFee;
    }

    function setExcludeFromFees(address user, bool status) external onlyOwner {
        if (isExcludeFromFees[user] == status) {
            revert CannotUseCurrentState(status);
        }
        isExcludeFromFees[user] = status;
    }

    function setPairLP(address lpPair, bool status) external onlyOwner {
        if (isPairLP[lpPair] == status) {
            revert CannotUseCurrentState(status);
        }
        if (
            IPair(lpPair).token0() != address(this) &&
            IPair(lpPair).token1() != address(this)
        ) {
            revert InvalidAddress(lpPair);
        }
        isPairLP[lpPair] = status;
    }

    /* Fee */

    function takeBuyFee(address from, uint256 amount) internal swapping returns (uint256) {
        uint256 feeAmount = (amount * buyFee) / FEEDENOMINATOR;
        uint256 newAmount = amount - feeAmount;

        if (feeAmount > 0) {
            distributeFee(from, feeAmount);
        }

        return newAmount;
    }

    function takeSellFee(address from, uint256 amount) internal swapping returns (uint256) {
        uint256 feeAmount = (amount * sellFee) / FEEDENOMINATOR;
        uint256 newAmount = amount - feeAmount;

        if (feeAmount > 0) {
            distributeFee(from, feeAmount);
        }

        return newAmount;
    }

    function swapBack() internal swapping {
        uint256 initialBalance = address(this).balance;
        uint256 firstLiquidityHalf = minSwap / 2;
        uint256 secondLiquidityHalf = minSwap - firstLiquidityHalf;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), minSwap);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            firstLiquidityHalf,
            0,
            path,
            address(this),
            block.timestamp
        );
        
        router.addLiquidityETH{
            value: address(this).balance - initialBalance
        }(
            address(this),
            secondLiquidityHalf,
            0,
            0,
            address(0xdead),
            block.timestamp + 1_200
        );
    }

    function distributeFee(address from, uint256 feeAmount) internal swapping {
        totalFeeCollected += feeAmount;
        uint256 burnAmount = (feeAmount * burnFeePercentage) / 100;
        uint256 liquidityAmount = (feeAmount * liquidityFeePercentage) / 100;
        uint256 marketingAmount = (feeAmount * marketingFeePercentage) / 100;

        if (burnAmount > 0) {
            _balances[address(0)] += burnAmount;
        }

        if(liquidityAmount > 0){
            _balances[address(this)] += liquidityAmount;
        }

        if (marketingAmount > 0) {
            _balances[marketingWallet] += marketingAmount;
        }

        _balances[from] -= feeAmount;
        _balances[feeWallet] += (feeAmount - burnAmount - liquidityAmount - marketingAmount);
    }

    function takeTransferFee(
        address from,
        uint256 amount
    ) internal swapping returns (uint256) {
        uint256 feeAmount = (amount * TRANSFERFEE) / FEEDENOMINATOR;
        uint256 newAmount = amount - feeAmount;
        if (feeAmount > 0) {
            distributeFee(from, feeAmount);
        }
        return newAmount;
    }

    /* ERC20 Standard */

    function name() external view virtual override returns (string memory) {
        return NAME;
    }

    function symbol() external view virtual override returns (string memory) {
        return SYMBOL;
    }

    function decimals() external view virtual override returns (uint8) {
        return DECIMALS;
    }

    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 to,
        uint256 amount
    ) external virtual override returns (bool) {
        address provider = msg.sender;
        return _transfer(provider, to, amount);
    }

    function allowance(
        address provider,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[provider][spender];
    }

    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        address provider = msg.sender;
        _approve(provider, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external virtual override returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        return _transfer(from, to, amount);
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) external virtual returns (bool) {
        address provider = msg.sender;
        _approve(provider, spender, allowance(provider, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) external virtual returns (bool) {
        address provider = msg.sender;
        uint256 currentAllowance = allowance(provider, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(provider, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _mint(address account, uint256 amount) internal virtual {
        if (account == address(0)) {
            revert InvalidAddress(account);
        }

        _totalSupply += amount;
        unchecked {
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);
    }

    function _approve(
        address provider,
        address spender,
        uint256 amount
    ) internal virtual {
        if (provider == address(0)) {
            revert InvalidAddress(provider);
        }
        if (spender == address(0)) {
            revert InvalidAddress(spender);
        }

        _allowances[provider][spender] = amount;
        emit Approval(provider, spender, amount);
    }

    function _spendAllowance(
        address provider,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(provider, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(provider, spender, currentAllowance - amount);
            }
        }
    }

    /* Additional */

    function _basicTransfer(
        address from,
        address to,
        uint256 amount
    ) internal returns (bool) {
        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
        return true;
    }

    /* Overrides */

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual returns (bool) {
        if (from == address(0)) {
            revert InvalidAddress(from);
        }
        if (to == address(0)) {
            revert InvalidAddress(to);
        }

        if (
            !tradeEnabled && !isExcludeFromFees[from] && !isExcludeFromFees[to]
        ) {
            revert TradeDisabled();
        }

        if (inSwap || isExcludeFromFees[from]) {
            return _basicTransfer(from, to, amount);
        }

        uint256 newAmount = amount;

        if (isFeeActive && !isExcludeFromFees[from] && !isExcludeFromFees[to]) {
            newAmount = _beforeTokenTransfer(from, to, amount);
        }

        if (from != pair && balanceOf(address(this)) >= minSwap && isSwapEnabled) {
            swapBack();
        }

        require(
            _balances[from] >= newAmount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = _balances[from] - newAmount;
            _balances[to] += newAmount;
        }

        emit Transfer(from, to, newAmount);

        return true;
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual swapping returns (uint256) {
        if (isPairLP[from] && (buyFee > 0)) {
            return takeBuyFee(from, amount);
        }
        if (isPairLP[to] && (sellFee > 0)) {
            return takeSellFee(from, amount);
        }
        if (!isPairLP[from] && !isPairLP[to] && (TRANSFERFEE > 0)) {
            return takeTransferFee(from, amount);
        }
        return amount;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"current","type":"address"}],"name":"CannotUseCurrentAddress","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"CannotUseCurrentState","type":"error"},{"inputs":[{"internalType":"uint256","name":"current","type":"uint256"}],"name":"CannotUseCurrentValue","type":"error"},{"inputs":[{"internalType":"address","name":"invalid","type":"address"}],"name":"InvalidAddress","type":"error"},{"inputs":[],"name":"InvalidFee","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"InvalidFeeActiveState","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"InvalidOwner","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"InvalidSwapEnabledState","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"InvalidTradeEnabledState","type":"error"},{"inputs":[{"internalType":"uint256","name":"invalid","type":"uint256"}],"name":"InvalidValue","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"PresaleAlreadyFinalized","type":"error"},{"inputs":[],"name":"TradeDisabled","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"UnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"feeDistribution","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToRedeem","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"AutoRedeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"EnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateFeeActive","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMinSwap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMinSwap","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateMinSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateRouter","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateSwapEnabled","type":"event"},{"inputs":[],"name":"FEEDENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFERFEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"provider","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"isDonut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isFeeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPairLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwap","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setFeePercentages","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpPair","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setPairLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeCollected","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":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"updateFeeActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinSwap","type":"uint256"}],"name":"updateMinSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"updateRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_project","type":"address"},{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_fee","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052606460035560c8600455600060058190556006819055600781905560088054737c983436362602ca3a38a7d518409e1f08b10c666001600160a01b0319918216811790925560098054821683179055600a80549091169091179055600b55683635c9adc5dea00000600c55600d805463ffffffff191690553480156200008957600080fd5b50336200009681620002e3565b50600954620000cb906001600160a01b0316620000b66012600a620004ec565b620000c590620f424062000504565b62000333565b600180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015691906200051e565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001df91906200051e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200022d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025391906200051e565b600d8054600160201b600160c01b0319166401000000006001600160a01b0393841681029190911791829055900481166000908152601160209081526040808320805460ff1990811660019081179092553385526010909352818420805484168217905560095485168452818420805484168217905580549094168352909120805490911690911790556200055f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166200036a57604051634726455360e11b81526001600160a01b038316600482015260240160405180910390fd5b80600260008282546200037e919062000549565b90915550506001600160a01b0382166000818152600e60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200042e578160001904821115620004125762000412620003d7565b808516156200042057918102915b93841c9390800290620003f2565b509250929050565b6000826200044757506001620004e6565b816200045657506000620004e6565b81600181146200046f57600281146200047a576200049a565b6001915050620004e6565b60ff8411156200048e576200048e620003d7565b50506001821b620004e6565b5060208310610133831016604e8410600b8410161715620004bf575081810a620004e6565b620004cb8383620003ed565b8060001904821115620004e257620004e2620003d7565b0290505b92915050565b6000620004fd60ff84168362000436565b9392505050565b8082028115828204841417620004e657620004e6620003d7565b6000602082840312156200053157600080fd5b81516001600160a01b0381168114620004fd57600080fd5b80820180821115620004e657620004e6620003d7565b61212c806200056f6000396000f3fe6080604052600436106102815760003560e01c80638a8c523c1161014f578063beb08ab9116100c1578063dd62ed3e1161007a578063dd62ed3e14610785578063e43504da146107a5578063f25f4b56146107c4578063f2a42687146107e4578063f2fde38b14610814578063f887ea401461083457600080fd5b8063beb08ab9146106d5578063c4ceb339146106f5578063c851cc321461070b578063d621e8131461072b578063d63cad2214610745578063d83067861461076557600080fd5b8063a457c2d711610113578063a457c2d714610621578063a8aa1b3114610641578063a9059cbb14610669578063ab28a04c14610689578063b4b081df1461069f578063b9b2b5cd146106bf57600080fd5b80638a8c523c1461058a5780638da5cb5b1461059f578063924de9b7146105bd5780639358928b146105dd57806395d89b41146105f257600080fd5b80633bf31454116101f35780636db79437116101ac5780636db79437146104b157806370a08231146104d1578063715018a61461050757806375f0a8741461051c57806375fed3c71461055457806380ada68a1461057457600080fd5b80633bf314541461041b578063470624021461043b57806359cd903114610451578063601d495814610467578063625dd6051461047d5780636a3dacf21461049d57600080fd5b806323b872dd1161024557806323b872dd146103735780632b14ca56146103935780632ce0c0a0146103a9578063313ce567146103be578063351a964d146103da57806339509351146103fb57600080fd5b806306fdde031461028d57806308c43650146102d2578063095ea7b314610312578063147c9f6d1461033257806318160ddd1461035457600080fd5b3661028857005b600080fd5b34801561029957600080fd5b5060408051808201909152600a8152692237b73aba39a1b7b4b760b11b60208201525b6040516102c99190611d2c565b60405180910390f35b3480156102de57600080fd5b506103026102ed366004611d8f565b60116020526000908152604090205460ff1681565b60405190151581526020016102c9565b34801561031e57600080fd5b5061030261032d366004611dac565b610854565b34801561033e57600080fd5b5061035261034d366004611dd8565b61086e565b005b34801561036057600080fd5b506002545b6040519081526020016102c9565b34801561037f57600080fd5b5061030261038e366004611e23565b6108b5565b34801561039f57600080fd5b5061036560045481565b3480156103b557600080fd5b50610365600081565b3480156103ca57600080fd5b50604051601281526020016102c9565b3480156103e657600080fd5b50600d54610302906301000000900460ff1681565b34801561040757600080fd5b50610302610416366004611dac565b6108d9565b34801561042757600080fd5b50610352610436366004611e79565b6108fb565b34801561044757600080fd5b5061036560035481565b34801561045d57600080fd5b50610365600c5481565b34801561047357600080fd5b5061036560065481565b34801561048957600080fd5b50610352610498366004611e94565b6109b0565b3480156104a957600080fd5b506001610302565b3480156104bd57600080fd5b506103526104cc366004611ec9565b610b46565b3480156104dd57600080fd5b506103656104ec366004611d8f565b6001600160a01b03166000908152600e602052604090205490565b34801561051357600080fd5b50610352610b88565b34801561052857600080fd5b5060085461053c906001600160a01b031681565b6040516001600160a01b0390911681526020016102c9565b34801561056057600080fd5b5061035261056f366004611eeb565b610b9c565b34801561058057600080fd5b5061036560075481565b34801561059657600080fd5b50610352610c17565b3480156105ab57600080fd5b506000546001600160a01b031661053c565b3480156105c957600080fd5b506103526105d8366004611e79565b610cd7565b3480156105e957600080fd5b50610365610d83565b3480156105fe57600080fd5b50604080518082019091526006815265444f4e55545360d01b60208201526102bc565b34801561062d57600080fd5b5061030261063c366004611dac565b610df3565b34801561064d57600080fd5b50600d5461053c9064010000000090046001600160a01b031681565b34801561067557600080fd5b50610302610684366004611dac565b610e79565b34801561069557600080fd5b5061036561271081565b3480156106ab57600080fd5b506103526106ba366004611f04565b610e8f565b3480156106cb57600080fd5b50610365600b5481565b3480156106e157600080fd5b5060095461053c906001600160a01b031681565b34801561070157600080fd5b5061036560055481565b34801561071757600080fd5b50610352610726366004611d8f565b610f0a565b34801561073757600080fd5b50600d546103029060ff1681565b34801561075157600080fd5b50610352610760366004611e94565b61118a565b34801561077157600080fd5b50600d546103029062010000900460ff1681565b34801561079157600080fd5b506103656107a0366004611f30565b611201565b3480156107b157600080fd5b50600d5461030290610100900460ff1681565b3480156107d057600080fd5b50600a5461053c906001600160a01b031681565b3480156107f057600080fd5b506103026107ff366004611d8f565b60106020526000908152604090205460ff1681565b34801561082057600080fd5b5061035261082f366004611d8f565b61122c565b34801561084057600080fd5b5060015461053c906001600160a01b031681565b60003361086281858561126a565b60019150505b92915050565b61087661132f565b600980546001600160a01b039485166001600160a01b0319918216179091556008805493851693821693909317909255600a8054919093169116179055565b6000336108c385828561136b565b6108ce8585856113e5565b9150505b9392505050565b6000336108628185856108ec8383611201565b6108f69190611f7f565b61126a565b61090361132f565b801515600d60019054906101000a900460ff1615150361093e5760405162a7e72d60e41b815281151560048201526024015b60405180910390fd5b600d805482151561010081810261ff00198416179093556040805160ff94909304939093168015158352602083019190915233928201929092524260608201527ff99f9d4d81f67d0980beea494b4404ba3b8af1a0a2d493230f1a883efa027f2f906080015b60405180910390a15050565b6109b861132f565b6001600160a01b03821660009081526011602052604090205481151560ff9091161515036109fc5760405162a7e72d60e41b81528115156004820152602401610935565b306001600160a01b0316826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190611f92565b6001600160a01b031614158015610af25750306001600160a01b0316826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae69190611f92565b6001600160a01b031614155b15610b1b57604051634726455360e11b81526001600160a01b0383166004820152602401610935565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b610b4e61132f565b610bb8821180610b5f5750610bb881115b15610b7d576040516358d620b360e01b815260040160405180910390fd5b600391909155600455565b610b9061132f565b610b9a6000611670565b565b610ba461132f565b80600c5403610bc95760405163657e16cf60e01b815260048101829052602401610935565b600c805490829055604080518281526020810184905233918101919091524260608201527f9a9f4704ac409fe039e92a996e415370980275aaff2992936ed5b432886c55c5906080016109a4565b610c1f61132f565b600d5460ff1615610c4e57600d546040516301bf623960e61b815260ff90911615156004820152602401610935565b600d54610100900460ff1615610c8657600d54604051630eff900b60e21b815261010090910460ff1615156004820152602401610935565b600d546301000000900460ff1615610cc257600d5460405163610a8e6760e01b8152630100000090910460ff1615156004820152602401610935565b600d805463ff00ffff19166301000101179055565b610cdf61132f565b801515600d60039054906101000a900460ff16151503610d155760405162a7e72d60e41b81528115156004820152602401610935565b600d8054821515630100000081810263ff000000198416179093556040805160ff94909304939093168015158352602083019190915233928201929092524260608201527fa9eb6c000d17475b17651469533695f7b673c93327fdbadf4341ebeb2607a044906080016109a4565b600e6020527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c5461dead60009081527ff77e91909e61d18f67b875b2bfcae1f683a8d555e55382e3a6b082e2c59ea57a54600254919291610de49190611faf565b610dee9190611faf565b905090565b60003381610e018286611201565b905083811015610e615760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610935565b610e6e828686840361126a565b506001949350505050565b600033610e878185856113e5565b949350505050565b610e9761132f565b606481610ea48486611f7f565b610eae9190611f7f565b1115610efc5760405162461bcd60e51b815260206004820181905260248201527f546f74616c206665652070657263656e746167652065786365656473203130306044820152606401610935565b600592909255600655600755565b610f1261132f565b6001546001600160a01b03808316911603610f4b5760405163a936636960e01b81526001600160a01b0382166004820152602401610935565b600180546001600160a01b038381166001600160a01b0319831681178455600081815260106020908152604091829020805460ff19169096179095558051929093168083529382015233918101919091524260608201527fe1cb783288eddc7b22c25642a832d886a558be0dd900747310a34156b9fdcbbb9060800160405180910390a1600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611022573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110469190611f92565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cc9190611f92565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113d9190611f92565b600d8054640100000000600160c01b0319166401000000006001600160a01b03938416810291909117918290559004166000908152601160205260409020805460ff191660011790555050565b61119261132f565b6001600160a01b03821660009081526010602052604090205481151560ff9091161515036111d65760405162a7e72d60e41b81528115156004820152602401610935565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b61123461132f565b6001600160a01b03811661125e5760405163b20f76e360e01b815260006004820152602401610935565b61126781611670565b50565b6001600160a01b03831661129c57604051634726455360e11b81526001600160a01b0384166004820152602401610935565b6001600160a01b0382166112ce57604051634726455360e11b81526001600160a01b0383166004820152602401610935565b6001600160a01b038381166000818152600f602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b336113426000546001600160a01b031690565b6001600160a01b031614610b9a576040516332b2baa360e01b8152336004820152602401610935565b60006113778484611201565b905060001981146113df57818110156113d25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610935565b6113df848484840361126a565b50505050565b60006001600160a01b03841661141957604051634726455360e11b81526001600160a01b0385166004820152602401610935565b6001600160a01b03831661144b57604051634726455360e11b81526001600160a01b0384166004820152602401610935565b600d5460ff1615801561147757506001600160a01b03841660009081526010602052604090205460ff16155b801561149c57506001600160a01b03831660009081526010602052604090205460ff16155b156114ba57604051632b61510560e11b815260040160405180910390fd5b600d5462010000900460ff16806114e957506001600160a01b03841660009081526010602052604090205460ff165b15611500576114f98484846116c0565b90506108d2565b600d548290610100900460ff16801561153257506001600160a01b03851660009081526010602052604090205460ff16155b801561155757506001600160a01b03841660009081526010602052604090205460ff16155b1561156a57611567858585611759565b90505b600d546001600160a01b0386811664010000000090920416148015906115a15750600c54306000908152600e602052604090205410155b80156115b65750600d546301000000900460ff165b156115c3576115c3611854565b6001600160a01b0385166000908152600e60205260409020548111156115fb5760405162461bcd60e51b815260040161093590611fc2565b6001600160a01b038086166000818152600e6020526040808220805486900390559287168082529083902080548501905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061165d9085815260200190565b60405180910390a3506001949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600e6020526040812054828110156116f95760405162461bcd60e51b815260040161093590611fc2565b6001600160a01b038086166000818152600e602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061165d9087815260200190565b600d805462ff00001916620100001790556001600160a01b03831660009081526011602052604081205460ff16801561179457506000600354115b156117aa576117a38483611ac1565b9050611841565b6001600160a01b03831660009081526011602052604090205460ff1680156117d457506000600454115b156117e3576117a38483611b26565b6001600160a01b03841660009081526011602052604090205460ff1615801561182557506001600160a01b03831660009081526011602052604090205460ff16155b801561182f575060005b1561183e576117a38483611b4d565b50805b600d805462ff0000191690559392505050565b600d805462ff0000191662010000179055600c54479060009061187990600290612008565b9050600081600c5461188b9190611faf565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106118c5576118c561202a565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190611f92565b816001815181106119555761195561202a565b6001600160a01b039283166020918202929092010152600154600c5461197e923092169061126a565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906119b7908690600090869030904290600401612040565b600060405180830381600087803b1580156119d157600080fd5b505af11580156119e5573d6000803e3d6000fd5b50506001546001600160a01b0316915063f305d7199050611a068647611faf565b308560008061dead611a1a426104b0611f7f565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af1158015611a87573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611aac91906120b1565b5050600d805462ff0000191690555050505050565b600d805462ff0000191662010000179055600354600090819061271090611ae890856120df565b611af29190612008565b90506000611b008285611faf565b90508115611b1257611b128583611b6e565b600d805462ff000019169055949350505050565b600d805462ff0000191662010000179055600454600090819061271090611ae890856120df565b600d805462ff0000191662010000179055600080612710611ae882856120df565b600d805462ff0000191662010000179055600b8054829190600090611b94908490611f7f565b9091555050600554600090606490611bac90846120df565b611bb69190612008565b90506000606460065484611bca91906120df565b611bd49190612008565b90506000606460075485611be891906120df565b611bf29190612008565b90508215611c3b576000808052600e6020527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c8054859290611c35908490611f7f565b90915550505b8115611c6657306000908152600e602052604081208054849290611c60908490611f7f565b90915550505b8015611c9c576008546001600160a01b03166000908152600e602052604081208054839290611c96908490611f7f565b90915550505b6001600160a01b0385166000908152600e602052604081208054869290611cc4908490611faf565b9091555081905082611cd68587611faf565b611ce09190611faf565b611cea9190611faf565b600a546001600160a01b03166000908152600e602052604081208054909190611d14908490611f7f565b9091555050600d805462ff0000191690555050505050565b600060208083528351808285015260005b81811015611d5957858101830151858201604001528201611d3d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461126757600080fd5b600060208284031215611da157600080fd5b81356108d281611d7a565b60008060408385031215611dbf57600080fd5b8235611dca81611d7a565b946020939093013593505050565b600080600060608486031215611ded57600080fd5b8335611df881611d7a565b92506020840135611e0881611d7a565b91506040840135611e1881611d7a565b809150509250925092565b600080600060608486031215611e3857600080fd5b8335611e4381611d7a565b92506020840135611e5381611d7a565b929592945050506040919091013590565b80358015158114611e7457600080fd5b919050565b600060208284031215611e8b57600080fd5b6108d282611e64565b60008060408385031215611ea757600080fd5b8235611eb281611d7a565b9150611ec060208401611e64565b90509250929050565b60008060408385031215611edc57600080fd5b50508035926020909101359150565b600060208284031215611efd57600080fd5b5035919050565b600080600060608486031215611f1957600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611f4357600080fd5b8235611f4e81611d7a565b91506020830135611f5e81611d7a565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561086857610868611f69565b600060208284031215611fa457600080fd5b81516108d281611d7a565b8181038181111561086857610868611f69565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60008261202557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120905784516001600160a01b03168352938301939183019160010161206b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156120c657600080fd5b8351925060208401519150604084015190509250925092565b808202811582820484141761086857610868611f6956fea264697066735822122043b97226d301edac07357a4ba20454671b15a4bcf7302dd58c30b89063527c3d64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102815760003560e01c80638a8c523c1161014f578063beb08ab9116100c1578063dd62ed3e1161007a578063dd62ed3e14610785578063e43504da146107a5578063f25f4b56146107c4578063f2a42687146107e4578063f2fde38b14610814578063f887ea401461083457600080fd5b8063beb08ab9146106d5578063c4ceb339146106f5578063c851cc321461070b578063d621e8131461072b578063d63cad2214610745578063d83067861461076557600080fd5b8063a457c2d711610113578063a457c2d714610621578063a8aa1b3114610641578063a9059cbb14610669578063ab28a04c14610689578063b4b081df1461069f578063b9b2b5cd146106bf57600080fd5b80638a8c523c1461058a5780638da5cb5b1461059f578063924de9b7146105bd5780639358928b146105dd57806395d89b41146105f257600080fd5b80633bf31454116101f35780636db79437116101ac5780636db79437146104b157806370a08231146104d1578063715018a61461050757806375f0a8741461051c57806375fed3c71461055457806380ada68a1461057457600080fd5b80633bf314541461041b578063470624021461043b57806359cd903114610451578063601d495814610467578063625dd6051461047d5780636a3dacf21461049d57600080fd5b806323b872dd1161024557806323b872dd146103735780632b14ca56146103935780632ce0c0a0146103a9578063313ce567146103be578063351a964d146103da57806339509351146103fb57600080fd5b806306fdde031461028d57806308c43650146102d2578063095ea7b314610312578063147c9f6d1461033257806318160ddd1461035457600080fd5b3661028857005b600080fd5b34801561029957600080fd5b5060408051808201909152600a8152692237b73aba39a1b7b4b760b11b60208201525b6040516102c99190611d2c565b60405180910390f35b3480156102de57600080fd5b506103026102ed366004611d8f565b60116020526000908152604090205460ff1681565b60405190151581526020016102c9565b34801561031e57600080fd5b5061030261032d366004611dac565b610854565b34801561033e57600080fd5b5061035261034d366004611dd8565b61086e565b005b34801561036057600080fd5b506002545b6040519081526020016102c9565b34801561037f57600080fd5b5061030261038e366004611e23565b6108b5565b34801561039f57600080fd5b5061036560045481565b3480156103b557600080fd5b50610365600081565b3480156103ca57600080fd5b50604051601281526020016102c9565b3480156103e657600080fd5b50600d54610302906301000000900460ff1681565b34801561040757600080fd5b50610302610416366004611dac565b6108d9565b34801561042757600080fd5b50610352610436366004611e79565b6108fb565b34801561044757600080fd5b5061036560035481565b34801561045d57600080fd5b50610365600c5481565b34801561047357600080fd5b5061036560065481565b34801561048957600080fd5b50610352610498366004611e94565b6109b0565b3480156104a957600080fd5b506001610302565b3480156104bd57600080fd5b506103526104cc366004611ec9565b610b46565b3480156104dd57600080fd5b506103656104ec366004611d8f565b6001600160a01b03166000908152600e602052604090205490565b34801561051357600080fd5b50610352610b88565b34801561052857600080fd5b5060085461053c906001600160a01b031681565b6040516001600160a01b0390911681526020016102c9565b34801561056057600080fd5b5061035261056f366004611eeb565b610b9c565b34801561058057600080fd5b5061036560075481565b34801561059657600080fd5b50610352610c17565b3480156105ab57600080fd5b506000546001600160a01b031661053c565b3480156105c957600080fd5b506103526105d8366004611e79565b610cd7565b3480156105e957600080fd5b50610365610d83565b3480156105fe57600080fd5b50604080518082019091526006815265444f4e55545360d01b60208201526102bc565b34801561062d57600080fd5b5061030261063c366004611dac565b610df3565b34801561064d57600080fd5b50600d5461053c9064010000000090046001600160a01b031681565b34801561067557600080fd5b50610302610684366004611dac565b610e79565b34801561069557600080fd5b5061036561271081565b3480156106ab57600080fd5b506103526106ba366004611f04565b610e8f565b3480156106cb57600080fd5b50610365600b5481565b3480156106e157600080fd5b5060095461053c906001600160a01b031681565b34801561070157600080fd5b5061036560055481565b34801561071757600080fd5b50610352610726366004611d8f565b610f0a565b34801561073757600080fd5b50600d546103029060ff1681565b34801561075157600080fd5b50610352610760366004611e94565b61118a565b34801561077157600080fd5b50600d546103029062010000900460ff1681565b34801561079157600080fd5b506103656107a0366004611f30565b611201565b3480156107b157600080fd5b50600d5461030290610100900460ff1681565b3480156107d057600080fd5b50600a5461053c906001600160a01b031681565b3480156107f057600080fd5b506103026107ff366004611d8f565b60106020526000908152604090205460ff1681565b34801561082057600080fd5b5061035261082f366004611d8f565b61122c565b34801561084057600080fd5b5060015461053c906001600160a01b031681565b60003361086281858561126a565b60019150505b92915050565b61087661132f565b600980546001600160a01b039485166001600160a01b0319918216179091556008805493851693821693909317909255600a8054919093169116179055565b6000336108c385828561136b565b6108ce8585856113e5565b9150505b9392505050565b6000336108628185856108ec8383611201565b6108f69190611f7f565b61126a565b61090361132f565b801515600d60019054906101000a900460ff1615150361093e5760405162a7e72d60e41b815281151560048201526024015b60405180910390fd5b600d805482151561010081810261ff00198416179093556040805160ff94909304939093168015158352602083019190915233928201929092524260608201527ff99f9d4d81f67d0980beea494b4404ba3b8af1a0a2d493230f1a883efa027f2f906080015b60405180910390a15050565b6109b861132f565b6001600160a01b03821660009081526011602052604090205481151560ff9091161515036109fc5760405162a7e72d60e41b81528115156004820152602401610935565b306001600160a01b0316826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190611f92565b6001600160a01b031614158015610af25750306001600160a01b0316826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae69190611f92565b6001600160a01b031614155b15610b1b57604051634726455360e11b81526001600160a01b0383166004820152602401610935565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b610b4e61132f565b610bb8821180610b5f5750610bb881115b15610b7d576040516358d620b360e01b815260040160405180910390fd5b600391909155600455565b610b9061132f565b610b9a6000611670565b565b610ba461132f565b80600c5403610bc95760405163657e16cf60e01b815260048101829052602401610935565b600c805490829055604080518281526020810184905233918101919091524260608201527f9a9f4704ac409fe039e92a996e415370980275aaff2992936ed5b432886c55c5906080016109a4565b610c1f61132f565b600d5460ff1615610c4e57600d546040516301bf623960e61b815260ff90911615156004820152602401610935565b600d54610100900460ff1615610c8657600d54604051630eff900b60e21b815261010090910460ff1615156004820152602401610935565b600d546301000000900460ff1615610cc257600d5460405163610a8e6760e01b8152630100000090910460ff1615156004820152602401610935565b600d805463ff00ffff19166301000101179055565b610cdf61132f565b801515600d60039054906101000a900460ff16151503610d155760405162a7e72d60e41b81528115156004820152602401610935565b600d8054821515630100000081810263ff000000198416179093556040805160ff94909304939093168015158352602083019190915233928201929092524260608201527fa9eb6c000d17475b17651469533695f7b673c93327fdbadf4341ebeb2607a044906080016109a4565b600e6020527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c5461dead60009081527ff77e91909e61d18f67b875b2bfcae1f683a8d555e55382e3a6b082e2c59ea57a54600254919291610de49190611faf565b610dee9190611faf565b905090565b60003381610e018286611201565b905083811015610e615760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610935565b610e6e828686840361126a565b506001949350505050565b600033610e878185856113e5565b949350505050565b610e9761132f565b606481610ea48486611f7f565b610eae9190611f7f565b1115610efc5760405162461bcd60e51b815260206004820181905260248201527f546f74616c206665652070657263656e746167652065786365656473203130306044820152606401610935565b600592909255600655600755565b610f1261132f565b6001546001600160a01b03808316911603610f4b5760405163a936636960e01b81526001600160a01b0382166004820152602401610935565b600180546001600160a01b038381166001600160a01b0319831681178455600081815260106020908152604091829020805460ff19169096179095558051929093168083529382015233918101919091524260608201527fe1cb783288eddc7b22c25642a832d886a558be0dd900747310a34156b9fdcbbb9060800160405180910390a1600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611022573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110469190611f92565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cc9190611f92565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113d9190611f92565b600d8054640100000000600160c01b0319166401000000006001600160a01b03938416810291909117918290559004166000908152601160205260409020805460ff191660011790555050565b61119261132f565b6001600160a01b03821660009081526010602052604090205481151560ff9091161515036111d65760405162a7e72d60e41b81528115156004820152602401610935565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b61123461132f565b6001600160a01b03811661125e5760405163b20f76e360e01b815260006004820152602401610935565b61126781611670565b50565b6001600160a01b03831661129c57604051634726455360e11b81526001600160a01b0384166004820152602401610935565b6001600160a01b0382166112ce57604051634726455360e11b81526001600160a01b0383166004820152602401610935565b6001600160a01b038381166000818152600f602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b336113426000546001600160a01b031690565b6001600160a01b031614610b9a576040516332b2baa360e01b8152336004820152602401610935565b60006113778484611201565b905060001981146113df57818110156113d25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610935565b6113df848484840361126a565b50505050565b60006001600160a01b03841661141957604051634726455360e11b81526001600160a01b0385166004820152602401610935565b6001600160a01b03831661144b57604051634726455360e11b81526001600160a01b0384166004820152602401610935565b600d5460ff1615801561147757506001600160a01b03841660009081526010602052604090205460ff16155b801561149c57506001600160a01b03831660009081526010602052604090205460ff16155b156114ba57604051632b61510560e11b815260040160405180910390fd5b600d5462010000900460ff16806114e957506001600160a01b03841660009081526010602052604090205460ff165b15611500576114f98484846116c0565b90506108d2565b600d548290610100900460ff16801561153257506001600160a01b03851660009081526010602052604090205460ff16155b801561155757506001600160a01b03841660009081526010602052604090205460ff16155b1561156a57611567858585611759565b90505b600d546001600160a01b0386811664010000000090920416148015906115a15750600c54306000908152600e602052604090205410155b80156115b65750600d546301000000900460ff165b156115c3576115c3611854565b6001600160a01b0385166000908152600e60205260409020548111156115fb5760405162461bcd60e51b815260040161093590611fc2565b6001600160a01b038086166000818152600e6020526040808220805486900390559287168082529083902080548501905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061165d9085815260200190565b60405180910390a3506001949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600e6020526040812054828110156116f95760405162461bcd60e51b815260040161093590611fc2565b6001600160a01b038086166000818152600e602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061165d9087815260200190565b600d805462ff00001916620100001790556001600160a01b03831660009081526011602052604081205460ff16801561179457506000600354115b156117aa576117a38483611ac1565b9050611841565b6001600160a01b03831660009081526011602052604090205460ff1680156117d457506000600454115b156117e3576117a38483611b26565b6001600160a01b03841660009081526011602052604090205460ff1615801561182557506001600160a01b03831660009081526011602052604090205460ff16155b801561182f575060005b1561183e576117a38483611b4d565b50805b600d805462ff0000191690559392505050565b600d805462ff0000191662010000179055600c54479060009061187990600290612008565b9050600081600c5461188b9190611faf565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106118c5576118c561202a565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190611f92565b816001815181106119555761195561202a565b6001600160a01b039283166020918202929092010152600154600c5461197e923092169061126a565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906119b7908690600090869030904290600401612040565b600060405180830381600087803b1580156119d157600080fd5b505af11580156119e5573d6000803e3d6000fd5b50506001546001600160a01b0316915063f305d7199050611a068647611faf565b308560008061dead611a1a426104b0611f7f565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af1158015611a87573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611aac91906120b1565b5050600d805462ff0000191690555050505050565b600d805462ff0000191662010000179055600354600090819061271090611ae890856120df565b611af29190612008565b90506000611b008285611faf565b90508115611b1257611b128583611b6e565b600d805462ff000019169055949350505050565b600d805462ff0000191662010000179055600454600090819061271090611ae890856120df565b600d805462ff0000191662010000179055600080612710611ae882856120df565b600d805462ff0000191662010000179055600b8054829190600090611b94908490611f7f565b9091555050600554600090606490611bac90846120df565b611bb69190612008565b90506000606460065484611bca91906120df565b611bd49190612008565b90506000606460075485611be891906120df565b611bf29190612008565b90508215611c3b576000808052600e6020527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c8054859290611c35908490611f7f565b90915550505b8115611c6657306000908152600e602052604081208054849290611c60908490611f7f565b90915550505b8015611c9c576008546001600160a01b03166000908152600e602052604081208054839290611c96908490611f7f565b90915550505b6001600160a01b0385166000908152600e602052604081208054869290611cc4908490611faf565b9091555081905082611cd68587611faf565b611ce09190611faf565b611cea9190611faf565b600a546001600160a01b03166000908152600e602052604081208054909190611d14908490611f7f565b9091555050600d805462ff0000191690555050505050565b600060208083528351808285015260005b81811015611d5957858101830151858201604001528201611d3d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461126757600080fd5b600060208284031215611da157600080fd5b81356108d281611d7a565b60008060408385031215611dbf57600080fd5b8235611dca81611d7a565b946020939093013593505050565b600080600060608486031215611ded57600080fd5b8335611df881611d7a565b92506020840135611e0881611d7a565b91506040840135611e1881611d7a565b809150509250925092565b600080600060608486031215611e3857600080fd5b8335611e4381611d7a565b92506020840135611e5381611d7a565b929592945050506040919091013590565b80358015158114611e7457600080fd5b919050565b600060208284031215611e8b57600080fd5b6108d282611e64565b60008060408385031215611ea757600080fd5b8235611eb281611d7a565b9150611ec060208401611e64565b90509250929050565b60008060408385031215611edc57600080fd5b50508035926020909101359150565b600060208284031215611efd57600080fd5b5035919050565b600080600060608486031215611f1957600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611f4357600080fd5b8235611f4e81611d7a565b91506020830135611f5e81611d7a565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561086857610868611f69565b600060208284031215611fa457600080fd5b81516108d281611d7a565b8181038181111561086857610868611f69565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60008261202557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120905784516001600160a01b03168352938301939183019160010161206b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156120c657600080fd5b8351925060208401519150604084015190509250925092565b808202811582820484141761086857610868611f6956fea264697066735822122043b97226d301edac07357a4ba20454671b15a4bcf7302dd58c30b89063527c3d64736f6c63430008120033

Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.