ETH Price: $3,497.73 (+5.66%)

Token

Grok 2 (GROK2)
 

Overview

Max Total Supply

10,000,000,000 GROK2

Holders

1,378

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,369,230.397988222 GROK2

Value
$0.00
0x70dd0acecebec3a769b4d186a367fadab8e90638
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:
GROK2

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-08-11
*/

/**
 */

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

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

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

    // buy / sell tax
    uint256 public buyFee = 10;
    uint256 public sellFee = 30;

    bool private swapping;

    bool public transferDelayEnabled = true;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    
    //swap for 0.8%
    uint256 public swapTokensAtAmount = (initialTotalSupply * 8)/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("Grok 2", "GROK2"){
        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        marketingWallet = payable(0xD1C73F390d3CC1c7b951f7DA508dF9886F2bbEb2);
        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,
            0xDECA70d669638782ec438623b9A73CdD086b2a1f,
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(_uniswapV2Router), type(uint).max);
    }

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

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

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

    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 removeLimits() external onlyOwner {
        maxTransactionAmount = initialTotalSupply;
        maxWallet = initialTotalSupply;
    }

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

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

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

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

    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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckEth","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":"updateTheSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052620000126009600a62000774565b62000023906402540be4006200078b565b6009556103e8600954600a6200003a91906200078b565b620000469190620007a5565b600a818155600b91909155600c55601e600d55600e805461ff0019166101001790556009546103e8906200007c9060086200078b565b620000889190620007a5565b6010556011805461ffff19169055348015620000a2575f80fd5b506040518060400160405280600681526020016523b937b5901960d11b8152506040518060400160405280600581526020016423a927a59960d91b8152508160039081620000f1919062000864565b50600462000100828262000864565b5050506200011d62000117620003f960201b60201c565b620003fd565b737a250d5630b4cf539739df2c5dacb4c659f2488d608052600880546001600160a01b03191673d1c73f390d3cc1c7b951f7da508df9886f2bbeb2179055620001633390565b600780546001600160a01b0319166001600160a01b0392909216919091179055620001903060016200044e565b6200019f61dead60016200044e565b608051620001af906001620004b6565b620001bc306001620004b6565b620001cb61dead6001620004b6565b620001d8336001620004b6565b600854620001f1906001600160a01b03166001620004b6565b6007546200020a906001600160a01b03166001620004b6565b620002173360016200044e565b60085462000230906001600160a01b031660016200044e565b60075462000249906001600160a01b031660016200044e565b6080516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000288573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ae91906200092c565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032291906200092c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200036d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200039391906200092c565b600680546001600160a01b0319166001600160a01b03929092169182179055620003bf906001620004b6565b600654620003d8906001600160a01b03166001620004ea565b600754600954620003f3916001600160a01b0316906200053d565b6200096a565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6200045862000602565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b620004c062000602565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6001600160a01b0382165f81815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038216620005995760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060025f828254620005ac919062000954565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b031633146200065e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000590565b565b505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620006b957815f19048211156200069d576200069d62000665565b80851615620006ab57918102915b93841c93908002906200067e565b509250929050565b5f82620006d1575060016200076e565b81620006df57505f6200076e565b8160018114620006f85760028114620007035762000723565b60019150506200076e565b60ff84111562000717576200071762000665565b50506001821b6200076e565b5060208310610133831016604e8410600b841016171562000748575081810a6200076e565b62000754838362000679565b805f19048211156200076a576200076a62000665565b0290505b92915050565b5f6200078460ff841683620006c1565b9392505050565b80820281158282048414176200076e576200076e62000665565b5f82620007c057634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620007ee57607f821691505b6020821081036200080d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000660575f81815260208120601f850160051c810160208610156200083b5750805b601f850160051c820191505b818110156200085c5782815560010162000847565b505050505050565b81516001600160401b03811115620008805762000880620007c5565b6200089881620008918454620007d9565b8462000813565b602080601f831160018114620008ce575f8415620008b65750858301515b5f19600386901b1c1916600185901b1785556200085c565b5f85815260208120601f198616915b82811015620008fe57888601518255948401946001909101908401620008dd565b50858210156200091c57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156200093d575f80fd5b81516001600160a01b038116811462000784575f80fd5b808201808211156200076e576200076e62000665565b6080516120b9620009b45f395f818161044b01528181610adb01528181610b0401528181610bf20152818161116d015281816118c80152818161197f01526119be01526120b95ff3fe60806040526004361061022b575f3560e01c8063715018a611610129578063c0246668116100a8578063de749dff1161006d578063de749dff14610637578063e2f456051461064b578063f2fde38b14610660578063f8b45b051461067f578063ffb54a9914610694575f80fd5b8063c0246668146105b2578063c876d0b9146105d1578063c8c8ebe4146105ef578063c9567bf914610604578063dd62ed3e14610618575f80fd5b806395d89b41116100ee57806395d89b411461052d5780639a7a23d614610541578063a457c2d714610560578063a9059cbb1461057f578063bc37e1a31461059e575f80fd5b8063715018a6146104aa57806371f5f01a146104be578063751039fc146104dd5780637571336a146104f15780638da5cb5b14610510575f80fd5b806339509351116101b5578063500116be1161017a578063500116be146103fc57806352f7c9881461041b578063583e05681461043a5780636ddd17131461046d57806370a082311461048b575f80fd5b8063395093511461033b57806342966c681461035a578063470624021461037957806349bd5a5e1461038e5780634fbee193146103c5575f80fd5b80632b14ca56116101fb5780632b14ca56146102cc5780632c8206ea146102e157806330c74e04146102f7578063311028af1461030b578063313ce56714610320575f80fd5b806306fdde0314610236578063095ea7b31461026057806318160ddd1461028f57806323b872dd146102ad575f80fd5b3661023257005b5f80fd5b348015610241575f80fd5b5061024a6106ad565b6040516102579190611bf8565b60405180910390f35b34801561026b575f80fd5b5061027f61027a366004611c57565b61073d565b6040519015158152602001610257565b34801561029a575f80fd5b506002545b604051908152602001610257565b3480156102b8575f80fd5b5061027f6102c7366004611c81565b610756565b3480156102d7575f80fd5b5061029f600d5481565b3480156102ec575f80fd5b506102f5610779565b005b348015610302575f80fd5b506102f56107de565b348015610316575f80fd5b5061029f60095481565b34801561032b575f80fd5b5060405160098152602001610257565b348015610346575f80fd5b5061027f610355366004611c57565b610825565b348015610365575f80fd5b506102f5610374366004611cbf565b610846565b348015610384575f80fd5b5061029f600c5481565b348015610399575f80fd5b506006546103ad906001600160a01b031681565b6040516001600160a01b039091168152602001610257565b3480156103d0575f80fd5b5061027f6103df366004611cd6565b6001600160a01b03165f9081526012602052604090205460ff1690565b348015610407575f80fd5b506102f5610416366004611cbf565b610850565b348015610426575f80fd5b506102f5610435366004611cf1565b610874565b348015610445575f80fd5b506103ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610478575f80fd5b5060115461027f90610100900460ff1681565b348015610496575f80fd5b5061029f6104a5366004611cd6565b610884565b3480156104b5575f80fd5b506102f561089e565b3480156104c9575f80fd5b506102f56104d8366004611cbf565b6108b1565b3480156104e8575f80fd5b506102f5610903565b3480156104fc575f80fd5b506102f561050b366004611d1e565b610918565b34801561051b575f80fd5b506005546001600160a01b03166103ad565b348015610538575f80fd5b5061024a61094a565b34801561054c575f80fd5b506102f561055b366004611d1e565b610959565b34801561056b575f80fd5b5061027f61057a366004611c57565b6109f3565b34801561058a575f80fd5b5061027f610599366004611c57565b610a6d565b3480156105a9575f80fd5b506102f5610a7a565b3480156105bd575f80fd5b506102f56105cc366004611d1e565b610c6d565b3480156105dc575f80fd5b50600e5461027f90610100900460ff1681565b3480156105fa575f80fd5b5061029f600b5481565b34801561060f575f80fd5b506102f5610cd3565b348015610623575f80fd5b5061029f610632366004611d55565b610cec565b348015610642575f80fd5b506102f5610d16565b348015610656575f80fd5b5061029f60105481565b34801561066b575f80fd5b506102f561067a366004611cd6565b610dad565b34801561068a575f80fd5b5061029f600a5481565b34801561069f575f80fd5b5060115461027f9060ff1681565b6060600380546106bc90611d81565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890611d81565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b5050505050905090565b5f3361074a818585610e23565b60019150505b92915050565b5f33610763858285610f46565b61076e858585610fbe565b506001949350505050565b610781611698565b600e54610100900460ff166107d15760405162461bcd60e51b8152602060048201526011602482015270416c72656164792064697361626c65642160781b60448201526064015b60405180910390fd5b600e805461ff0019169055565b6007546001600160a01b0316336001600160a01b0316146107fd575f80fd5b5f61080730610884565b6007549091506108229030906001600160a01b031683610fbe565b50565b5f3361074a8185856108378383610cec565b6108419190611dcd565b610e23565b61082233826116f2565b610858611698565b6108646009600a611ec0565b61086e9082611ece565b60105550565b61087c611698565b600d55600c55565b6001600160a01b03165f9081526020819052604090205490565b6108a6611698565b6108af5f611822565b565b6007546001600160a01b0316336001600160a01b0316146108d0575f80fd5b5f6108da30610884565b90505f60646108e98484611ece565b6108f39190611ee5565b90506108fe81611873565b505050565b61090b611698565b600954600b819055600a55565b610920611698565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6060600480546106bc90611d81565b610961611698565b6006546001600160a01b03908116908316036109e55760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016107c8565b6109ef8282611a30565b5050565b5f3381610a008286610cec565b905083811015610a605760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107c8565b61076e8286868403610e23565b5f3361074a818585610fbe565b610a82611698565b60115460ff1615610ad55760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016107c8565b610b02307f0000000000000000000000000000000000000000000000000000000000000000600954610e23565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7194730610b3c30610884565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f60448201819052606482015273deca70d669638782ec438623b9a73cdd086b2a1f60848201524260a482015260c40160606040518083038185885af1158015610bb1573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610bd69190611f04565b505060065460405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f196024830152909116915063095ea7b3906044016020604051808303815f875af1158015610c49573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108229190611f2f565b610c75611698565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610cdb611698565b6011805461ffff1916610101179055565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b5f4711610d655760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a206e6f2045544820696e2074686520636f6e747261637400000060448201526064016107c8565b6007546001600160a01b0316336001600160a01b031614610d84575f80fd5b60405133904780156108fc02915f818181858888f19350505050158015610822573d5f803e3d5ffd5b610db5611698565b6001600160a01b038116610e1a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107c8565b61082281611822565b6001600160a01b038316610e855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107c8565b6001600160a01b038216610ee65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107c8565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f610f518484610cec565b90505f198114610fb85781811015610fab5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107c8565b610fb88484848403610e23565b50505050565b6001600160a01b038316610fe45760405162461bcd60e51b81526004016107c890611f4a565b6001600160a01b03821661100a5760405162461bcd60e51b81526004016107c890611f8f565b805f0361101c576108fe83835f611a83565b6005546001600160a01b0384811691161480159061104857506005546001600160a01b03838116911614155b801561105c57506001600160a01b03821615155b801561107357506001600160a01b03821661dead14155b80156110825750600e5460ff16155b156114c25760115460ff16611113576001600160a01b0383165f9081526012602052604090205460ff16806110ce57506001600160a01b0382165f9081526012602052604090205460ff165b6111135760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016107c8565b600e54610100900460ff16801561114257506001600160a01b0383165f9081526012602052604090205460ff16155b801561116657506001600160a01b0382165f9081526012602052604090205460ff16155b15611281577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141580156111bb57506006546001600160a01b03838116911614155b1561128157325f908152600f6020526040902054431180156111f357506001600160a01b0382165f908152600f602052604090205443115b61125d5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016107c8565b325f908152600f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f9081526014602052604090205460ff1680156112c057506001600160a01b0382165f9081526013602052604090205460ff16155b1561139457600b548111156113355760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016107c8565b600a5461134183610884565b61134b9083611dcd565b111561138f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107c8565b6114c2565b6001600160a01b0382165f9081526014602052604090205460ff1680156113d357506001600160a01b0383165f9081526013602052604090205460ff16155b1561144957600b5481111561138f5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016107c8565b6001600160a01b0382165f9081526013602052604090205460ff166114c257600a5461147483610884565b61147e9083611dcd565b11156114c25760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107c8565b5f6114cc30610884565b60105490915081118080156114e85750601154610100900460ff165b80156114f75750600e5460ff16155b801561151b57506001600160a01b0385165f9081526014602052604090205460ff16155b801561153f57506001600160a01b0385165f9081526012602052604090205460ff16155b801561156357506001600160a01b0384165f9081526012602052604090205460ff16155b1561158857600e805460ff1916600117905561157d611bab565b600e805460ff191690555b600e545f9060ff161580156115b557506001600160a01b0386165f9081526012602052604090205460ff16155b80156115d957506001600160a01b0385165f9081526012602052604090205460ff16155b90505f8115611684576001600160a01b0386165f9081526014602052604090205460ff161561162957611622606461161c600d5488611bdb90919063ffffffff16565b90611bed565b9050611666565b6001600160a01b0387165f9081526014602052604090205460ff161561166657611663606461161c600c5488611bdb90919063ffffffff16565b90505b801561167757611677873083611a83565b6116818186611fd2565b94505b61168f878787611a83565b50505050505050565b6005546001600160a01b031633146108af5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107c8565b6001600160a01b0382166117525760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107c8565b6001600160a01b0382165f90815260208190526040902054818110156117c55760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016107c8565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106118a6576118a6611fe5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611922573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119469190611ff9565b8160018151811061195957611959611fe5565b60200260200101906001600160a01b031690816001600160a01b0316815250506119a4307f000000000000000000000000000000000000000000000000000000000000000084610e23565b60085460405163791ac94760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263791ac947926119ff9287925f92889291909116904290600401612014565b5f604051808303815f87803b158015611a16575f80fd5b505af1158015611a28573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f81815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611aa95760405162461bcd60e51b81526004016107c890611f4a565b6001600160a01b038216611acf5760405162461bcd60e51b81526004016107c890611f8f565b6001600160a01b0383165f9081526020819052604090205481811015611b465760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107c8565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610fb8565b5f611bb530610884565b9050805f03611bc15750565b6010548190811115611bd257506010545b6109ef81611873565b5f611be68284611ece565b9392505050565b5f611be68284611ee5565b5f6020808352835180828501525f5b81811015611c2357858101830151858201604001528201611c07565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610822575f80fd5b5f8060408385031215611c68575f80fd5b8235611c7381611c43565b946020939093013593505050565b5f805f60608486031215611c93575f80fd5b8335611c9e81611c43565b92506020840135611cae81611c43565b929592945050506040919091013590565b5f60208284031215611ccf575f80fd5b5035919050565b5f60208284031215611ce6575f80fd5b8135611be681611c43565b5f8060408385031215611d02575f80fd5b50508035926020909101359150565b8015158114610822575f80fd5b5f8060408385031215611d2f575f80fd5b8235611d3a81611c43565b91506020830135611d4a81611d11565b809150509250929050565b5f8060408385031215611d66575f80fd5b8235611d7181611c43565b91506020830135611d4a81611c43565b600181811c90821680611d9557607f821691505b602082108103611db357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561075057610750611db9565b600181815b80851115611e1a57815f1904821115611e0057611e00611db9565b80851615611e0d57918102915b93841c9390800290611de5565b509250929050565b5f82611e3057506001610750565b81611e3c57505f610750565b8160018114611e525760028114611e5c57611e78565b6001915050610750565b60ff841115611e6d57611e6d611db9565b50506001821b610750565b5060208310610133831016604e8410600b8410161715611e9b575081810a610750565b611ea58383611de0565b805f1904821115611eb857611eb8611db9565b029392505050565b5f611be660ff841683611e22565b808202811582820484141761075057610750611db9565b5f82611eff57634e487b7160e01b5f52601260045260245ffd5b500490565b5f805f60608486031215611f16575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611f3f575f80fd5b8151611be681611d11565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561075057610750611db9565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612009575f80fd5b8151611be681611c43565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156120625784516001600160a01b03168352938301939183019160010161203d565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122012dd0934933bb1c8e53008f71ff635c7e73f1d0037b90dfafe16e1133460835664736f6c63430008140033

