ETH Price: $2,640.42 (+1.36%)

Token

Wellness Inu (WNI)
 

Overview

Max Total Supply

1,000,000,000,000 WNI

Holders

108

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: WNI 3
Balance
0.000000000197434004 WNI

Value
$0.00
0x3ea8c0a7de0826e31311c9f4fe62f6bac96cd544
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:
WellnessInu

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-27
*/

/*

██╗    ██╗███████╗██╗     ██╗     ███╗   ██╗███████╗███████╗███████╗    ██╗███╗   ██╗██╗   ██╗
██║    ██║██╔════╝██║     ██║     ████╗  ██║██╔════╝██╔════╝██╔════╝    ██║████╗  ██║██║   ██║
██║ █╗ ██║█████╗  ██║     ██║     ██╔██╗ ██║█████╗  ███████╗███████╗    ██║██╔██╗ ██║██║   ██║
██║███╗██║██╔══╝  ██║     ██║     ██║╚██╗██║██╔══╝  ╚════██║╚════██║    ██║██║╚██╗██║██║   ██║
╚███╔███╔╝███████╗███████╗███████╗██║ ╚████║███████╗███████║███████║    ██║██║ ╚████║╚██████╔╝

https://www.wellnessinu.app/
Telegram: https://t.me/WellnessInu
Twitter: @WellnessInu 
*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.1;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }
    modifier onlyOwner() {
        _checkOwner();
        _;
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    function _checkOwner() internal view virtual {
        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 {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}
interface IERC20 {

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

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

    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 IERC20Metadata is IERC20 {

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

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

    function decimals() external view returns (uint8);
}

abstract contract ERC20 is Context, IERC20, IERC20Metadata {

    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 override returns (string memory) {

        return _name;

    }

    function symbol() public view virtual override 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 to, uint256 amount) public virtual override returns (bool) {

        address owner = _msgSender();

        transfer(owner, to, 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) {

        address owner = _msgSender();

        _approve(owner, spender, amount);

        return true;

    }

    function transferFrom(

        address from,

        address to,

        uint256 amount

    ) public virtual override returns (bool) {

        address spender = _msgSender();

        _spendAllowance(from, spender, amount);

        transfer(from, to, amount);

        return true;

    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {

        address owner = _msgSender();

        _approve(owner, spender, allowance(owner, spender) + addedValue);

        return true;

    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {

        address owner = _msgSender();

        uint256 currentAllowance = allowance(owner, spender);

        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");

        unchecked {

            _approve(owner, spender, currentAllowance - subtractedValue);

        }

        return true;

    }

    function transfer(

        address from,

        address to,

        uint256 amount

    ) internal virtual {

        require(from != address(0), "ERC20: transfer from the zero address");

        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        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);

        _afterTokenTransfer(from, to, 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;

        unchecked {

            _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 _spendAllowance(

        address owner,

        address spender,

        uint256 amount

    ) internal virtual {

        uint256 currentAllowance = allowance(owner, spender);

        if (currentAllowance != type(uint256).max) {

            require(currentAllowance >= amount, "ERC20: insufficient allowance");

            unchecked {

                _approve(owner, spender, currentAllowance - amount);

            }

        }

    }

    function _beforeTokenTransfer(

        address from,

        address to,

        uint256 amount

    ) internal virtual {}

    function _afterTokenTransfer(

        address from,

        address to,

        uint256 amount

    ) internal virtual {}

}

interface IUniswapV2Factory {

    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);

    function allPairs(uint) external view returns (address pair);

    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;

}

interface IUniswapV2Router01 {

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(

        address tokenA,

        address tokenB,

        uint amountADesired,

        uint amountBDesired,

        uint amountAMin,

        uint amountBMin,

        address to,

        uint deadline

    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(

        address token,

        uint amountTokenDesired,

        uint amountTokenMin,

        uint amountETHMin,

        address to,

        uint deadline

    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidity(

        address tokenA,

        address tokenB,

        uint liquidity,

        uint amountAMin,

        uint amountBMin,

        address to,

        uint deadline

    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETH(

        address token,

        uint liquidity,

        uint amountTokenMin,

        uint amountETHMin,

        address to,

        uint deadline

    ) external returns (uint amountToken, uint amountETH);

    function removeLiquidityWithPermit(

        address tokenA,

        address tokenB,

        uint liquidity,

        uint amountAMin,

        uint amountBMin,

        address to,

        uint deadline,

        bool approveMax, uint8 v, bytes32 r, bytes32 s

    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETHWithPermit(

        address token,

        uint liquidity,

        uint amountTokenMin,

        uint amountETHMin,

        address to,

        uint deadline,

        bool approveMax, uint8 v, bytes32 r, bytes32 s

    ) external returns (uint amountToken, uint amountETH);

    function swapExactTokensForTokens(

        uint amountIn,

        uint amountOutMin,

        address[] calldata path,

        address to,

        uint deadline

    ) external returns (uint[] memory amounts);

    function swapTokensForExactTokens(

        uint amountOut,

        uint amountInMax,

        address[] calldata path,

        address to,

        uint deadline

    ) external returns (uint[] memory amounts);

    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)

        external

        payable

        returns (uint[] memory amounts);

    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)

        external

        returns (uint[] memory amounts);

    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)

        external

        returns (uint[] memory amounts);

    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)

        external

        payable

        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);

    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);

    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);

    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);

}

interface IUniswapV2Router02 is IUniswapV2Router01 {

    function removeLiquidityETHSupportingFeeOnTransferTokens(

        address token,

        uint liquidity,

        uint amountTokenMin,

        uint amountETHMin,

        address to,

        uint deadline

    ) external returns (uint amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(

        address token,

        uint liquidity,

        uint amountTokenMin,

        uint amountETHMin,

        address to,

        uint deadline,

        bool approveMax, uint8 v, bytes32 r, bytes32 s

    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(

        uint amountIn,

        uint amountOutMin,

        address[] calldata path,

        address to,

        uint deadline

    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(

        uint amountOutMin,

        address[] calldata path,

        address to,

        uint deadline

    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(

        uint amountIn,

        uint amountOutMin,

        address[] calldata path,

        address to,

        uint deadline

    ) external;

}

interface IUniswapV2Pair {

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

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint);

    function balanceOf(address owner) external view returns (uint);

    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);

    function transfer(address to, uint value) external returns (bool);

    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);

    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);

    event Swap(

        address indexed sender,

        uint amount0In,

        uint amount1In,

        uint amount0Out,

        uint amount1Out,

        address indexed to

    );

    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint);

    function price1CumulativeLast() external view returns (uint);

    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);

    function burn(address to) external returns (uint amount0, uint amount1);

    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;

}
    contract WellnessInu is Context, ERC20, Ownable {
    using SafeMath for uint256; 

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);
    address public devWallet = (0x9DCFD8DdBc2E394e282a007c8f85E90DD0106b68);

    mapping(address => bool) public automatedMarketMakerPairs;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private _bot; 

    bool public limitsInEffect = true;
    bool public tradingOpen = false;
    bool public swapEnabled = false;
    bool private swapping;

    string public constant _name = "Wellness Inu";
    string public constant _symbol = "WNI";
    uint8 constant _decimals = 9;

    uint256 public swapTokensAtAmount;
    uint256 public _maxWalletAmount;
    uint256 public _maxTxAmount;
    uint256 public _buyFee; //10% initial tax, to be decreased to 5%
    uint256 public _sellFee; //20% intial tax, to be decreased to 5%

    uint256 public botPenaltyPeriod;
    uint256 public activeTradingBlock;

    event SwapETHForTokens(uint256 amountIn, address[] path);

    event SwapTokensForETH(uint256 amountIn, address[] path);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    
    event excludeFromFees(address _isExcludedFromFees);
    
    event isBot(address indexed _bot);
    
    event removedBot(address indexed notBot);

 constructor() ERC20("Wellness Inu", "WNI") {

    IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    uniswapV2Router = _uniswapV2Router;
    uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
    _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

    uint256 totalSupply = (1*1e12)*1e18; //1 Trillion

    _maxWalletAmount = (totalSupply * 5)/1000; //0.5% initial max, to be increased to 1%
    _maxTxAmount = (totalSupply * 5)/1000; //0.5% initial max, to be increased to 1%

    _buyFee = 10;
    _sellFee = 10;

    _isExcludedFromFees[owner()] = true;
    _isExcludedFromFees[address(this)] = true;
    _isExcludedFromFees[devWallet] = true;
    _isExcludedMaxTransactionAmount[owner()] = true;
    _isExcludedMaxTransactionAmount[address(this)] = true;
    _isExcludedMaxTransactionAmount[devWallet] = true;

    _mint(msg.sender, totalSupply);

    swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

 }
 receive() external payable {}

    function enableTrading() external onlyOwner {
        tradingOpen = true;
        swapEnabled = true;
        activeTradingBlock = block.number;
        botPenaltyPeriod = block.timestamp + 7000 hours;
    }
    //Emergency use i.e. in case of withdrawing stuck eth
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if(!tradingOpen){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active yet.");
        }
        
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletAmount, "Balance exceeds max wallet amount!");
            }
                if(from != owner() && to != uniswapV2Pair && block.number == activeTradingBlock){
                    _bot[to] = true;
                    emit isBot(to);
                }
                 if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] || automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]){
                        require(amount <= _maxTxAmount, "Transfer amount exceeds max.");
                } 
               
            }
        }
        
        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapping = false;
        }

        bool takeFee = !swapping;
        //No fee on transfers. Bots cannot transfer tokens out except to owner/contract/devWallet
        if ((_isExcludedFromFees[from] || _isExcludedFromFees[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            require(!_bot[from],"Hey bot, feel free to send your tokens back to contract as you cannot transfer anywhere else.");
            takeFee = false;
        }

        uint256 fees = 0;
       
        if (takeFee) {
            //SELL - increased sell tax for bots
            if (_bot[from] && automatedMarketMakerPairs[to] && botPenaltyPeriod > block.timestamp){
                     fees = amount.mul(_sellFee * 5).div(100);
            }
            else if (automatedMarketMakerPairs[to] && _sellFee > 0) {
                fees = amount.mul(_sellFee).div(100);
            }
            //BUY
            else if (automatedMarketMakerPairs[from] && _buyFee > 0) {
                fees = amount.mul(_buyFee).div(100);
            }
            if (fees > 0) {
                _transfer(from, address(this), fees);
            }

            amount -= fees;
        }

            _transfer(from, to, amount);
    }
    
    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 setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function removeisBot(address account) external onlyOwner {
        _bot[account] = false;
        emit removedBot(account);
    }

    function excludeFromFee(address account) external onlyOwner {
        _isExcludedFromFees[account] = true;
        emit excludeFromFees(account);
    }

    function updateFees(
        uint256 UpdatedBuyFee,
        uint256 UpdatedSellFee
    ) external onlyOwner {
        _buyFee = UpdatedBuyFee;
        _sellFee = UpdatedSellFee;
     require((UpdatedBuyFee + UpdatedSellFee) <= 30, "Fees cannot be more than 30%");
    }

    function updateMaxWalletAmount(uint256 newMaxWallet) external onlyOwner {
    _maxWalletAmount = newMaxWallet;
    require(newMaxWallet <= 10, "Max wallet 1%"); //denominator 1000*
    }

    function updateMaxTx(uint256 newMaxTx) external onlyOwner {
      _maxTxAmount = newMaxTx;
     require(newMaxTx <= 10, "Max transacation 1%"); //denominator 1000*
    }
 
    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, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
  }
  // function to withdraw stuck Eth, max withdrawal amount = maxTxAmount
    function withdrawStuckEth(uint256 amount) external payable onlyOwner {
        require((amount <= _maxTxAmount), "Error");
        payable(msg.sender).transfer(address(this).balance);
}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"address","name":"_isExcludedFromFees","type":"address"}],"name":"excludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_bot","type":"address"}],"name":"isBot","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"notBot","type":"address"}],"name":"removedBot","type":"event"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","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":"_sellFee","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":"activeTradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botPenaltyPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","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":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"removeisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","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":[],"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":"UpdatedBuyFee","type":"uint256"},{"internalType":"uint256","name":"UpdatedSellFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTx","type":"uint256"}],"name":"updateMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","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":"uint256","name":"amount","type":"uint256"}],"name":"withdrawStuckEth","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600680546001600160a01b031916739dcfd8ddbc2e394e282a007c8f85e90dd0106b68179055600d805462ffffff191660011790553480156200004657600080fd5b506040518060400160405280600c81526020016b57656c6c6e65737320496e7560a01b81525060405180604001604052806003815260200162574e4960e81b8152508160039081620000999190620005c9565b506004620000a88282620005c9565b505050620000c5620000bf620003b060201b60201c565b620003b4565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa1580156200011c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000142919062000695565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000190573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b6919062000695565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022a919062000695565b6001600160a01b031660a08190526200024590600162000406565b6c0c9f2c9cd04674edea400000006103e862000263826005620006dd565b6200026f9190620006fd565b600f556103e862000282826005620006dd565b6200028e9190620006fd565b601055600a601181905560128190556001906000620002b56005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600a909352818320805485166001908117909155600654909116835290822080549093168117909255600b90620003256005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600b9093528183208054851660019081179091556006549091168352912080549092161790556200038833826200045a565b61271062000398826005620006dd565b620003a49190620006fd565b600e5550620007369050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260076020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038216620004b55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620004c9919062000720565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200055057607f821691505b6020821081036200057157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200052057600081815260208120601f850160051c81016020861015620005a05750805b601f850160051c820191505b81811015620005c157828155600101620005ac565b505050505050565b81516001600160401b03811115620005e557620005e562000525565b620005fd81620005f684546200053b565b8462000577565b602080601f8311600181146200063557600084156200061c5750858301515b600019600386901b1c1916600185901b178555620005c1565b600085815260208120601f198616915b82811015620006665788860151825594840194600190910190840162000645565b5085821015620006855787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620006a857600080fd5b81516001600160a01b0381168114620006c057600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620006f757620006f7620006c7565b92915050565b6000826200071b57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620006f757620006f7620006c7565b60805160a05161155162000763600039600081816103fd0152610a6d015260006102f201526115516000f3fe6080604052600436106102555760003560e01c80637d1db4a511610139578063b09f1266116100b6578063d28d88521161007a578063d28d8852146106f5578063dd62ed3e1461072d578063e2f456051461074d578063ea090d9714610763578063f2fde38b14610779578063ffb54a991461079957600080fd5b8063b09f126614610636578063b62496f514610665578063c18bc19514610695578063c2d0ffca146106b5578063d257b34f146106d557600080fd5b806395d89b41116100fd57806395d89b41146105ae5780639a7a23d6146105c3578063a457c2d7146105e3578063a9059cbb14610603578063a9853b3a1461062357600080fd5b80637d1db4a5146105255780638a8c523c1461053b5780638da5cb5b146105505780638ea5220f1461056e578063924de9b71461058e57600080fd5b8063437823ec116101d25780636c0a24eb116101965780636c0a24eb1461046f5780636db79437146104855780636ddd1713146104a557806370a08231146104c5578063715018a6146104fb578063751039fc1461051057600080fd5b8063437823ec146103c957806349bd5a5e146103eb5780634a62bb651461041f578063590f897e146104395780635dff6e5c1461044f57600080fd5b806323b872dd1161021957806323b872dd1461034157806327c8f83514610361578063313ce56714610377578063395093511461039357806340b9a54b146103b357600080fd5b806306fdde0314610261578063095ea7b31461028c5780631579f60f146102bc5780631694505e146102e057806318160ddd1461032c57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107b8565b60405161028391906112cf565b60405180910390f35b34801561029857600080fd5b506102ac6102a7366004611334565b61084a565b6040519015158152602001610283565b3480156102c857600080fd5b506102d260135481565b604051908152602001610283565b3480156102ec57600080fd5b506103147f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610283565b34801561033857600080fd5b506002546102d2565b34801561034d57600080fd5b506102ac61035c36600461135e565b610864565b34801561036d57600080fd5b5061031461dead81565b34801561038357600080fd5b5060405160128152602001610283565b34801561039f57600080fd5b506102ac6103ae366004611334565b610888565b3480156103bf57600080fd5b506102d260115481565b3480156103d557600080fd5b506103e96103e436600461139a565b6108aa565b005b3480156103f757600080fd5b506103147f000000000000000000000000000000000000000000000000000000000000000081565b34801561042b57600080fd5b50600d546102ac9060ff1681565b34801561044557600080fd5b506102d260125481565b34801561045b57600080fd5b506103e961046a36600461139a565b61090c565b34801561047b57600080fd5b506102d2600f5481565b34801561049157600080fd5b506103e96104a03660046113bc565b61095d565b3480156104b157600080fd5b50600d546102ac9062010000900460ff1681565b3480156104d157600080fd5b506102d26104e036600461139a565b6001600160a01b031660009081526020819052604090205490565b34801561050757600080fd5b506103e96109d2565b34801561051c57600080fd5b506102ac6109e6565b34801561053157600080fd5b506102d260105481565b34801561054757600080fd5b506103e9610a00565b34801561055c57600080fd5b506005546001600160a01b0316610314565b34801561057a57600080fd5b50600654610314906001600160a01b031681565b34801561059a57600080fd5b506103e96105a93660046113ee565b610a30565b3480156105ba57600080fd5b50610276610a54565b3480156105cf57600080fd5b506103e96105de366004611409565b610a63565b3480156105ef57600080fd5b506102ac6105fe366004611334565b610b1c565b34801561060f57600080fd5b506102ac61061e366004611334565b610b97565b6103e961063136600461143c565b610ba5565b34801561064257600080fd5b5061027660405180604001604052806003815260200162574e4960e81b81525081565b34801561067157600080fd5b506102ac61068036600461139a565b60076020526000908152604090205460ff1681565b3480156106a157600080fd5b506103e96106b036600461143c565b610c13565b3480156106c157600080fd5b506103e96106d036600461143c565b610c64565b3480156106e157600080fd5b506102ac6106f036600461143c565b610cb8565b34801561070157600080fd5b506102766040518060400160405280600c81526020016b57656c6c6e65737320496e7560a01b81525081565b34801561073957600080fd5b506102d2610748366004611455565b610dec565b34801561075957600080fd5b506102d2600e5481565b34801561076f57600080fd5b506102d260145481565b34801561078557600080fd5b506103e961079436600461139a565b610e17565b3480156107a557600080fd5b50600d546102ac90610100900460ff1681565b6060600380546107c79061147f565b80601f01602080910402602001604051908101604052809291908181526020018280546107f39061147f565b80156108405780601f1061081557610100808354040283529160200191610840565b820191906000526020600020905b81548152906001019060200180831161082357829003601f168201915b5050505050905090565b600033610858818585610e8d565b60019150505b92915050565b600033610872858285610fb1565b61087d85858561102b565b506001949350505050565b60003361085881858561089b8383610dec565b6108a591906114cf565b610e8d565b6108b26111cf565b6001600160a01b0381166000818152600a6020908152604091829020805460ff1916600117905590519182527fe57f14e1fb5e269f84ad9b1d1e04fcca214f84bb3c38cb336828aba1bfb6fc9b910160405180910390a150565b6109146111cf565b6001600160a01b0381166000818152600c6020526040808220805460ff19169055517fc048f5a099dde89d1153df82457e279f48f9f1a77bfdad4b88392f79e436ba289190a250565b6109656111cf565b60118290556012819055601e61097b82846114cf565b11156109ce5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e203330250000000060448201526064015b60405180910390fd5b5050565b6109da6111cf565b6109e46000611229565b565b60006109f06111cf565b50600d805460ff19169055600190565b610a086111cf565b600d805462ffff0019166201010017905543601455610a2b4263018085806114cf565b601355565b610a386111cf565b600d8054911515620100000262ff000019909216919091179055565b6060600480546107c79061147f565b610a6b6111cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610b125760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109c5565b6109ce828261127b565b60003381610b2a8286610dec565b905083811015610b8a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109c5565b61087d8286868403610e8d565b60003361085881858561102b565b610bad6111cf565b601054811115610be75760405162461bcd60e51b815260206004820152600560248201526422b93937b960d91b60448201526064016109c5565b60405133904780156108fc02916000818181858888f193505050501580156109ce573d6000803e3d6000fd5b610c1b6111cf565b600f819055600a811115610c615760405162461bcd60e51b815260206004820152600d60248201526c4d61782077616c6c657420312560981b60448201526064016109c5565b50565b610c6c6111cf565b6010819055600a811115610c615760405162461bcd60e51b81526020600482015260136024820152724d6178207472616e7361636174696f6e20312560681b60448201526064016109c5565b6000610cc26111cf565b620186a0610ccf60025490565b610cda9060016114e2565b610ce491906114f9565b821015610d515760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016109c5565b6103e8610d5d60025490565b610d689060056114e2565b610d7291906114f9565b821115610dde5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016109c5565b50600e81905560015b919050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610e1f6111cf565b6001600160a01b038116610e845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109c5565b610c6181611229565b6001600160a01b038316610eef5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109c5565b6001600160a01b038216610f505760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109c5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610fbd8484610dec565b9050600019811461102557818110156110185760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016109c5565b6110258484848403610e8d565b50505050565b6001600160a01b03831661108f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109c5565b6001600160a01b0382166110f15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109c5565b6001600160a01b038316600090815260208190526040902054818110156111695760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109c5565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611025565b6005546001600160a01b031633146109e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109c5565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260076020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600060208083528351808285015260005b818110156112fc578581018301518582016040015282016112e0565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610de757600080fd5b6000806040838503121561134757600080fd5b6113508361131d565b946020939093013593505050565b60008060006060848603121561137357600080fd5b61137c8461131d565b925061138a6020850161131d565b9150604084013590509250925092565b6000602082840312156113ac57600080fd5b6113b58261131d565b9392505050565b600080604083850312156113cf57600080fd5b50508035926020909101359150565b80358015158114610de757600080fd5b60006020828403121561140057600080fd5b6113b5826113de565b6000806040838503121561141c57600080fd5b6114258361131d565b9150611433602084016113de565b90509250929050565b60006020828403121561144e57600080fd5b5035919050565b6000806040838503121561146857600080fd5b6114718361131d565b91506114336020840161131d565b600181811c9082168061149357607f821691505b6020821081036114b357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561085e5761085e6114b9565b808202811582820484141761085e5761085e6114b9565b60008261151657634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220871a9fd1a3e34f7cce0e8a0dd6a55c537f55a164ca0254a7aef8e40e1414129b64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102555760003560e01c80637d1db4a511610139578063b09f1266116100b6578063d28d88521161007a578063d28d8852146106f5578063dd62ed3e1461072d578063e2f456051461074d578063ea090d9714610763578063f2fde38b14610779578063ffb54a991461079957600080fd5b8063b09f126614610636578063b62496f514610665578063c18bc19514610695578063c2d0ffca146106b5578063d257b34f146106d557600080fd5b806395d89b41116100fd57806395d89b41146105ae5780639a7a23d6146105c3578063a457c2d7146105e3578063a9059cbb14610603578063a9853b3a1461062357600080fd5b80637d1db4a5146105255780638a8c523c1461053b5780638da5cb5b146105505780638ea5220f1461056e578063924de9b71461058e57600080fd5b8063437823ec116101d25780636c0a24eb116101965780636c0a24eb1461046f5780636db79437146104855780636ddd1713146104a557806370a08231146104c5578063715018a6146104fb578063751039fc1461051057600080fd5b8063437823ec146103c957806349bd5a5e146103eb5780634a62bb651461041f578063590f897e146104395780635dff6e5c1461044f57600080fd5b806323b872dd1161021957806323b872dd1461034157806327c8f83514610361578063313ce56714610377578063395093511461039357806340b9a54b146103b357600080fd5b806306fdde0314610261578063095ea7b31461028c5780631579f60f146102bc5780631694505e146102e057806318160ddd1461032c57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107b8565b60405161028391906112cf565b60405180910390f35b34801561029857600080fd5b506102ac6102a7366004611334565b61084a565b6040519015158152602001610283565b3480156102c857600080fd5b506102d260135481565b604051908152602001610283565b3480156102ec57600080fd5b506103147f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610283565b34801561033857600080fd5b506002546102d2565b34801561034d57600080fd5b506102ac61035c36600461135e565b610864565b34801561036d57600080fd5b5061031461dead81565b34801561038357600080fd5b5060405160128152602001610283565b34801561039f57600080fd5b506102ac6103ae366004611334565b610888565b3480156103bf57600080fd5b506102d260115481565b3480156103d557600080fd5b506103e96103e436600461139a565b6108aa565b005b3480156103f757600080fd5b506103147f0000000000000000000000003ea8c0a7de0826e31311c9f4fe62f6bac96cd54481565b34801561042b57600080fd5b50600d546102ac9060ff1681565b34801561044557600080fd5b506102d260125481565b34801561045b57600080fd5b506103e961046a36600461139a565b61090c565b34801561047b57600080fd5b506102d2600f5481565b34801561049157600080fd5b506103e96104a03660046113bc565b61095d565b3480156104b157600080fd5b50600d546102ac9062010000900460ff1681565b3480156104d157600080fd5b506102d26104e036600461139a565b6001600160a01b031660009081526020819052604090205490565b34801561050757600080fd5b506103e96109d2565b34801561051c57600080fd5b506102ac6109e6565b34801561053157600080fd5b506102d260105481565b34801561054757600080fd5b506103e9610a00565b34801561055c57600080fd5b506005546001600160a01b0316610314565b34801561057a57600080fd5b50600654610314906001600160a01b031681565b34801561059a57600080fd5b506103e96105a93660046113ee565b610a30565b3480156105ba57600080fd5b50610276610a54565b3480156105cf57600080fd5b506103e96105de366004611409565b610a63565b3480156105ef57600080fd5b506102ac6105fe366004611334565b610b1c565b34801561060f57600080fd5b506102ac61061e366004611334565b610b97565b6103e961063136600461143c565b610ba5565b34801561064257600080fd5b5061027660405180604001604052806003815260200162574e4960e81b81525081565b34801561067157600080fd5b506102ac61068036600461139a565b60076020526000908152604090205460ff1681565b3480156106a157600080fd5b506103e96106b036600461143c565b610c13565b3480156106c157600080fd5b506103e96106d036600461143c565b610c64565b3480156106e157600080fd5b506102ac6106f036600461143c565b610cb8565b34801561070157600080fd5b506102766040518060400160405280600c81526020016b57656c6c6e65737320496e7560a01b81525081565b34801561073957600080fd5b506102d2610748366004611455565b610dec565b34801561075957600080fd5b506102d2600e5481565b34801561076f57600080fd5b506102d260145481565b34801561078557600080fd5b506103e961079436600461139a565b610e17565b3480156107a557600080fd5b50600d546102ac90610100900460ff1681565b6060600380546107c79061147f565b80601f01602080910402602001604051908101604052809291908181526020018280546107f39061147f565b80156108405780601f1061081557610100808354040283529160200191610840565b820191906000526020600020905b81548152906001019060200180831161082357829003601f168201915b5050505050905090565b600033610858818585610e8d565b60019150505b92915050565b600033610872858285610fb1565b61087d85858561102b565b506001949350505050565b60003361085881858561089b8383610dec565b6108a591906114cf565b610e8d565b6108b26111cf565b6001600160a01b0381166000818152600a6020908152604091829020805460ff1916600117905590519182527fe57f14e1fb5e269f84ad9b1d1e04fcca214f84bb3c38cb336828aba1bfb6fc9b910160405180910390a150565b6109146111cf565b6001600160a01b0381166000818152600c6020526040808220805460ff19169055517fc048f5a099dde89d1153df82457e279f48f9f1a77bfdad4b88392f79e436ba289190a250565b6109656111cf565b60118290556012819055601e61097b82846114cf565b11156109ce5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e203330250000000060448201526064015b60405180910390fd5b5050565b6109da6111cf565b6109e46000611229565b565b60006109f06111cf565b50600d805460ff19169055600190565b610a086111cf565b600d805462ffff0019166201010017905543601455610a2b4263018085806114cf565b601355565b610a386111cf565b600d8054911515620100000262ff000019909216919091179055565b6060600480546107c79061147f565b610a6b6111cf565b7f0000000000000000000000003ea8c0a7de0826e31311c9f4fe62f6bac96cd5446001600160a01b0316826001600160a01b031603610b125760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109c5565b6109ce828261127b565b60003381610b2a8286610dec565b905083811015610b8a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109c5565b61087d8286868403610e8d565b60003361085881858561102b565b610bad6111cf565b601054811115610be75760405162461bcd60e51b815260206004820152600560248201526422b93937b960d91b60448201526064016109c5565b60405133904780156108fc02916000818181858888f193505050501580156109ce573d6000803e3d6000fd5b610c1b6111cf565b600f819055600a811115610c615760405162461bcd60e51b815260206004820152600d60248201526c4d61782077616c6c657420312560981b60448201526064016109c5565b50565b610c6c6111cf565b6010819055600a811115610c615760405162461bcd60e51b81526020600482015260136024820152724d6178207472616e7361636174696f6e20312560681b60448201526064016109c5565b6000610cc26111cf565b620186a0610ccf60025490565b610cda9060016114e2565b610ce491906114f9565b821015610d515760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016109c5565b6103e8610d5d60025490565b610d689060056114e2565b610d7291906114f9565b821115610dde5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016109c5565b50600e81905560015b919050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610e1f6111cf565b6001600160a01b038116610e845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109c5565b610c6181611229565b6001600160a01b038316610eef5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109c5565b6001600160a01b038216610f505760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109c5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610fbd8484610dec565b9050600019811461102557818110156110185760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016109c5565b6110258484848403610e8d565b50505050565b6001600160a01b03831661108f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109c5565b6001600160a01b0382166110f15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109c5565b6001600160a01b038316600090815260208190526040902054818110156111695760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109c5565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611025565b6005546001600160a01b031633146109e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109c5565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260076020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600060208083528351808285015260005b818110156112fc578581018301518582016040015282016112e0565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610de757600080fd5b6000806040838503121561134757600080fd5b6113508361131d565b946020939093013593505050565b60008060006060848603121561137357600080fd5b61137c8461131d565b925061138a6020850161131d565b9150604084013590509250925092565b6000602082840312156113ac57600080fd5b6113b58261131d565b9392505050565b600080604083850312156113cf57600080fd5b50508035926020909101359150565b80358015158114610de757600080fd5b60006020828403121561140057600080fd5b6113b5826113de565b6000806040838503121561141c57600080fd5b6114258361131d565b9150611433602084016113de565b90509250929050565b60006020828403121561144e57600080fd5b5035919050565b6000806040838503121561146857600080fd5b6114718361131d565b91506114336020840161131d565b600181811c9082168061149357607f821691505b6020821081036114b357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561085e5761085e6114b9565b808202811582820484141761085e5761085e6114b9565b60008261151657634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220871a9fd1a3e34f7cce0e8a0dd6a55c537f55a164ca0254a7aef8e40e1414129b64736f6c63430008110033

Deployed Bytecode Sourcemap

20021:9287:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6567:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7530:209;;;;;;;;;;-1:-1:-1;7530:209:0;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;7530:209:0;1004:187:1;21248:31:0;;;;;;;;;;;;;;;;;;;1342:25:1;;;1330:2;1315:18;21248:31:0;1196:177:1;20112:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1569:32:1;;;1551:51;;1539:2;1524:18;20112:51:0;1378:230:1;6900:112:0;;;;;;;;;;-1:-1:-1;6990:12:0;;6900:112;;7747:312;;;;;;;;;;-1:-1:-1;7747:312:0;;;;;:::i;:::-;;:::i;20215:53::-;;;;;;;;;;;;20261:6;20215:53;;6795:97;;;;;;;;;;-1:-1:-1;6795:97:0;;6880:2;2296:36:1;;2284:2;2269:18;6795:97:0;2154:184:1;8067:246:0;;;;;;;;;;-1:-1:-1;8067:246:0;;;;;:::i;:::-;;:::i;21106:22::-;;;;;;;;;;;;;;;;27716:154;;;;;;;;;;-1:-1:-1;27716:154:0;;;;;:::i;:::-;;:::i;:::-;;20170:38;;;;;;;;;;;;;;;20714:33;;;;;;;;;;-1:-1:-1;20714:33:0;;;;;;;;21176:23;;;;;;;;;;;;;;;;27576:132;;;;;;;;;;-1:-1:-1;27576:132:0;;;;;:::i;:::-;;:::i;21034:31::-;;;;;;;;;;;;;;;;27878:276;;;;;;;;;;-1:-1:-1;27878:276:0;;;;;:::i;:::-;;:::i;20792:31::-;;;;;;;;;;-1:-1:-1;20792:31:0;;;;;;;;;;;7020:131;;;;;;;;;;-1:-1:-1;7020:131:0;;;;;:::i;:::-;-1:-1:-1;;;;;7123:18:0;7094:7;7123:18;;;;;;;;;;;;7020:131;2164:103;;;;;;;;;;;;;:::i;23345:121::-;;;;;;;;;;;;;:::i;21072:27::-;;;;;;;;;;;;;;;;22962:212;;;;;;;;;;;;;:::i;1933:87::-;;;;;;;;;;-1:-1:-1;2006:6:0;;-1:-1:-1;;;;;2006:6:0;1933:87;;20275:71;;;;;;;;;;-1:-1:-1;20275:71:0;;;;-1:-1:-1;;;;;20275:71:0;;;23239:100;;;;;;;;;;-1:-1:-1;23239:100:0;;;;;:::i;:::-;;:::i;6679:108::-;;;;;;;;;;;;;:::i;27070:302::-;;;;;;;;;;-1:-1:-1;27070:302:0;;;;;:::i;:::-;;:::i;8321:450::-;;;;;;;;;;-1:-1:-1;8321:450:0;;;;;:::i;:::-;;:::i;7159:200::-;;;;;;;;;;-1:-1:-1;7159:200:0;;;;;:::i;:::-;;:::i;29117:188::-;;;;;;:::i;:::-;;:::i;20912:38::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;20912:38:0;;;;;20355:57;;;;;;;;;;-1:-1:-1;20355:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28162:189;;;;;;;;;;-1:-1:-1;28162:189:0;;;;;:::i;:::-;;:::i;28359:172::-;;;;;;;;;;-1:-1:-1;28359:172:0;;;;;:::i;:::-;;:::i;26565:497::-;;;;;;;;;;-1:-1:-1;26565:497:0;;;;;:::i;:::-;;:::i;20860:45::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;20860:45:0;;;;;7367:155;;;;;;;;;;-1:-1:-1;7367:155:0;;;;;:::i;:::-;;:::i;20994:33::-;;;;;;;;;;;;;;;;21286;;;;;;;;;;;;;;;;2273:201;;;;;;;;;;-1:-1:-1;2273:201:0;;;;;:::i;:::-;;:::i;20754:31::-;;;;;;;;;;-1:-1:-1;20754:31:0;;;;;;;;;;;6567:104;6621:13;6656:5;6649:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6567:104;:::o;7530:209::-;7613:4;1490:10;7673:32;1490:10;7689:7;7698:6;7673:8;:32::i;:::-;7725:4;7718:11;;;7530:209;;;;;:::o;7747:312::-;7886:4;1490:10;7948:38;7964:4;1490:10;7979:6;7948:15;:38::i;:::-;7999:26;8008:4;8014:2;8018:6;7999:8;:26::i;:::-;-1:-1:-1;8045:4:0;;7747:312;-1:-1:-1;;;;7747:312:0:o;8067:246::-;8155:4;1490:10;8215:64;1490:10;8231:7;8268:10;8240:25;1490:10;8231:7;8240:9;:25::i;:::-;:38;;;;:::i;:::-;8215:8;:64::i;27716:154::-;1894:13;:11;:13::i;:::-;-1:-1:-1;;;;;27787:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:35;;-1:-1:-1;;27787:35:0::1;27818:4;27787:35;::::0;;27838:24;;1551:51:1;;;27838:24:0::1;::::0;1524:18:1;27838:24:0::1;;;;;;;27716:154:::0;:::o;27576:132::-;1894:13;:11;:13::i;:::-;-1:-1:-1;;;;;27644:13:0;::::1;27660:5;27644:13:::0;;;:4:::1;:13;::::0;;;;;:21;;-1:-1:-1;;27644:21:0::1;::::0;;27681:19;::::1;::::0;27660:5;27681:19:::1;27576:132:::0;:::o;27878:276::-;1894:13;:11;:13::i;:::-;28000:7:::1;:23:::0;;;28034:8:::1;:25:::0;;;28111:2:::1;28076:30;28045:14:::0;28010:13;28076:30:::1;:::i;:::-;28075:38;;28067:79;;;::::0;-1:-1:-1;;;28067:79:0;;4695:2:1;28067:79:0::1;::::0;::::1;4677:21:1::0;4734:2;4714:18;;;4707:30;4773;4753:18;;;4746:58;4821:18;;28067:79:0::1;;;;;;;;;27878:276:::0;;:::o;2164:103::-;1894:13;:11;:13::i;:::-;2229:30:::1;2256:1;2229:18;:30::i;:::-;2164:103::o:0;23345:121::-;23397:4;1894:13;:11;:13::i;:::-;-1:-1:-1;23414:14:0::1;:22:::0;;-1:-1:-1;;23414:22:0::1;::::0;;;23345:121;:::o;22962:212::-;1894:13;:11;:13::i;:::-;23017:11:::1;:18:::0;;-1:-1:-1;;23046:18:0;;;;;23096:12:::1;23075:18;:33:::0;23138:28:::1;:15;23156:10;23138:28;:::i;:::-;23119:16;:47:::0;22962:212::o;23239:100::-;1894:13;:11;:13::i;:::-;23310:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;23310:21:0;;::::1;::::0;;;::::1;::::0;;23239:100::o;6679:108::-;6735:13;6770:7;6763:14;;;;;:::i;27070:302::-;1894:13;:11;:13::i;:::-;27214::::1;-1:-1:-1::0;;;;;27206:21:0::1;:4;-1:-1:-1::0;;;;;27206:21:0::1;::::0;27184:128:::1;;;::::0;-1:-1:-1;;;27184:128:0;;5052:2:1;27184:128:0::1;::::0;::::1;5034:21:1::0;5091:2;5071:18;;;5064:30;5130:34;5110:18;;;5103:62;5201:27;5181:18;;;5174:55;5246:19;;27184:128:0::1;4850:421:1::0;27184:128:0::1;27323:41;27352:4;27358:5;27323:28;:41::i;8321:450::-:0;8414:4;1490:10;8414:4;8501:25;1490:10;8518:7;8501:9;:25::i;:::-;8474:52;;8567:15;8547:16;:35;;8539:85;;;;-1:-1:-1;;;8539:85:0;;5478:2:1;8539:85:0;;;5460:21:1;5517:2;5497:18;;;5490:30;5556:34;5536:18;;;5529:62;-1:-1:-1;;;5607:18:1;;;5600:35;5652:19;;8539:85:0;5276:401:1;8539:85:0;8664:60;8673:5;8680:7;8708:15;8689:16;:34;8664:8;:60::i;7159:200::-;7238:4;1490:10;7298:27;1490:10;7314:2;7318:6;7298:8;:27::i;29117:188::-;1894:13;:11;:13::i;:::-;29216:12:::1;;29206:6;:22;;29197:42;;;::::0;-1:-1:-1;;;29197:42:0;;5884:2:1;29197:42:0::1;::::0;::::1;5866:21:1::0;5923:1;5903:18;;;5896:29;-1:-1:-1;;;5941:18:1;;;5934:35;5986:18;;29197:42:0::1;5682:328:1::0;29197:42:0::1;29250:51;::::0;29258:10:::1;::::0;29279:21:::1;29250:51:::0;::::1;;;::::0;::::1;::::0;;;29279:21;29258:10;29250:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;28162:189:::0;1894:13;:11;:13::i;:::-;28241:16:::1;:31:::0;;;28303:2:::1;28287:18:::0;::::1;;28279:44;;;::::0;-1:-1:-1;;;28279:44:0;;6217:2:1;28279:44:0::1;::::0;::::1;6199:21:1::0;6256:2;6236:18;;;6229:30;-1:-1:-1;;;6275:18:1;;;6268:43;6328:18;;28279:44:0::1;6015:337:1::0;28279:44:0::1;28162:189:::0;:::o;28359:172::-;1894:13;:11;:13::i;:::-;28426:12:::1;:23:::0;;;28477:2:::1;28465:14:::0;::::1;;28457:46;;;::::0;-1:-1:-1;;;28457:46:0;;6559:2:1;28457:46:0::1;::::0;::::1;6541:21:1::0;6598:2;6578:18;;;6571:30;-1:-1:-1;;;6617:18:1;;;6610:49;6676:18;;28457:46:0::1;6357:343:1::0;26565:497:0;26673:4;1894:13;:11;:13::i;:::-;26752:6:::1;26731:13;6990:12:::0;;;6900:112;26731:13:::1;:17;::::0;26747:1:::1;26731:17;:::i;:::-;26730:28;;;;:::i;:::-;26717:9;:41;;26695:144;;;::::0;-1:-1:-1;;;26695:144:0;;7302:2:1;26695:144:0::1;::::0;::::1;7284:21:1::0;7341:2;7321:18;;;7314:30;7380:34;7360:18;;;7353:62;-1:-1:-1;;;7431:18:1;;;7424:51;7492:19;;26695:144:0::1;7100:417:1::0;26695:144:0::1;26907:4;26886:13;6990:12:::0;;;6900:112;26886:13:::1;:17;::::0;26902:1:::1;26886:17;:::i;:::-;26885:26;;;;:::i;:::-;26872:9;:39;;26850:141;;;::::0;-1:-1:-1;;;26850:141:0;;7724:2:1;26850:141:0::1;::::0;::::1;7706:21:1::0;7763:2;7743:18;;;7736:30;7802:34;7782:18;;;7775:62;-1:-1:-1;;;7853:18:1;;;7846:50;7913:19;;26850:141:0::1;7522:416:1::0;26850:141:0::1;-1:-1:-1::0;27002:18:0::1;:30:::0;;;27050:4:::1;1918:1;26565:497:::0;;;:::o;7367:155::-;-1:-1:-1;;;;;7485:18:0;;;7456:7;7485:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7367:155::o;2273:201::-;1894:13;:11;:13::i;:::-;-1:-1:-1;;;;;2362:22:0;::::1;2354:73;;;::::0;-1:-1:-1;;;2354:73:0;;8145:2:1;2354:73:0::1;::::0;::::1;8127:21:1::0;8184:2;8164:18;;;8157:30;8223:34;8203:18;;;8196:62;-1:-1:-1;;;8274:18:1;;;8267:36;8320:19;;2354:73:0::1;7943:402:1::0;2354:73:0::1;2438:28;2457:8;2438:18;:28::i;10557:396::-:0;-1:-1:-1;;;;;10703:19:0;;10695:68;;;;-1:-1:-1;;;10695:68:0;;8552:2:1;10695:68:0;;;8534:21:1;8591:2;8571:18;;;8564:30;8630:34;8610:18;;;8603:62;-1:-1:-1;;;8681:18:1;;;8674:34;8725:19;;10695:68:0;8350:400:1;10695:68:0;-1:-1:-1;;;;;10784:21:0;;10776:68;;;;-1:-1:-1;;;10776:68:0;;8957:2:1;10776:68:0;;;8939:21:1;8996:2;8976:18;;;8969:30;9035:34;9015:18;;;9008:62;-1:-1:-1;;;9086:18:1;;;9079:32;9128:19;;10776:68:0;8755:398:1;10776:68:0;-1:-1:-1;;;;;10857:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10911:32;;1342:25:1;;;10911:32:0;;1315:18:1;10911:32:0;;;;;;;10557:396;;;:::o;10961:477::-;11106:24;11133:25;11143:5;11150:7;11133:9;:25::i;:::-;11106:52;;-1:-1:-1;;11175:16:0;:37;11171:258;;11259:6;11239:16;:26;;11231:68;;;;-1:-1:-1;;;11231:68:0;;9360:2:1;11231:68:0;;;9342:21:1;9399:2;9379:18;;;9372:30;9438:31;9418:18;;;9411:59;9487:18;;11231:68:0;9158:353:1;11231:68:0;11347:51;11356:5;11363:7;11391:6;11372:16;:25;11347:8;:51::i;:::-;11093:345;10961:477;;;:::o;8779:698::-;-1:-1:-1;;;;;8919:18:0;;8911:68;;;;-1:-1:-1;;;8911:68:0;;9718:2:1;8911:68:0;;;9700:21:1;9757:2;9737:18;;;9730:30;9796:34;9776:18;;;9769:62;-1:-1:-1;;;9847:18:1;;;9840:35;9892:19;;8911:68:0;9516:401:1;8911:68:0;-1:-1:-1;;;;;9000:16:0;;8992:64;;;;-1:-1:-1;;;8992:64:0;;10124:2:1;8992:64:0;;;10106:21:1;10163:2;10143:18;;;10136:30;10202:34;10182:18;;;10175:62;-1:-1:-1;;;10253:18:1;;;10246:33;10296:19;;8992:64:0;9922:399:1;8992:64:0;-1:-1:-1;;;;;9142:15:0;;9120:19;9142:15;;;;;;;;;;;9178:21;;;;9170:72;;;;-1:-1:-1;;;9170:72:0;;10528:2:1;9170:72:0;;;10510:21:1;10567:2;10547:18;;;10540:30;10606:34;10586:18;;;10579:62;-1:-1:-1;;;10657:18:1;;;10650:36;10703:19;;9170:72:0;10326:402:1;9170:72:0;-1:-1:-1;;;;;9282:15:0;;;:9;:15;;;;;;;;;;;9300:20;;;9282:38;;9337:13;;;;;;;;;;:23;;;;;;9391:26;;1342:25:1;;;9337:13:0;;9391:26;;1315:18:1;9391:26:0;;;;;;;9430:37;11446:133;2026:132;2006:6;;-1:-1:-1;;;;;2006:6:0;1490:10;2090:23;2082:68;;;;-1:-1:-1;;;2082:68:0;;10935:2:1;2082:68:0;;;10917:21:1;;;10954:18;;;10947:30;11013:34;10993:18;;;10986:62;11065:18;;2082:68:0;10733:356:1;2480:191:0;2573:6;;;-1:-1:-1;;;;;2590:17:0;;;-1:-1:-1;;;;;;2590:17:0;;;;;;;2623:40;;2573:6;;;2590:17;2573:6;;2623:40;;2554:16;;2623:40;2543:128;2480:191;:::o;27380:188::-;-1:-1:-1;;;;;27463:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;27463:39:0;;;;;;;;;;27520:40;;27463:39;;:31;27520:40;;;27380:188;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;745:254;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1613:328::-;1690:6;1698;1706;1759:2;1747:9;1738:7;1734:23;1730:32;1727:52;;;1775:1;1772;1765:12;1727:52;1798:29;1817:9;1798:29;:::i;:::-;1788:39;;1846:38;1880:2;1869:9;1865:18;1846:38;:::i;:::-;1836:48;;1931:2;1920:9;1916:18;1903:32;1893:42;;1613:328;;;;;:::o;2343:186::-;2402:6;2455:2;2443:9;2434:7;2430:23;2426:32;2423:52;;;2471:1;2468;2461:12;2423:52;2494:29;2513:9;2494:29;:::i;:::-;2484:39;2343:186;-1:-1:-1;;;2343:186:1:o;2534:248::-;2602:6;2610;2663:2;2651:9;2642:7;2638:23;2634:32;2631:52;;;2679:1;2676;2669:12;2631:52;-1:-1:-1;;2702:23:1;;;2772:2;2757:18;;;2744:32;;-1:-1:-1;2534:248:1:o;2787:160::-;2852:20;;2908:13;;2901:21;2891:32;;2881:60;;2937:1;2934;2927:12;2952:180;3008:6;3061:2;3049:9;3040:7;3036:23;3032:32;3029:52;;;3077:1;3074;3067:12;3029:52;3100:26;3116:9;3100:26;:::i;3137:254::-;3202:6;3210;3263:2;3251:9;3242:7;3238:23;3234:32;3231:52;;;3279:1;3276;3269:12;3231:52;3302:29;3321:9;3302:29;:::i;:::-;3292:39;;3350:35;3381:2;3370:9;3366:18;3350:35;:::i;:::-;3340:45;;3137:254;;;;;:::o;3396:180::-;3455:6;3508:2;3496:9;3487:7;3483:23;3479:32;3476:52;;;3524:1;3521;3514:12;3476:52;-1:-1:-1;3547:23:1;;3396:180;-1:-1:-1;3396:180:1:o;3581:260::-;3649:6;3657;3710:2;3698:9;3689:7;3685:23;3681:32;3678:52;;;3726:1;3723;3716:12;3678:52;3749:29;3768:9;3749:29;:::i;:::-;3739:39;;3797:38;3831:2;3820:9;3816:18;3797:38;:::i;3846:380::-;3925:1;3921:12;;;;3968;;;3989:61;;4043:4;4035:6;4031:17;4021:27;;3989:61;4096:2;4088:6;4085:14;4065:18;4062:38;4059:161;;4142:10;4137:3;4133:20;4130:1;4123:31;4177:4;4174:1;4167:15;4205:4;4202:1;4195:15;4059:161;;3846:380;;;:::o;4231:127::-;4292:10;4287:3;4283:20;4280:1;4273:31;4323:4;4320:1;4313:15;4347:4;4344:1;4337:15;4363:125;4428:9;;;4449:10;;;4446:36;;;4462:18;;:::i;6705:168::-;6778:9;;;6809;;6826:15;;;6820:22;;6806:37;6796:71;;6847:18;;:::i;6878:217::-;6918:1;6944;6934:132;;6988:10;6983:3;6979:20;6976:1;6969:31;7023:4;7020:1;7013:15;7051:4;7048:1;7041:15;6934:132;-1:-1:-1;7080:9:1;;6878:217::o

Swarm Source

ipfs://871a9fd1a3e34f7cce0e8a0dd6a55c537f55a164ca0254a7aef8e40e1414129b
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.