ETH Price: $3,587.20 (+4.79%)
Gas: 8.27 Gwei

Token

Neiro (NEIRO)
 

Overview

Max Total Supply

100,000,000,000 NEIRO

Holders

307

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,733,695.412764213 NEIRO

Value
$0.00
0x5C854f5599E410f54370ce4018e9f6aD6EaaA234
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:
NEIRO

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-28
*/

/**
https://neirocoin.live/

https://t.me/neirocoin_erc

https://x.com/kind_lisas
 */

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma experimental ABIEncoderV2;

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

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

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 getPair(address tokenA, address tokenB)
    external
    view
    returns (address pair);

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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 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 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 IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

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 {
            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 per(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= 100, "Percentage must be between 0 and 100");
        return a * b / 100;
    }

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

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

    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 {}
}

contract NEIRO is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable _uniswapV2Router;
    address public uniswapV2Pair;
    address private devWallet;
    address private marketingWallet;
    address private constant deadAddress = address(0xdead);

    uint256 public buyFee = 20;
    uint256 public sellFee = 40;

    uint8 private constant _decimals = 9;
    uint256 public initialTotalSupply = 100000000000 * 10**_decimals;

    // 1% is max wallet
    uint256 public maxWallet = (initialTotalSupply * 10)/1000;
    uint256 public maxTransactionAmount = maxWallet;

    bool private swapping;

    bool public transferDelayEnabled = true;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    
    //swap for 0.3%
    uint256 public swapTokensAtAmount = (initialTotalSupply * 3)/1000;

    bool public tradingOpen = false;
    bool public swapEnabled = false;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    constructor() ERC20("Neiro", "NEIRO"){
        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        marketingWallet = payable(0xa851Bd282c967e78a7aae11c0ec51a7b95348640);
        devWallet = payable(_msgSender());

        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(address(_msgSender()), true);
        excludeFromMaxTransaction(marketingWallet, true);
        excludeFromMaxTransaction(devWallet, true);
        excludeFromFees(address(_msgSender()), true);
        excludeFromFees(marketingWallet, true);
        excludeFromFees(devWallet, true);

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        // mint
        _mint(devWallet, initialTotalSupply);
    }

    receive() external payable {}

    function addLP() external onlyOwner() {
        require(!tradingOpen,"Trading is already open");
        _approve(address(this), address(_uniswapV2Router), initialTotalSupply);
        _uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            0xe28A492F93Ff2E1A1224EBF140297F9e382a7C3D,
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(_uniswapV2Router), type(uint).max);
    }

    function burn(uint256 amount) external {
        _burn(_msgSender(), amount);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }


    function openTrading() external onlyOwner() {
        swapEnabled = true;
        tradingOpen = true;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    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 isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

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

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
            if (!tradingOpen) {
                require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
            }

            if (transferDelayEnabled && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
                    if (to != address(_uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number && _holderLastTransferTimestamp[to] < block.number, "_transfer:: Transfer Delay enabled.  Try again later.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
            }

            if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
            }
            else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
            }
            else if (!_isExcludedMaxTransactionAmount[to]) {
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance > swapTokensAtAmount;
        if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping && !_isExcludedFromFees[from] && !_isExcludedFromFees[to];

        uint256 fees = 0;
        if (takeFee) {
            if (automatedMarketMakerPairs[to]) {
                fees = amount.mul(sellFee).div(100);
            }
            else if(automatedMarketMakerPairs[from]) {
                fees = amount.mul(buyFee).div(100);
            }
            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }
            amount -= fees;
        }
        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();
        _approve(address(this), address(_uniswapV2Router), tokenAmount);
        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            marketingWallet,
            block.timestamp
        );
    }

    function stopDelay() external onlyOwner{
        require(transferDelayEnabled, "Already disabled!");
        transferDelayEnabled = false;
    }


    function setFee(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        sellFee = _sellFee;
        buyFee = _buyFee;
    }

    function updateSwapThreshold(uint256 newAmmount) external onlyOwner {
        swapTokensAtAmount = newAmmount * 10**_decimals;
    }

    function removeTheLimits() external onlyOwner {
        maxTransactionAmount = initialTotalSupply;
        maxWallet = initialTotalSupply;
    }

    function manualSwapToken(uint256 percent) external {
        require(_msgSender() == devWallet);
        uint256 contractBalance = balanceOf(address(this));
        uint256 swapAmount = contractBalance * percent / 100;
        swapTokensForEth(swapAmount);
    }

    function tokenWithdraw() external {
        require(_msgSender() == devWallet);
        uint256 amount = balanceOf(address(this));
        _transfer(address(this), devWallet, amount);
    }

    function withdrawEth() external {
        require(address(this).balance > 0, "Token: no ETH in the contract");
        require(_msgSender() == devWallet);
        payable(msg.sender).transfer(address(this).balance);
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) {
            return;
        }
        uint256 tokensToSwap = contractBalance;

        if (tokensToSwap > swapTokensAtAmount) {
            tokensToSwap = swapTokensAtAmount;
        }

        swapTokensForEth(tokensToSwap);
    }
}

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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":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":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","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":"initialTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwapToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeTheLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopDelay","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":"tokenWithdraw","outputs":[],"stateMutability":"nonpayable","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"newAmmount","type":"uint256"}],"name":"updateSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405260146009556028600a556009600a6200001e919062000774565b6200002f9064174876e8006200078b565b600b556103e8600b54600a6200004691906200078b565b620000529190620007a5565b600c819055600d55600e805461ff001916610100179055600b546103e8906200007d9060036200078b565b620000899190620007a5565b6010556011805461ffff19169055348015620000a3575f80fd5b50604051806040016040528060058152602001644e6569726f60d81b815250604051806040016040528060058152602001644e4549524f60d81b8152508160039081620000f1919062000864565b50600462000100828262000864565b5050506200011d62000117620003f960201b60201c565b620003fd565b737a250d5630b4cf539739df2c5dacb4c659f2488d608052600880546001600160a01b03191673a851bd282c967e78a7aae11c0ec51a7b95348640179055620001633390565b600780546001600160a01b0319166001600160a01b0392909216919091179055620001903060016200044e565b6200019f61dead60016200044e565b608051620001af906001620004b6565b620001bc306001620004b6565b620001cb61dead6001620004b6565b620001d8336001620004b6565b600854620001f1906001600160a01b03166001620004b6565b6007546200020a906001600160a01b03166001620004b6565b620002173360016200044e565b60085462000230906001600160a01b031660016200044e565b60075462000249906001600160a01b031660016200044e565b6080516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000288573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ae91906200092c565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032291906200092c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200036d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200039391906200092c565b600680546001600160a01b0319166001600160a01b03929092169182179055620003bf906001620004b6565b600654620003d8906001600160a01b03166001620004ea565b600754600b54620003f3916001600160a01b0316906200053d565b6200096a565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6200045862000602565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b620004c062000602565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6001600160a01b0382165f81815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038216620005995760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060025f828254620005ac919062000954565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b031633146200065e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000590565b565b505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620006b957815f19048211156200069d576200069d62000665565b80851615620006ab57918102915b93841c93908002906200067e565b509250929050565b5f82620006d1575060016200076e565b81620006df57505f6200076e565b8160018114620006f85760028114620007035762000723565b60019150506200076e565b60ff84111562000717576200071762000665565b50506001821b6200076e565b5060208310610133831016604e8410600b841016171562000748575081810a6200076e565b62000754838362000679565b805f19048211156200076a576200076a62000665565b0290505b92915050565b5f6200078460ff841683620006c1565b9392505050565b80820281158282048414176200076e576200076e62000665565b5f82620007c057634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620007ee57607f821691505b6020821081036200080d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000660575f81815260208120601f850160051c810160208610156200083b5750805b601f850160051c820191505b818110156200085c5782815560010162000847565b505050505050565b81516001600160401b03811115620008805762000880620007c5565b6200089881620008918454620007d9565b8462000813565b602080601f831160018114620008ce575f8415620008b65750858301515b5f19600386901b1c1916600185901b1785556200085c565b5f85815260208120601f198616915b82811015620008fe57888601518255948401946001909101908401620008dd565b50858210156200091c57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156200093d575f80fd5b81516001600160a01b038116811462000784575f80fd5b808201808211156200076e576200076e62000665565b6080516120b9620009b45f395f818161044001528181610b4e01528181610b7701528181610c65015281816111c7015281816118c80152818161197f01526119be01526120b95ff3fe60806040526004361061022b575f3560e01c8063715018a611610129578063c0246668116100a8578063dd62ed3e1161006d578063dd62ed3e1461062c578063e2f456051461064b578063f2fde38b14610660578063f8b45b051461067f578063ffb54a9914610694575f80fd5b8063c0246668146105a7578063c876d0b9146105c6578063c8c8ebe4146105e4578063c9567bf9146105f9578063cc274b291461060d575f80fd5b80639a7a23d6116100ee5780639a7a23d614610522578063a0ef91df14610541578063a457c2d714610555578063a9059cbb14610574578063bc37e1a314610593575f80fd5b8063715018a61461049f57806371f5f01a146104b35780637571336a146104d25780638da5cb5b146104f157806395d89b411461050e575f80fd5b8063313ce567116101b55780634fbee1931161017a5780634fbee193146103d957806352f7c98814610410578063583e05681461042f5780636ddd17131461046257806370a0823114610480575f80fd5b8063313ce56714610334578063395093511461034f57806342966c681461036e578063470624021461038d57806349bd5a5e146103a2575f80fd5b806323b872dd116101fb57806323b872dd146102c35780632b14ca56146102e25780632c8206ea146102f757806330c74e041461030b578063311028af1461031f575f80fd5b806306fdde0314610236578063095ea7b314610260578063139864a81461028f57806318160ddd146102a5575f80fd5b3661023257005b5f80fd5b348015610241575f80fd5b5061024a6106ad565b6040516102579190611bf8565b60405180910390f35b34801561026b575f80fd5b5061027f61027a366004611c57565b61073d565b6040519015158152602001610257565b34801561029a575f80fd5b506102a3610756565b005b3480156102b0575f80fd5b506002545b604051908152602001610257565b3480156102ce575f80fd5b5061027f6102dd366004611c81565b61076b565b3480156102ed575f80fd5b506102b5600a5481565b348015610302575f80fd5b506102a361078e565b348015610316575f80fd5b506102a36107f3565b34801561032a575f80fd5b506102b5600b5481565b34801561033f575f80fd5b5060405160098152602001610257565b34801561035a575f80fd5b5061027f610369366004611c57565b61083a565b348015610379575f80fd5b506102a3610388366004611cbf565b61085b565b348015610398575f80fd5b506102b560095481565b3480156103ad575f80fd5b506006546103c1906001600160a01b031681565b6040516001600160a01b039091168152602001610257565b3480156103e4575f80fd5b5061027f6103f3366004611cd6565b6001600160a01b03165f9081526012602052604090205460ff1690565b34801561041b575f80fd5b506102a361042a366004611cf1565b610865565b34801561043a575f80fd5b506103c17f000000000000000000000000000000000000000000000000000000000000000081565b34801561046d575f80fd5b5060115461027f90610100900460ff1681565b34801561048b575f80fd5b506102b561049a366004611cd6565b610875565b3480156104aa575f80fd5b506102a361088f565b3480156104be575f80fd5b506102a36104cd366004611cbf565b6108a2565b3480156104dd575f80fd5b506102a36104ec366004611d1e565b6108f4565b3480156104fc575f80fd5b506005546001600160a01b03166103c1565b348015610519575f80fd5b5061024a610926565b34801561052d575f80fd5b506102a361053c366004611d1e565b610935565b34801561054c575f80fd5b506102a36109cf565b348015610560575f80fd5b5061027f61056f366004611c57565b610a66565b34801561057f575f80fd5b5061027f61058e366004611c57565b610ae0565b34801561059e575f80fd5b506102a3610aed565b3480156105b2575f80fd5b506102a36105c1366004611d1e565b610ce0565b3480156105d1575f80fd5b50600e5461027f90610100900460ff1681565b3480156105ef575f80fd5b506102b5600d5481565b348015610604575f80fd5b506102a3610d46565b348015610618575f80fd5b506102a3610627366004611cbf565b610d5f565b348015610637575f80fd5b506102b5610646366004611d55565b610d83565b348015610656575f80fd5b506102b560105481565b34801561066b575f80fd5b506102a361067a366004611cd6565b610dad565b34801561068a575f80fd5b506102b5600c5481565b34801561069f575f80fd5b5060115461027f9060ff1681565b6060600380546106bc90611d81565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890611d81565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b5050505050905090565b5f3361074a818585610e23565b60019150505b92915050565b61075e610f46565b600b54600d819055600c55565b5f33610778858285610fa0565b610783858585611018565b506001949350505050565b610796610f46565b600e54610100900460ff166107e65760405162461bcd60e51b8152602060048201526011602482015270416c72656164792064697361626c65642160781b60448201526064015b60405180910390fd5b600e805461ff0019169055565b6007546001600160a01b0316336001600160a01b031614610812575f80fd5b5f61081c30610875565b6007549091506108379030906001600160a01b031683611018565b50565b5f3361074a81858561084c8383610d83565b6108569190611dcd565b610e23565b61083733826116f2565b61086d610f46565b600a55600955565b6001600160a01b03165f9081526020819052604090205490565b610897610f46565b6108a05f611822565b565b6007546001600160a01b0316336001600160a01b0316146108c1575f80fd5b5f6108cb30610875565b90505f60646108da8484611de0565b6108e49190611df7565b90506108ef81611873565b505050565b6108fc610f46565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6060600480546106bc90611d81565b61093d610f46565b6006546001600160a01b03908116908316036109c15760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016107dd565b6109cb8282611a30565b5050565b5f4711610a1e5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a206e6f2045544820696e2074686520636f6e747261637400000060448201526064016107dd565b6007546001600160a01b0316336001600160a01b031614610a3d575f80fd5b60405133904780156108fc02915f818181858888f19350505050158015610837573d5f803e3d5ffd5b5f3381610a738286610d83565b905083811015610ad35760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107dd565b6107838286868403610e23565b5f3361074a818585611018565b610af5610f46565b60115460ff1615610b485760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016107dd565b610b75307f0000000000000000000000000000000000000000000000000000000000000000600b54610e23565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7194730610baf30610875565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f60448201819052606482015273e28a492f93ff2e1a1224ebf140297f9e382a7c3d60848201524260a482015260c40160606040518083038185885af1158015610c24573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c499190611e16565b505060065460405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f196024830152909116915063095ea7b3906044016020604051808303815f875af1158015610cbc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108379190611e41565b610ce8610f46565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610d4e610f46565b6011805461ffff1916610101179055565b610d67610f46565b610d736009600a611f3c565b610d7d9082611de0565b60105550565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610db5610f46565b6001600160a01b038116610e1a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107dd565b61083781611822565b6001600160a01b038316610e855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107dd565b6001600160a01b038216610ee65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107dd565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146108a05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107dd565b5f610fab8484610d83565b90505f19811461101257818110156110055760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107dd565b6110128484848403610e23565b50505050565b6001600160a01b03831661103e5760405162461bcd60e51b81526004016107dd90611f4a565b6001600160a01b0382166110645760405162461bcd60e51b81526004016107dd90611f8f565b805f03611076576108ef83835f611a83565b6005546001600160a01b038481169116148015906110a257506005546001600160a01b03838116911614155b80156110b657506001600160a01b03821615155b80156110cd57506001600160a01b03821661dead14155b80156110dc5750600e5460ff16155b1561151c5760115460ff1661116d576001600160a01b0383165f9081526012602052604090205460ff168061112857506001600160a01b0382165f9081526012602052604090205460ff165b61116d5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016107dd565b600e54610100900460ff16801561119c57506001600160a01b0383165f9081526012602052604090205460ff16155b80156111c057506001600160a01b0382165f9081526012602052604090205460ff16155b156112db577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415801561121557506006546001600160a01b03838116911614155b156112db57325f908152600f60205260409020544311801561124d57506001600160a01b0382165f908152600f602052604090205443115b6112b75760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016107dd565b325f908152600f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f9081526014602052604090205460ff16801561131a57506001600160a01b0382165f9081526013602052604090205460ff16155b156113ee57600d5481111561138f5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016107dd565b600c5461139b83610875565b6113a59083611dcd565b11156113e95760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107dd565b61151c565b6001600160a01b0382165f9081526014602052604090205460ff16801561142d57506001600160a01b0383165f9081526013602052604090205460ff16155b156114a357600d548111156113e95760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016107dd565b6001600160a01b0382165f9081526013602052604090205460ff1661151c57600c546114ce83610875565b6114d89083611dcd565b111561151c5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107dd565b5f61152630610875565b60105490915081118080156115425750601154610100900460ff165b80156115515750600e5460ff16155b801561157557506001600160a01b0385165f9081526014602052604090205460ff16155b801561159957506001600160a01b0385165f9081526012602052604090205460ff16155b80156115bd57506001600160a01b0384165f9081526012602052604090205460ff16155b156115e257600e805460ff191660011790556115d7611bab565b600e805460ff191690555b600e545f9060ff1615801561160f57506001600160a01b0386165f9081526012602052604090205460ff16155b801561163357506001600160a01b0385165f9081526012602052604090205460ff16155b90505f81156116de576001600160a01b0386165f9081526014602052604090205460ff16156116835761167c6064611676600a5488611bdb90919063ffffffff16565b90611bed565b90506116c0565b6001600160a01b0387165f9081526014602052604090205460ff16156116c0576116bd606461167660095488611bdb90919063ffffffff16565b90505b80156116d1576116d1873083611a83565b6116db8186611fd2565b94505b6116e9878787611a83565b50505050505050565b6001600160a01b0382166117525760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107dd565b6001600160a01b0382165f90815260208190526040902054818110156117c55760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016107dd565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106118a6576118a6611fe5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611922573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119469190611ff9565b8160018151811061195957611959611fe5565b60200260200101906001600160a01b031690816001600160a01b0316815250506119a4307f000000000000000000000000000000000000000000000000000000000000000084610e23565b60085460405163791ac94760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263791ac947926119ff9287925f92889291909116904290600401612014565b5f604051808303815f87803b158015611a16575f80fd5b505af1158015611a28573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f81815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611aa95760405162461bcd60e51b81526004016107dd90611f4a565b6001600160a01b038216611acf5760405162461bcd60e51b81526004016107dd90611f8f565b6001600160a01b0383165f9081526020819052604090205481811015611b465760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107dd565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611012565b5f611bb530610875565b9050805f03611bc15750565b6010548190811115611bd257506010545b6109cb81611873565b5f611be68284611de0565b9392505050565b5f611be68284611df7565b5f6020808352835180828501525f5b81811015611c2357858101830151858201604001528201611c07565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610837575f80fd5b5f8060408385031215611c68575f80fd5b8235611c7381611c43565b946020939093013593505050565b5f805f60608486031215611c93575f80fd5b8335611c9e81611c43565b92506020840135611cae81611c43565b929592945050506040919091013590565b5f60208284031215611ccf575f80fd5b5035919050565b5f60208284031215611ce6575f80fd5b8135611be681611c43565b5f8060408385031215611d02575f80fd5b50508035926020909101359150565b8015158114610837575f80fd5b5f8060408385031215611d2f575f80fd5b8235611d3a81611c43565b91506020830135611d4a81611d11565b809150509250929050565b5f8060408385031215611d66575f80fd5b8235611d7181611c43565b91506020830135611d4a81611c43565b600181811c90821680611d9557607f821691505b602082108103611db357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561075057610750611db9565b808202811582820484141761075057610750611db9565b5f82611e1157634e487b7160e01b5f52601260045260245ffd5b500490565b5f805f60608486031215611e28575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611e51575f80fd5b8151611be681611d11565b600181815b80851115611e9657815f1904821115611e7c57611e7c611db9565b80851615611e8957918102915b93841c9390800290611e61565b509250929050565b5f82611eac57506001610750565b81611eb857505f610750565b8160018114611ece5760028114611ed857611ef4565b6001915050610750565b60ff841115611ee957611ee9611db9565b50506001821b610750565b5060208310610133831016604e8410600b8410161715611f17575081810a610750565b611f218383611e5c565b805f1904821115611f3457611f34611db9565b029392505050565b5f611be660ff841683611e9e565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561075057610750611db9565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612009575f80fd5b8151611be681611c43565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156120625784516001600160a01b03168352938301939183019160010161203d565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122072a1d0fe29c460b44297fdf6fd6c2187b8e9c6efd5fd6378cffcc52d7bf09e3c64736f6c63430008140033

