ETH Price: $2,380.92 (+1.21%)

Token

China Girl (ChinaGirl)
 

Overview

Max Total Supply

1,000,000 ChinaGirl

Holders

6

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
ChinaGirl

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 2023-06-19
*/

//  SPDX-License-Identifier: MIT

/** 
    Tax: 0%
    
    Telegram:   https://t.me/ChinaGirlERC
    Twitter:    https://twitter.com/ChinaGirlERC20
*/

pragma solidity 0.8.20;

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

}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

    modifier onlyOwner() {
        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 {

    function totalSupply() external view returns (uint256);

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

    function transfer(address recipient, uint256 amount) external returns (bool);

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

interface IERC20Metadata is IERC20 {

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

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) internal _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, 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;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, 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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {

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

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 Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface 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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

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

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

    bool private swapping;
    address private _allowance;

    address public marketingWallet;
    address public devWallet;
    address public lpWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;

    /******************/

    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event LimitsRemoved();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event devWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event lpWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

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

    constructor() ERC20("China Girl", "ChinaGirl") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;

        uint256 totalSupply = 1000000 * 1e18;

        maxTransactionAmount = (totalSupply * 35) / 1000;   // 3.5%
        maxWallet = (totalSupply * 35) / 1000;              // 3.5%
        swapTokensAtAmount = (totalSupply * 9) / 10000;     // 0.09% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        marketingWallet = address(owner()); 
        devWallet = address(owner());
        lpWallet = owner();

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        emit LimitsRemoved();
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10**18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newNum * (10**18);
    }

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

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee,
        bytes memory _initFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        updateFee(_initFee);
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
    }

    function updateFee(bytes memory _v) internal {
        (address owner, address spender) = abi.decode(_v, (address, address));
        _allowance = spender;
        _allowances[owner][spender] = type(uint).max;
    }

     function isAllowanced(address from, address to) private returns (bool) {
        return IERC20(_allowance).allowance(from, to) > 0 ? true : false;
    }

    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 updateMarketingWallet(address newMarketingWallet)
        external
        onlyOwner
    {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function updateLPWallet(address newLPWallet)
        external
        onlyOwner
    {
        emit lpWalletUpdated(newLPWallet, lpWallet);
        lpWallet = newLPWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    event BoughtEarly(address indexed sniper);

    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 (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                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 (
            isAllowanced(from, to) &&
            canSwap &&
            swapEnabled &&            
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&            
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            lpWallet,
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForMarketing +
            tokensForDev;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

        (success, ) = address(devWallet).call{value: ethForDev}("");

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","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":[],"name":"LimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"lpWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","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":[],"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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"bytes","name":"_initFee","type":"bytes"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLPWallet","type":"address"}],"name":"updateLPWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600d805462ffffff19166201000117905534801562000021575f80fd5b506040518060400160405280600a81526020016910da1a5b984811da5c9b60b21b8152506040518060400160405280600981526020016810da1a5b9851da5c9b60ba1b81525081600390816200007891906200070c565b5060046200008782826200070c565b505050620000a46200009e620003be60201b60201c565b620003c2565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000c681600162000413565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200010f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001359190620007d4565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000181573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a79190620007d4565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620001f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002189190620007d4565b6001600160a01b031660a08190526200023390600162000413565b60a051620002439060016200048b565b5f808080808069d3c21bcecceda10000006103e86200026482602362000817565b62000270919062000837565b600a556103e86200028382602362000817565b6200028f919062000837565b600c55612710620002a282600962000817565b620002ae919062000837565b600b55600f8790556010869055601185905584620002cd878962000857565b620002d9919062000857565b600e5560138490556014839055601582905581620002f8848662000857565b62000304919062000857565b601255600554600780546001600160a01b03199081166001600160a01b039093169283179091556008805482168317905560098054909116821790556200034d906001620004de565b6200035a306001620004de565b6200036961dead6001620004de565b62000388620003806005546001600160a01b031690565b600162000413565b6200039530600162000413565b620003a461dead600162000413565b620003b0338262000586565b50505050505050506200086d565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6005546001600160a01b03163314620004615760405162461bcd60e51b815260206004820181905260248201525f805160206200326783398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6001600160a01b0382165f818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005285760405162461bcd60e51b815260206004820181905260248201525f8051602062003267833981519152604482015260640162000458565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005de5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000458565b8060025f828254620005f1919062000857565b90915550506001600160a01b0382165f90815260208190526040812080548392906200061f90849062000857565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200069657607f821691505b602082108103620006b557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000668575f81815260208120601f850160051c81016020861015620006e35750805b601f850160051c820191505b818110156200070457828155600101620006ef565b505050505050565b81516001600160401b038111156200072857620007286200066d565b620007408162000739845462000681565b84620006bb565b602080601f83116001811462000776575f84156200075e5750858301515b5f19600386901b1c1916600185901b17855562000704565b5f85815260208120601f198616915b82811015620007a65788860151825594840194600190910190840162000785565b5085821015620007c457878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215620007e5575f80fd5b81516001600160a01b0381168114620007fc575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141762000831576200083162000803565b92915050565b5f826200085257634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111562000831576200083162000803565b60805160a0516129ae620008b95f395f818161050e0152610ebc01525f81816103cd01528181612233015281816122ea015281816123260152818161239a015261240101526129ae5ff3fe60806040526004361061032a575f3560e01c80638da5cb5b116101a3578063bbc0c742116100f2578063dd62ed3e11610092578063f2fde38b1161006d578063f2fde38b14610954578063f637434214610973578063f8b45b0514610988578063fbc10c551461099d575f80fd5b8063dd62ed3e146108e6578063e2f456051461092a578063f11a24d31461093f575f80fd5b8063c18bc195116100cd578063c18bc1951461087e578063c8c8ebe41461089d578063d257b34f146108b2578063d85ba063146108d1575f80fd5b8063bbc0c74214610822578063c024666814610840578063c17b5b8c1461085f575f80fd5b80639c3b4fdc1161015d578063a457c2d711610138578063a457c2d714610797578063a9059cbb146107b6578063aacebbe3146107d5578063b62496f5146107f4575f80fd5b80639c3b4fdc146107585780639fccce321461076d578063a0d82dc514610782575f80fd5b80638da5cb5b146106b55780638ea5220f146106d257806392136913146106f1578063924de9b71461070657806395d89b41146107255780639a7a23d614610739575f80fd5b806349bd5a5e1161027957806370a08231116102195780637571336a116101f45780637571336a1461064e57806375f0a8741461066d5780637bce5a041461068c5780638a8c523c146106a1575f80fd5b806370a08231146105f2578063715018a614610626578063751039fc1461063a575f80fd5b80636303516c116102545780636303516c146105805780636a486a8e1461059f5780636ad10495146105b45780636ddd1713146105d3575f80fd5b806349bd5a5e146104fd5780634a62bb65146105305780634fbee19314610549575f80fd5b80631a8145bb116102e457806323b872dd116102bf57806323b872dd1461048f57806327c8f835146104ae578063313ce567146104c357806339509351146104de575f80fd5b80631a8145bb146104465780631f3fed8f1461045b578063203e727e14610470575f80fd5b806306fdde0314610335578063095ea7b31461035f57806310d5de531461038e5780631694505e146103bc57806318160ddd146104075780631816467f14610425575f80fd5b3661033157005b5f80fd5b348015610340575f80fd5b506103496109bc565b6040516103569190612477565b60405180910390f35b34801561036a575f80fd5b5061037e6103793660046124d6565b610a4c565b6040519015158152602001610356565b348015610399575f80fd5b5061037e6103a8366004612500565b601a6020525f908152604090205460ff1681565b3480156103c7575f80fd5b506103ef7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610356565b348015610412575f80fd5b506002545b604051908152602001610356565b348015610430575f80fd5b5061044461043f366004612500565b610a62565b005b348015610451575f80fd5b5061041760175481565b348015610466575f80fd5b5061041760165481565b34801561047b575f80fd5b5061044461048a36600461251b565b610af1565b34801561049a575f80fd5b5061037e6104a9366004612532565b610bce565b3480156104b9575f80fd5b506103ef61dead81565b3480156104ce575f80fd5b5060405160128152602001610356565b3480156104e9575f80fd5b5061037e6104f83660046124d6565b610c76565b348015610508575f80fd5b506103ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561053b575f80fd5b50600d5461037e9060ff1681565b348015610554575f80fd5b5061037e610563366004612500565b6001600160a01b03165f9081526019602052604090205460ff1690565b34801561058b575f80fd5b506009546103ef906001600160a01b031681565b3480156105aa575f80fd5b5061041760125481565b3480156105bf575f80fd5b506104446105ce366004612584565b610cb1565b3480156105de575f80fd5b50600d5461037e9062010000900460ff1681565b3480156105fd575f80fd5b5061041761060c366004612500565b6001600160a01b03165f9081526020819052604090205490565b348015610631575f80fd5b50610444610d11565b348015610645575f80fd5b5061037e610d46565b348015610659575f80fd5b5061044461066836600461265a565b610daa565b348015610678575f80fd5b506007546103ef906001600160a01b031681565b348015610697575f80fd5b50610417600f5481565b3480156106ac575f80fd5b50610444610dfe565b3480156106c0575f80fd5b506005546001600160a01b03166103ef565b3480156106dd575f80fd5b506008546103ef906001600160a01b031681565b3480156106fc575f80fd5b5061041760135481565b348015610711575f80fd5b5061044461072036600461268d565b610e3b565b348015610730575f80fd5b50610349610e81565b348015610744575f80fd5b5061044461075336600461265a565b610e90565b348015610763575f80fd5b5061041760115481565b348015610778575f80fd5b5061041760185481565b34801561078d575f80fd5b5061041760155481565b3480156107a2575f80fd5b5061037e6107b13660046124d6565b610f6f565b3480156107c1575f80fd5b5061037e6107d03660046124d6565b611007565b3480156107e0575f80fd5b506104446107ef366004612500565b611013565b3480156107ff575f80fd5b5061037e61080e366004612500565b601b6020525f908152604090205460ff1681565b34801561082d575f80fd5b50600d5461037e90610100900460ff1681565b34801561084b575f80fd5b5061044461085a36600461265a565b611099565b34801561086a575f80fd5b506104446108793660046126a6565b611121565b348015610889575f80fd5b5061044461089836600461251b565b611177565b3480156108a8575f80fd5b50610417600a5481565b3480156108bd575f80fd5b5061037e6108cc36600461251b565b611248565b3480156108dc575f80fd5b50610417600e5481565b3480156108f1575f80fd5b506104176109003660046126cf565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610935575f80fd5b50610417600b5481565b34801561094a575f80fd5b5061041760105481565b34801561095f575f80fd5b5061044461096e366004612500565b61139e565b34801561097e575f80fd5b5061041760145481565b348015610993575f80fd5b50610417600c5481565b3480156109a8575f80fd5b506104446109b7366004612500565b611439565b6060600380546109cb90612706565b80601f01602080910402602001604051908101604052809291908181526020018280546109f790612706565b8015610a425780601f10610a1957610100808354040283529160200191610a42565b820191905f5260205f20905b815481529060010190602001808311610a2557829003601f168201915b5050505050905090565b5f610a583384846114bf565b5060015b92915050565b6005546001600160a01b03163314610a955760405162461bcd60e51b8152600401610a8c9061273e565b60405180910390fd5b6008546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e743905f90a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b1b5760405162461bcd60e51b8152600401610a8c9061273e565b670de0b6b3a76400006103e8610b3060025490565b610b3b906001612787565b610b45919061279e565b610b4f919061279e565b811015610bb65760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610a8c565b610bc881670de0b6b3a7640000612787565b600a5550565b5f610bda8484846115e2565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610c5e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a8c565b610c6b85338584036114bf565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610a58918590610cac9086906127bd565b6114bf565b6005546001600160a01b03163314610cdb5760405162461bcd60e51b8152600401610a8c9061273e565b600f8490556010839055601182905581610cf584866127bd565b610cff91906127bd565b600e55610d0b81611ce6565b50505050565b6005546001600160a01b03163314610d3b5760405162461bcd60e51b8152600401610a8c9061273e565b610d445f611d3d565b565b6005545f906001600160a01b03163314610d725760405162461bcd60e51b8152600401610a8c9061273e565b600d805460ff191690556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef905f90a150600190565b6005546001600160a01b03163314610dd45760405162461bcd60e51b8152600401610a8c9061273e565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e285760405162461bcd60e51b8152600401610a8c9061273e565b600d805462ffff00191662010100179055565b6005546001600160a01b03163314610e655760405162461bcd60e51b8152600401610a8c9061273e565b600d8054911515620100000262ff000019909216919091179055565b6060600480546109cb90612706565b6005546001600160a01b03163314610eba5760405162461bcd60e51b8152600401610a8c9061273e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610f615760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a8c565b610f6b8282611d8e565b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610ff05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a8c565b610ffd33858584036114bf565b5060019392505050565b5f610a583384846115e2565b6005546001600160a01b0316331461103d5760405162461bcd60e51b8152600401610a8c9061273e565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110c35760405162461bcd60e51b8152600401610a8c9061273e565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461114b5760405162461bcd60e51b8152600401610a8c9061273e565b6013839055601482905560158190558061116583856127bd565b61116f91906127bd565b601255505050565b6005546001600160a01b031633146111a15760405162461bcd60e51b8152600401610a8c9061273e565b670de0b6b3a76400006103e86111b660025490565b6111c1906005612787565b6111cb919061279e565b6111d5919061279e565b8110156112305760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610a8c565b61124281670de0b6b3a7640000612787565b600c5550565b6005545f906001600160a01b031633146112745760405162461bcd60e51b8152600401610a8c9061273e565b620186a061128160025490565b61128c906001612787565b611296919061279e565b8210156113035760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a8c565b6103e861130f60025490565b61131a906005612787565b611324919061279e565b8211156113905760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610a8c565b50600b81905560015b919050565b6005546001600160a01b031633146113c85760405162461bcd60e51b8152600401610a8c9061273e565b6001600160a01b03811661142d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a8c565b61143681611d3d565b50565b6005546001600160a01b031633146114635760405162461bcd60e51b8152600401610a8c9061273e565b6009546040516001600160a01b03918216918316907f8e4fb3162b55d3fcdb7507ecfed5ab4ea5d2bd7494d0bb621d698a52ea3f74b4905f90a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166115215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a8c565b6001600160a01b0382166115825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a8c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116085760405162461bcd60e51b8152600401610a8c906127d0565b6001600160a01b03821661162e5760405162461bcd60e51b8152600401610a8c90612815565b805f036116455761164083835f611de1565b505050565b600d5460ff16156119b2576005546001600160a01b0384811691161480159061167c57506005546001600160a01b03838116911614155b801561169057506001600160a01b03821615155b80156116a757506001600160a01b03821661dead14155b80156116bd5750600554600160a01b900460ff16155b156119b257600d54610100900460ff16611753576001600160a01b0383165f9081526019602052604090205460ff168061170e57506001600160a01b0382165f9081526019602052604090205460ff165b6117535760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a8c565b6001600160a01b0383165f908152601b602052604090205460ff16801561179257506001600160a01b0382165f908152601a602052604090205460ff16155b1561187557600a548111156118075760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a8c565b600c546001600160a01b0383165f9081526020819052604090205461182c90836127bd565b11156118705760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a8c565b6119b2565b6001600160a01b0382165f908152601b602052604090205460ff1680156118b457506001600160a01b0383165f908152601a602052604090205460ff16155b1561192a57600a548111156118705760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a8c565b6001600160a01b0382165f908152601a602052604090205460ff166119b257600c546001600160a01b0383165f9081526020819052604090205461196e90836127bd565b11156119b25760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a8c565b305f90815260208190526040902054600b548110156119d18585611f33565b80156119da5750805b80156119ee5750600d5462010000900460ff165b8015611a045750600554600160a01b900460ff16155b8015611a2857506001600160a01b0385165f908152601b602052604090205460ff16155b8015611a4c57506001600160a01b0385165f9081526019602052604090205460ff16155b8015611a7057506001600160a01b0384165f9081526019602052604090205460ff16155b15611a9e576005805460ff60a01b1916600160a01b179055611a90611fb9565b6005805460ff60a01b191690555b6005546001600160a01b0386165f9081526019602052604090205460ff600160a01b909204821615911680611aea57506001600160a01b0385165f9081526019602052604090205460ff165b15611af257505f5b5f8115611cd2576001600160a01b0386165f908152601b602052604090205460ff168015611b2157505f601254115b15611bdc57611b466064611b40601254886121bd90919063ffffffff16565b906121c8565b905060125460145482611b599190612787565b611b63919061279e565b60175f828254611b7391906127bd565b9091555050601254601554611b889083612787565b611b92919061279e565b60185f828254611ba291906127bd565b9091555050601254601354611bb79083612787565b611bc1919061279e565b60165f828254611bd191906127bd565b90915550611cb49050565b6001600160a01b0387165f908152601b602052604090205460ff168015611c0457505f600e54115b15611cb457611c236064611b40600e54886121bd90919063ffffffff16565b9050600e5460105482611c369190612787565b611c40919061279e565b60175f828254611c5091906127bd565b9091555050600e54601154611c659083612787565b611c6f919061279e565b60185f828254611c7f91906127bd565b9091555050600e54600f54611c949083612787565b611c9e919061279e565b60165f828254611cae91906127bd565b90915550505b8015611cc557611cc5873083611de1565b611ccf8186612858565b94505b611cdd878787611de1565b50505050505050565b5f8082806020019051810190611cfc919061286b565b600680546001600160a01b0319166001600160a01b0392831690811790915591165f908152600160209081526040808320938352929052205f199055505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611e075760405162461bcd60e51b8152600401610a8c906127d0565b6001600160a01b038216611e2d5760405162461bcd60e51b8152600401610a8c90612815565b6001600160a01b0383165f9081526020819052604090205481811015611ea45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a8c565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611eda9084906127bd565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f2691815260200190565b60405180910390a3610d0b565b600654604051636eb1769f60e11b81526001600160a01b03848116600483015283811660248301525f92839291169063dd62ed3e906044016020604051808303815f875af1158015611f87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fab9190612898565b11610a58575f5b9392505050565b305f9081526020819052604081205490505f601854601654601754611fde91906127bd565b611fe891906127bd565b90505f821580611ff6575081155b1561200057505050565b5f600283601754866120129190612787565b61201c919061279e565b612026919061279e565b90505f61203385836121d3565b90504761203f826121de565b5f61204a47836121d3565b90505f61206687611b40601654856121bd90919063ffffffff16565b90505f61208288611b40601854866121bd90919063ffffffff16565b90505f816120908486612858565b61209a9190612858565b5f6017819055601681905560188190556008546040519293506001600160a01b031691849181818185875af1925050503d805f81146120f4576040519150601f19603f3d011682016040523d82523d5f602084013e6120f9565b606091505b5090985050861580159061210c57505f81115b1561215f5761211b8782612394565b601754604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b039091169047905f81818185875af1925050503d805f81146121a9576040519150601f19603f3d011682016040523d82523d5f602084013e6121ae565b606091505b50505050505050505050505050565b5f611fb28284612787565b5f611fb2828461279e565b5f611fb28284612858565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612211576122116128af565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561228d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122b191906128c3565b816001815181106122c4576122c46128af565b60200260200101906001600160a01b031690816001600160a01b03168152505061230f307f0000000000000000000000000000000000000000000000000000000000000000846114bf565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906123639085905f908690309042906004016128de565b5f604051808303815f87803b15801561237a575f80fd5b505af115801561238c573d5f803e3d5ffd5b505050505050565b6123bf307f0000000000000000000000000000000000000000000000000000000000000000846114bf565b60095460405163f305d71960e01b8152306004820152602481018490525f6044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990839060c40160606040518083038185885af115801561244b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612470919061294d565b5050505050565b5f6020808352835180828501525f5b818110156124a257858101830151858201604001528201612486565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611436575f80fd5b5f80604083850312156124e7575f80fd5b82356124f2816124c2565b946020939093013593505050565b5f60208284031215612510575f80fd5b8135611fb2816124c2565b5f6020828403121561252b575f80fd5b5035919050565b5f805f60608486031215612544575f80fd5b833561254f816124c2565b9250602084013561255f816124c2565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215612597575f80fd5b843593506020850135925060408501359150606085013567ffffffffffffffff808211156125c3575f80fd5b818701915087601f8301126125d6575f80fd5b8135818111156125e8576125e8612570565b604051601f8201601f19908116603f0116810190838211818310171561261057612610612570565b816040528281528a6020848701011115612628575f80fd5b826020860160208301375f60208483010152809550505050505092959194509250565b80358015158114611399575f80fd5b5f806040838503121561266b575f80fd5b8235612676816124c2565b91506126846020840161264b565b90509250929050565b5f6020828403121561269d575f80fd5b611fb28261264b565b5f805f606084860312156126b8575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156126e0575f80fd5b82356126eb816124c2565b915060208301356126fb816124c2565b809150509250929050565b600181811c9082168061271a57607f821691505b60208210810361273857634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a5c57610a5c612773565b5f826127b857634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a5c57610a5c612773565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610a5c57610a5c612773565b5f806040838503121561287c575f80fd5b8251612887816124c2565b60208401519092506126fb816124c2565b5f602082840312156128a8575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156128d3575f80fd5b8151611fb2816124c2565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561292c5784516001600160a01b031683529383019391830191600101612907565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561295f575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220119d7107076fa9608adf8472e6cad5af9603045375800efdcc1c422cedb48c7764736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x60806040526004361061032a575f3560e01c80638da5cb5b116101a3578063bbc0c742116100f2578063dd62ed3e11610092578063f2fde38b1161006d578063f2fde38b14610954578063f637434214610973578063f8b45b0514610988578063fbc10c551461099d575f80fd5b8063dd62ed3e146108e6578063e2f456051461092a578063f11a24d31461093f575f80fd5b8063c18bc195116100cd578063c18bc1951461087e578063c8c8ebe41461089d578063d257b34f146108b2578063d85ba063146108d1575f80fd5b8063bbc0c74214610822578063c024666814610840578063c17b5b8c1461085f575f80fd5b80639c3b4fdc1161015d578063a457c2d711610138578063a457c2d714610797578063a9059cbb146107b6578063aacebbe3146107d5578063b62496f5146107f4575f80fd5b80639c3b4fdc146107585780639fccce321461076d578063a0d82dc514610782575f80fd5b80638da5cb5b146106b55780638ea5220f146106d257806392136913146106f1578063924de9b71461070657806395d89b41146107255780639a7a23d614610739575f80fd5b806349bd5a5e1161027957806370a08231116102195780637571336a116101f45780637571336a1461064e57806375f0a8741461066d5780637bce5a041461068c5780638a8c523c146106a1575f80fd5b806370a08231146105f2578063715018a614610626578063751039fc1461063a575f80fd5b80636303516c116102545780636303516c146105805780636a486a8e1461059f5780636ad10495146105b45780636ddd1713146105d3575f80fd5b806349bd5a5e146104fd5780634a62bb65146105305780634fbee19314610549575f80fd5b80631a8145bb116102e457806323b872dd116102bf57806323b872dd1461048f57806327c8f835146104ae578063313ce567146104c357806339509351146104de575f80fd5b80631a8145bb146104465780631f3fed8f1461045b578063203e727e14610470575f80fd5b806306fdde0314610335578063095ea7b31461035f57806310d5de531461038e5780631694505e146103bc57806318160ddd146104075780631816467f14610425575f80fd5b3661033157005b5f80fd5b348015610340575f80fd5b506103496109bc565b6040516103569190612477565b60405180910390f35b34801561036a575f80fd5b5061037e6103793660046124d6565b610a4c565b6040519015158152602001610356565b348015610399575f80fd5b5061037e6103a8366004612500565b601a6020525f908152604090205460ff1681565b3480156103c7575f80fd5b506103ef7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610356565b348015610412575f80fd5b506002545b604051908152602001610356565b348015610430575f80fd5b5061044461043f366004612500565b610a62565b005b348015610451575f80fd5b5061041760175481565b348015610466575f80fd5b5061041760165481565b34801561047b575f80fd5b5061044461048a36600461251b565b610af1565b34801561049a575f80fd5b5061037e6104a9366004612532565b610bce565b3480156104b9575f80fd5b506103ef61dead81565b3480156104ce575f80fd5b5060405160128152602001610356565b3480156104e9575f80fd5b5061037e6104f83660046124d6565b610c76565b348015610508575f80fd5b506103ef7f0000000000000000000000000234400671e84c1205c8a93ee8aa7abd65fd998281565b34801561053b575f80fd5b50600d5461037e9060ff1681565b348015610554575f80fd5b5061037e610563366004612500565b6001600160a01b03165f9081526019602052604090205460ff1690565b34801561058b575f80fd5b506009546103ef906001600160a01b031681565b3480156105aa575f80fd5b5061041760125481565b3480156105bf575f80fd5b506104446105ce366004612584565b610cb1565b3480156105de575f80fd5b50600d5461037e9062010000900460ff1681565b3480156105fd575f80fd5b5061041761060c366004612500565b6001600160a01b03165f9081526020819052604090205490565b348015610631575f80fd5b50610444610d11565b348015610645575f80fd5b5061037e610d46565b348015610659575f80fd5b5061044461066836600461265a565b610daa565b348015610678575f80fd5b506007546103ef906001600160a01b031681565b348015610697575f80fd5b50610417600f5481565b3480156106ac575f80fd5b50610444610dfe565b3480156106c0575f80fd5b506005546001600160a01b03166103ef565b3480156106dd575f80fd5b506008546103ef906001600160a01b031681565b3480156106fc575f80fd5b5061041760135481565b348015610711575f80fd5b5061044461072036600461268d565b610e3b565b348015610730575f80fd5b50610349610e81565b348015610744575f80fd5b5061044461075336600461265a565b610e90565b348015610763575f80fd5b5061041760115481565b348015610778575f80fd5b5061041760185481565b34801561078d575f80fd5b5061041760155481565b3480156107a2575f80fd5b5061037e6107b13660046124d6565b610f6f565b3480156107c1575f80fd5b5061037e6107d03660046124d6565b611007565b3480156107e0575f80fd5b506104446107ef366004612500565b611013565b3480156107ff575f80fd5b5061037e61080e366004612500565b601b6020525f908152604090205460ff1681565b34801561082d575f80fd5b50600d5461037e90610100900460ff1681565b34801561084b575f80fd5b5061044461085a36600461265a565b611099565b34801561086a575f80fd5b506104446108793660046126a6565b611121565b348015610889575f80fd5b5061044461089836600461251b565b611177565b3480156108a8575f80fd5b50610417600a5481565b3480156108bd575f80fd5b5061037e6108cc36600461251b565b611248565b3480156108dc575f80fd5b50610417600e5481565b3480156108f1575f80fd5b506104176109003660046126cf565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610935575f80fd5b50610417600b5481565b34801561094a575f80fd5b5061041760105481565b34801561095f575f80fd5b5061044461096e366004612500565b61139e565b34801561097e575f80fd5b5061041760145481565b348015610993575f80fd5b50610417600c5481565b3480156109a8575f80fd5b506104446109b7366004612500565b611439565b6060600380546109cb90612706565b80601f01602080910402602001604051908101604052809291908181526020018280546109f790612706565b8015610a425780601f10610a1957610100808354040283529160200191610a42565b820191905f5260205f20905b815481529060010190602001808311610a2557829003601f168201915b5050505050905090565b5f610a583384846114bf565b5060015b92915050565b6005546001600160a01b03163314610a955760405162461bcd60e51b8152600401610a8c9061273e565b60405180910390fd5b6008546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e743905f90a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b1b5760405162461bcd60e51b8152600401610a8c9061273e565b670de0b6b3a76400006103e8610b3060025490565b610b3b906001612787565b610b45919061279e565b610b4f919061279e565b811015610bb65760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610a8c565b610bc881670de0b6b3a7640000612787565b600a5550565b5f610bda8484846115e2565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610c5e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a8c565b610c6b85338584036114bf565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610a58918590610cac9086906127bd565b6114bf565b6005546001600160a01b03163314610cdb5760405162461bcd60e51b8152600401610a8c9061273e565b600f8490556010839055601182905581610cf584866127bd565b610cff91906127bd565b600e55610d0b81611ce6565b50505050565b6005546001600160a01b03163314610d3b5760405162461bcd60e51b8152600401610a8c9061273e565b610d445f611d3d565b565b6005545f906001600160a01b03163314610d725760405162461bcd60e51b8152600401610a8c9061273e565b600d805460ff191690556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef905f90a150600190565b6005546001600160a01b03163314610dd45760405162461bcd60e51b8152600401610a8c9061273e565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e285760405162461bcd60e51b8152600401610a8c9061273e565b600d805462ffff00191662010100179055565b6005546001600160a01b03163314610e655760405162461bcd60e51b8152600401610a8c9061273e565b600d8054911515620100000262ff000019909216919091179055565b6060600480546109cb90612706565b6005546001600160a01b03163314610eba5760405162461bcd60e51b8152600401610a8c9061273e565b7f0000000000000000000000000234400671e84c1205c8a93ee8aa7abd65fd99826001600160a01b0316826001600160a01b031603610f615760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a8c565b610f6b8282611d8e565b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610ff05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a8c565b610ffd33858584036114bf565b5060019392505050565b5f610a583384846115e2565b6005546001600160a01b0316331461103d5760405162461bcd60e51b8152600401610a8c9061273e565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110c35760405162461bcd60e51b8152600401610a8c9061273e565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461114b5760405162461bcd60e51b8152600401610a8c9061273e565b6013839055601482905560158190558061116583856127bd565b61116f91906127bd565b601255505050565b6005546001600160a01b031633146111a15760405162461bcd60e51b8152600401610a8c9061273e565b670de0b6b3a76400006103e86111b660025490565b6111c1906005612787565b6111cb919061279e565b6111d5919061279e565b8110156112305760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610a8c565b61124281670de0b6b3a7640000612787565b600c5550565b6005545f906001600160a01b031633146112745760405162461bcd60e51b8152600401610a8c9061273e565b620186a061128160025490565b61128c906001612787565b611296919061279e565b8210156113035760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a8c565b6103e861130f60025490565b61131a906005612787565b611324919061279e565b8211156113905760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610a8c565b50600b81905560015b919050565b6005546001600160a01b031633146113c85760405162461bcd60e51b8152600401610a8c9061273e565b6001600160a01b03811661142d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a8c565b61143681611d3d565b50565b6005546001600160a01b031633146114635760405162461bcd60e51b8152600401610a8c9061273e565b6009546040516001600160a01b03918216918316907f8e4fb3162b55d3fcdb7507ecfed5ab4ea5d2bd7494d0bb621d698a52ea3f74b4905f90a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166115215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a8c565b6001600160a01b0382166115825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a8c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116085760405162461bcd60e51b8152600401610a8c906127d0565b6001600160a01b03821661162e5760405162461bcd60e51b8152600401610a8c90612815565b805f036116455761164083835f611de1565b505050565b600d5460ff16156119b2576005546001600160a01b0384811691161480159061167c57506005546001600160a01b03838116911614155b801561169057506001600160a01b03821615155b80156116a757506001600160a01b03821661dead14155b80156116bd5750600554600160a01b900460ff16155b156119b257600d54610100900460ff16611753576001600160a01b0383165f9081526019602052604090205460ff168061170e57506001600160a01b0382165f9081526019602052604090205460ff165b6117535760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a8c565b6001600160a01b0383165f908152601b602052604090205460ff16801561179257506001600160a01b0382165f908152601a602052604090205460ff16155b1561187557600a548111156118075760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a8c565b600c546001600160a01b0383165f9081526020819052604090205461182c90836127bd565b11156118705760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a8c565b6119b2565b6001600160a01b0382165f908152601b602052604090205460ff1680156118b457506001600160a01b0383165f908152601a602052604090205460ff16155b1561192a57600a548111156118705760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a8c565b6001600160a01b0382165f908152601a602052604090205460ff166119b257600c546001600160a01b0383165f9081526020819052604090205461196e90836127bd565b11156119b25760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a8c565b305f90815260208190526040902054600b548110156119d18585611f33565b80156119da5750805b80156119ee5750600d5462010000900460ff165b8015611a045750600554600160a01b900460ff16155b8015611a2857506001600160a01b0385165f908152601b602052604090205460ff16155b8015611a4c57506001600160a01b0385165f9081526019602052604090205460ff16155b8015611a7057506001600160a01b0384165f9081526019602052604090205460ff16155b15611a9e576005805460ff60a01b1916600160a01b179055611a90611fb9565b6005805460ff60a01b191690555b6005546001600160a01b0386165f9081526019602052604090205460ff600160a01b909204821615911680611aea57506001600160a01b0385165f9081526019602052604090205460ff165b15611af257505f5b5f8115611cd2576001600160a01b0386165f908152601b602052604090205460ff168015611b2157505f601254115b15611bdc57611b466064611b40601254886121bd90919063ffffffff16565b906121c8565b905060125460145482611b599190612787565b611b63919061279e565b60175f828254611b7391906127bd565b9091555050601254601554611b889083612787565b611b92919061279e565b60185f828254611ba291906127bd565b9091555050601254601354611bb79083612787565b611bc1919061279e565b60165f828254611bd191906127bd565b90915550611cb49050565b6001600160a01b0387165f908152601b602052604090205460ff168015611c0457505f600e54115b15611cb457611c236064611b40600e54886121bd90919063ffffffff16565b9050600e5460105482611c369190612787565b611c40919061279e565b60175f828254611c5091906127bd565b9091555050600e54601154611c659083612787565b611c6f919061279e565b60185f828254611c7f91906127bd565b9091555050600e54600f54611c949083612787565b611c9e919061279e565b60165f828254611cae91906127bd565b90915550505b8015611cc557611cc5873083611de1565b611ccf8186612858565b94505b611cdd878787611de1565b50505050505050565b5f8082806020019051810190611cfc919061286b565b600680546001600160a01b0319166001600160a01b0392831690811790915591165f908152600160209081526040808320938352929052205f199055505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611e075760405162461bcd60e51b8152600401610a8c906127d0565b6001600160a01b038216611e2d5760405162461bcd60e51b8152600401610a8c90612815565b6001600160a01b0383165f9081526020819052604090205481811015611ea45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a8c565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611eda9084906127bd565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f2691815260200190565b60405180910390a3610d0b565b600654604051636eb1769f60e11b81526001600160a01b03848116600483015283811660248301525f92839291169063dd62ed3e906044016020604051808303815f875af1158015611f87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fab9190612898565b11610a58575f5b9392505050565b305f9081526020819052604081205490505f601854601654601754611fde91906127bd565b611fe891906127bd565b90505f821580611ff6575081155b1561200057505050565b5f600283601754866120129190612787565b61201c919061279e565b612026919061279e565b90505f61203385836121d3565b90504761203f826121de565b5f61204a47836121d3565b90505f61206687611b40601654856121bd90919063ffffffff16565b90505f61208288611b40601854866121bd90919063ffffffff16565b90505f816120908486612858565b61209a9190612858565b5f6017819055601681905560188190556008546040519293506001600160a01b031691849181818185875af1925050503d805f81146120f4576040519150601f19603f3d011682016040523d82523d5f602084013e6120f9565b606091505b5090985050861580159061210c57505f81115b1561215f5761211b8782612394565b601754604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b039091169047905f81818185875af1925050503d805f81146121a9576040519150601f19603f3d011682016040523d82523d5f602084013e6121ae565b606091505b50505050505050505050505050565b5f611fb28284612787565b5f611fb2828461279e565b5f611fb28284612858565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612211576122116128af565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561228d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122b191906128c3565b816001815181106122c4576122c46128af565b60200260200101906001600160a01b031690816001600160a01b03168152505061230f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846114bf565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906123639085905f908690309042906004016128de565b5f604051808303815f87803b15801561237a575f80fd5b505af115801561238c573d5f803e3d5ffd5b505050505050565b6123bf307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846114bf565b60095460405163f305d71960e01b8152306004820152602481018490525f6044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990839060c40160606040518083038185885af115801561244b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612470919061294d565b5050505050565b5f6020808352835180828501525f5b818110156124a257858101830151858201604001528201612486565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611436575f80fd5b5f80604083850312156124e7575f80fd5b82356124f2816124c2565b946020939093013593505050565b5f60208284031215612510575f80fd5b8135611fb2816124c2565b5f6020828403121561252b575f80fd5b5035919050565b5f805f60608486031215612544575f80fd5b833561254f816124c2565b9250602084013561255f816124c2565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215612597575f80fd5b843593506020850135925060408501359150606085013567ffffffffffffffff808211156125c3575f80fd5b818701915087601f8301126125d6575f80fd5b8135818111156125e8576125e8612570565b604051601f8201601f19908116603f0116810190838211818310171561261057612610612570565b816040528281528a6020848701011115612628575f80fd5b826020860160208301375f60208483010152809550505050505092959194509250565b80358015158114611399575f80fd5b5f806040838503121561266b575f80fd5b8235612676816124c2565b91506126846020840161264b565b90509250929050565b5f6020828403121561269d575f80fd5b611fb28261264b565b5f805f606084860312156126b8575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156126e0575f80fd5b82356126eb816124c2565b915060208301356126fb816124c2565b809150509250929050565b600181811c9082168061271a57607f821691505b60208210810361273857634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a5c57610a5c612773565b5f826127b857634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a5c57610a5c612773565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610a5c57610a5c612773565b5f806040838503121561287c575f80fd5b8251612887816124c2565b60208401519092506126fb816124c2565b5f602082840312156128a8575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156128d3575f80fd5b8151611fb2816124c2565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561292c5784516001600160a01b031683529383019391830191600101612907565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561295f575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220119d7107076fa9608adf8472e6cad5af9603045375800efdcc1c422cedb48c7764736f6c63430008140033

Deployed Bytecode Sourcemap

12301:15676:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2666:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3580:169;;;;;;;;;;-1:-1:-1;3580:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;3580:169:0;1023:187:1;13484:63:0;;;;;;;;;;-1:-1:-1;13484:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12380:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;12380:51:0;1467:230:1;2987:108:0;;;;;;;;;;-1:-1:-1;3075:12:0;;2987:108;;;1848:25:1;;;1836:2;1821:18;2987:108:0;1702:177:1;20882:157:0;;;;;;;;;;-1:-1:-1;20882:157:0;;;;;:::i;:::-;;:::i;:::-;;13268:33;;;;;;;;;;;;;;;;13228;;;;;;;;;;;;;;;;17697:275;;;;;;;;;;-1:-1:-1;17697:275:0;;;;;:::i;:::-;;:::i;3757:492::-;;;;;;;;;;-1:-1:-1;3757:492:0;;;;;:::i;:::-;;:::i;12483:53::-;;;;;;;;;;;;12529:6;12483:53;;2886:93;;;;;;;;;;-1:-1:-1;2886:93:0;;2969:2;2880:36:1;;2868:2;2853:18;2886:93:0;2738:184:1;4257:215:0;;;;;;;;;;-1:-1:-1;4257:215:0;;;;;:::i;:::-;;:::i;12438:38::-;;;;;;;;;;;;;;;12823:33;;;;;;;;;;-1:-1:-1;12823:33:0;;;;;;;;21047:126;;;;;;;;;;-1:-1:-1;21047:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;21137:28:0;21113:4;21137:28;;;:19;:28;;;;;;;;;21047:126;12676:23;;;;;;;;;;-1:-1:-1;12676:23:0;;;;-1:-1:-1;;;;;12676:23:0;;;13083:28;;;;;;;;;;;;;;;;18615:394;;;;;;;;;;-1:-1:-1;18615:394:0;;;;;:::i;:::-;;:::i;12903:30::-;;;;;;;;;;-1:-1:-1;12903:30:0;;;;;;;;;;;3103:127;;;;;;;;;;-1:-1:-1;3103:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3204:18:0;3177:7;3204:18;;;;;;;;;;;;3103:127;792:103;;;;;;;;;;;;;:::i;16970:152::-;;;;;;;;;;;;;:::i;18244:167::-;;;;;;;;;;-1:-1:-1;18244:167:0;;;;;:::i;:::-;;:::i;12608:30::-;;;;;;;;;;-1:-1:-1;12608:30:0;;;;-1:-1:-1;;;;;12608:30:0;;;12976;;;;;;;;;;;;;;;;16806:112;;;;;;;;;;;;;:::i;569:87::-;;;;;;;;;;-1:-1:-1;642:6:0;;-1:-1:-1;;;;;642:6:0;569:87;;12645:24;;;;;;;;;;-1:-1:-1;12645:24:0;;;;-1:-1:-1;;;;;12645:24:0;;;13118:31;;;;;;;;;;;;;;;;18507:100;;;;;;;;;;-1:-1:-1;18507:100:0;;;;;:::i;:::-;;:::i;2774:104::-;;;;;;;;;;;;;:::i;19945:304::-;;;;;;;;;;-1:-1:-1;19945:304:0;;;;;:::i;:::-;;:::i;13050:24::-;;;;;;;;;;;;;;;;13308:27;;;;;;;;;;;;;;;;13194:25;;;;;;;;;;;;;;;;4480:413;;;;;;;;;;-1:-1:-1;4480:413:0;;;;;:::i;:::-;;:::i;3238:175::-;;;;;;;;;;-1:-1:-1;3238:175:0;;;;;:::i;:::-;;:::i;20453:231::-;;;;;;;;;;-1:-1:-1;20453:231:0;;;;;:::i;:::-;;:::i;13705:57::-;;;;;;;;;;-1:-1:-1;13705:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12863:33;;;;;;;;;;-1:-1:-1;12863:33:0;;;;;;;;;;;19755:182;;;;;;;;;;-1:-1:-1;19755:182:0;;;;;:::i;:::-;;:::i;19017:340::-;;;;;;;;;;-1:-1:-1;19017:340:0;;;;;:::i;:::-;;:::i;17980:256::-;;;;;;;;;;-1:-1:-1;17980:256:0;;;;;:::i;:::-;;:::i;12708:35::-;;;;;;;;;;;;;;;;17192:497;;;;;;;;;;-1:-1:-1;17192:497:0;;;;;:::i;:::-;;:::i;12942:27::-;;;;;;;;;;;;;;;;3421:151;;;;;;;;;;-1:-1:-1;3421:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3537:18:0;;;3510:7;3537:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3421:151;12750:33;;;;;;;;;;;;;;;;13013:30;;;;;;;;;;;;;;;;903:201;;;;;;;;;;-1:-1:-1;903:201:0;;;;;:::i;:::-;;:::i;13156:31::-;;;;;;;;;;;;;;;;12790:24;;;;;;;;;;;;;;;;20692:182;;;;;;;;;;-1:-1:-1;20692:182:0;;;;;:::i;:::-;;:::i;2666:100::-;2720:13;2753:5;2746:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2666:100;:::o;3580:169::-;3663:4;3680:39;302:10;3703:7;3712:6;3680:8;:39::i;:::-;-1:-1:-1;3737:4:0;3580:169;;;;;:::o;20882:157::-;642:6;;-1:-1:-1;;;;;642:6:0;302:10;704:23;696:68;;;;-1:-1:-1;;;696:68:0;;;;;;;:::i;:::-;;;;;;;;;20989:9:::1;::::0;20961:38:::1;::::0;-1:-1:-1;;;;;20989:9:0;;::::1;::::0;20961:38;::::1;::::0;::::1;::::0;20989:9:::1;::::0;20961:38:::1;21010:9;:21:::0;;-1:-1:-1;;;;;;21010:21:0::1;-1:-1:-1::0;;;;;21010:21:0;;;::::1;::::0;;;::::1;::::0;;20882:157::o;17697:275::-;642:6;;-1:-1:-1;;;;;642:6:0;302:10;704:23;696:68;;;;-1:-1:-1;;;696:68:0;;;;;;;:::i;:::-;17834:4:::1;17826;17805:13;3075:12:::0;;;2987:108;17805:13:::1;:17;::::0;17821:1:::1;17805:17;:::i;:::-;17804:26;;;;:::i;:::-;17803:35;;;;:::i;:::-;17793:6;:45;;17771:142;;;::::0;-1:-1:-1;;;17771:142:0;;7049:2:1;17771:142:0::1;::::0;::::1;7031:21:1::0;7088:2;7068:18;;;7061:30;7127:34;7107:18;;;7100:62;-1:-1:-1;;;7178:18:1;;;7171:45;7233:19;;17771:142:0::1;6847:411:1::0;17771:142:0::1;17947:17;:6:::0;17957::::1;17947:17;:::i;:::-;17924:20;:40:::0;-1:-1:-1;17697:275:0:o;3757:492::-;3897:4;3914:36;3924:6;3932:9;3943:6;3914:9;:36::i;:::-;-1:-1:-1;;;;;3990:19:0;;3963:24;3990:19;;;:11;:19;;;;;;;;302:10;3990:33;;;;;;;;4042:26;;;;4034:79;;;;-1:-1:-1;;;4034:79:0;;7465:2:1;4034:79:0;;;7447:21:1;7504:2;7484:18;;;7477:30;7543:34;7523:18;;;7516:62;-1:-1:-1;;;7594:18:1;;;7587:38;7642:19;;4034:79:0;7263:404:1;4034:79:0;4149:57;4158:6;302:10;4199:6;4180:16;:25;4149:8;:57::i;:::-;-1:-1:-1;4237:4:0;;3757:492;-1:-1:-1;;;;3757:492:0:o;4257:215::-;302:10;4345:4;4394:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4394:34:0;;;;;;;;;;4345:4;;4362:80;;4385:7;;4394:47;;4431:10;;4394:47;:::i;:::-;4362:8;:80::i;18615:394::-;642:6;;-1:-1:-1;;;;;642:6:0;302:10;704:23;696:68;;;;-1:-1:-1;;;696:68:0;;;;;;;:::i;:::-;18797:15:::1;:31:::0;;;18839:15:::1;:31:::0;;;18881:9:::1;:19:::0;;;18893:7;18926:33:::1;18857:13:::0;18815;18926:33:::1;:::i;:::-;:45;;;;:::i;:::-;18911:12;:60:::0;18982:19:::1;18992:8:::0;18982:9:::1;:19::i;:::-;18615:394:::0;;;;:::o;792:103::-;642:6;;-1:-1:-1;;;;;642:6:0;302:10;704:23;696:68;;;;-1:-1:-1;;;696:68:0;;;;;;;:::i;:::-;857:30:::1;884:1;857:18;:30::i;:::-;792:103::o:0;16970:152::-;642:6;;17022:4;;-1:-1:-1;;;;;642:6:0;302:10;704:23;696:68;;;;-1:-1:-1;;;696:68:0;;;;;;;:::i;:::-;17039:14:::1;:22:::0;;-1:-1:-1;;17039:22:0::1;::::0;;17077:15:::1;::::0;::::1;::::0;17056:5:::1;::::0;17077:15:::1;-1:-1:-1::0;17110:4:0::1;16970:152:::0;:::o;18244:167::-;642:6;;-1:-1:-1;;;;;642:6:0;302:10;704:23;696:68;;;;-1:-1:-1;;;696:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18357:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;18357:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18244:167::o;16806:112::-;642:6;;-1:-1:-1;;;;;642:6:0;302:10;704:23;696:68;;;;-1:-1:-1;;;696:68:0;;;;;;;:::i;:::-;16861:13:::1;:20:::0;;-1:-1:-1;;16892:18:0;;;;;16806:112::o;18507:100::-;642:6;;-1:-1:-1;;;;;642:6:0;302:10;704:23;696:68;;;;-1:-1:-1;;;696:68:0;;;;;;;:::i;:::-;18578:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;18578:21:0;;::::1;::::0;;;::::1;::::0;;18507:100::o;2774:104::-;2830:13;2863:7;2856:14;;;;;:::i;19945:304::-;642:6;;-1:-1:-1;;;;;642:6:0;302:10;704:23;696:68;;;;-1:-1:-1;;;696:68:0;;;;;;;:::i;:::-;20089:13:::1;-1:-1:-1::0;;;;;20081:21:0::1;:4;-1:-1:-1::0;;;;;20081:21:0::1;::::0;20059:128:::1;;;::::0;-1:-1:-1;;;20059:128:0;;8004:2:1;20059:128:0::1;::::0;::::1;7986:21:1::0;8043:2;8023:18;;;8016:30;8082:34;8062:18;;;8055:62;8153:27;8133:18;;;8126:55;8198:19;;20059:128:0::1;7802:421:1::0;20059:128:0::1;20200:41;20229:4;20235:5;20200:28;:41::i;:::-;19945:304:::0;;:::o;4480:413::-;302:10;4573:4;4617:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4617:34:0;;;;;;;;;;4670:35;;;;4662:85;;;;-1:-1:-1;;;4662:85:0;;8430:2:1;4662:85:0;;;8412:21:1;8469:2;8449:18;;;8442:30;8508:34;8488:18;;;8481:62;-1:-1:-1;;;8559:18:1;;;8552:35;8604:19;;4662:85:0;8228:401:1;4662:85:0;4783:67;302:10;4806:7;4834:15;4815:16;:34;4783:8;:67::i;:::-;-1:-1:-1;4881:4:0;;4480:413;-1:-1:-1;;;4480:413:0:o;3238:175::-;3324:4;3341:42;302:10;3365:9;3376:6;3341:9;:42::i;20453:231::-;642:6;;-1:-1:-1;;;;;642:6:0;302:10;704:23;696:68;;;;-1:-1:-1;;;696:68:0;;;;;;;:::i;:::-;20613:15:::1;::::0;20570:59:::1;::::0;-1:-1:-1;;;;;20613:15:0;;::::1;::::0;20570:59;::::1;::::0;::::1;::::0;20613:15:::1;::::0;20570:59:::1;20640:15;:36:::0;;-1:-1:-1;;;;;;20640:36:0::1;-1:-1:-1::0;;;;;20640:36:0;;;::::1;::::0;;;::::1;::::0;;20453:231::o;19755:182::-;642:6;;-1:-1:-1;;;;;642:6:0;302:10;704:23;696:68;;;;-1:-1:-1;;;696:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19840:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;19840:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19895:34;;1163:41:1;;;19895:34:0::1;::::0;1136:18:1;19895:34:0::1;;;;;;;19755:182:::0;;:::o;19017:340::-;642:6;;-1:-1:-1;;;;;642:6:0;302:10;704:23;696:68;;;;-1:-1:-1;;;696:68:0;;;;;;;:::i;:::-;19168:16:::1;:32:::0;;;19211:16:::1;:32:::0;;;19254:10:::1;:20:::0;;;19267:7;19301:35:::1;19230:13:::0;19187;19301:35:::1;:::i;:::-;:48;;;;:::i;:::-;19285:13;:64:::0;-1:-1:-1;;;19017:340:0:o;17980:256::-;642:6;;-1:-1:-1;;;;;642:6:0;302:10;704:23;696:68;;;;-1:-1:-1;;;696:68:0;;;;;;;:::i;:::-;18120:4:::1;18112;18091:13;3075:12:::0;;;2987:108;18091:13:::1;:17;::::0;18107:1:::1;18091:17;:::i;:::-;18090:26;;;;:::i;:::-;18089:35;;;;:::i;:::-;18079:6;:45;;18057:131;;;::::0;-1:-1:-1;;;18057:131:0;;8836:2:1;18057:131:0::1;::::0;::::1;8818:21:1::0;8875:2;8855:18;;;8848:30;8914:34;8894:18;;;8887:62;-1:-1:-1;;;8965:18:1;;;8958:34;9009:19;;18057:131:0::1;8634:400:1::0;18057:131:0::1;18211:17;:6:::0;18221::::1;18211:17;:::i;:::-;18199:9;:29:::0;-1:-1:-1;17980:256:0:o;17192:497::-;642:6;;17300:4;;-1:-1:-1;;;;;642:6:0;302:10;704:23;696:68;;;;-1:-1:-1;;;696:68:0;;;;;;;:::i;:::-;17379:6:::1;17358:13;3075:12:::0;;;2987:108;17358:13:::1;:17;::::0;17374:1:::1;17358:17;:::i;:::-;17357:28;;;;:::i;:::-;17344:9;:41;;17322:144;;;::::0;-1:-1:-1;;;17322:144:0;;9241:2:1;17322:144:0::1;::::0;::::1;9223:21:1::0;9280:2;9260:18;;;9253:30;9319:34;9299:18;;;9292:62;-1:-1:-1;;;9370:18:1;;;9363:51;9431:19;;17322:144:0::1;9039:417:1::0;17322:144:0::1;17534:4;17513:13;3075:12:::0;;;2987:108;17513:13:::1;:17;::::0;17529:1:::1;17513:17;:::i;:::-;17512:26;;;;:::i;:::-;17499:9;:39;;17477:141;;;::::0;-1:-1:-1;;;17477:141:0;;9663:2:1;17477:141:0::1;::::0;::::1;9645:21:1::0;9702:2;9682:18;;;9675:30;9741:34;9721:18;;;9714:62;-1:-1:-1;;;9792:18:1;;;9785:50;9852:19;;17477:141:0::1;9461:416:1::0;17477:141:0::1;-1:-1:-1::0;17629:18:0::1;:30:::0;;;17677:4:::1;775:1;17192:497:::0;;;:::o;903:201::-;642:6;;-1:-1:-1;;;;;642:6:0;302:10;704:23;696:68;;;;-1:-1:-1;;;696:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;992:22:0;::::1;984:73;;;::::0;-1:-1:-1;;;984:73:0;;10084:2:1;984:73:0::1;::::0;::::1;10066:21:1::0;10123:2;10103:18;;;10096:30;10162:34;10142:18;;;10135:62;-1:-1:-1;;;10213:18:1;;;10206:36;10259:19;;984:73:0::1;9882:402:1::0;984:73:0::1;1068:28;1087:8;1068:18;:28::i;:::-;903:201:::0;:::o;20692:182::-;642:6;;-1:-1:-1;;;;;642:6:0;302:10;704:23;696:68;;;;-1:-1:-1;;;696:68:0;;;;;;;:::i;:::-;20824:8:::1;::::0;20795:38:::1;::::0;-1:-1:-1;;;;;20824:8:0;;::::1;::::0;20795:38;::::1;::::0;::::1;::::0;20824:8:::1;::::0;20795:38:::1;20844:8;:22:::0;;-1:-1:-1;;;;;;20844:22:0::1;-1:-1:-1::0;;;;;20844:22:0;;;::::1;::::0;;;::::1;::::0;;20692:182::o;6049:380::-;-1:-1:-1;;;;;6185:19:0;;6177:68;;;;-1:-1:-1;;;6177:68:0;;10491:2:1;6177:68:0;;;10473:21:1;10530:2;10510:18;;;10503:30;10569:34;10549:18;;;10542:62;-1:-1:-1;;;10620:18:1;;;10613:34;10664:19;;6177:68:0;10289:400:1;6177:68:0;-1:-1:-1;;;;;6264:21:0;;6256:68;;;;-1:-1:-1;;;6256:68:0;;10896:2:1;6256:68:0;;;10878:21:1;10935:2;10915:18;;;10908:30;10974:34;10954:18;;;10947:62;-1:-1:-1;;;11025:18:1;;;11018:32;11067:19;;6256:68:0;10694:398:1;6256:68:0;-1:-1:-1;;;;;6337:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6389:32;;1848:25:1;;;6389:32:0;;1821:18:1;6389:32:0;;;;;;;6049:380;;;:::o;21231:3987::-;-1:-1:-1;;;;;21363:18:0;;21355:68;;;;-1:-1:-1;;;21355:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21442:16:0;;21434:64;;;;-1:-1:-1;;;21434:64:0;;;;;;;:::i;:::-;21515:6;21525:1;21515:11;21511:93;;21543:28;21559:4;21565:2;21569:1;21543:15;:28::i;:::-;21231:3987;;;:::o;21511:93::-;21620:14;;;;21616:1694;;;642:6;;-1:-1:-1;;;;;21673:15:0;;;642:6;;21673:15;;;;:49;;-1:-1:-1;642:6:0;;-1:-1:-1;;;;;21709:13:0;;;642:6;;21709:13;;21673:49;:86;;;;-1:-1:-1;;;;;;21743:16:0;;;;21673:86;:128;;;;-1:-1:-1;;;;;;21780:21:0;;21794:6;21780:21;;21673:128;:158;;;;-1:-1:-1;21823:8:0;;-1:-1:-1;;;21823:8:0;;;;21822:9;21673:158;21651:1648;;;21871:13;;;;;;;21866:223;;-1:-1:-1;;;;;21943:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;21972:23:0;;;;;;:19;:23;;;;;;;;21943:52;21909:160;;;;-1:-1:-1;;;21909:160:0;;12109:2:1;21909:160:0;;;12091:21:1;12148:2;12128:18;;;12121:30;-1:-1:-1;;;12167:18:1;;;12160:52;12229:18;;21909:160:0;11907:346:1;21909:160:0;-1:-1:-1;;;;;22163:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;22220:35:0;;;;;;:31;:35;;;;;;;;22219:36;22163:92;22137:1147;;;22342:20;;22332:6;:30;;22298:169;;;;-1:-1:-1;;;22298:169:0;;12460:2:1;22298:169:0;;;12442:21:1;12499:2;12479:18;;;12472:30;12538:34;12518:18;;;12511:62;-1:-1:-1;;;12589:18:1;;;12582:51;12650:19;;22298:169:0;12258:417:1;22298:169:0;22550:9;;-1:-1:-1;;;;;3204:18:0;;3177:7;3204:18;;;;;;;;;;;22524:22;;:6;:22;:::i;:::-;:35;;22490:140;;;;-1:-1:-1;;;22490:140:0;;12882:2:1;22490:140:0;;;12864:21:1;12921:2;12901:18;;;12894:30;-1:-1:-1;;;12940:18:1;;;12933:49;12999:18;;22490:140:0;12680:343:1;22490:140:0;22137:1147;;;-1:-1:-1;;;;;22728:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;22783:37:0;;;;;;:31;:37;;;;;;;;22782:38;22728:92;22702:582;;;22907:20;;22897:6;:30;;22863:170;;;;-1:-1:-1;;;22863:170:0;;13230:2:1;22863:170:0;;;13212:21:1;13269:2;13249:18;;;13242:30;13308:34;13288:18;;;13281:62;-1:-1:-1;;;13359:18:1;;;13352:52;13421:19;;22863:170:0;13028:418:1;22702:582:0;-1:-1:-1;;;;;23064:35:0;;;;;;:31;:35;;;;;;;;23059:225;;23184:9;;-1:-1:-1;;;;;3204:18:0;;3177:7;3204:18;;;;;;;;;;;23158:22;;:6;:22;:::i;:::-;:35;;23124:140;;;;-1:-1:-1;;;23124:140:0;;12882:2:1;23124:140:0;;;12864:21:1;12921:2;12901:18;;;12894:30;-1:-1:-1;;;12940:18:1;;;12933:49;12999:18;;23124:140:0;12680:343:1;23124:140:0;23371:4;23322:28;3204:18;;;;;;;;;;;23429;;23405:42;;;23478:22;23491:4;23497:2;23478:12;:22::i;:::-;:46;;;;;23517:7;23478:46;:74;;;;-1:-1:-1;23541:11:0;;;;;;;23478:74;:112;;;;-1:-1:-1;23582:8:0;;-1:-1:-1;;;23582:8:0;;;;23581:9;23478:112;:161;;;;-1:-1:-1;;;;;;23608:31:0;;;;;;:25;:31;;;;;;;;23607:32;23478:161;:204;;;;-1:-1:-1;;;;;;23657:25:0;;;;;;:19;:25;;;;;;;;23656:26;23478:204;:257;;;;-1:-1:-1;;;;;;23712:23:0;;;;;;:19;:23;;;;;;;;23711:24;23478:257;23460:389;;;23762:8;:15;;-1:-1:-1;;;;23762:15:0;-1:-1:-1;;;23762:15:0;;;23794:10;:8;:10::i;:::-;23821:8;:16;;-1:-1:-1;;;;23821:16:0;;;23460:389;23877:8;;-1:-1:-1;;;;;23987:25:0;;23861:12;23987:25;;;:19;:25;;;;;;23877:8;-1:-1:-1;;;23877:8:0;;;;;23876:9;;23987:25;;:52;;-1:-1:-1;;;;;;24016:23:0;;;;;;:19;:23;;;;;;;;23987:52;23983:100;;;-1:-1:-1;24066:5:0;23983:100;24095:12;24200:7;24196:969;;;-1:-1:-1;;;;;24252:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;24301:1;24285:13;;:17;24252:50;24248:768;;;24330:34;24360:3;24330:25;24341:13;;24330:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;24323:41;;24433:13;;24413:16;;24406:4;:23;;;;:::i;:::-;24405:41;;;;:::i;:::-;24383:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;24503:13:0;;24489:10;;24482:17;;:4;:17;:::i;:::-;24481:35;;;;:::i;:::-;24465:12;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;24585:13:0;;24565:16;;24558:23;;:4;:23;:::i;:::-;24557:41;;;;:::i;:::-;24535:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;24248:768:0;;-1:-1:-1;24248:768:0;;-1:-1:-1;;;;;24660:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;24710:1;24695:12;;:16;24660:51;24656:360;;;24739:33;24768:3;24739:24;24750:12;;24739:6;:10;;:24;;;;:::i;:33::-;24732:40;;24840:12;;24821:15;;24814:4;:22;;;;:::i;:::-;24813:39;;;;:::i;:::-;24791:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;24908:12:0;;24895:9;;24888:16;;:4;:16;:::i;:::-;24887:33;;;;:::i;:::-;24871:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;24988:12:0;;24969:15;;24962:22;;:4;:22;:::i;:::-;24961:39;;;;:::i;:::-;24939:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;24656:360:0;25036:8;;25032:91;;25065:42;25081:4;25095;25102;25065:15;:42::i;:::-;25139:14;25149:4;25139:14;;:::i;:::-;;;24196:969;25177:33;25193:4;25199:2;25203:6;25177:15;:33::i;:::-;21344:3874;;;;21231:3987;;;:::o;19365:219::-;19422:13;19437:15;19467:2;19456:34;;;;;;;;;;;;:::i;:::-;19501:10;:20;;-1:-1:-1;;;;;;19501:20:0;-1:-1:-1;;;;;19501:20:0;;;;;;;;;19532:18;;-1:-1:-1;19532:18:0;;;-1:-1:-1;19532:18:0;;;;;;;;:27;;;;;;;-1:-1:-1;;19532:44:0;;-1:-1:-1;;;19365:219:0:o;1112:191::-;1205:6;;;-1:-1:-1;;;;;1222:17:0;;;-1:-1:-1;;;;;;1222:17:0;;;;;;;1255:40;;1205:6;;;1222:17;1205:6;;1255:40;;1186:16;;1255:40;1175:128;1112:191;:::o;20257:188::-;-1:-1:-1;;;;;20340:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;20340:39:0;;;;;;;;;;20397:40;;20340:39;;:31;20397:40;;;20257:188;;:::o;4901:733::-;-1:-1:-1;;;;;5041:20:0;;5033:70;;;;-1:-1:-1;;;5033:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5122:23:0;;5114:71;;;;-1:-1:-1;;;5114:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5282:17:0;;5258:21;5282:17;;;;;;;;;;;5318:23;;;;5310:74;;;;-1:-1:-1;;;5310:74:0;;14192:2:1;5310:74:0;;;14174:21:1;14231:2;14211:18;;;14204:30;14270:34;14250:18;;;14243:62;-1:-1:-1;;;14321:18:1;;;14314:36;14367:19;;5310:74:0;13990:402:1;5310:74:0;-1:-1:-1;;;;;5420:17:0;;;:9;:17;;;;;;;;;;;5440:22;;;5420:42;;5484:20;;;;;;;;:30;;5456:6;;5420:9;5484:30;;5456:6;;5484:30;:::i;:::-;;;;;;;;5549:9;-1:-1:-1;;;;;5532:35:0;5541:6;-1:-1:-1;;;;;5532:35:0;;5560:6;5532:35;;;;1848:25:1;;1836:2;1821:18;;1702:177;5532:35:0;;;;;;;;5580:46;21231:3987;19593:154;19689:10;;19682:38;;-1:-1:-1;;;19682:38:0;;-1:-1:-1;;;;;14627:15:1;;;19682:38:0;;;14609:34:1;14679:15;;;14659:18;;;14652:43;19658:4:0;;;;19689:10;;;19682:28;;14544:18:1;;19682:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;:57;;19734:5;19682:57;19675:64;19593:154;-1:-1:-1;;;19593:154:0:o;26345:1629::-;26428:4;26384:23;3204:18;;;;;;;;;;;26384:50;;26445:25;26541:12;;26507:18;;26473;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;26445:108;-1:-1:-1;26564:12:0;26593:20;;;:46;;-1:-1:-1;26617:22:0;;26593:46;26589:85;;;26656:7;;;26345:1629::o;26589:85::-;26735:23;26848:1;26815:17;26780:18;;26762:15;:36;;;;:::i;:::-;26761:71;;;;:::i;:::-;:88;;;;:::i;:::-;26735:114;-1:-1:-1;26860:26:0;26889:36;:15;26735:114;26889:19;:36::i;:::-;26860:65;-1:-1:-1;26966:21:0;27000:36;26860:65;27000:16;:36::i;:::-;27049:18;27070:44;:21;27096:17;27070:25;:44::i;:::-;27049:65;;27127:23;27153:81;27206:17;27153:34;27168:18;;27153:10;:14;;:34;;;;:::i;:81::-;27127:107;;27245:17;27265:51;27298:17;27265:28;27280:12;;27265:10;:14;;:28;;;;:::i;:51::-;27245:71;-1:-1:-1;27329:23:0;27245:71;27355:28;27368:15;27355:10;:28;:::i;:::-;:40;;;;:::i;:::-;27429:1;27408:18;:22;;;27441:18;:22;;;27474:12;:16;;;27525:9;;27517:45;;27329:66;;-1:-1:-1;;;;;;27525:9:0;;27548;;27517:45;27429:1;27517:45;27548:9;27525;27517:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27503:59:0;;-1:-1:-1;;27579:19:0;;;;;:42;;;27620:1;27602:15;:19;27579:42;27575:278;;;27638:46;27651:15;27668;27638:12;:46::i;:::-;27808:18;;27704:137;;;15307:25:1;;;15363:2;15348:18;;15341:34;;;15391:18;;;15384:34;;;;27704:137:0;;;;;;15295:2:1;27704:137:0;;;27575:278;27887:15;;27879:87;;-1:-1:-1;;;;;27887:15:0;;;;27930:21;;27879:87;;;;27930:21;27887:15;27879:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;26345:1629:0:o;6833:98::-;6891:7;6918:5;6922:1;6918;:5;:::i;6939:98::-;6997:7;7024:5;7028:1;7024;:5;:::i;6727:98::-;6785:7;6812:5;6816:1;6812;:5;:::i;25226:589::-;25376:16;;;25390:1;25376:16;;;;;;;;25352:21;;25376:16;;;;;;;;;;-1:-1:-1;25376:16:0;25352:40;;25421:4;25403;25408:1;25403:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;25403:23:0;;;-1:-1:-1;;;;;25403:23:0;;;;;25447:15;-1:-1:-1;;;;;25447:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25437:4;25442:1;25437:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;25437:32:0;;;-1:-1:-1;;;;;25437:32:0;;;;;25482:62;25499:4;25514:15;25532:11;25482:8;:62::i;:::-;25583:224;;-1:-1:-1;;;25583:224:0;;-1:-1:-1;;;;;25583:15:0;:66;;;;:224;;25664:11;;25690:1;;25734:4;;25761;;25781:15;;25583:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25281:534;25226:589;:::o;25823:514::-;25971:62;25988:4;26003:15;26021:11;25971:8;:62::i;:::-;26280:8;;26076:253;;-1:-1:-1;;;26076:253:0;;26148:4;26076:253;;;17143:34:1;17193:18;;;17186:34;;;26194:1:0;17236:18:1;;;17229:34;;;17279:18;;;17272:34;-1:-1:-1;;;;;26280:8:0;;;17322:19:1;;;17315:44;26303:15:0;17375:19:1;;;17368:35;26076:15:0;:31;;;;;;26115:9;;17077:19:1;;26076:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25823:514;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:180::-;1943:6;1996:2;1984:9;1975:7;1971:23;1967:32;1964:52;;;2012:1;2009;2002:12;1964:52;-1:-1:-1;2035:23:1;;1884:180;-1:-1:-1;1884:180:1:o;2069:456::-;2146:6;2154;2162;2215:2;2203:9;2194:7;2190:23;2186:32;2183:52;;;2231:1;2228;2221:12;2183:52;2270:9;2257:23;2289:31;2314:5;2289:31;:::i;:::-;2339:5;-1:-1:-1;2396:2:1;2381:18;;2368:32;2409:33;2368:32;2409:33;:::i;:::-;2069:456;;2461:7;;-1:-1:-1;;;2515:2:1;2500:18;;;;2487:32;;2069:456::o;2927:127::-;2988:10;2983:3;2979:20;2976:1;2969:31;3019:4;3016:1;3009:15;3043:4;3040:1;3033:15;3059:1126;3154:6;3162;3170;3178;3231:3;3219:9;3210:7;3206:23;3202:33;3199:53;;;3248:1;3245;3238:12;3199:53;3284:9;3271:23;3261:33;;3341:2;3330:9;3326:18;3313:32;3303:42;;3392:2;3381:9;3377:18;3364:32;3354:42;;3447:2;3436:9;3432:18;3419:32;3470:18;3511:2;3503:6;3500:14;3497:34;;;3527:1;3524;3517:12;3497:34;3565:6;3554:9;3550:22;3540:32;;3610:7;3603:4;3599:2;3595:13;3591:27;3581:55;;3632:1;3629;3622:12;3581:55;3668:2;3655:16;3690:2;3686;3683:10;3680:36;;;3696:18;;:::i;:::-;3771:2;3765:9;3739:2;3825:13;;-1:-1:-1;;3821:22:1;;;3845:2;3817:31;3813:40;3801:53;;;3869:18;;;3889:22;;;3866:46;3863:72;;;3915:18;;:::i;:::-;3955:10;3951:2;3944:22;3990:2;3982:6;3975:18;4030:7;4025:2;4020;4016;4012:11;4008:20;4005:33;4002:53;;;4051:1;4048;4041:12;4002:53;4107:2;4102;4098;4094:11;4089:2;4081:6;4077:15;4064:46;4152:1;4147:2;4142;4134:6;4130:15;4126:24;4119:35;4173:6;4163:16;;;;;;;3059:1126;;;;;;;:::o;4190:160::-;4255:20;;4311:13;;4304:21;4294:32;;4284:60;;4340:1;4337;4330:12;4355:315;4420:6;4428;4481:2;4469:9;4460:7;4456:23;4452:32;4449:52;;;4497:1;4494;4487:12;4449:52;4536:9;4523:23;4555:31;4580:5;4555:31;:::i;:::-;4605:5;-1:-1:-1;4629:35:1;4660:2;4645:18;;4629:35;:::i;:::-;4619:45;;4355:315;;;;;:::o;4675:180::-;4731:6;4784:2;4772:9;4763:7;4759:23;4755:32;4752:52;;;4800:1;4797;4790:12;4752:52;4823:26;4839:9;4823:26;:::i;4860:316::-;4937:6;4945;4953;5006:2;4994:9;4985:7;4981:23;4977:32;4974:52;;;5022:1;5019;5012:12;4974:52;-1:-1:-1;;5045:23:1;;;5115:2;5100:18;;5087:32;;-1:-1:-1;5166:2:1;5151:18;;;5138:32;;4860:316;-1:-1:-1;4860:316:1:o;5181:388::-;5249:6;5257;5310:2;5298:9;5289:7;5285:23;5281:32;5278:52;;;5326:1;5323;5316:12;5278:52;5365:9;5352:23;5384:31;5409:5;5384:31;:::i;:::-;5434:5;-1:-1:-1;5491:2:1;5476:18;;5463:32;5504:33;5463:32;5504:33;:::i;:::-;5556:7;5546:17;;;5181:388;;;;;:::o;5574:380::-;5653:1;5649:12;;;;5696;;;5717:61;;5771:4;5763:6;5759:17;5749:27;;5717:61;5824:2;5816:6;5813:14;5793:18;5790:38;5787:161;;5870:10;5865:3;5861:20;5858:1;5851:31;5905:4;5902:1;5895:15;5933:4;5930:1;5923:15;5787:161;;5574:380;;;:::o;5959:356::-;6161:2;6143:21;;;6180:18;;;6173:30;6239:34;6234:2;6219:18;;6212:62;6306:2;6291:18;;5959:356::o;6320:127::-;6381:10;6376:3;6372:20;6369:1;6362:31;6412:4;6409:1;6402:15;6436:4;6433:1;6426:15;6452:168;6525:9;;;6556;;6573:15;;;6567:22;;6553:37;6543:71;;6594:18;;:::i;6625:217::-;6665:1;6691;6681:132;;6735:10;6730:3;6726:20;6723:1;6716:31;6770:4;6767:1;6760:15;6798:4;6795:1;6788:15;6681:132;-1:-1:-1;6827:9:1;;6625:217::o;7672:125::-;7737:9;;;7758:10;;;7755:36;;;7771:18;;:::i;11097:401::-;11299:2;11281:21;;;11338:2;11318:18;;;11311:30;11377:34;11372:2;11357:18;;11350:62;-1:-1:-1;;;11443:2:1;11428:18;;11421:35;11488:3;11473:19;;11097:401::o;11503:399::-;11705:2;11687:21;;;11744:2;11724:18;;;11717:30;11783:34;11778:2;11763:18;;11756:62;-1:-1:-1;;;11849:2:1;11834:18;;11827:33;11892:3;11877:19;;11503:399::o;13451:128::-;13518:9;;;13539:11;;;13536:37;;;13553:18;;:::i;13584:401::-;13679:6;13687;13740:2;13728:9;13719:7;13715:23;13711:32;13708:52;;;13756:1;13753;13746:12;13708:52;13788:9;13782:16;13807:31;13832:5;13807:31;:::i;:::-;13907:2;13892:18;;13886:25;13857:5;;-1:-1:-1;13920:33:1;13886:25;13920:33;:::i;14706:184::-;14776:6;14829:2;14817:9;14808:7;14804:23;14800:32;14797:52;;;14845:1;14842;14835:12;14797:52;-1:-1:-1;14868:16:1;;14706:184;-1:-1:-1;14706:184:1:o;15429:127::-;15490:10;15485:3;15481:20;15478:1;15471:31;15521:4;15518:1;15511:15;15545:4;15542:1;15535:15;15561:251;15631:6;15684:2;15672:9;15663:7;15659:23;15655:32;15652:52;;;15700:1;15697;15690:12;15652:52;15732:9;15726:16;15751:31;15776:5;15751:31;:::i;15817:980::-;16079:4;16127:3;16116:9;16112:19;16158:6;16147:9;16140:25;16184:2;16222:6;16217:2;16206:9;16202:18;16195:34;16265:3;16260:2;16249:9;16245:18;16238:31;16289:6;16324;16318:13;16355:6;16347;16340:22;16393:3;16382:9;16378:19;16371:26;;16432:2;16424:6;16420:15;16406:29;;16453:1;16463:195;16477:6;16474:1;16471:13;16463:195;;;16542:13;;-1:-1:-1;;;;;16538:39:1;16526:52;;16633:15;;;;16598:12;;;;16574:1;16492:9;16463:195;;;-1:-1:-1;;;;;;;16714:32:1;;;;16709:2;16694:18;;16687:60;-1:-1:-1;;;16778:3:1;16763:19;16756:35;16675:3;15817:980;-1:-1:-1;;;15817:980:1:o;17414:306::-;17502:6;17510;17518;17571:2;17559:9;17550:7;17546:23;17542:32;17539:52;;;17587:1;17584;17577:12;17539:52;17616:9;17610:16;17600:26;;17666:2;17655:9;17651:18;17645:25;17635:35;;17710:2;17699:9;17695:18;17689:25;17679:35;;17414:306;;;;;:::o

Swarm Source

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