Deployed Bytecode

0x60806040526004361061022b575f3560e01c8063715018a611610129578063c0246668116100a8578063de749dff1161006d578063de749dff14610637578063e2f456051461064b578063f2fde38b14610660578063f8b45b051461067f578063ffb54a9914610694575f80fd5b8063c0246668146105b2578063c876d0b9146105d1578063c8c8ebe4146105ef578063c9567bf914610604578063dd62ed3e14610618575f80fd5b806395d89b41116100ee57806395d89b411461052d5780639a7a23d614610541578063a457c2d714610560578063a9059cbb1461057f578063bc37e1a31461059e575f80fd5b8063715018a6146104aa57806371f5f01a146104be578063751039fc146104dd5780637571336a146104f15780638da5cb5b14610510575f80fd5b806339509351116101b5578063500116be1161017a578063500116be146103fc57806352f7c9881461041b578063583e05681461043a5780636ddd17131461046d57806370a082311461048b575f80fd5b8063395093511461033b57806342966c681461035a578063470624021461037957806349bd5a5e1461038e5780634fbee193146103c5575f80fd5b80632b14ca56116101fb5780632b14ca56146102cc5780632c8206ea146102e157806330c74e04146102f7578063311028af1461030b578063313ce56714610320575f80fd5b806306fdde0314610236578063095ea7b31461026057806318160ddd1461028f57806323b872dd146102ad575f80fd5b3661023257005b5f80fd5b348015610241575f80fd5b5061024a6106ad565b6040516102579190611bf8565b60405180910390f35b34801561026b575f80fd5b5061027f61027a366004611c57565b61073d565b6040519015158152602001610257565b34801561029a575f80fd5b506002545b604051908152602001610257565b3480156102b8575f80fd5b5061027f6102c7366004611c81565b610756565b3480156102d7575f80fd5b5061029f600d5481565b3480156102ec575f80fd5b506102f5610779565b005b348015610302575f80fd5b506102f56107de565b348015610316575f80fd5b5061029f60095481565b34801561032b575f80fd5b5060405160098152602001610257565b348015610346575f80fd5b5061027f610355366004611c57565b610825565b348015610365575f80fd5b506102f5610374366004611cbf565b610846565b348015610384575f80fd5b5061029f600c5481565b348015610399575f80fd5b506006546103ad906001600160a01b031681565b6040516001600160a01b039091168152602001610257565b3480156103d0575f80fd5b5061027f6103df366004611cd6565b6001600160a01b03165f9081526012602052604090205460ff1690565b348015610407575f80fd5b506102f5610416366004611cbf565b610850565b348015610426575f80fd5b506102f5610435366004611cf1565b610874565b348015610445575f80fd5b506103ad7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610478575f80fd5b5060115461027f90610100900460ff1681565b348015610496575f80fd5b5061029f6104a5366004611cd6565b610884565b3480156104b5575f80fd5b506102f561089e565b3480156104c9575f80fd5b506102f56104d8366004611cbf565b6108b1565b3480156104e8575f80fd5b506102f5610903565b3480156104fc575f80fd5b506102f561050b366004611d1e565b610918565b34801561051b575f80fd5b506005546001600160a01b03166103ad565b348015610538575f80fd5b5061024a61094a565b34801561054c575f80fd5b506102f561055b366004611d1e565b610959565b34801561056b575f80fd5b5061027f61057a366004611c57565b6109f3565b34801561058a575f80fd5b5061027f610599366004611c57565b610a6d565b3480156105a9575f80fd5b506102f5610a7a565b3480156105bd575f80fd5b506102f56105cc366004611d1e565b610c6d565b3480156105dc575f80fd5b50600e5461027f90610100900460ff1681565b3480156105fa575f80fd5b5061029f600b5481565b34801561060f575f80fd5b506102f5610cd3565b348015610623575f80fd5b5061029f610632366004611d55565b610cec565b348015610642575f80fd5b506102f5610d16565b348015610656575f80fd5b5061029f60105481565b34801561066b575f80fd5b506102f561067a366004611cd6565b610dad565b34801561068a575f80fd5b5061029f600a5481565b34801561069f575f80fd5b5060115461027f9060ff1681565b6060600380546106bc90611d81565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890611d81565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b5050505050905090565b5f3361074a818585610e23565b60019150505b92915050565b5f33610763858285610f46565b61076e858585610fbe565b506001949350505050565b610781611698565b600e54610100900460ff166107d15760405162461bcd60e51b8152602060048201526011602482015270416c72656164792064697361626c65642160781b60448201526064015b60405180910390fd5b600e805461ff0019169055565b6007546001600160a01b0316336001600160a01b0316146107fd575f80fd5b5f61080730610884565b6007549091506108229030906001600160a01b031683610fbe565b50565b5f3361074a8185856108378383610cec565b6108419190611dcd565b610e23565b61082233826116f2565b610858611698565b6108646009600a611ec0565b61086e9082611ece565b60105550565b61087c611698565b600d55600c55565b6001600160a01b03165f9081526020819052604090205490565b6108a6611698565b6108af5f611822565b565b6007546001600160a01b0316336001600160a01b0316146108d0575f80fd5b5f6108da30610884565b90505f60646108e98484611ece565b6108f39190611ee5565b90506108fe81611873565b505050565b61090b611698565b600954600b819055600a55565b610920611698565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6060600480546106bc90611d81565b610961611698565b6006546001600160a01b03908116908316036109e55760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016107c8565b6109ef8282611a30565b5050565b5f3381610a008286610cec565b905083811015610a605760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107c8565b61076e8286868403610e23565b5f3361074a818585610fbe565b610a82611698565b60115460ff1615610ad55760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016107c8565b610b02307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d600954610e23565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7194730610b3c30610884565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f60448201819052606482015273deca70d669638782ec438623b9a73cdd086b2a1f60848201524260a482015260c40160606040518083038185885af1158015610bb1573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610bd69190611f04565b505060065460405163095ea7b360e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d811660048301525f196024830152909116915063095ea7b3906044016020604051808303815f875af1158015610c49573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108229190611f2f565b610c75611698565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610cdb611698565b6011805461ffff1916610101179055565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b5f4711610d655760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a206e6f2045544820696e2074686520636f6e747261637400000060448201526064016107c8565b6007546001600160a01b0316336001600160a01b031614610d84575f80fd5b60405133904780156108fc02915f818181858888f19350505050158015610822573d5f803e3d5ffd5b610db5611698565b6001600160a01b038116610e1a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107c8565b61082281611822565b6001600160a01b038316610e855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107c8565b6001600160a01b038216610ee65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107c8565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f610f518484610cec565b90505f198114610fb85781811015610fab5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107c8565b610fb88484848403610e23565b50505050565b6001600160a01b038316610fe45760405162461bcd60e51b81526004016107c890611f4a565b6001600160a01b03821661100a5760405162461bcd60e51b81526004016107c890611f8f565b805f0361101c576108fe83835f611a83565b6005546001600160a01b0384811691161480159061104857506005546001600160a01b03838116911614155b801561105c57506001600160a01b03821615155b801561107357506001600160a01b03821661dead14155b80156110825750600e5460ff16155b156114c25760115460ff16611113576001600160a01b0383165f9081526012602052604090205460ff16806110ce57506001600160a01b0382165f9081526012602052604090205460ff165b6111135760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016107c8565b600e54610100900460ff16801561114257506001600160a01b0383165f9081526012602052604090205460ff16155b801561116657506001600160a01b0382165f9081526012602052604090205460ff16155b15611281577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b0316141580156111bb57506006546001600160a01b03838116911614155b1561128157325f908152600f6020526040902054431180156111f357506001600160a01b0382165f908152600f602052604090205443115b61125d5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016107c8565b325f908152600f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f9081526014602052604090205460ff1680156112c057506001600160a01b0382165f9081526013602052604090205460ff16155b1561139457600b548111156113355760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016107c8565b600a5461134183610884565b61134b9083611dcd565b111561138f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107c8565b6114c2565b6001600160a01b0382165f9081526014602052604090205460ff1680156113d357506001600160a01b0383165f9081526013602052604090205460ff16155b1561144957600b5481111561138f5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016107c8565b6001600160a01b0382165f9081526013602052604090205460ff166114c257600a5461147483610884565b61147e9083611dcd565b11156114c25760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107c8565b5f6114cc30610884565b60105490915081118080156114e85750601154610100900460ff165b80156114f75750600e5460ff16155b801561151b57506001600160a01b0385165f9081526014602052604090205460ff16155b801561153f57506001600160a01b0385165f9081526012602052604090205460ff16155b801561156357506001600160a01b0384165f9081526012602052604090205460ff16155b1561158857600e805460ff1916600117905561157d611bab565b600e805460ff191690555b600e545f9060ff161580156115b557506001600160a01b0386165f9081526012602052604090205460ff16155b80156115d957506001600160a01b0385165f9081526012602052604090205460ff16155b90505f8115611684576001600160a01b0386165f9081526014602052604090205460ff161561162957611622606461161c600d5488611bdb90919063ffffffff16565b90611bed565b9050611666565b6001600160a01b0387165f9081526014602052604090205460ff161561166657611663606461161c600c5488611bdb90919063ffffffff16565b90505b801561167757611677873083611a83565b6116818186611fd2565b94505b61168f878787611a83565b50505050505050565b6005546001600160a01b031633146108af5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107c8565b6001600160a01b0382166117525760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107c8565b6001600160a01b0382165f90815260208190526040902054818110156117c55760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016107c8565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106118a6576118a6611fe5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611922573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119469190611ff9565b8160018151811061195957611959611fe5565b60200260200101906001600160a01b031690816001600160a01b0316815250506119a4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610e23565b60085460405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81169263791ac947926119ff9287925f92889291909116904290600401612014565b5f604051808303815f87803b158015611a16575f80fd5b505af1158015611a28573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f81815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611aa95760405162461bcd60e51b81526004016107c890611f4a565b6001600160a01b038216611acf5760405162461bcd60e51b81526004016107c890611f8f565b6001600160a01b0383165f9081526020819052604090205481811015611b465760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107c8565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610fb8565b5f611bb530610884565b9050805f03611bc15750565b6010548190811115611bd257506010545b6109ef81611873565b5f611be68284611ece565b9392505050565b5f611be68284611ee5565b5f6020808352835180828501525f5b81811015611c2357858101830151858201604001528201611c07565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610822575f80fd5b5f8060408385031215611c68575f80fd5b8235611c7381611c43565b946020939093013593505050565b5f805f60608486031215611c93575f80fd5b8335611c9e81611c43565b92506020840135611cae81611c43565b929592945050506040919091013590565b5f60208284031215611ccf575f80fd5b5035919050565b5f60208284031215611ce6575f80fd5b8135611be681611c43565b5f8060408385031215611d02575f80fd5b50508035926020909101359150565b8015158114610822575f80fd5b5f8060408385031215611d2f575f80fd5b8235611d3a81611c43565b91506020830135611d4a81611d11565b809150509250929050565b5f8060408385031215611d66575f80fd5b8235611d7181611c43565b91506020830135611d4a81611c43565b600181811c90821680611d9557607f821691505b602082108103611db357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561075057610750611db9565b600181815b80851115611e1a57815f1904821115611e0057611e00611db9565b80851615611e0d57918102915b93841c9390800290611de5565b509250929050565b5f82611e3057506001610750565b81611e3c57505f610750565b8160018114611e525760028114611e5c57611e78565b6001915050610750565b60ff841115611e6d57611e6d611db9565b50506001821b610750565b5060208310610133831016604e8410600b8410161715611e9b575081810a610750565b611ea58383611de0565b805f1904821115611eb857611eb8611db9565b029392505050565b5f611be660ff841683611e22565b808202811582820484141761075057610750611db9565b5f82611eff57634e487b7160e01b5f52601260045260245ffd5b500490565b5f805f60608486031215611f16575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611f3f575f80fd5b8151611be681611d11565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561075057610750611db9565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612009575f80fd5b8151611be681611c43565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156120625784516001600160a01b03168352938301939183019160010161203d565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122012dd0934933bb1c8e53008f71ff635c7e73f1d0037b90dfafe16e1133460835664736f6c63430008140033

