ETH Price: $3,409.46 (+0.73%)
Gas: 3 Gwei

Token

BIBI (BIBI)
 

Overview

Max Total Supply

100,000,000 BIBI

Holders

118

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 BIBI

Value
$0.00
0x5a3de6b799f5543b78d3b6fe47d1a9b2c59c35b8
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:
BIBI

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-17
*/

// SPDX-License-Identifier: MIT
/**

Website: bibicoineth.wtf

Twitter: https://x.com/bibicoineth

Telegram: https://t.me/Bibicoineth


**/

pragma solidity ^0.8.16;

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function allPairsLength() external view returns (uint256);

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

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

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);

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

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

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

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

    function transferFrom(
        address from,
        address to,
        uint256 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 (uint256);

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

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

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

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);
}

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

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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_;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() external view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() external view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() external view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount)
        external
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount)
        external
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        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;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        external
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    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 _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");

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

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

contract BIBI is ERC20, Ownable {
    // TOKENOMICS START ==========================================================>
    string private _name = unicode"BIBI";
    string private _symbol = unicode"BIBI";
    uint8 private _decimals = 9;
    uint256 private _supply = 100_000_000;
    uint256 public taxBuyForMarketing = 20;
    uint256 public taxSellForMarketing = 20;
    uint256 public maxWalletAmount = ((_supply * 1) / 100) * 10**_decimals; // init max wallet 1%
    address public marketingWallet = 0x3e850e57C26b62ef3a23b42ae348A1E87ACd7bd4;
    // TOKENOMICS END ============================================================>

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    mapping(address => bool) private _isExcludedFromFee;

    uint256 private _numTokensSellToAddToETH =
        ((_supply * 2) / 10_000) * 10**_decimals;
    bool private _swapTaxAll = false;

    bool inSwapAndLiquify;

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor() ERC20(_name, _symbol) {
        _mint(msg.sender, (_supply * 10**_decimals));
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[address(uniswapV2Router)] = true;
        _isExcludedFromFee[msg.sender] = true;
        _isExcludedFromFee[marketingWallet] = true;
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(
            balanceOf(from) >= amount,
            "ERC20: transfer amount exceeds balance"
        );

        if (
            (from == uniswapV2Pair || to == uniswapV2Pair) && !inSwapAndLiquify
        ) {
            if (from != uniswapV2Pair) {
                uint256 contractLiquidityBalance = balanceOf(address(this));
                if ((contractLiquidityBalance) >= _numTokensSellToAddToETH) {
                    if (_swapTaxAll) {
                        _swapTokensForEth(contractLiquidityBalance);
                    } else {
                        _swapTokensForEth(
                            min(_numTokensSellToAddToETH, amount)
                        );
                    }

                    bool sent = payable(marketingWallet).send(
                        address(this).balance
                    );
                    require(sent, "Failed to send ETH");
                }
            }

            uint256 transferAmount;
            if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
                transferAmount = amount;
            } else {
                if (from == uniswapV2Pair) {
                    require(
                        (amount + balanceOf(to)) <= maxWalletAmount,
                        "ERC20: balance amount exceeded max wallet amount limit"
                    );
                }
                uint256 marketingShare = 0;
                if (from == uniswapV2Pair) {
                    marketingShare = ((amount * taxBuyForMarketing) / 100);
                } else {
                    marketingShare = ((amount * taxSellForMarketing) / 100);
                }

                transferAmount = amount - (marketingShare);

                if (marketingShare > 0)
                    super._transfer(from, address(this), (marketingShare));
            }
            super._transfer(from, to, transferAmount);
        } else {
            super._transfer(from, to, amount);
        }
    }

    function _swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            (block.timestamp + 300)
        );
    }

    function changeMarketingWallet(address newWallet)
        public
        onlyOwner
        returns (bool)
    {
        marketingWallet = newWallet;
        return true;
    }

    function changeTaxForMarketing(
        uint256 _taxBuyForMarketing,
        uint256 _taxSellForMarketing
    ) public onlyOwner returns (bool) {
        require(
            (_taxBuyForMarketing) <= 10,
            "ERC20: total tax must not be greater than 70"
        );
        require(
            (_taxSellForMarketing) <= 10,
            "ERC20: total tax must not be greater than 70"
        );
        taxBuyForMarketing = _taxBuyForMarketing;
        taxSellForMarketing = _taxSellForMarketing;

        return true;
    }

    function removeLimit() public onlyOwner returns (bool) {
        maxWalletAmount = _supply * 10**_decimals;
        _swapTaxAll = true;
        return true;
    }

    receive() external payable {}
}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxBuyForMarketing","type":"uint256"},{"internalType":"uint256","name":"_taxSellForMarketing","type":"uint256"}],"name":"changeTaxForMarketing","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[{"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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBuyForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSellForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"stateMutability":"payable","type":"receive"}]

610100604052600460c0908152634249424960e01b60e0526006906200002690826200062b565b506040805180820190915260048152634249424960e01b60208201526007906200005190826200062b565b506008805460ff191660099081179091556305f5e10081556014600a818155600b9190915562000082919062000806565b606460095460016200009591906200081d565b620000a1919062000837565b620000ad91906200081d565b600c55600d80546001600160a01b031916733e850e57c26b62ef3a23b42ae348a1e87acd7bd4179055600854620000e99060ff16600a62000806565b6127106009546002620000fd91906200081d565b62000109919062000837565b6200011591906200081d565b600f556010805460ff191690553480156200012e575f80fd5b50600680546200013e90620005a1565b80601f01602080910402602001604051908101604052809291908181526020018280546200016c90620005a1565b8015620001bb5780601f106200019157610100808354040283529160200191620001bb565b820191905f5260205f20905b8154815290600101906020018083116200019d57829003601f168201915b505050505060078054620001cf90620005a1565b80601f0160208091040260200160405190810160405280929190818152602001828054620001fd90620005a1565b80156200024c5780601f1062000222576101008083540402835291602001916200024c565b820191905f5260205f20905b8154815290600101906020018083116200022e57829003601f168201915b505050505081600390816200026291906200062b565b5060046200027182826200062b565b5050506200028e620002886200047460201b60201c565b62000478565b600854620002bd903390620002a89060ff16600a62000806565b600954620002b791906200081d565b620004c9565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000312573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000338919062000857565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000384573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003aa919062000857565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620003f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200041b919062000857565b6001600160a01b0390811660a05290811660808190525f908152600e60205260408082208054600160ff1991821681179092553384528284208054821683179055600d5490941683529120805490921617905562000895565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620005245760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546200053791906200087f565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005b657607f821691505b602082108103620005d557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200062657805f5260205f20601f840160051c81016020851015620006025750805b601f840160051c820191505b8181101562000623575f81556001016200060e565b50505b505050565b81516001600160401b038111156200064757620006476200058d565b6200065f81620006588454620005a1565b84620005db565b602080601f83116001811462000695575f84156200067d5750858301515b5f19600386901b1c1916600185901b178555620006ef565b5f85815260208120601f198616915b82811015620006c557888601518255948401946001909101908401620006a4565b5085821015620006e357878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200074b57815f19048211156200072f576200072f620006f7565b808516156200073d57918102915b93841c939080029062000710565b509250929050565b5f82620007635750600162000800565b816200077157505f62000800565b81600181146200078a57600281146200079557620007b5565b600191505062000800565b60ff841115620007a957620007a9620006f7565b50506001821b62000800565b5060208310610133831016604e8410600b8410161715620007da575081810a62000800565b620007e683836200070b565b805f1904821115620007fc57620007fc620006f7565b0290505b92915050565b5f6200081660ff84168362000753565b9392505050565b8082028115828204841417620008005762000800620006f7565b5f826200085257634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000868575f80fd5b81516001600160a01b038116811462000816575f80fd5b80820180821115620008005762000800620006f7565b60805160a0516114ef620008ef5f395f81816102950152818161096d015281816109a8015281816109f701528181610b2d0152610bf901525f81816101b401528181610db701528181610e6e0152610e9d01526114ef5ff3fe60806040526004361061013f575f3560e01c8063715018a6116100b3578063aa4bde281161006d578063aa4bde28146103a3578063b60c30f9146103b8578063bb85c6d1146103cd578063d0e1d262146103ec578063dd62ed3e14610401578063f2fde38b14610420575f80fd5b8063715018a6146102ff57806375f0a874146103155780638da5cb5b1461033457806395d89b4114610351578063a457c2d714610365578063a9059cbb14610384575f80fd5b8063313ce56711610104578063313ce5671461022b5780633441f06f14610246578063395093511461026557806349bd5a5e1461028457806362256589146102b757806370a08231146102cb575f80fd5b806306fdde031461014a578063095ea7b3146101745780631694505e146101a357806318160ddd146101ee57806323b872dd1461020c575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5061015e61043f565b60405161016b919061102f565b60405180910390f35b34801561017f575f80fd5b5061019361018e36600461108f565b6104cf565b604051901515815260200161016b565b3480156101ae575f80fd5b506101d67f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161016b565b3480156101f9575f80fd5b506002545b60405190815260200161016b565b348015610217575f80fd5b506101936102263660046110b9565b6104e8565b348015610236575f80fd5b506040516009815260200161016b565b348015610251575f80fd5b506101936102603660046110f7565b61050b565b348015610270575f80fd5b5061019361027f36600461108f565b61056e565b34801561028f575f80fd5b506101d67f000000000000000000000000000000000000000000000000000000000000000081565b3480156102c2575f80fd5b5061019361058f565b3480156102d6575f80fd5b506101fe6102e5366004611117565b6001600160a01b03165f9081526020819052604090205490565b34801561030a575f80fd5b506103136105cd565b005b348015610320575f80fd5b50600d546101d6906001600160a01b031681565b34801561033f575f80fd5b506005546001600160a01b03166101d6565b34801561035c575f80fd5b5061015e6105e0565b348015610370575f80fd5b5061019361037f36600461108f565b6105ef565b34801561038f575f80fd5b5061019361039e36600461108f565b610669565b3480156103ae575f80fd5b506101fe600c5481565b3480156103c3575f80fd5b506101fe600a5481565b3480156103d8575f80fd5b506101936103e7366004611117565b610676565b3480156103f7575f80fd5b506101fe600b5481565b34801561040c575f80fd5b506101fe61041b366004611132565b6106a4565b34801561042b575f80fd5b5061031361043a366004611117565b6106ce565b60606003805461044e90611169565b80601f016020809104026020016040519081016040528092919081815260200182805461047a90611169565b80156104c55780601f1061049c576101008083540402835291602001916104c5565b820191905f5260205f20905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b5f336104dc818585610747565b60019150505b92915050565b5f336104f585828561086a565b6105008585856108e2565b506001949350505050565b5f610514610ca8565b600a83111561053e5760405162461bcd60e51b8152600401610535906111a1565b60405180910390fd5b600a82111561055f5760405162461bcd60e51b8152600401610535906111a1565b50600a91909155600b55600190565b5f336104dc81858561058083836106a4565b61058a9190611201565b610747565b5f610598610ca8565b6008546105a99060ff16600a6112f4565b6009546105b69190611302565b600c55506010805460ff1916600190811790915590565b6105d5610ca8565b6105de5f610d02565b565b60606004805461044e90611169565b5f33816105fc82866106a4565b90508381101561065c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610535565b6105008286868403610747565b5f336104dc8185856108e2565b5f61067f610ca8565b50600d80546001600160a01b0383166001600160a01b03199091161790556001919050565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6106d6610ca8565b6001600160a01b03811661073b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610535565b61074481610d02565b50565b6001600160a01b0383166107a95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610535565b6001600160a01b03821661080a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610535565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61087584846106a4565b90505f1981146108dc57818110156108cf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6108dc8484848403610747565b50505050565b6001600160a01b0383166109085760405162461bcd60e51b815260040161053590611319565b6001600160a01b03821661092e5760405162461bcd60e51b81526004016105359061135e565b8061094d846001600160a01b03165f9081526020819052604090205490565b101561096b5760405162461bcd60e51b8152600401610535906113a1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614806109dc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b80156109f05750601054610100900460ff16155b15610c98577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614610ae257305f90815260208190526040902054600f548110610ae05760105460ff1615610a5f57610a5a81610d53565b610a73565b610a73610a6e600f5484610f2e565b610d53565b600d546040515f916001600160a01b0316904780156108fc029184818181858888f19350505050905080610ade5760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b6044820152606401610535565b505b505b6001600160a01b0383165f908152600e602052604081205460ff1680610b1f57506001600160a01b0383165f908152600e602052604090205460ff165b15610b2b575080610c8d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603610bf657600c546001600160a01b0384165f90815260208190526040902054610b899084611201565b1115610bf65760405162461bcd60e51b815260206004820152603660248201527f45524332303a2062616c616e636520616d6f756e74206578636565646564206d604482015275185e081dd85b1b195d08185b5bdd5b9d081b1a5b5a5d60521b6064820152608401610535565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603610c51576064600a5484610c409190611302565b610c4a91906113e7565b9050610c6e565b6064600b5484610c619190611302565b610c6b91906113e7565b90505b610c788184611406565b91508015610c8b57610c8b853083610f45565b505b6108dc848483610f45565b610ca3838383610f45565b505050565b6005546001600160a01b031633146105de5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610535565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6010805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610d9557610d95611419565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e35919061142d565b81600181518110610e4857610e48611419565b60200260200101906001600160a01b031690816001600160a01b031681525050610e93307f000000000000000000000000000000000000000000000000000000000000000084610747565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663791ac947835f8430610ed24261012c611201565b6040518663ffffffff1660e01b8152600401610ef2959493929190611448565b5f604051808303815f87803b158015610f09575f80fd5b505af1158015610f1b573d5f803e3d5ffd5b50506010805461ff001916905550505050565b5f818311610f3c5782610f3e565b815b9392505050565b6001600160a01b038316610f6b5760405162461bcd60e51b815260040161053590611319565b6001600160a01b038216610f915760405162461bcd60e51b81526004016105359061135e565b6001600160a01b0383165f9081526020819052604090205481811015610fc95760405162461bcd60e51b8152600401610535906113a1565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b5f602080835283518060208501525f5b8181101561105b5785810183015185820160400152820161103f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610744575f80fd5b5f80604083850312156110a0575f80fd5b82356110ab8161107b565b946020939093013593505050565b5f805f606084860312156110cb575f80fd5b83356110d68161107b565b925060208401356110e68161107b565b929592945050506040919091013590565b5f8060408385031215611108575f80fd5b50508035926020909101359150565b5f60208284031215611127575f80fd5b8135610f3e8161107b565b5f8060408385031215611143575f80fd5b823561114e8161107b565b9150602083013561115e8161107b565b809150509250929050565b600181811c9082168061117d57607f821691505b60208210810361119b57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602c908201527f45524332303a20746f74616c20746178206d757374206e6f742062652067726560408201526b061746572207468616e2037360a41b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104e2576104e26111ed565b600181815b8085111561124e57815f1904821115611234576112346111ed565b8085161561124157918102915b93841c9390800290611219565b509250929050565b5f82611264575060016104e2565b8161127057505f6104e2565b81600181146112865760028114611290576112ac565b60019150506104e2565b60ff8411156112a1576112a16111ed565b50506001821b6104e2565b5060208310610133831016604e8410600b84101617156112cf575081810a6104e2565b6112d98383611214565b805f19048211156112ec576112ec6111ed565b029392505050565b5f610f3e60ff841683611256565b80820281158282048414176104e2576104e26111ed565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b5f8261140157634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104e2576104e26111ed565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561143d575f80fd5b8151610f3e8161107b565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156114985784516001600160a01b031683529383019391830191600101611473565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220fc52b118d083d77726351a6f74606ecad04e2b632cb41ef342dc32dbc9af527a64736f6c63430008170033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c8063715018a6116100b3578063aa4bde281161006d578063aa4bde28146103a3578063b60c30f9146103b8578063bb85c6d1146103cd578063d0e1d262146103ec578063dd62ed3e14610401578063f2fde38b14610420575f80fd5b8063715018a6146102ff57806375f0a874146103155780638da5cb5b1461033457806395d89b4114610351578063a457c2d714610365578063a9059cbb14610384575f80fd5b8063313ce56711610104578063313ce5671461022b5780633441f06f14610246578063395093511461026557806349bd5a5e1461028457806362256589146102b757806370a08231146102cb575f80fd5b806306fdde031461014a578063095ea7b3146101745780631694505e146101a357806318160ddd146101ee57806323b872dd1461020c575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5061015e61043f565b60405161016b919061102f565b60405180910390f35b34801561017f575f80fd5b5061019361018e36600461108f565b6104cf565b604051901515815260200161016b565b3480156101ae575f80fd5b506101d67f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161016b565b3480156101f9575f80fd5b506002545b60405190815260200161016b565b348015610217575f80fd5b506101936102263660046110b9565b6104e8565b348015610236575f80fd5b506040516009815260200161016b565b348015610251575f80fd5b506101936102603660046110f7565b61050b565b348015610270575f80fd5b5061019361027f36600461108f565b61056e565b34801561028f575f80fd5b506101d67f00000000000000000000000053f8f85e984e51ae20c114721e4d3c26a07ec09e81565b3480156102c2575f80fd5b5061019361058f565b3480156102d6575f80fd5b506101fe6102e5366004611117565b6001600160a01b03165f9081526020819052604090205490565b34801561030a575f80fd5b506103136105cd565b005b348015610320575f80fd5b50600d546101d6906001600160a01b031681565b34801561033f575f80fd5b506005546001600160a01b03166101d6565b34801561035c575f80fd5b5061015e6105e0565b348015610370575f80fd5b5061019361037f36600461108f565b6105ef565b34801561038f575f80fd5b5061019361039e36600461108f565b610669565b3480156103ae575f80fd5b506101fe600c5481565b3480156103c3575f80fd5b506101fe600a5481565b3480156103d8575f80fd5b506101936103e7366004611117565b610676565b3480156103f7575f80fd5b506101fe600b5481565b34801561040c575f80fd5b506101fe61041b366004611132565b6106a4565b34801561042b575f80fd5b5061031361043a366004611117565b6106ce565b60606003805461044e90611169565b80601f016020809104026020016040519081016040528092919081815260200182805461047a90611169565b80156104c55780601f1061049c576101008083540402835291602001916104c5565b820191905f5260205f20905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b5f336104dc818585610747565b60019150505b92915050565b5f336104f585828561086a565b6105008585856108e2565b506001949350505050565b5f610514610ca8565b600a83111561053e5760405162461bcd60e51b8152600401610535906111a1565b60405180910390fd5b600a82111561055f5760405162461bcd60e51b8152600401610535906111a1565b50600a91909155600b55600190565b5f336104dc81858561058083836106a4565b61058a9190611201565b610747565b5f610598610ca8565b6008546105a99060ff16600a6112f4565b6009546105b69190611302565b600c55506010805460ff1916600190811790915590565b6105d5610ca8565b6105de5f610d02565b565b60606004805461044e90611169565b5f33816105fc82866106a4565b90508381101561065c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610535565b6105008286868403610747565b5f336104dc8185856108e2565b5f61067f610ca8565b50600d80546001600160a01b0383166001600160a01b03199091161790556001919050565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6106d6610ca8565b6001600160a01b03811661073b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610535565b61074481610d02565b50565b6001600160a01b0383166107a95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610535565b6001600160a01b03821661080a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610535565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61087584846106a4565b90505f1981146108dc57818110156108cf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6108dc8484848403610747565b50505050565b6001600160a01b0383166109085760405162461bcd60e51b815260040161053590611319565b6001600160a01b03821661092e5760405162461bcd60e51b81526004016105359061135e565b8061094d846001600160a01b03165f9081526020819052604090205490565b101561096b5760405162461bcd60e51b8152600401610535906113a1565b7f00000000000000000000000053f8f85e984e51ae20c114721e4d3c26a07ec09e6001600160a01b0316836001600160a01b031614806109dc57507f00000000000000000000000053f8f85e984e51ae20c114721e4d3c26a07ec09e6001600160a01b0316826001600160a01b0316145b80156109f05750601054610100900460ff16155b15610c98577f00000000000000000000000053f8f85e984e51ae20c114721e4d3c26a07ec09e6001600160a01b0316836001600160a01b031614610ae257305f90815260208190526040902054600f548110610ae05760105460ff1615610a5f57610a5a81610d53565b610a73565b610a73610a6e600f5484610f2e565b610d53565b600d546040515f916001600160a01b0316904780156108fc029184818181858888f19350505050905080610ade5760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b6044820152606401610535565b505b505b6001600160a01b0383165f908152600e602052604081205460ff1680610b1f57506001600160a01b0383165f908152600e602052604090205460ff165b15610b2b575080610c8d565b7f00000000000000000000000053f8f85e984e51ae20c114721e4d3c26a07ec09e6001600160a01b0316846001600160a01b031603610bf657600c546001600160a01b0384165f90815260208190526040902054610b899084611201565b1115610bf65760405162461bcd60e51b815260206004820152603660248201527f45524332303a2062616c616e636520616d6f756e74206578636565646564206d604482015275185e081dd85b1b195d08185b5bdd5b9d081b1a5b5a5d60521b6064820152608401610535565b5f7f00000000000000000000000053f8f85e984e51ae20c114721e4d3c26a07ec09e6001600160a01b0316856001600160a01b031603610c51576064600a5484610c409190611302565b610c4a91906113e7565b9050610c6e565b6064600b5484610c619190611302565b610c6b91906113e7565b90505b610c788184611406565b91508015610c8b57610c8b853083610f45565b505b6108dc848483610f45565b610ca3838383610f45565b505050565b6005546001600160a01b031633146105de5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610535565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6010805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610d9557610d95611419565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e35919061142d565b81600181518110610e4857610e48611419565b60200260200101906001600160a01b031690816001600160a01b031681525050610e93307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610747565b6001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1663791ac947835f8430610ed24261012c611201565b6040518663ffffffff1660e01b8152600401610ef2959493929190611448565b5f604051808303815f87803b158015610f09575f80fd5b505af1158015610f1b573d5f803e3d5ffd5b50506010805461ff001916905550505050565b5f818311610f3c5782610f3e565b815b9392505050565b6001600160a01b038316610f6b5760405162461bcd60e51b815260040161053590611319565b6001600160a01b038216610f915760405162461bcd60e51b81526004016105359061135e565b6001600160a01b0383165f9081526020819052604090205481811015610fc95760405162461bcd60e51b8152600401610535906113a1565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b5f602080835283518060208501525f5b8181101561105b5785810183015185820160400152820161103f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610744575f80fd5b5f80604083850312156110a0575f80fd5b82356110ab8161107b565b946020939093013593505050565b5f805f606084860312156110cb575f80fd5b83356110d68161107b565b925060208401356110e68161107b565b929592945050506040919091013590565b5f8060408385031215611108575f80fd5b50508035926020909101359150565b5f60208284031215611127575f80fd5b8135610f3e8161107b565b5f8060408385031215611143575f80fd5b823561114e8161107b565b9150602083013561115e8161107b565b809150509250929050565b600181811c9082168061117d57607f821691505b60208210810361119b57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602c908201527f45524332303a20746f74616c20746178206d757374206e6f742062652067726560408201526b061746572207468616e2037360a41b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104e2576104e26111ed565b600181815b8085111561124e57815f1904821115611234576112346111ed565b8085161561124157918102915b93841c9390800290611219565b509250929050565b5f82611264575060016104e2565b8161127057505f6104e2565b81600181146112865760028114611290576112ac565b60019150506104e2565b60ff8411156112a1576112a16111ed565b50506001821b6104e2565b5060208310610133831016604e8410600b84101617156112cf575081810a6104e2565b6112d98383611214565b805f19048211156112ec576112ec6111ed565b029392505050565b5f610f3e60ff841683611256565b80820281158282048414176104e2576104e26111ed565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b5f8261140157634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104e2576104e26111ed565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561143d575f80fd5b8151610f3e8161107b565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156114985784516001600160a01b031683529383019391830191600101611473565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220fc52b118d083d77726351a6f74606ecad04e2b632cb41ef342dc32dbc9af527a64736f6c63430008170033

Deployed Bytecode Sourcemap

23590:5713:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14505:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16779:244;;;;;;;;;;-1:-1:-1;16779:244:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;16779:244:0;1023:187:1;24239:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;24239:51:0;1215:229:1;15643:110:0;;;;;;;;;;-1:-1:-1;15733:12:0;;15643:110;;;1595:25:1;;;1583:2;1568:18;15643:110:0;1449:177:1;17603:297:0;;;;;;;;;;-1:-1:-1;17603:297:0;;;;;:::i;:::-;;:::i;15486:92::-;;;;;;;;;;-1:-1:-1;15486:92:0;;15569:1;2234:36:1;;2222:2;2207:18;15486:92:0;2092:184:1;28541:548:0;;;;;;;;;;-1:-1:-1;28541:548:0;;;;;:::i;:::-;;:::i;19319:272::-;;;;;;;;;;-1:-1:-1;19319:272:0;;;;;:::i;:::-;;:::i;24297:38::-;;;;;;;;;;;;;;;29097:166;;;;;;;;;;;;;:::i;14670:177::-;;;;;;;;;;-1:-1:-1;14670:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;14821:18:0;14789:7;14821:18;;;;;;;;;;;;14670:177;12960:103;;;;;;;;;;;;;:::i;:::-;;24070:75;;;;;;;;;;-1:-1:-1;24070:75:0;;;;-1:-1:-1;;;;;24070:75:0;;;12312:87;;;;;;;;;;-1:-1:-1;12385:6:0;;-1:-1:-1;;;;;12385:6:0;12312:87;;14329:106;;;;;;;;;;;;;:::i;18403:507::-;;;;;;;;;;-1:-1:-1;18403:507:0;;;;;:::i;:::-;;:::i;16223:236::-;;;;;;;;;;-1:-1:-1;16223:236:0;;;;;:::i;:::-;;:::i;23971:70::-;;;;;;;;;;;;;;;;23880:38;;;;;;;;;;;;;;;;28351:182;;;;;;;;;;-1:-1:-1;28351:182:0;;;;;:::i;:::-;;:::i;23925:39::-;;;;;;;;;;;;;;;;15816:201;;;;;;;;;;-1:-1:-1;15816:201:0;;;;;:::i;:::-;;:::i;13218:238::-;;;;;;;;;;-1:-1:-1;13218:238:0;;;;;:::i;:::-;;:::i;14505:102::-;14561:13;14594:5;14587:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14505:102;:::o;16779:244::-;16900:4;11185:10;16961:32;11185:10;16977:7;16986:6;16961:8;:32::i;:::-;17011:4;17004:11;;;16779:244;;;;;:::o;17603:297::-;17736:4;11185:10;17794:38;17810:4;11185:10;17825:6;17794:15;:38::i;:::-;17843:27;17853:4;17859:2;17863:6;17843:9;:27::i;:::-;-1:-1:-1;17888:4:0;;17603:297;-1:-1:-1;;;;17603:297:0:o;28541:548::-;28682:4;12198:13;:11;:13::i;:::-;28746:2:::1;28722:19;28721:27;;28699:121;;;;-1:-1:-1::0;;;28699:121:0::1;;;;;;;:::i;:::-;;;;;;;;;28879:2;28854:20;28853:28;;28831:122;;;;-1:-1:-1::0;;;28831:122:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;28964:18:0::1;:40:::0;;;;29015:19:::1;:42:::0;29077:4:::1;::::0;28541:548::o;19319:272::-;19436:4;11185:10;19497:64;11185:10;19513:7;19550:10;19522:25;11185:10;19513:7;19522:9;:25::i;:::-;:38;;;;:::i;:::-;19497:8;:64::i;29097:166::-;29146:4;12198:13;:11;:13::i;:::-;29195:9:::1;::::0;29191:13:::1;::::0;29195:9:::1;;29191:2;:13;:::i;:::-;29181:7;;:23;;;;:::i;:::-;29163:15;:41:::0;-1:-1:-1;29215:11:0::1;:18:::0;;-1:-1:-1;;29215:18:0::1;29229:4;29215:18:::0;;::::1;::::0;;;29097:166;:::o;12960:103::-;12198:13;:11;:13::i;:::-;13025:30:::1;13052:1;13025:18;:30::i;:::-;12960:103::o:0;14329:106::-;14387:13;14420:7;14413:14;;;;;:::i;18403:507::-;18525:4;11185:10;18525:4;18613:25;11185:10;18630:7;18613:9;:25::i;:::-;18586:52;;18691:15;18671:16;:35;;18649:122;;;;-1:-1:-1;;;18649:122:0;;6199:2:1;18649:122:0;;;6181:21:1;6238:2;6218:18;;;6211:30;6277:34;6257:18;;;6250:62;-1:-1:-1;;;6328:18:1;;;6321:35;6373:19;;18649:122:0;5997:401:1;18649:122:0;18807:60;18816:5;18823:7;18851:15;18832:16;:34;18807:8;:60::i;16223:236::-;16340:4;11185:10;16401:28;11185:10;16418:2;16422:6;16401:9;:28::i;28351:182::-;28454:4;12198:13;:11;:13::i;:::-;-1:-1:-1;28476:15:0::1;:27:::0;;-1:-1:-1;;;;;28476:27:0;::::1;-1:-1:-1::0;;;;;;28476:27:0;;::::1;;::::0;;;28351:182;;;:::o;15816:201::-;-1:-1:-1;;;;;15982:18:0;;;15950:7;15982:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15816:201::o;13218:238::-;12198:13;:11;:13::i;:::-;-1:-1:-1;;;;;13321:22:0;::::1;13299:110;;;::::0;-1:-1:-1;;;13299:110:0;;6605:2:1;13299:110:0::1;::::0;::::1;6587:21:1::0;6644:2;6624:18;;;6617:30;6683:34;6663:18;;;6656:62;-1:-1:-1;;;6734:18:1;;;6727:36;6780:19;;13299:110:0::1;6403:402:1::0;13299:110:0::1;13420:28;13439:8;13420:18;:28::i;:::-;13218:238:::0;:::o;21626:380::-;-1:-1:-1;;;;;21762:19:0;;21754:68;;;;-1:-1:-1;;;21754:68:0;;7012:2:1;21754:68:0;;;6994:21:1;7051:2;7031:18;;;7024:30;7090:34;7070:18;;;7063:62;-1:-1:-1;;;7141:18:1;;;7134:34;7185:19;;21754:68:0;6810:400:1;21754:68:0;-1:-1:-1;;;;;21841:21:0;;21833:68;;;;-1:-1:-1;;;21833:68:0;;7417:2:1;21833:68:0;;;7399:21:1;7456:2;7436:18;;;7429:30;7495:34;7475:18;;;7468:62;-1:-1:-1;;;7546:18:1;;;7539:32;7588:19;;21833:68:0;7215:398:1;21833:68:0;-1:-1:-1;;;;;21914:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21966:32;;1595:25:1;;;21966:32:0;;1568:18:1;21966:32:0;;;;;;;21626:380;;;:::o;22297:502::-;22432:24;22459:25;22469:5;22476:7;22459:9;:25::i;:::-;22432:52;;-1:-1:-1;;22499:16:0;:37;22495:297;;22599:6;22579:16;:26;;22553:117;;;;-1:-1:-1;;;22553:117:0;;7820:2:1;22553:117:0;;;7802:21:1;7859:2;7839:18;;;7832:30;7898:31;7878:18;;;7871:59;7947:18;;22553:117:0;7618:353:1;22553:117:0;22714:51;22723:5;22730:7;22758:6;22739:16;:25;22714:8;:51::i;:::-;22421:378;22297:502;;;:::o;25533:2306::-;-1:-1:-1;;;;;25665:18:0;;25657:68;;;;-1:-1:-1;;;25657:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25744:16:0;;25736:64;;;;-1:-1:-1;;;25736:64:0;;;;;;;:::i;:::-;25852:6;25833:15;25843:4;-1:-1:-1;;;;;14821:18:0;14789:7;14821:18;;;;;;;;;;;;14670:177;25833:15;:25;;25811:113;;;;-1:-1:-1;;;25811:113:0;;;;;;;:::i;:::-;25964:13;-1:-1:-1;;;;;25956:21:0;:4;-1:-1:-1;;;;;25956:21:0;;:44;;;;25987:13;-1:-1:-1;;;;;25981:19:0;:2;-1:-1:-1;;;;;25981:19:0;;25956:44;25955:67;;;;-1:-1:-1;26006:16:0;;;;;;;26005:17;25955:67;25937:1895;;;26061:13;-1:-1:-1;;;;;26053:21:0;:4;-1:-1:-1;;;;;26053:21:0;;26049:716;;26148:4;26095:32;14821:18;;;;;;;;;;;26207:24;;26177:54;;26173:577;;26260:11;;;;26256:280;;;26300:43;26318:24;26300:17;:43::i;:::-;26256:280;;;26400:112;26448:37;26452:24;;26478:6;26448:3;:37::i;:::-;26400:17;:112::i;:::-;26580:15;;26572:100;;26560:9;;-1:-1:-1;;;;;26580:15:0;;26628:21;26572:100;;;;;26560:9;26572:100;26560:9;26572:100;26628:21;26580:15;26572:100;;;;;;;26560:112;;26703:4;26695:35;;;;-1:-1:-1;;;26695:35:0;;9395:2:1;26695:35:0;;;9377:21:1;9434:2;9414:18;;;9407:30;-1:-1:-1;;;9453:18:1;;;9446:48;9511:18;;26695:35:0;9193:342:1;26695:35:0;26233:517;26173:577;26076:689;26049:716;-1:-1:-1;;;;;26822:24:0;;26781:22;26822:24;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;26850:22:0;;;;;;:18;:22;;;;;;;;26822:50;26818:881;;;-1:-1:-1;26910:6:0;26818:881;;;26969:13;-1:-1:-1;;;;;26961:21:0;:4;-1:-1:-1;;;;;26961:21:0;;26957:253;;27069:15;;-1:-1:-1;;;;;14821:18:0;;14789:7;14821:18;;;;;;;;;;;27042:22;;:6;:22;:::i;:::-;27041:43;;27007:183;;;;-1:-1:-1;;;27007:183:0;;9742:2:1;27007:183:0;;;9724:21:1;9781:2;9761:18;;;9754:30;9820:34;9800:18;;;9793:62;-1:-1:-1;;;9871:18:1;;;9864:52;9933:19;;27007:183:0;9540:418:1;27007:183:0;27228:22;27285:13;-1:-1:-1;;;;;27277:21:0;:4;-1:-1:-1;;;;;27277:21:0;;27273:228;;27373:3;27351:18;;27342:6;:27;;;;:::i;:::-;27341:35;;;;:::i;:::-;27323:54;;27273:228;;;27477:3;27454:19;;27445:6;:28;;;;:::i;:::-;27444:36;;;;:::i;:::-;27426:55;;27273:228;27538:25;27548:14;27538:6;:25;:::i;:::-;27521:42;-1:-1:-1;27588:18:0;;27584:99;;27629:54;27645:4;27659;27667:14;27629:15;:54::i;:::-;26938:761;26818:881;27713:41;27729:4;27735:2;27739:14;27713:15;:41::i;25937:1895::-;27787:33;27803:4;27809:2;27813:6;27787:15;:33::i;:::-;25533:2306;;;:::o;12477:132::-;12385:6;;-1:-1:-1;;;;;12385:6:0;11185:10;12541:23;12533:68;;;;-1:-1:-1;;;12533:68:0;;10520:2:1;12533:68:0;;;10502:21:1;;;10539:18;;;10532:30;10598:34;10578:18;;;10571:62;10650:18;;12533:68:0;10318:356:1;13616:191:0;13709:6;;;-1:-1:-1;;;;;13726:17:0;;;-1:-1:-1;;;;;;13726:17:0;;;;;;;13759:40;;13709:6;;;13726:17;13709:6;;13759:40;;13690:16;;13759:40;13679:128;13616:191;:::o;27847:496::-;24741:16;:23;;-1:-1:-1;;24741:23:0;;;;;27950:16:::1;::::0;;27964:1:::1;27950:16:::0;;;;;::::1;::::0;;-1:-1:-1;;27950:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;27950:16:0::1;27926:40;;27995:4;27977;27982:1;27977:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;27977:23:0::1;;;-1:-1:-1::0;;;;;27977:23:0::1;;;::::0;::::1;28021:15;-1:-1:-1::0;;;;;28021:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28011:4;28016:1;28011:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1::0;;;;;28011:32:0::1;;;-1:-1:-1::0;;;;;28011:32:0::1;;;::::0;::::1;28056:62;28073:4;28088:15;28106:11;28056:8;:62::i;:::-;-1:-1:-1::0;;;;;28131:15:0::1;:66;;28212:11:::0;28238:1:::1;28254:4:::0;28281::::1;28302:21;:15;28320:3;28302:21;:::i;:::-;28131:204;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;24787:16:0;:24;;-1:-1:-1;;24787:24:0;;;-1:-1:-1;;;;27847:496:0:o;25418:107::-;25475:7;25507:1;25503;:5;25502:15;;25516:1;25502:15;;;25512:1;25502:15;25495:22;25418:107;-1:-1:-1;;;25418:107:0:o;22807:776::-;-1:-1:-1;;;;;22938:18:0;;22930:68;;;;-1:-1:-1;;;22930:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23017:16:0;;23009:64;;;;-1:-1:-1;;;23009:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23108:15:0;;23086:19;23108:15;;;;;;;;;;;23156:21;;;;23134:109;;;;-1:-1:-1;;;23134:109:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23279:15:0;;;:9;:15;;;;;;;;;;;23297:20;;;23279:38;;23497:13;;;;;;;;;;:23;;;;;;23549:26;;1595:25:1;;;23497:13:0;;23549:26;;1568:18:1;23549:26:0;;;;;;;22919:664;22807:776;;;:::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:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2281:248::-;2349:6;2357;2410:2;2398:9;2389:7;2385:23;2381:32;2378:52;;;2426:1;2423;2416:12;2378:52;-1:-1:-1;;2449:23:1;;;2519:2;2504:18;;;2491:32;;-1:-1:-1;2281:248:1:o;2742:247::-;2801:6;2854:2;2842:9;2833:7;2829:23;2825:32;2822:52;;;2870:1;2867;2860:12;2822:52;2909:9;2896:23;2928:31;2953:5;2928:31;:::i;2994:388::-;3062:6;3070;3123:2;3111:9;3102:7;3098:23;3094:32;3091:52;;;3139:1;3136;3129:12;3091:52;3178:9;3165:23;3197:31;3222:5;3197:31;:::i;:::-;3247:5;-1:-1:-1;3304:2:1;3289:18;;3276:32;3317:33;3276:32;3317:33;:::i;:::-;3369:7;3359:17;;;2994:388;;;;;:::o;3387:380::-;3466:1;3462:12;;;;3509;;;3530:61;;3584:4;3576:6;3572:17;3562:27;;3530:61;3637:2;3629:6;3626:14;3606:18;3603:38;3600:161;;3683:10;3678:3;3674:20;3671:1;3664:31;3718:4;3715:1;3708:15;3746:4;3743:1;3736:15;3600:161;;3387:380;;;:::o;3772:408::-;3974:2;3956:21;;;4013:2;3993:18;;;3986:30;4052:34;4047:2;4032:18;;4025:62;-1:-1:-1;;;4118:2:1;4103:18;;4096:42;4170:3;4155:19;;3772:408::o;4185:127::-;4246:10;4241:3;4237:20;4234:1;4227:31;4277:4;4274:1;4267:15;4301:4;4298:1;4291:15;4317:125;4382:9;;;4403:10;;;4400:36;;;4416:18;;:::i;4447:416::-;4536:1;4573:5;4536:1;4587:270;4608:7;4598:8;4595:21;4587:270;;;4667:4;4663:1;4659:6;4655:17;4649:4;4646:27;4643:53;;;4676:18;;:::i;:::-;4726:7;4716:8;4712:22;4709:55;;;4746:16;;;;4709:55;4825:22;;;;4785:15;;;;4587:270;;;4591:3;4447:416;;;;;:::o;4868:806::-;4917:5;4947:8;4937:80;;-1:-1:-1;4988:1:1;5002:5;;4937:80;5036:4;5026:76;;-1:-1:-1;5073:1:1;5087:5;;5026:76;5118:4;5136:1;5131:59;;;;5204:1;5199:130;;;;5111:218;;5131:59;5161:1;5152:10;;5175:5;;;5199:130;5236:3;5226:8;5223:17;5220:43;;;5243:18;;:::i;:::-;-1:-1:-1;;5299:1:1;5285:16;;5314:5;;5111:218;;5413:2;5403:8;5400:16;5394:3;5388:4;5385:13;5381:36;5375:2;5365:8;5362:16;5357:2;5351:4;5348:12;5344:35;5341:77;5338:159;;;-1:-1:-1;5450:19:1;;;5482:5;;5338:159;5529:34;5554:8;5548:4;5529:34;:::i;:::-;5599:6;5595:1;5591:6;5587:19;5578:7;5575:32;5572:58;;;5610:18;;:::i;:::-;5648:20;;4868:806;-1:-1:-1;;;4868:806:1:o;5679:140::-;5737:5;5766:47;5807:4;5797:8;5793:19;5787:4;5766:47;:::i;5824:168::-;5897:9;;;5928;;5945:15;;;5939:22;;5925:37;5915:71;;5966:18;;:::i;7976:401::-;8178:2;8160:21;;;8217:2;8197:18;;;8190:30;8256:34;8251:2;8236:18;;8229:62;-1:-1:-1;;;8322:2:1;8307:18;;8300:35;8367:3;8352:19;;7976:401::o;8382:399::-;8584:2;8566:21;;;8623:2;8603:18;;;8596:30;8662:34;8657:2;8642:18;;8635:62;-1:-1:-1;;;8728:2:1;8713:18;;8706:33;8771:3;8756:19;;8382:399::o;8786:402::-;8988:2;8970:21;;;9027:2;9007:18;;;9000:30;9066:34;9061:2;9046:18;;9039:62;-1:-1:-1;;;9132:2:1;9117:18;;9110:36;9178:3;9163:19;;8786:402::o;9963:217::-;10003:1;10029;10019:132;;10073:10;10068:3;10064:20;10061:1;10054:31;10108:4;10105:1;10098:15;10136:4;10133:1;10126:15;10019:132;-1:-1:-1;10165:9:1;;9963:217::o;10185:128::-;10252:9;;;10273:11;;;10270:37;;;10287:18;;:::i;10811:127::-;10872:10;10867:3;10863:20;10860:1;10853:31;10903:4;10900:1;10893:15;10927:4;10924:1;10917:15;10943:251;11013:6;11066:2;11054:9;11045:7;11041:23;11037:32;11034:52;;;11082:1;11079;11072:12;11034:52;11114:9;11108:16;11133:31;11158:5;11133:31;:::i;11199:980::-;11461:4;11509:3;11498:9;11494:19;11540:6;11529:9;11522:25;11566:2;11604:6;11599:2;11588:9;11584:18;11577:34;11647:3;11642:2;11631:9;11627:18;11620:31;11671:6;11706;11700:13;11737:6;11729;11722:22;11775:3;11764:9;11760:19;11753:26;;11814:2;11806:6;11802:15;11788:29;;11835:1;11845:195;11859:6;11856:1;11853:13;11845:195;;;11924:13;;-1:-1:-1;;;;;11920:39:1;11908:52;;12015:15;;;;11980:12;;;;11956:1;11874:9;11845:195;;;-1:-1:-1;;;;;;;12096:32:1;;;;12091:2;12076:18;;12069:60;-1:-1:-1;;;12160:3:1;12145:19;12138:35;12057:3;11199:980;-1:-1:-1;;;11199:980:1:o

Swarm Source

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