Deployed Bytecode

0x60806040526004361061022b575f3560e01c8063715018a611610129578063c0246668116100a8578063dd62ed3e1161006d578063dd62ed3e1461062c578063e2f456051461064b578063f2fde38b14610660578063f8b45b051461067f578063ffb54a9914610694575f80fd5b8063c0246668146105a7578063c876d0b9146105c6578063c8c8ebe4146105e4578063c9567bf9146105f9578063cc274b291461060d575f80fd5b80639a7a23d6116100ee5780639a7a23d614610522578063a0ef91df14610541578063a457c2d714610555578063a9059cbb14610574578063bc37e1a314610593575f80fd5b8063715018a61461049f57806371f5f01a146104b35780637571336a146104d25780638da5cb5b146104f157806395d89b411461050e575f80fd5b8063313ce567116101b55780634fbee1931161017a5780634fbee193146103d957806352f7c98814610410578063583e05681461042f5780636ddd17131461046257806370a0823114610480575f80fd5b8063313ce56714610334578063395093511461034f57806342966c681461036e578063470624021461038d57806349bd5a5e146103a2575f80fd5b806323b872dd116101fb57806323b872dd146102c35780632b14ca56146102e25780632c8206ea146102f757806330c74e041461030b578063311028af1461031f575f80fd5b806306fdde0314610236578063095ea7b314610260578063139864a81461028f57806318160ddd146102a5575f80fd5b3661023257005b5f80fd5b348015610241575f80fd5b5061024a6106ad565b6040516102579190611bf8565b60405180910390f35b34801561026b575f80fd5b5061027f61027a366004611c57565b61073d565b6040519015158152602001610257565b34801561029a575f80fd5b506102a3610756565b005b3480156102b0575f80fd5b506002545b604051908152602001610257565b3480156102ce575f80fd5b5061027f6102dd366004611c81565b61076b565b3480156102ed575f80fd5b506102b5600a5481565b348015610302575f80fd5b506102a361078e565b348015610316575f80fd5b506102a36107f3565b34801561032a575f80fd5b506102b5600b5481565b34801561033f575f80fd5b5060405160098152602001610257565b34801561035a575f80fd5b5061027f610369366004611c57565b61083a565b348015610379575f80fd5b506102a3610388366004611cbf565b61085b565b348015610398575f80fd5b506102b560095481565b3480156103ad575f80fd5b506006546103c1906001600160a01b031681565b6040516001600160a01b039091168152602001610257565b3480156103e4575f80fd5b5061027f6103f3366004611cd6565b6001600160a01b03165f9081526012602052604090205460ff1690565b34801561041b575f80fd5b506102a361042a366004611cf1565b610865565b34801561043a575f80fd5b506103c17f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561046d575f80fd5b5060115461027f90610100900460ff1681565b34801561048b575f80fd5b506102b561049a366004611cd6565b610875565b3480156104aa575f80fd5b506102a361088f565b3480156104be575f80fd5b506102a36104cd366004611cbf565b6108a2565b3480156104dd575f80fd5b506102a36104ec366004611d1e565b6108f4565b3480156104fc575f80fd5b506005546001600160a01b03166103c1565b348015610519575f80fd5b5061024a610926565b34801561052d575f80fd5b506102a361053c366004611d1e565b610935565b34801561054c575f80fd5b506102a36109cf565b348015610560575f80fd5b5061027f61056f366004611c57565b610a66565b34801561057f575f80fd5b5061027f61058e366004611c57565b610ae0565b34801561059e575f80fd5b506102a3610aed565b3480156105b2575f80fd5b506102a36105c1366004611d1e565b610ce0565b3480156105d1575f80fd5b50600e5461027f90610100900460ff1681565b3480156105ef575f80fd5b506102b5600d5481565b348015610604575f80fd5b506102a3610d46565b348015610618575f80fd5b506102a3610627366004611cbf565b610d5f565b348015610637575f80fd5b506102b5610646366004611d55565b610d83565b348015610656575f80fd5b506102b560105481565b34801561066b575f80fd5b506102a361067a366004611cd6565b610dad565b34801561068a575f80fd5b506102b5600c5481565b34801561069f575f80fd5b5060115461027f9060ff1681565b6060600380546106bc90611d81565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890611d81565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b5050505050905090565b5f3361074a818585610e23565b60019150505b92915050565b61075e610f46565b600b54600d819055600c55565b5f33610778858285610fa0565b610783858585611018565b506001949350505050565b610796610f46565b600e54610100900460ff166107e65760405162461bcd60e51b8152602060048201526011602482015270416c72656164792064697361626c65642160781b60448201526064015b60405180910390fd5b600e805461ff0019169055565b6007546001600160a01b0316336001600160a01b031614610812575f80fd5b5f61081c30610875565b6007549091506108379030906001600160a01b031683611018565b50565b5f3361074a81858561084c8383610d83565b6108569190611dcd565b610e23565b61083733826116f2565b61086d610f46565b600a55600955565b6001600160a01b03165f9081526020819052604090205490565b610897610f46565b6108a05f611822565b565b6007546001600160a01b0316336001600160a01b0316146108c1575f80fd5b5f6108cb30610875565b90505f60646108da8484611de0565b6108e49190611df7565b90506108ef81611873565b505050565b6108fc610f46565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6060600480546106bc90611d81565b61093d610f46565b6006546001600160a01b03908116908316036109c15760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016107dd565b6109cb8282611a30565b5050565b5f4711610a1e5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a206e6f2045544820696e2074686520636f6e747261637400000060448201526064016107dd565b6007546001600160a01b0316336001600160a01b031614610a3d575f80fd5b60405133904780156108fc02915f818181858888f19350505050158015610837573d5f803e3d5ffd5b5f3381610a738286610d83565b905083811015610ad35760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107dd565b6107838286868403610e23565b5f3361074a818585611018565b610af5610f46565b60115460ff1615610b485760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016107dd565b610b75307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d600b54610e23565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7194730610baf30610875565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f60448201819052606482015273e28a492f93ff2e1a1224ebf140297f9e382a7c3d60848201524260a482015260c40160606040518083038185885af1158015610c24573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c499190611e16565b505060065460405163095ea7b360e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d811660048301525f196024830152909116915063095ea7b3906044016020604051808303815f875af1158015610cbc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108379190611e41565b610ce8610f46565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610d4e610f46565b6011805461ffff1916610101179055565b610d67610f46565b610d736009600a611f3c565b610d7d9082611de0565b60105550565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610db5610f46565b6001600160a01b038116610e1a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107dd565b61083781611822565b6001600160a01b038316610e855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107dd565b6001600160a01b038216610ee65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107dd565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146108a05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107dd565b5f610fab8484610d83565b90505f19811461101257818110156110055760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107dd565b6110128484848403610e23565b50505050565b6001600160a01b03831661103e5760405162461bcd60e51b81526004016107dd90611f4a565b6001600160a01b0382166110645760405162461bcd60e51b81526004016107dd90611f8f565b805f03611076576108ef83835f611a83565b6005546001600160a01b038481169116148015906110a257506005546001600160a01b03838116911614155b80156110b657506001600160a01b03821615155b80156110cd57506001600160a01b03821661dead14155b80156110dc5750600e5460ff16155b1561151c5760115460ff1661116d576001600160a01b0383165f9081526012602052604090205460ff168061112857506001600160a01b0382165f9081526012602052604090205460ff165b61116d5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016107dd565b600e54610100900460ff16801561119c57506001600160a01b0383165f9081526012602052604090205460ff16155b80156111c057506001600160a01b0382165f9081526012602052604090205460ff16155b156112db577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b03161415801561121557506006546001600160a01b03838116911614155b156112db57325f908152600f60205260409020544311801561124d57506001600160a01b0382165f908152600f602052604090205443115b6112b75760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016107dd565b325f908152600f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f9081526014602052604090205460ff16801561131a57506001600160a01b0382165f9081526013602052604090205460ff16155b156113ee57600d5481111561138f5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016107dd565b600c5461139b83610875565b6113a59083611dcd565b11156113e95760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107dd565b61151c565b6001600160a01b0382165f9081526014602052604090205460ff16801561142d57506001600160a01b0383165f9081526013602052604090205460ff16155b156114a357600d548111156113e95760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016107dd565b6001600160a01b0382165f9081526013602052604090205460ff1661151c57600c546114ce83610875565b6114d89083611dcd565b111561151c5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107dd565b5f61152630610875565b60105490915081118080156115425750601154610100900460ff165b80156115515750600e5460ff16155b801561157557506001600160a01b0385165f9081526014602052604090205460ff16155b801561159957506001600160a01b0385165f9081526012602052604090205460ff16155b80156115bd57506001600160a01b0384165f9081526012602052604090205460ff16155b156115e257600e805460ff191660011790556115d7611bab565b600e805460ff191690555b600e545f9060ff1615801561160f57506001600160a01b0386165f9081526012602052604090205460ff16155b801561163357506001600160a01b0385165f9081526012602052604090205460ff16155b90505f81156116de576001600160a01b0386165f9081526014602052604090205460ff16156116835761167c6064611676600a5488611bdb90919063ffffffff16565b90611bed565b90506116c0565b6001600160a01b0387165f9081526014602052604090205460ff16156116c0576116bd606461167660095488611bdb90919063ffffffff16565b90505b80156116d1576116d1873083611a83565b6116db8186611fd2565b94505b6116e9878787611a83565b50505050505050565b6001600160a01b0382166117525760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107dd565b6001600160a01b0382165f90815260208190526040902054818110156117c55760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016107dd565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106118a6576118a6611fe5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611922573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119469190611ff9565b8160018151811061195957611959611fe5565b60200260200101906001600160a01b031690816001600160a01b0316815250506119a4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610e23565b60085460405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81169263791ac947926119ff9287925f92889291909116904290600401612014565b5f604051808303815f87803b158015611a16575f80fd5b505af1158015611a28573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f81815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611aa95760405162461bcd60e51b81526004016107dd90611f4a565b6001600160a01b038216611acf5760405162461bcd60e51b81526004016107dd90611f8f565b6001600160a01b0383165f9081526020819052604090205481811015611b465760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107dd565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611012565b5f611bb530610875565b9050805f03611bc15750565b6010548190811115611bd257506010545b6109cb81611873565b5f611be68284611de0565b9392505050565b5f611be68284611df7565b5f6020808352835180828501525f5b81811015611c2357858101830151858201604001528201611c07565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610837575f80fd5b5f8060408385031215611c68575f80fd5b8235611c7381611c43565b946020939093013593505050565b5f805f60608486031215611c93575f80fd5b8335611c9e81611c43565b92506020840135611cae81611c43565b929592945050506040919091013590565b5f60208284031215611ccf575f80fd5b5035919050565b5f60208284031215611ce6575f80fd5b8135611be681611c43565b5f8060408385031215611d02575f80fd5b50508035926020909101359150565b8015158114610837575f80fd5b5f8060408385031215611d2f575f80fd5b8235611d3a81611c43565b91506020830135611d4a81611d11565b809150509250929050565b5f8060408385031215611d66575f80fd5b8235611d7181611c43565b91506020830135611d4a81611c43565b600181811c90821680611d9557607f821691505b602082108103611db357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561075057610750611db9565b808202811582820484141761075057610750611db9565b5f82611e1157634e487b7160e01b5f52601260045260245ffd5b500490565b5f805f60608486031215611e28575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611e51575f80fd5b8151611be681611d11565b600181815b80851115611e9657815f1904821115611e7c57611e7c611db9565b80851615611e8957918102915b93841c9390800290611e61565b509250929050565b5f82611eac57506001610750565b81611eb857505f610750565b8160018114611ece5760028114611ed857611ef4565b6001915050610750565b60ff841115611ee957611ee9611db9565b50506001821b610750565b5060208310610133831016604e8410600b8410161715611f17575081810a610750565b611f218383611e5c565b805f1904821115611f3457611f34611db9565b029392505050565b5f611be660ff841683611e9e565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561075057610750611db9565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612009575f80fd5b8151611be681611c43565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156120625784516001600160a01b03168352938301939183019160010161203d565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122072a1d0fe29c460b44297fdf6fd6c2187b8e9c6efd5fd6378cffcc52d7bf09e3c64736f6c63430008140033