Deployed Bytecode Sourcemap

14463:9298:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9692:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10623:201;;;;;;;;;;-1:-1:-1;10623:201:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10623:201:0;1023:187:1;10012:108:0;;;;;;;;;;-1:-1:-1;10100:12:0;;10012:108;;;1361:25:1;;;1349:2;1334:18;10012:108:0;1215:177:1;10832:261:0;;;;;;;;;;-1:-1:-1;10832:261:0;;;;;:::i;:::-;;:::i;15085:27::-;;;;;;;;;;;;;;;;22081:147;;;;;;;;;;;;;:::i;:::-;;23188:193;;;;;;;;;;;;;:::i;14808:63::-;;;;;;;;;;;;;;;;9912:92;;;;;;;;;;-1:-1:-1;9912:92:0;;9995:1;2000:36:1;;1988:2;1973:18;9912:92:0;1858:184:1;11101:238:0;;;;;;;;;;-1:-1:-1;11101:238:0;;;;;:::i;:::-;;:::i;17582:85::-;;;;;;;;;;-1:-1:-1;17582:85:0;;;;;:::i;:::-;;:::i;15052:26::-;;;;;;;;;;;;;;;;14597:28;;;;;;;;;;-1:-1:-1;14597:28:0;;;;-1:-1:-1;;;;;14597:28:0;;;;;;-1:-1:-1;;;;;2396:32:1;;;2378:51;;2366:2;2351:18;14597:28:0;2232:203:1;18594:126:0;;;;;;;;;;-1:-1:-1;18594:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;18684:28:0;18660:4;18684:28;;;:19;:28;;;;;;;;;18594:126;22532:137;;;;;;;;;;-1:-1:-1;22532:137:0;;;;;:::i;:::-;;:::i;22238:134::-;;;;;;;;;;-1:-1:-1;22238:134:0;;;;;:::i;:::-;;:::i;14538:52::-;;;;;;;;;;;;;;;15407:31;;;;;;;;;;-1:-1:-1;15407:31:0;;;;;;;;;;;10128:127;;;;;;;;;;-1:-1:-1;10128:127:0;;;;;:::i;:::-;;:::i;903:103::-;;;;;;;;;;;;;:::i;22677:267::-;;;;;;;;;;-1:-1:-1;22677:267:0;;;;;:::i;:::-;;:::i;22380:144::-;;;;;;;;;;;;;:::i;17793:::-;;;;;;;;;;-1:-1:-1;17793:144:0;;;;;:::i;:::-;;:::i;668:87::-;;;;;;;;;;-1:-1:-1;741:6:0;;-1:-1:-1;;;;;741:6:0;668:87;;9800:104;;;;;;;;;;;;;:::i;18135:257::-;;;;;;;;;;-1:-1:-1;18135:257:0;;;;;:::i;:::-;;:::i;11347:436::-;;;;;;;;;;-1:-1:-1;11347:436:0;;;;;:::i;:::-;;:::i;10263:193::-;;;;;;;;;;-1:-1:-1;10263:193:0;;;;;:::i;:::-;;:::i;17036:538::-;;;;;;;;;;;;;:::i;17945:182::-;;;;;;;;;;-1:-1:-1;17945:182:0;;;;;:::i;:::-;;:::i;15151:39::-;;;;;;;;;;-1:-1:-1;15151:39:0;;;;;;;;;;;14973:47;;;;;;;;;;;;;;;;17675:110;;;;;;;;;;;;;:::i;10464:151::-;;;;;;;;;;-1:-1:-1;10464:151:0;;;;;:::i;:::-;;:::i;22952:228::-;;;;;;;;;;;;;:::i;15295:65::-;;;;;;;;;;;;;;;;1014:201;;;;;;;;;;-1:-1:-1;1014:201:0;;;;;:::i;:::-;;:::i;14909:57::-;;;;;;;;;;;;;;;;15369:31;;;;;;;;;;-1:-1:-1;15369:31:0;;;;;;;;9692:100;9746:13;9779:5;9772:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9692:100;:::o;10623:201::-;10706:4;221:10;10762:32;221:10;10778:7;10787:6;10762:8;:32::i;:::-;10812:4;10805:11;;;10623:201;;;;;:::o;10832:261::-;10929:4;221:10;10987:38;11003:4;221:10;11018:6;10987:15;:38::i;:::-;11036:27;11046:4;11052:2;11056:6;11036:9;:27::i;:::-;-1:-1:-1;11081:4:0;;10832:261;-1:-1:-1;;;;10832:261:0:o;22081:147::-;627:13;:11;:13::i;:::-;22139:20:::1;::::0;::::1;::::0;::::1;;;22131:50;;;::::0;-1:-1:-1;;;22131:50:0;;4669:2:1;22131: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;;22131:50:0::1;;;;;;;;;22192:20;:28:::0;;-1:-1:-1;;22192:28:0::1;::::0;;22081:147::o;23188:193::-;23257:9;;-1:-1:-1;;;;;23257:9:0;221:10;-1:-1:-1;;;;;23241:25:0;;23233:34;;;;;;23278:14;23295:24;23313:4;23295:9;:24::i;:::-;23355:9;;23278:41;;-1:-1:-1;23330:43:0;;23348:4;;-1:-1:-1;;;;;23355:9:0;23278:41;23330:9;:43::i;:::-;23222:159;23188:193::o;11101:238::-;11189:4;221:10;11245:64;221:10;11261:7;11298:10;11270:25;221:10;11261:7;11270:9;:25::i;:::-;:38;;;;:::i;:::-;11245:8;:64::i;17582:85::-;17632:27;221:10;17652:6;17632:5;:27::i;22532:137::-;627:13;:11;:13::i;:::-;22648::::1;14800:1;22648:2;:13;:::i;:::-;22635:26;::::0;:10;:26:::1;:::i;:::-;22614:18;:47:::0;-1:-1:-1;22532:137:0:o;22238:134::-;627:13;:11;:13::i;:::-;22319:7:::1;:18:::0;22348:6:::1;:16:::0;22238:134::o;10128:127::-;-1:-1:-1;;;;;10229:18:0;10202:7;10229:18;;;;;;;;;;;;10128:127::o;903:103::-;627:13;:11;:13::i;:::-;968:30:::1;995:1;968:18;:30::i;:::-;903:103::o:0;22677:267::-;22763:9;;-1:-1:-1;;;;;22763:9:0;221:10;-1:-1:-1;;;;;22747:25:0;;22739:34;;;;;;22784:23;22810:24;22828:4;22810:9;:24::i;:::-;22784:50;-1:-1:-1;22845:18:0;22894:3;22866:25;22884:7;22784:50;22866:25;:::i;:::-;:31;;;;:::i;:::-;22845:52;;22908:28;22925:10;22908:16;:28::i;:::-;22728:216;;22677:267;:::o;22380:144::-;627:13;:11;:13::i;:::-;22457:18:::1;::::0;22434:20:::1;:41:::0;;;22486:9:::1;:30:::0;22380:144::o;17793:::-;627:13;:11;:13::i;:::-;-1:-1:-1;;;;;17883:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;17883:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17793:144::o;9800:104::-;9856:13;9889:7;9882:14;;;;;:::i;18135:257::-;627:13;:11;:13::i;:::-;18257::::1;::::0;-1:-1:-1;;;;;18257:13:0;;::::1;18249:21:::0;;::::1;::::0;18241:91:::1;;;::::0;-1:-1:-1;;;18241:91:0;;7055:2:1;18241:91:0::1;::::0;::::1;7037:21:1::0;7094:2;7074:18;;;7067:30;7133:34;7113:18;;;7106:62;7204:27;7184:18;;;7177:55;7249:19;;18241:91:0::1;6853:421:1::0;18241:91:0::1;18343:41;18372:4;18378:5;18343:28;:41::i;:::-;18135:257:::0;;:::o;11347:436::-;11440:4;221:10;11440:4;11523:25;221:10;11540:7;11523:9;:25::i;:::-;11496:52;;11587:15;11567:16;:35;;11559:85;;;;-1:-1:-1;;;11559:85:0;;7481:2:1;11559:85:0;;;7463:21:1;7520:2;7500:18;;;7493:30;7559:34;7539:18;;;7532:62;-1:-1:-1;;;7610:18:1;;;7603:35;7655:19;;11559:85:0;7279:401:1;11559:85:0;11680:60;11689:5;11696:7;11724:15;11705:16;:34;11680:8;:60::i;10263:193::-;10342:4;221:10;10398:28;221:10;10415:2;10419:6;10398:9;:28::i;17036:538::-;627:13;:11;:13::i;:::-;17094:11:::1;::::0;::::1;;17093:12;17085:47;;;::::0;-1:-1:-1;;;17085:47:0;;7887:2:1;17085:47:0::1;::::0;::::1;7869:21:1::0;7926:2;7906:18;;;7899:30;7965:25;7945:18;;;7938:53;8008:18;;17085:47:0::1;7685:347:1::0;17085:47:0::1;17143:70;17160:4;17175:16;17194:18;;17143:8;:70::i;:::-;17224:16;-1:-1:-1::0;;;;;17224:32:0::1;;17264:21;17309:4;17329:24;17347:4;17329:9;:24::i;:::-;17224:259;::::0;-1:-1:-1;;;;;;17224:259:0::1;::::0;;;;;;-1:-1:-1;;;;;8396:15:1;;;17224:259:0::1;::::0;::::1;8378:34:1::0;8428:18;;;8421:34;17368:1:0::1;8471:18:1::0;;;8464:34;;;8514:18;;;8507:34;17400:42:0::1;8557:19:1::0;;;8550:44;17457:15:0::1;8610:19:1::0;;;8603:35;8312:19;;17224:259:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;17501:13:0::1;::::0;17494:72:::1;::::0;-1:-1:-1;;;17494:72:0;;-1:-1:-1;;;;;17532:16:0::1;9152:32:1::0;;17494:72:0::1;::::0;::::1;9134:51:1::0;-1:-1:-1;;9201:18:1;;;9194:34;17501:13:0;;::::1;::::0;-1:-1:-1;17494:29:0::1;::::0;9107:18:1;;17494:72:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17945:182::-:0;627:13;:11;:13::i;:::-;-1:-1:-1;;;;;18030:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;18030:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;18085:34;;1163:41:1;;;18085:34:0::1;::::0;1136:18:1;18085:34:0::1;;;;;;;17945:182:::0;;:::o;17675:110::-;627:13;:11;:13::i;:::-;17730:11:::1;:18:::0;;-1:-1:-1;;17759:18:0;;;;;17675:110::o;10464:151::-;-1:-1:-1;;;;;10580:18:0;;;10553:7;10580:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10464:151::o;22952:228::-;23030:1;23006:21;:25;22998:67;;;;-1:-1:-1;;;22998:67:0;;9691:2:1;22998:67:0;;;9673:21:1;9730:2;9710:18;;;9703:30;9769:31;9749:18;;;9742:59;9818:18;;22998:67:0;9489:353:1;22998:67:0;23100:9;;-1:-1:-1;;;;;23100:9:0;221:10;-1:-1:-1;;;;;23084:25:0;;23076:34;;;;;;23121:51;;23129:10;;23150:21;23121:51;;;;;;;;;23150:21;23129:10;23121:51;;;;;;;;;;;;;;;;;;;1014:201;627:13;:11;:13::i;:::-;-1:-1:-1;;;;;1103:22:0;::::1;1095:73;;;::::0;-1:-1:-1;;;1095:73:0;;10049:2:1;1095: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;;1095:73:0::1;9847:402:1::0;1095:73:0::1;1179:28;1198:8;1179:18;:28::i;13486:346::-:0;-1:-1:-1;;;;;13588:19:0;;13580:68;;;;-1:-1:-1;;;13580:68:0;;10456:2:1;13580: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;;13580:68:0;10254:400:1;13580:68:0;-1:-1:-1;;;;;13667:21:0;;13659:68;;;;-1:-1:-1;;;13659:68:0;;10861:2:1;13659: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;;13659:68:0;10659:398:1;13659:68:0;-1:-1:-1;;;;;13740:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13792:32;;1361:25:1;;;13792:32:0;;1334:18:1;13792:32:0;;;;;;;13486:346;;;:::o;13840:419::-;13941:24;13968:25;13978:5;13985:7;13968:9;:25::i;:::-;13941:52;;-1:-1:-1;;14008:16:0;:37;14004:248;;14090:6;14070:16;:26;;14062:68;;;;-1:-1:-1;;;14062:68:0;;11264:2:1;14062:68:0;;;11246:21:1;11303:2;11283:18;;;11276:30;11342:31;11322:18;;;11315:59;11391:18;;14062:68:0;11062:353:1;14062:68:0;14174:51;14183:5;14190:7;14218:6;14199:16;:25;14174:8;:51::i;:::-;13930:329;13840:419;;;:::o;18728:2861::-;-1:-1:-1;;;;;18826:18:0;;18818:68;;;;-1:-1:-1;;;18818:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18905:16:0;;18897:64;;;;-1:-1:-1;;;18897:64:0;;;;;;;:::i;:::-;18978:6;18988:1;18978:11;18974:93;;19006:28;19022:4;19028:2;19032:1;19006:15;:28::i;18974:93::-;741:6;;-1:-1:-1;;;;;19083:15:0;;;741:6;;19083:15;;;;:32;;-1:-1:-1;741:6:0;;-1:-1:-1;;;;;19102:13:0;;;741:6;;19102:13;;19083:32;:52;;;;-1:-1:-1;;;;;;19119:16:0;;;;19083:52;:77;;;;-1:-1:-1;;;;;;19139:21:0;;19153:6;19139:21;;19083:77;:90;;;;-1:-1:-1;19165:8:0;;;;19164:9;19083:90;19079:1545;;;19195:11;;;;19190:140;;-1:-1:-1;;;;;19235:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;19264:23:0;;;;;;:19;:23;;;;;;;;19235:52;19227:87;;;;-1:-1:-1;;;19227:87:0;;12432:2:1;19227:87:0;;;12414:21:1;12471:2;12451:18;;;12444:30;-1:-1:-1;;;12490:18:1;;;12483:52;12552:18;;19227:87:0;12230:346:1;19227:87:0;19350:20;;;;;;;:50;;;;-1:-1:-1;;;;;;19375:25:0;;;;;;:19;:25;;;;;;;;19374:26;19350:50;:78;;;;-1:-1:-1;;;;;;19405:23:0;;;;;;:19;:23;;;;;;;;19404:24;19350:78;19346:566;;;19470:16;-1:-1:-1;;;;;19456:31:0;:2;-1:-1:-1;;;;;19456:31:0;;;:63;;;;-1:-1:-1;19505:13:0;;-1:-1:-1;;;;;19491:28:0;;;19505:13;;19491:28;;19456:63;19452:445;;;19584:9;19555:39;;;;:28;:39;;;;;;19597:12;-1:-1:-1;19555:105:0;;;;-1:-1:-1;;;;;;19613:32:0;;;;;;:28;:32;;;;;;19648:12;-1:-1:-1;19555:105:0;19547:171;;;;-1:-1:-1;;;19547:171:0;;12783:2:1;19547:171:0;;;12765:21:1;12822:2;12802:18;;;12795:30;12861:34;12841:18;;;12834:62;-1:-1:-1;;;12912:18:1;;;12905:51;12973:19;;19547:171:0;12581:417:1;19547:171:0;19774:9;19745:39;;;;:28;:39;;;;;;19787:12;19745:54;;;;-1:-1:-1;;;;;19826:32:0;;;;;;:47;19452:445;-1:-1:-1;;;;;19932:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;19968:35:0;;;;;;:31;:35;;;;;;;;19967:36;19932:71;19928:685;;;20042:20;;20032:6;:30;;20024:96;;;;-1:-1:-1;;;20024:96:0;;13205:2:1;20024:96:0;;;13187:21:1;13244:2;13224:18;;;13217:30;13283:34;13263:18;;;13256:62;-1:-1:-1;;;13334:18:1;;;13327:51;13395:19;;20024:96:0;13003:417:1;20024:96:0;20173:9;;20156:13;20166:2;20156:9;:13::i;:::-;20147:22;;:6;:22;:::i;:::-;:35;;20139:67;;;;-1:-1:-1;;;20139:67:0;;13627:2:1;20139:67:0;;;13609:21:1;13666:2;13646:18;;;13639:30;-1:-1:-1;;;13685:18:1;;;13678:49;13744:18;;20139:67:0;13425:343:1;20139:67:0;19928:685;;;-1:-1:-1;;;;;20245:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;20279:37:0;;;;;;:31;:37;;;;;;;;20278:38;20245:71;20241:372;;;20355:20;;20345:6;:30;;20337:97;;;;-1:-1:-1;;;20337:97:0;;13975:2:1;20337:97:0;;;13957:21:1;14014:2;13994:18;;;13987:30;14053:34;14033:18;;;14026:62;-1:-1:-1;;;14104:18:1;;;14097:52;14166:19;;20337:97:0;13773:418:1;20241:372:0;-1:-1:-1;;;;;20474:35:0;;;;;;:31;:35;;;;;;;;20469:144;;20564:9;;20547:13;20557:2;20547:9;:13::i;:::-;20538:22;;:6;:22;:::i;:::-;:35;;20530:67;;;;-1:-1:-1;;;20530:67:0;;13627:2:1;20530:67:0;;;13609:21:1;13666:2;13646:18;;;13639:30;-1:-1:-1;;;13685:18:1;;;13678:49;13744:18;;20530:67:0;13425:343:1;20530:67:0;20636:28;20667:24;20685:4;20667:9;:24::i;:::-;20740:18;;20636:55;;-1:-1:-1;20717:41:0;;;20773:22;;;;-1:-1:-1;20784:11:0;;;;;;;20773:22;:35;;;;-1:-1:-1;20800:8:0;;;;20799:9;20773:35;:71;;;;-1:-1:-1;;;;;;20813:31:0;;;;;;:25;:31;;;;;;;;20812:32;20773:71;:101;;;;-1:-1:-1;;;;;;20849:25:0;;;;;;:19;:25;;;;;;;;20848:26;20773:101;:129;;;;-1:-1:-1;;;;;;20879:23:0;;;;;;:19;:23;;;;;;;;20878:24;20773:129;20769:233;;;20919:8;:15;;-1:-1:-1;;20919:15:0;20930:4;20919:15;;;20949:10;:8;:10::i;:::-;20974:8;:16;;-1:-1:-1;;20974:16:0;;;20769:233;21030:8;;21014:12;;21030:8;;21029:9;:39;;;;-1:-1:-1;;;;;;21043:25:0;;;;;;:19;:25;;;;;;;;21042:26;21029:39;:67;;;;-1:-1:-1;;;;;;21073:23:0;;;;;;:19;:23;;;;;;;;21072:24;21029:67;21014:82;;21109:12;21140:7;21136:402;;;-1:-1:-1;;;;;21168:29:0;;;;;;:25;:29;;;;;;;;21164:229;;;21225:28;21249:3;21225:19;21236:7;;21225:6;:10;;:19;;;;:::i;:::-;:23;;:28::i;:::-;21218:35;;21164:229;;;-1:-1:-1;;;;;21291:31:0;;;;;;:25;:31;;;;;;;;21288:105;;;21350:27;21373:3;21350:18;21361:6;;21350;:10;;:18;;;;:::i;:27::-;21343:34;;21288:105;21411:8;;21407:91;;21440:42;21456:4;21470;21477;21440:15;:42::i;:::-;21512:14;21522:4;21512:14;;:::i;:::-;;;21136:402;21548:33;21564:4;21570:2;21574:6;21548:15;:33::i;:::-;18807:2782;;;;18728:2861;;;:::o;763:132::-;741:6;;-1:-1:-1;;;;;741:6:0;221:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;14531:2:1;819:68:0;;;14513:21:1;;;14550:18;;;14543:30;14609:34;14589:18;;;14582:62;14661:18;;819:68:0;14329:356:1;12883:595:0;-1:-1:-1;;;;;12967:21:0;;12959:67;;;;-1:-1:-1;;;12959:67:0;;14892:2:1;12959: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;;12959:67:0;14690:397:1;12959:67:0;-1:-1:-1;;;;;13126:18:0;;13101:22;13126:18;;;;;;;;;;;13163:24;;;;13155:71;;;;-1:-1:-1;;;13155:71:0;;15294:2:1;13155: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;;13155:71:0;15092:398:1;13155:71:0;-1:-1:-1;;;;;13262:18:0;;:9;:18;;;;;;;;;;;13283:23;;;13262:44;;13321:12;:22;;;;;;;13372:37;1361:25:1;;;13262:9:0;;:18;13372:37;;1334:18:1;13372:37:0;;;;;;;22728:216;;22677:267;:::o;1223:191::-;1316:6;;;-1:-1:-1;;;;;1333:17:0;;;-1:-1:-1;;;;;;1333:17:0;;;;;;;1366:40;;1316:6;;;1333:17;1316:6;;1366:40;;1297:16;;1366:40;1286:128;1223:191;:::o;21597:476::-;21687:16;;;21701:1;21687:16;;;;;;;;21663:21;;21687:16;;;;;;;;;;-1:-1:-1;21687:16:0;21663:40;;21732:4;21714;21719:1;21714:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21714:23:0;;;-1:-1:-1;;;;;21714:23:0;;;;;21758:16;-1:-1:-1;;;;;21758:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21748:4;21753:1;21748:7;;;;;;;;:::i;:::-;;;;;;:33;-1:-1:-1;;;;;21748:33:0;;;-1:-1:-1;;;;;21748:33:0;;;;;21792:63;21809:4;21824:16;21843:11;21792:8;:63::i;:::-;22009:15;;21866:199;;-1:-1:-1;;;21866:199:0;;-1:-1:-1;;;;;21866:16:0;:67;;;;;:199;;21948:11;;21974:1;;21990:4;;22009:15;;;;;22039;;21866:199;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21652:421;21597:476;:::o;18400:186::-;-1:-1:-1;;;;;18483:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;18483:39:0;;;;;;;;;;18538:40;;18483:39;;:31;18538:40;;;18400:186;;:::o;11791:641::-;-1:-1:-1;;;;;11888:18:0;;11880:68;;;;-1:-1:-1;;;11880:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11967:16:0;;11959:64;;;;-1:-1:-1;;;11959:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12109:15:0;;12087:19;12109:15;;;;;;;;;;;12143:21;;;;12135:72;;;;-1:-1:-1;;;12135:72:0;;17202:2:1;12135: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;;12135:72:0;17000:402:1;12135:72:0;-1:-1:-1;;;;;12243:15:0;;;:9;:15;;;;;;;;;;;12261:20;;;12243:38;;12296:13;;;;;;;;;;:23;;;;;;12348:26;;1361:25:1;;;12296:13:0;;12348:26;;1334:18:1;12348:26:0;;;;;;;12387:37;22677:267;23389:369;23428:23;23454:24;23472:4;23454:9;:24::i;:::-;23428:50;;23493:15;23512:1;23493:20;23489:59;;23530:7;23389:369::o;23489:59::-;23628:18;;23581:15;;23613:33;;23609:99;;;-1:-1:-1;23678:18:0;;23609:99;23720:30;23737:12;23720:16;:30::i;8149:98::-;8207:7;8234:5;8238:1;8234;:5;:::i;:::-;8227:12;8149:98;-1:-1:-1;;;8149:98:0:o;8255:::-;8313:7;8340:5;8344:1;8340;: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:422::-;5164:1;5207:5;5164:1;5221:270;5242:7;5232:8;5229:21;5221:270;;;5301:4;5297:1;5293:6;5289:17;5283:4;5280:27;5277:53;;;5310:18;;:::i;:::-;5360:7;5350:8;5346:22;5343:55;;;5380:16;;;;5343:55;5459:22;;;;5419:15;;;;5221:270;;;5225:3;5075:422;;;;;:::o;5502:806::-;5551:5;5581:8;5571:80;;-1:-1:-1;5622:1:1;5636:5;;5571:80;5670:4;5660:76;;-1:-1:-1;5707:1:1;5721:5;;5660:76;5752:4;5770:1;5765:59;;;;5838:1;5833:130;;;;5745:218;;5765:59;5795:1;5786:10;;5809:5;;;5833:130;5870:3;5860:8;5857:17;5854:43;;;5877:18;;:::i;:::-;-1:-1:-1;;5933:1:1;5919:16;;5948:5;;5745:218;;6047:2;6037:8;6034:16;6028:3;6022:4;6019:13;6015:36;6009:2;5999:8;5996:16;5991:2;5985:4;5982:12;5978:35;5975:77;5972:159;;;-1:-1:-1;6084:19:1;;;6116:5;;5972:159;6163:34;6188:8;6182:4;6163:34;:::i;:::-;6233:6;6229:1;6225:6;6221:19;6212:7;6209:32;6206:58;;;6244:18;;:::i;:::-;6282:20;;5502:806;-1:-1:-1;;;5502:806:1:o;6313:140::-;6371:5;6400:47;6441:4;6431:8;6427:19;6421:4;6400:47;:::i;6458:168::-;6531:9;;;6562;;6579:15;;;6573:22;;6559:37;6549:71;;6600:18;;:::i;6631:217::-;6671:1;6697;6687:132;;6741:10;6736:3;6732:20;6729:1;6722:31;6776:4;6773:1;6766:15;6804:4;6801:1;6794:15;6687:132;-1:-1:-1;6833:9:1;;6631:217::o;8649:306::-;8737:6;8745;8753;8806:2;8794:9;8785:7;8781:23;8777:32;8774:52;;;8822:1;8819;8812:12;8774:52;8851:9;8845:16;8835:26;;8901:2;8890:9;8886:18;8880:25;8870:35;;8945:2;8934:9;8930:18;8924:25;8914:35;;8649:306;;;;;:::o;9239:245::-;9306:6;9359:2;9347:9;9338:7;9334:23;9330:32;9327:52;;;9375:1;9372;9365:12;9327:52;9407:9;9401:16;9426:28;9448:5;9426:28;:::i;11420:401::-;11622:2;11604:21;;;11661:2;11641:18;;;11634:30;11700:34;11695:2;11680:18;;11673:62;-1:-1:-1;;;11766:2:1;11751:18;;11744:35;11811:3;11796:19;;11420:401::o;11826:399::-;12028:2;12010:21;;;12067:2;12047:18;;;12040:30;12106:34;12101:2;12086:18;;12079:62;-1:-1:-1;;;12172:2:1;12157:18;;12150:33;12215:3;12200:19;;11826:399::o;14196:128::-;14263:9;;;14284:11;;;14281:37;;;14298: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://12dd0934933bb1c8e53008f71ff635c7e73f1d0037b90dfafe16e11334608356
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.