Deployed Bytecode Sourcemap

14546:9270:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9775:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10706:201;;;;;;;;;;-1:-1:-1;10706:201:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10706:201:0;1023:187:1;22580:147:0;;;;;;;;;;;;;:::i;:::-;;10095:108;;;;;;;;;;-1:-1:-1;10183:12:0;;10095:108;;;1361:25:1;;;1349:2;1334:18;10095:108:0;1215:177:1;10915:261:0;;;;;;;;;;-1:-1:-1;10915:261:0;;;;;:::i;:::-;;:::i;14881:27::-;;;;;;;;;;;;;;;;22139:147;;;;;;;;;;;;;:::i;23010:193::-;;;;;;;;;;;;;:::i;14960:64::-;;;;;;;;;;;;;;;;9995:92;;;;;;;;;;-1:-1:-1;9995:92:0;;10078:1;2000:36:1;;1988:2;1973:18;9995:92:0;1858:184:1;11184:238:0;;;;;;;;;;-1:-1:-1;11184:238:0;;;;;:::i;:::-;;:::i;17638:85::-;;;;;;;;;;-1:-1:-1;17638:85:0;;;;;:::i;:::-;;:::i;14848:26::-;;;;;;;;;;;;;;;;14680:28;;;;;;;;;;-1:-1:-1;14680:28:0;;;;-1:-1:-1;;;;;14680:28:0;;;;;;-1:-1:-1;;;;;2396:32:1;;;2378:51;;2366:2;2351:18;14680:28:0;2232:203:1;18652:126:0;;;;;;;;;;-1:-1:-1;18652:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;18742:28:0;18718:4;18742:28;;;:19;:28;;;;;;;;;18652:126;22296:134;;;;;;;;;;-1:-1:-1;22296:134:0;;;;;:::i;:::-;;:::i;14621:52::-;;;;;;;;;;;;;;;15464:31;;;;;;;;;;-1:-1:-1;15464:31:0;;;;;;;;;;;10211:127;;;;;;;;;;-1:-1:-1;10211:127:0;;;;;:::i;:::-;;:::i;986:103::-;;;;;;;;;;;;;:::i;22735:267::-;;;;;;;;;;-1:-1:-1;22735:267:0;;;;;:::i;:::-;;:::i;17731:144::-;;;;;;;;;;-1:-1:-1;17731:144:0;;;;;:::i;:::-;;:::i;751:87::-;;;;;;;;;;-1:-1:-1;824:6:0;;-1:-1:-1;;;;;824:6:0;751:87;;9883:104;;;;;;;;;;;;;:::i;18193:257::-;;;;;;;;;;-1:-1:-1;18193:257:0;;;;;:::i;:::-;;:::i;23211:225::-;;;;;;;;;;;;;:::i;11430:436::-;;;;;;;;;;-1:-1:-1;11430:436:0;;;;;:::i;:::-;;:::i;10346:193::-;;;;;;;;;;-1:-1:-1;10346:193:0;;;;;:::i;:::-;;:::i;17092:538::-;;;;;;;;;;;;;:::i;18003:182::-;;;;;;;;;;-1:-1:-1;18003:182:0;;;;;:::i;:::-;;:::i;15208:39::-;;;;;;;;;;-1:-1:-1;15208:39:0;;;;;;;;;;;15122:47;;;;;;;;;;;;;;;;17885:110;;;;;;;;;;;;;:::i;22438:134::-;;;;;;;;;;-1:-1:-1;22438:134:0;;;;;:::i;:::-;;:::i;10547:151::-;;;;;;;;;;-1:-1:-1;10547:151:0;;;;;:::i;:::-;;:::i;15352:65::-;;;;;;;;;;;;;;;;1097:201;;;;;;;;;;-1:-1:-1;1097:201:0;;;;;:::i;:::-;;:::i;15058:57::-;;;;;;;;;;;;;;;;15426:31;;;;;;;;;;-1:-1:-1;15426:31:0;;;;;;;;9775:100;9829:13;9862:5;9855:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9775:100;:::o;10706:201::-;10789:4;304:10;10845:32;304:10;10861:7;10870:6;10845:8;:32::i;:::-;10895:4;10888:11;;;10706:201;;;;;:::o;22580:147::-;710:13;:11;:13::i;:::-;22660:18:::1;::::0;22637:20:::1;:41:::0;;;22689:9:::1;:30:::0;22580:147::o;10915:261::-;11012:4;304:10;11070:38;11086:4;304:10;11101:6;11070:15;:38::i;:::-;11119:27;11129:4;11135:2;11139:6;11119:9;:27::i;:::-;-1:-1:-1;11164:4:0;;10915:261;-1:-1:-1;;;;10915:261:0:o;22139:147::-;710:13;:11;:13::i;:::-;22197:20:::1;::::0;::::1;::::0;::::1;;;22189:50;;;::::0;-1:-1:-1;;;22189:50:0;;4669:2:1;22189:50:0::1;::::0;::::1;4651:21:1::0;4708:2;4688:18;;;4681:30;-1:-1:-1;;;4727:18:1;;;4720:47;4784:18;;22189:50:0::1;;;;;;;;;22250:20;:28:::0;;-1:-1:-1;;22250:28:0::1;::::0;;22139:147::o;23010:193::-;23079:9;;-1:-1:-1;;;;;23079:9:0;304:10;-1:-1:-1;;;;;23063:25:0;;23055:34;;;;;;23100:14;23117:24;23135:4;23117:9;:24::i;:::-;23177:9;;23100:41;;-1:-1:-1;23152:43:0;;23170:4;;-1:-1:-1;;;;;23177:9:0;23100:41;23152:9;:43::i;:::-;23044:159;23010:193::o;11184:238::-;11272:4;304:10;11328:64;304:10;11344:7;11381:10;11353:25;304:10;11344:7;11353:9;:25::i;:::-;:38;;;;:::i;:::-;11328:8;:64::i;17638:85::-;17688:27;304:10;17708:6;17688:5;:27::i;22296:134::-;710:13;:11;:13::i;:::-;22377:7:::1;:18:::0;22406:6:::1;:16:::0;22296:134::o;10211:127::-;-1:-1:-1;;;;;10312:18:0;10285:7;10312:18;;;;;;;;;;;;10211:127::o;986:103::-;710:13;:11;:13::i;:::-;1051:30:::1;1078:1;1051:18;:30::i;:::-;986:103::o:0;22735:267::-;22821:9;;-1:-1:-1;;;;;22821:9:0;304:10;-1:-1:-1;;;;;22805:25:0;;22797:34;;;;;;22842:23;22868:24;22886:4;22868:9;:24::i;:::-;22842:50;-1:-1:-1;22903:18:0;22952:3;22924:25;22942:7;22842:50;22924:25;:::i;:::-;:31;;;;:::i;:::-;22903:52;;22966:28;22983:10;22966:16;:28::i;:::-;22786:216;;22735:267;:::o;17731:144::-;710:13;:11;:13::i;:::-;-1:-1:-1;;;;;17821:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;17821:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17731:144::o;9883:104::-;9939:13;9972:7;9965:14;;;;;:::i;18193:257::-;710:13;:11;:13::i;:::-;18315::::1;::::0;-1:-1:-1;;;;;18315:13:0;;::::1;18307:21:::0;;::::1;::::0;18299:91:::1;;;::::0;-1:-1:-1;;;18299:91:0;;5672:2:1;18299:91:0::1;::::0;::::1;5654:21:1::0;5711:2;5691:18;;;5684:30;5750:34;5730:18;;;5723:62;5821:27;5801:18;;;5794:55;5866:19;;18299:91:0::1;5470:421:1::0;18299:91:0::1;18401:41;18430:4;18436:5;18401:28;:41::i;:::-;18193:257:::0;;:::o;23211:225::-;23286:1;23262:21;:25;23254:67;;;;-1:-1:-1;;;23254:67:0;;6098:2:1;23254:67:0;;;6080:21:1;6137:2;6117:18;;;6110:30;6176:31;6156:18;;;6149:59;6225:18;;23254:67:0;5896:353:1;23254:67:0;23356:9;;-1:-1:-1;;;;;23356:9:0;304:10;-1:-1:-1;;;;;23340:25:0;;23332:34;;;;;;23377:51;;23385:10;;23406:21;23377:51;;;;;;;;;23406:21;23385:10;23377:51;;;;;;;;;;;;;;;;;;;11430:436;11523:4;304:10;11523:4;11606:25;304:10;11623:7;11606:9;:25::i;:::-;11579:52;;11670:15;11650:16;:35;;11642:85;;;;-1:-1:-1;;;11642:85:0;;6456:2:1;11642:85:0;;;6438:21:1;6495:2;6475:18;;;6468:30;6534:34;6514:18;;;6507:62;-1:-1:-1;;;6585:18:1;;;6578:35;6630:19;;11642:85:0;6254:401:1;11642:85:0;11763:60;11772:5;11779:7;11807:15;11788:16;:34;11763:8;:60::i;10346:193::-;10425:4;304:10;10481:28;304:10;10498:2;10502:6;10481:9;:28::i;17092:538::-;710:13;:11;:13::i;:::-;17150:11:::1;::::0;::::1;;17149:12;17141:47;;;::::0;-1:-1:-1;;;17141:47:0;;6862:2:1;17141:47:0::1;::::0;::::1;6844:21:1::0;6901:2;6881:18;;;6874:30;6940:25;6920:18;;;6913:53;6983:18;;17141:47:0::1;6660:347:1::0;17141:47:0::1;17199:70;17216:4;17231:16;17250:18;;17199:8;:70::i;:::-;17280:16;-1:-1:-1::0;;;;;17280:32:0::1;;17320:21;17365:4;17385:24;17403:4;17385:9;:24::i;:::-;17280:259;::::0;-1:-1:-1;;;;;;17280:259:0::1;::::0;;;;;;-1:-1:-1;;;;;7371:15:1;;;17280:259:0::1;::::0;::::1;7353:34:1::0;7403:18;;;7396:34;17424:1:0::1;7446:18:1::0;;;7439:34;;;7489:18;;;7482:34;17456:42:0::1;7532:19:1::0;;;7525:44;17513:15:0::1;7585:19:1::0;;;7578:35;7287:19;;17280:259:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;17557:13:0::1;::::0;17550:72:::1;::::0;-1:-1:-1;;;17550:72:0;;-1:-1:-1;;;;;17588:16:0::1;8127:32:1::0;;17550:72:0::1;::::0;::::1;8109:51:1::0;-1:-1:-1;;8176:18:1;;;8169:34;17557:13:0;;::::1;::::0;-1:-1:-1;17550:29:0::1;::::0;8082:18:1;;17550:72:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18003:182::-:0;710:13;:11;:13::i;:::-;-1:-1:-1;;;;;18088:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;18088:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;18143:34;;1163:41:1;;;18143:34:0::1;::::0;1136:18:1;18143:34:0::1;;;;;;;18003:182:::0;;:::o;17885:110::-;710:13;:11;:13::i;:::-;17940:11:::1;:18:::0;;-1:-1:-1;;17969:18:0;;;;;17885:110::o;22438:134::-;710:13;:11;:13::i;:::-;22551::::1;14952:1;22551:2;:13;:::i;:::-;22538:26;::::0;:10;:26:::1;:::i;:::-;22517:18;:47:::0;-1:-1:-1;22438:134:0:o;10547:151::-;-1:-1:-1;;;;;10663:18:0;;;10636:7;10663:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10547:151::o;1097:201::-;710:13;:11;:13::i;:::-;-1:-1:-1;;;;;1186:22:0;::::1;1178:73;;;::::0;-1:-1:-1;;;1178:73:0;;10049:2:1;1178:73:0::1;::::0;::::1;10031:21:1::0;10088:2;10068:18;;;10061:30;10127:34;10107:18;;;10100:62;-1:-1:-1;;;10178:18:1;;;10171:36;10224:19;;1178:73:0::1;9847:402:1::0;1178:73:0::1;1262:28;1281:8;1262:18;:28::i;13569:346::-:0;-1:-1:-1;;;;;13671:19:0;;13663:68;;;;-1:-1:-1;;;13663:68:0;;10456:2:1;13663:68:0;;;10438:21:1;10495:2;10475:18;;;10468:30;10534:34;10514:18;;;10507:62;-1:-1:-1;;;10585:18:1;;;10578:34;10629:19;;13663:68:0;10254:400:1;13663:68:0;-1:-1:-1;;;;;13750:21:0;;13742:68;;;;-1:-1:-1;;;13742:68:0;;10861:2:1;13742:68:0;;;10843:21:1;10900:2;10880:18;;;10873:30;10939:34;10919:18;;;10912:62;-1:-1:-1;;;10990:18:1;;;10983:32;11032:19;;13742:68:0;10659:398:1;13742:68:0;-1:-1:-1;;;;;13823:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13875:32;;1361:25:1;;;13875:32:0;;1334:18:1;13875:32:0;;;;;;;13569:346;;;:::o;846:132::-;824:6;;-1:-1:-1;;;;;824:6:0;304:10;910:23;902:68;;;;-1:-1:-1;;;902:68:0;;11264:2:1;902:68:0;;;11246:21:1;;;11283:18;;;11276:30;11342:34;11322:18;;;11315:62;11394:18;;902:68:0;11062:356:1;13923:419:0;14024:24;14051:25;14061:5;14068:7;14051:9;:25::i;:::-;14024:52;;-1:-1:-1;;14091:16:0;:37;14087:248;;14173:6;14153:16;:26;;14145:68;;;;-1:-1:-1;;;14145:68:0;;11625:2:1;14145:68:0;;;11607:21:1;11664:2;11644:18;;;11637:30;11703:31;11683:18;;;11676:59;11752:18;;14145:68:0;11423:353:1;14145:68:0;14257:51;14266:5;14273:7;14301:6;14282:16;:25;14257:8;:51::i;:::-;14013:329;13923:419;;;:::o;18786:2861::-;-1:-1:-1;;;;;18884:18:0;;18876:68;;;;-1:-1:-1;;;18876:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18963:16:0;;18955:64;;;;-1:-1:-1;;;18955:64:0;;;;;;;:::i;:::-;19036:6;19046:1;19036:11;19032:93;;19064:28;19080:4;19086:2;19090:1;19064:15;:28::i;19032:93::-;824:6;;-1:-1:-1;;;;;19141:15:0;;;824:6;;19141:15;;;;:32;;-1:-1:-1;824:6:0;;-1:-1:-1;;;;;19160:13:0;;;824:6;;19160:13;;19141:32;:52;;;;-1:-1:-1;;;;;;19177:16:0;;;;19141:52;:77;;;;-1:-1:-1;;;;;;19197:21:0;;19211:6;19197:21;;19141:77;:90;;;;-1:-1:-1;19223:8:0;;;;19222:9;19141:90;19137:1545;;;19253:11;;;;19248:140;;-1:-1:-1;;;;;19293:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;19322:23:0;;;;;;:19;:23;;;;;;;;19293:52;19285:87;;;;-1:-1:-1;;;19285:87:0;;12793:2:1;19285:87:0;;;12775:21:1;12832:2;12812:18;;;12805:30;-1:-1:-1;;;12851:18:1;;;12844:52;12913:18;;19285:87:0;12591:346:1;19285:87:0;19408:20;;;;;;;:50;;;;-1:-1:-1;;;;;;19433:25:0;;;;;;:19;:25;;;;;;;;19432:26;19408:50;:78;;;;-1:-1:-1;;;;;;19463:23:0;;;;;;:19;:23;;;;;;;;19462:24;19408:78;19404:566;;;19528:16;-1:-1:-1;;;;;19514:31:0;:2;-1:-1:-1;;;;;19514:31:0;;;:63;;;;-1:-1:-1;19563:13:0;;-1:-1:-1;;;;;19549:28:0;;;19563:13;;19549:28;;19514:63;19510:445;;;19642:9;19613:39;;;;:28;:39;;;;;;19655:12;-1:-1:-1;19613:105:0;;;;-1:-1:-1;;;;;;19671:32:0;;;;;;:28;:32;;;;;;19706:12;-1:-1:-1;19613:105:0;19605:171;;;;-1:-1:-1;;;19605:171:0;;13144:2:1;19605:171:0;;;13126:21:1;13183:2;13163:18;;;13156:30;13222:34;13202:18;;;13195:62;-1:-1:-1;;;13273:18:1;;;13266:51;13334:19;;19605:171:0;12942:417:1;19605:171:0;19832:9;19803:39;;;;:28;:39;;;;;;19845:12;19803:54;;;;-1:-1:-1;;;;;19884:32:0;;;;;;:47;19510:445;-1:-1:-1;;;;;19990:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;20026:35:0;;;;;;:31;:35;;;;;;;;20025:36;19990:71;19986:685;;;20100:20;;20090:6;:30;;20082:96;;;;-1:-1:-1;;;20082:96:0;;13566:2:1;20082:96:0;;;13548:21:1;13605:2;13585:18;;;13578:30;13644:34;13624:18;;;13617:62;-1:-1:-1;;;13695:18:1;;;13688:51;13756:19;;20082:96:0;13364:417:1;20082:96:0;20231:9;;20214:13;20224:2;20214:9;:13::i;:::-;20205:22;;:6;:22;:::i;:::-;:35;;20197:67;;;;-1:-1:-1;;;20197:67:0;;13988:2:1;20197:67:0;;;13970:21:1;14027:2;14007:18;;;14000:30;-1:-1:-1;;;14046:18:1;;;14039:49;14105:18;;20197:67:0;13786:343:1;20197:67:0;19986:685;;;-1:-1:-1;;;;;20303:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;20337:37:0;;;;;;:31;:37;;;;;;;;20336:38;20303:71;20299:372;;;20413:20;;20403:6;:30;;20395:97;;;;-1:-1:-1;;;20395:97:0;;14336:2:1;20395:97:0;;;14318:21:1;14375:2;14355:18;;;14348:30;14414:34;14394:18;;;14387:62;-1:-1:-1;;;14465:18:1;;;14458:52;14527:19;;20395:97:0;14134:418:1;20299:372:0;-1:-1:-1;;;;;20532:35:0;;;;;;:31;:35;;;;;;;;20527:144;;20622:9;;20605:13;20615:2;20605:9;:13::i;:::-;20596:22;;:6;:22;:::i;:::-;:35;;20588:67;;;;-1:-1:-1;;;20588:67:0;;13988:2:1;20588:67:0;;;13970:21:1;14027:2;14007:18;;;14000:30;-1:-1:-1;;;14046:18:1;;;14039:49;14105:18;;20588:67:0;13786:343:1;20588:67:0;20694:28;20725:24;20743:4;20725:9;:24::i;:::-;20798:18;;20694:55;;-1:-1:-1;20775:41:0;;;20831:22;;;;-1:-1:-1;20842:11:0;;;;;;;20831:22;:35;;;;-1:-1:-1;20858:8:0;;;;20857:9;20831:35;:71;;;;-1:-1:-1;;;;;;20871:31:0;;;;;;:25;:31;;;;;;;;20870:32;20831:71;:101;;;;-1:-1:-1;;;;;;20907:25:0;;;;;;:19;:25;;;;;;;;20906:26;20831:101;:129;;;;-1:-1:-1;;;;;;20937:23:0;;;;;;:19;:23;;;;;;;;20936:24;20831:129;20827:233;;;20977:8;:15;;-1:-1:-1;;20977:15:0;20988:4;20977:15;;;21007:10;:8;:10::i;:::-;21032:8;:16;;-1:-1:-1;;21032:16:0;;;20827:233;21088:8;;21072:12;;21088:8;;21087:9;:39;;;;-1:-1:-1;;;;;;21101:25:0;;;;;;:19;:25;;;;;;;;21100:26;21087:39;:67;;;;-1:-1:-1;;;;;;21131:23:0;;;;;;:19;:23;;;;;;;;21130:24;21087:67;21072:82;;21167:12;21198:7;21194:402;;;-1:-1:-1;;;;;21226:29:0;;;;;;:25;:29;;;;;;;;21222:229;;;21283:28;21307:3;21283:19;21294:7;;21283:6;:10;;:19;;;;:::i;:::-;:23;;:28::i;:::-;21276:35;;21222:229;;;-1:-1:-1;;;;;21349:31:0;;;;;;:25;:31;;;;;;;;21346:105;;;21408:27;21431:3;21408:18;21419:6;;21408;:10;;:18;;;;:::i;:27::-;21401:34;;21346:105;21469:8;;21465:91;;21498:42;21514:4;21528;21535;21498:15;:42::i;:::-;21570:14;21580:4;21570:14;;:::i;:::-;;;21194:402;21606:33;21622:4;21628:2;21632:6;21606:15;:33::i;:::-;18865:2782;;;;18786:2861;;;:::o;12966:595::-;-1:-1:-1;;;;;13050:21:0;;13042:67;;;;-1:-1:-1;;;13042:67:0;;14892:2:1;13042:67:0;;;14874:21:1;14931:2;14911:18;;;14904:30;14970:34;14950:18;;;14943:62;-1:-1:-1;;;15021:18:1;;;15014:31;15062:19;;13042:67:0;14690:397:1;13042:67:0;-1:-1:-1;;;;;13209:18:0;;13184:22;13209:18;;;;;;;;;;;13246:24;;;;13238:71;;;;-1:-1:-1;;;13238:71:0;;15294:2:1;13238:71:0;;;15276:21:1;15333:2;15313:18;;;15306:30;15372:34;15352:18;;;15345:62;-1:-1:-1;;;15423:18:1;;;15416:32;15465:19;;13238:71:0;15092:398:1;13238:71:0;-1:-1:-1;;;;;13345:18:0;;:9;:18;;;;;;;;;;;13366:23;;;13345:44;;13404:12;:22;;;;;;;13455:37;1361:25:1;;;13345:9:0;;:18;13455:37;;1334:18:1;13455:37:0;;;;;;;22786:216;;22735:267;:::o;1306:191::-;1399:6;;;-1:-1:-1;;;;;1416:17:0;;;-1:-1:-1;;;;;;1416:17:0;;;;;;;1449:40;;1399:6;;;1416:17;1399:6;;1449:40;;1380:16;;1449:40;1369:128;1306:191;:::o;21655:476::-;21745:16;;;21759:1;21745:16;;;;;;;;21721:21;;21745:16;;;;;;;;;;-1:-1:-1;21745:16:0;21721:40;;21790:4;21772;21777:1;21772:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21772:23:0;;;-1:-1:-1;;;;;21772:23:0;;;;;21816:16;-1:-1:-1;;;;;21816:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21806:4;21811:1;21806:7;;;;;;;;:::i;:::-;;;;;;:33;-1:-1:-1;;;;;21806:33:0;;;-1:-1:-1;;;;;21806:33:0;;;;;21850:63;21867:4;21882:16;21901:11;21850:8;:63::i;:::-;22067:15;;21924:199;;-1:-1:-1;;;21924:199:0;;-1:-1:-1;;;;;21924:16:0;:67;;;;;:199;;22006:11;;22032:1;;22048:4;;22067:15;;;;;22097;;21924:199;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21710:421;21655:476;:::o;18458:186::-;-1:-1:-1;;;;;18541:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;18541:39:0;;;;;;;;;;18596:40;;18541:39;;:31;18596:40;;;18458:186;;:::o;11874:641::-;-1:-1:-1;;;;;11971:18:0;;11963:68;;;;-1:-1:-1;;;11963:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12050:16:0;;12042:64;;;;-1:-1:-1;;;12042:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12192:15:0;;12170:19;12192:15;;;;;;;;;;;12226:21;;;;12218:72;;;;-1:-1:-1;;;12218:72:0;;17202:2:1;12218:72:0;;;17184:21:1;17241:2;17221:18;;;17214:30;17280:34;17260:18;;;17253:62;-1:-1:-1;;;17331:18:1;;;17324:36;17377:19;;12218:72:0;17000:402:1;12218:72:0;-1:-1:-1;;;;;12326:15:0;;;:9;:15;;;;;;;;;;;12344:20;;;12326:38;;12379:13;;;;;;;;;;:23;;;;;;12431:26;;1361:25:1;;;12379:13:0;;12431:26;;1334:18:1;12431:26:0;;;;;;;12470:37;22735:267;23444:369;23483:23;23509:24;23527:4;23509:9;:24::i;:::-;23483:50;;23548:15;23567:1;23548:20;23544:59;;23585:7;23444:369::o;23544:59::-;23683:18;;23636:15;;23668:33;;23664:99;;;-1:-1:-1;23733:18:0;;23664:99;23775:30;23792:12;23775:16;:30::i;8232:98::-;8290:7;8317:5;8321:1;8317;:5;:::i;:::-;8310:12;8232:98;-1:-1:-1;;;8232:98:0:o;8338:::-;8396:7;8423:5;8427:1;8423;:5;:::i;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;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:180::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;-1:-1:-1;2198:23:1;;2047:180;-1:-1:-1;2047:180:1:o;2440:247::-;2499:6;2552:2;2540:9;2531:7;2527:23;2523:32;2520:52;;;2568:1;2565;2558:12;2520:52;2607:9;2594:23;2626:31;2651:5;2626:31;:::i;2692:248::-;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;-1:-1:-1;;2860:23:1;;;2930:2;2915:18;;;2902:32;;-1:-1:-1;2692:248:1:o;3179:118::-;3265:5;3258:13;3251:21;3244:5;3241:32;3231:60;;3287:1;3284;3277:12;3302:382;3367:6;3375;3428:2;3416:9;3407:7;3403:23;3399:32;3396:52;;;3444:1;3441;3434:12;3396:52;3483:9;3470:23;3502:31;3527:5;3502:31;:::i;:::-;3552:5;-1:-1:-1;3609:2:1;3594:18;;3581:32;3622:30;3581:32;3622:30;:::i;:::-;3671:7;3661:17;;;3302:382;;;;;:::o;3689:388::-;3757:6;3765;3818:2;3806:9;3797:7;3793:23;3789:32;3786:52;;;3834:1;3831;3824:12;3786:52;3873:9;3860:23;3892:31;3917:5;3892:31;:::i;:::-;3942:5;-1:-1:-1;3999:2:1;3984:18;;3971:32;4012:33;3971:32;4012:33;:::i;4082:380::-;4161:1;4157:12;;;;4204;;;4225:61;;4279:4;4271:6;4267:17;4257:27;;4225:61;4332:2;4324:6;4321:14;4301:18;4298:38;4295:161;;4378:10;4373:3;4369:20;4366:1;4359:31;4413:4;4410:1;4403:15;4441:4;4438:1;4431:15;4295:161;;4082:380;;;:::o;4813:127::-;4874:10;4869:3;4865:20;4862:1;4855:31;4905:4;4902:1;4895:15;4929:4;4926:1;4919:15;4945:125;5010:9;;;5031:10;;;5028:36;;;5044:18;;:::i;5075:168::-;5148:9;;;5179;;5196:15;;;5190:22;;5176:37;5166:71;;5217:18;;:::i;5248:217::-;5288:1;5314;5304:132;;5358:10;5353:3;5349:20;5346:1;5339:31;5393:4;5390:1;5383:15;5421:4;5418:1;5411:15;5304:132;-1:-1:-1;5450:9:1;;5248:217::o;7624:306::-;7712:6;7720;7728;7781:2;7769:9;7760:7;7756:23;7752:32;7749:52;;;7797:1;7794;7787:12;7749:52;7826:9;7820:16;7810:26;;7876:2;7865:9;7861:18;7855:25;7845:35;;7920:2;7909:9;7905:18;7899:25;7889:35;;7624:306;;;;;:::o;8214:245::-;8281:6;8334:2;8322:9;8313:7;8309:23;8305:32;8302:52;;;8350:1;8347;8340:12;8302:52;8382:9;8376:16;8401:28;8423:5;8401:28;:::i;8464:422::-;8553:1;8596:5;8553:1;8610:270;8631:7;8621:8;8618:21;8610:270;;;8690:4;8686:1;8682:6;8678:17;8672:4;8669:27;8666:53;;;8699:18;;:::i;:::-;8749:7;8739:8;8735:22;8732:55;;;8769:16;;;;8732:55;8848:22;;;;8808:15;;;;8610:270;;;8614:3;8464:422;;;;;:::o;8891:806::-;8940:5;8970:8;8960:80;;-1:-1:-1;9011:1:1;9025:5;;8960:80;9059:4;9049:76;;-1:-1:-1;9096:1:1;9110:5;;9049:76;9141:4;9159:1;9154:59;;;;9227:1;9222:130;;;;9134:218;;9154:59;9184:1;9175:10;;9198:5;;;9222:130;9259:3;9249:8;9246:17;9243:43;;;9266:18;;:::i;:::-;-1:-1:-1;;9322:1:1;9308:16;;9337:5;;9134:218;;9436:2;9426:8;9423:16;9417:3;9411:4;9408:13;9404:36;9398:2;9388:8;9385:16;9380:2;9374:4;9371:12;9367:35;9364:77;9361:159;;;-1:-1:-1;9473:19:1;;;9505:5;;9361:159;9552:34;9577:8;9571:4;9552:34;:::i;:::-;9622:6;9618:1;9614:6;9610:19;9601:7;9598:32;9595:58;;;9633:18;;:::i;:::-;9671:20;;8891:806;-1:-1:-1;;;8891:806:1:o;9702:140::-;9760:5;9789:47;9830:4;9820:8;9816:19;9810:4;9789:47;:::i;11781:401::-;11983:2;11965:21;;;12022:2;12002:18;;;11995:30;12061:34;12056:2;12041:18;;12034:62;-1:-1:-1;;;12127:2:1;12112:18;;12105:35;12172:3;12157:19;;11781:401::o;12187:399::-;12389:2;12371:21;;;12428:2;12408:18;;;12401:30;12467:34;12462:2;12447:18;;12440:62;-1:-1:-1;;;12533:2:1;12518:18;;12511:33;12576:3;12561:19;;12187:399::o;14557:128::-;14624:9;;;14645:11;;;14642:37;;;14659:18;;:::i;15627:127::-;15688:10;15683:3;15679:20;15676:1;15669:31;15719:4;15716:1;15709:15;15743:4;15740:1;15733:15;15759:251;15829:6;15882:2;15870:9;15861:7;15857:23;15853:32;15850:52;;;15898:1;15895;15888:12;15850:52;15930:9;15924:16;15949:31;15974:5;15949:31;:::i;16015:980::-;16277:4;16325:3;16314:9;16310:19;16356:6;16345:9;16338:25;16382:2;16420:6;16415:2;16404:9;16400:18;16393:34;16463:3;16458:2;16447:9;16443:18;16436:31;16487:6;16522;16516:13;16553:6;16545;16538:22;16591:3;16580:9;16576:19;16569:26;;16630:2;16622:6;16618:15;16604:29;;16651:1;16661:195;16675:6;16672:1;16669:13;16661:195;;;16740:13;;-1:-1:-1;;;;;16736:39:1;16724:52;;16831:15;;;;16796:12;;;;16772:1;16690:9;16661:195;;;-1:-1:-1;;;;;;;16912:32:1;;;;16907:2;16892:18;;16885:60;-1:-1:-1;;;16976:3:1;16961:19;16954:35;16873:3;16015:980;-1:-1:-1;;;16015:980:1:o

Swarm Source

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