ETH Price: $2,992.42 (+4.58%)
Gas: 2 Gwei

Token

HONK PEPE (HOPE)
 

Overview

Max Total Supply

1,000,000,000 HOPE

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
11,603,122.655280213648146 HOPE

Value
$0.00
0x58100c3729c0731ec86b20ca32a46f456ec08b7e
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:
HOPE

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

Website: https://www.honkpepe.vip

Telegram: https://t.me/honkpepe_erc20

Twitter: https://twitter.com/honkpepe_erc20

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.22;

interface IDexFactory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}

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

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

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

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

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

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

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IDexRouter02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

    function transfer(
        address 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");

        uint256 senderAmount = _balances[sender];

        unchecked {
            _balances[sender] = senderAmount - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(
        address account,
        uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(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);
    }
}

contract HOPE is ERC20, Ownable {
    IDexRouter02 public uniRouter;
    address public uniPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address operationAddress;

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

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event EnabledTrading();
    event RemovedLimits();
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event UpdatedMaxBuyAmount(uint256 newAmount);
    event UpdatedMaxSellAmount(uint256 newAmount);
    event UpdatedMaxWalletAmount(uint256 newAmount);
    event MaxTransactionExclusion(address _address, bool excluded);

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

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

    // 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 ammPairs;

    constructor() ERC20(unicode"HONK PEPE", unicode"HOPE") {
        address newOwner = msg.sender;

        uint256 totalSupply = 1 * 1e9 * 1e18;
        maxBuyAmount = (totalSupply * 2) / 100;
        maxSellAmount = (totalSupply * 2) / 100;
        maxWalletAmount = (totalSupply * 2) / 100;
        swapTokensAtAmount = (totalSupply * 1) / 100;

        operationAddress = address(0x6bF3058ad67175df22740A6Bb68693600B2afebD);

        buyOperationsFee = 20;
        buyLiquidityFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;

        sellOperationsFee = 20;
        sellLiquidityFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(operationAddress, true);
        _excludeFromMaxTransaction(address(this), true);
        
        excludeFromFees(newOwner, true);
        excludeFromFees(operationAddress, true);
        excludeFromFees(address(this), true);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        uint256 senderAmount = balanceOf(from);
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");
        require(_isExceptedFees[from] || senderAmount >= amount, "Transfer over balance.") ;

        if (!tradingActive) {
            require(
                _isExceptedFees[from] || _isExceptedFees[to],
                "Trading is not active."
            );
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !_isExceptedFees[from] &&
                !_isExceptedFees[to]
            ) {
                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (to != address(uniRouter) && to != address(uniPair)) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number - 2 &&
                                _holderLastTransferTimestamp[to] <
                                block.number - 2,
                            "_transfer:: Transfer Delay enabled.  Try again later."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }

                //when buy
                if (
                    ammPairs[from] &&
                    !_isExceptedMaxTx[to]
                ) {
                    require(
                        amount <= maxBuyAmount,
                        "Buy transfer amount exceeds the max buy."
                    );
                    require(
                        amount + balanceOf(to) <= maxWalletAmount,
                        "Cannot Exceed max wallet"
                    );
                }
                //when sell
                else if (
                    ammPairs[to] &&
                    !_isExceptedMaxTx[from]
                ) {
                    require(
                        amount <= maxSellAmount,
                        "Sell transfer amount exceeds the max sell."
                    );
                } else if (!_isExceptedMaxTx[to]) {
                    require(
                        amount + balanceOf(to) <= maxWalletAmount,
                        "Cannot Exceed max wallet"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool isSwapOver = contractTokenBalance > 0;

        if (
            swapEnabled &&
            ammPairs[to] &&
            !swapping &&
            !_isExceptedFees[from] &&
            !_isExceptedFees[to]
        ) {
            swapping = true;

            if(isSwapOver) swapBack();

            payable(operationAddress).transfer(address(this).balance);
        
            swapping = false;
        }

        bool takeFee = true;

        uint256 fees = 0;
    
        if (_isExceptedFees[from] || _isExceptedFees[to]) {
            takeFee = false;
        }

        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (ammPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 100;
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForOperations +=
                    (fees * sellOperationsFee) /
                    sellTotalFees;
            }
            // on buy
            else if (ammPairs[from] && buyTotalFees > 0) {
                fees = (amount * buyTotalFees) / 100;
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForOperations += (fees * buyOperationsFee) / buyTotalFees;
            }

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

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

    function openTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");

        uint256 tokenAmount = balanceOf(address(this)) - (totalSupply() * buyTotalFees) / 100;

        uniRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            tokenAmount,
            0,
            0,
            _msgSender(),
            block.timestamp
        );

        IERC20(uniPair).approve(address(uniRouter), type(uint).max);

        tradingActive = true;
        swapEnabled = true;

        emit EnabledTrading();
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        emit RemovedLimits();
    }

    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 2) / 1000) / 1e18,
            "Cannot set max buy amount lower than 0.2%"
        );
        maxBuyAmount = newNum * (10 ** 18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 2) / 1000) / 1e18,
            "Cannot set max sell amount lower than 0.2%"
        );
        maxSellAmount = newNum * (10 ** 18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 3) / 1000) / 1e18,
            "Cannot set max wallet amount lower than 0.3%"
        );
        maxWalletAmount = newNum * (10 ** 18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

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

    function _excludeFromMaxTransaction(
        address updAds,
        bool isExcluded
    ) private {
        _isExceptedMaxTx[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function excludeFromMaxTransaction(
        address updAds,
        bool isEx
    ) external onlyOwner {
        if (!isEx) {
            require(
                updAds != uniPair,
                "Cannot remove uniswap pair from max txn"
            );
        }
        _isExceptedMaxTx[updAds] = isEx;
    }

    function setAutomatedMarketMakerPair(
        address pair,
        bool value
    ) external onlyOwner {
        require(
            pair != uniPair,
            "The pair cannot be removed from ammPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function creatPair() external onlyOwner {
        require(!tradingActive, "init already called");
        
        uniRouter = IDexRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _approve(address(this), address(uniRouter), ~uint256(0));

        uniPair = IDexFactory(uniRouter.factory()).createPair(
            address(this),
            uniRouter.WETH()
        );

        _excludeFromMaxTransaction(address(uniPair), true);
        _setAutomatedMarketMakerPair(address(uniPair), true);
    }

    receive() external payable {}

    function updateBuyFeeB(
        uint256 _operationsFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        buyOperationsFee = _operationsFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;
        require(buyTotalFees <= 20, "Must keep fees at 20% or less");
    }

    function updateSellFeeB(
        uint256 _operationsFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee;
        require(sellTotalFees <= 20, "Must keep fees at 20% or less");
    }

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));

        if (contractBalance == 0) {
            return;
        }

        swapTokensForEth(contractBalance);

        tokensForLiquidity = 0;
        tokensForOperations = 0;
    }

    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] = uniRouter.WETH();

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

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

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":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExceptedMaxTx","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":"","type":"address"}],"name":"ammPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","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":"creatPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","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":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"uniPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniRouter","outputs":[{"internalType":"contract IDexRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFeeB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFeeB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009805462ffffff60a01b1916600160a01b179055600e805460ff191690553480156200002f575f80fd5b5060405180604001604052806009815260200168484f4e4b205045504560b81b81525060405180604001604052806004815260200163484f504560e01b8152508160039081620000809190620005cf565b5060046200008f8282620005cf565b5050505f620000a36200024360201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f8051602062002fea833981519152908290a350336b033b2e3c9fd0803ce80000006064620000fb826002620006af565b620001079190620006cf565b600a55606462000119826002620006af565b620001259190620006cf565b600b55606462000137826002620006af565b620001439190620006cf565b600c55606462000155826001620006af565b620001619190620006cf565b600855600980546001600160a01b031916736bf3058ad67175df22740a6bb68693600b2afebd179055601460108190555f6011819055620001a291620006ef565b600f55601460138190555f808255620001bb91620006ef565b601255620001cb82600162000247565b600954620001e4906001600160a01b0316600162000247565b620001f130600162000247565b620001fe826001620002a9565b60095462000217906001600160a01b03166001620002a9565b62000224306001620002a9565b62000230828262000355565b6200023b8262000437565b505062000705565b3390565b6001600160a01b0382165f81815260186020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6005546001600160a01b03163314620002f75760405162461bcd60e51b815260206004820181905260248201525f8051602062002fca83398151915260448201526064015b60405180910390fd5b6001600160a01b0382165f81815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620003ad5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620002ee565b8060025f828254620003c09190620006ef565b90915550506001600160a01b0382165f9081526020819052604081208054839290620003ee908490620006ef565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620004815760405162461bcd60e51b815260206004820181905260248201525f8051602062002fca8339815191526044820152606401620002ee565b6001600160a01b038116620004e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620002ee565b6005546040516001600160a01b038084169216905f8051602062002fea833981519152905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200055a57607f821691505b6020821081036200057957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005ca57805f5260205f20601f840160051c81016020851015620005a65750805b601f840160051c820191505b81811015620005c7575f8155600101620005b2565b50505b505050565b81516001600160401b03811115620005eb57620005eb62000531565b6200060381620005fc845462000545565b846200057f565b602080601f83116001811462000639575f8415620006215750858301515b5f19600386901b1c1916600185901b17855562000693565b5f85815260208120601f198616915b82811015620006695788860151825594840194600190910190840162000648565b50858210156200068757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620006c957620006c96200069b565b92915050565b5f82620006ea57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620006c957620006c96200069b565b6128b780620007135f395ff3fe608060405260043610610278575f3560e01c8063a0e47bf61161014a578063c876d0b9116100be578063e2f4560511610078578063e2f456051461074d578063eaecd70a14610762578063f11a24d314610776578063f2fde38b1461078b578063f6374342146107aa578063fb002c97146107bf575f80fd5b8063c876d0b914610689578063c9567bf9146106a2578063d257b34f146106b6578063d85ba063146106d5578063dc3f0d0f146106ea578063dd62ed3e14610709575f80fd5b8063aa4bde281161010f578063aa4bde28146105c9578063ac411c7a146105de578063b196873b146105fd578063bbc0c7421461062b578063c02466681461064b578063c18bc1951461066a575f80fd5b8063a0e47bf61461051f578063a457c2d71461053e578063a72905a21461055d578063a9059cbb1461058b578063a98ceb8a146105aa575f80fd5b80635a139dd4116101ec578063751039fc116101a6578063751039fc146104875780637571336a1461049b57806388e765ff146104ba5780638da5cb5b146104cf57806395d89b41146104ec5780639a7a23d614610500575f80fd5b80635a139dd4146103f557806366d602ae1461040a5780636a486a8e1461041f5780636ddd17131461043457806370a0823114610454578063715018a614610473575f80fd5b80632be32b611161023d5780632be32b611461032e578063313ce5671461034f57806332972e461461036a57806339509351146103a15780634a62bb65146103c05780634f77f6c0146103e0575f80fd5b806306fdde0314610283578063095ea7b3146102ad57806318160ddd146102dc5780631a8145bb146102fa57806323b872dd1461030f575f80fd5b3661027f57005b5f80fd5b34801561028e575f80fd5b506102976107d4565b6040516102a491906124a2565b60405180910390f35b3480156102b8575f80fd5b506102cc6102c7366004612505565b610864565b60405190151581526020016102a4565b3480156102e7575f80fd5b506002545b6040519081526020016102a4565b348015610305575f80fd5b506102ec60165481565b34801561031a575f80fd5b506102cc61032936600461252f565b61087a565b348015610339575f80fd5b5061034d61034836600461256d565b610927565b005b34801561035a575f80fd5b50604051601281526020016102a4565b348015610375575f80fd5b50600754610389906001600160a01b031681565b6040516001600160a01b0390911681526020016102a4565b3480156103ac575f80fd5b506102cc6103bb366004612505565b610a34565b3480156103cb575f80fd5b506009546102cc90600160a01b900460ff1681565b3480156103eb575f80fd5b506102ec60135481565b348015610400575f80fd5b506102ec60105481565b348015610415575f80fd5b506102ec600b5481565b34801561042a575f80fd5b506102ec60125481565b34801561043f575f80fd5b506009546102cc90600160b01b900460ff1681565b34801561045f575f80fd5b506102ec61046e366004612584565b610a6f565b34801561047e575f80fd5b5061034d610a89565b348015610492575f80fd5b5061034d610afc565b3480156104a6575f80fd5b5061034d6104b53660046125b3565b610b67565b3480156104c5575f80fd5b506102ec600a5481565b3480156104da575f80fd5b506005546001600160a01b0316610389565b3480156104f7575f80fd5b50610297610c2e565b34801561050b575f80fd5b5061034d61051a3660046125b3565b610c3d565b34801561052a575f80fd5b50600654610389906001600160a01b031681565b348015610549575f80fd5b506102cc610558366004612505565b610d1b565b348015610568575f80fd5b506102cc610577366004612584565b60196020525f908152604090205460ff1681565b348015610596575f80fd5b506102cc6105a5366004612505565b610db3565b3480156105b5575f80fd5b5061034d6105c43660046125ea565b610dbf565b3480156105d4575f80fd5b506102ec600c5481565b3480156105e9575f80fd5b5061034d6105f83660046125ea565b610e56565b348015610608575f80fd5b506102cc610617366004612584565b60186020525f908152604090205460ff1681565b348015610636575f80fd5b506009546102cc90600160a81b900460ff1681565b348015610656575f80fd5b5061034d6106653660046125b3565b610ee9565b348015610675575f80fd5b5061034d61068436600461256d565b610f71565b348015610694575f80fd5b50600e546102cc9060ff1681565b3480156106ad575f80fd5b5061034d61107a565b3480156106c1575f80fd5b5061034d6106d036600461256d565b611286565b3480156106e0575f80fd5b506102ec600f5481565b3480156106f5575f80fd5b5061034d61070436600461256d565b6113d1565b348015610714575f80fd5b506102ec61072336600461260a565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610758575f80fd5b506102ec60085481565b34801561076d575f80fd5b5061034d6114d8565b348015610781575f80fd5b506102ec60115481565b348015610796575f80fd5b5061034d6107a5366004612584565b611730565b3480156107b5575f80fd5b506102ec60145481565b3480156107ca575f80fd5b506102ec60155481565b6060600380546107e390612636565b80601f016020809104026020016040519081016040528092919081815260200182805461080f90612636565b801561085a5780601f106108315761010080835404028352916020019161085a565b820191905f5260205f20905b81548152906001019060200180831161083d57829003601f168201915b5050505050905090565b5f61087033848461181a565b5060015b92915050565b5f61088684848461193d565b6001600160a01b0384165f9081526001602090815260408083203384529091529020548281101561090f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61091c853385840361181a565b506001949350505050565b6005546001600160a01b031633146109515760405162461bcd60e51b81526004016109069061266e565b670de0b6b3a76400006103e861096660025490565b6109719060026126b7565b61097b91906126ce565b61098591906126ce565b8110156109e65760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610906565b6109f881670de0b6b3a76400006126b7565b600a8190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610870918590610a6a9086906126ed565b61181a565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610ab35760405162461bcd60e51b81526004016109069061266e565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610b265760405162461bcd60e51b81526004016109069061266e565b6009805460ff60a01b19169055600e805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610b915760405162461bcd60e51b81526004016109069061266e565b80610c04576007546001600160a01b0390811690831603610c045760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610906565b6001600160a01b03919091165f908152601860205260409020805460ff1916911515919091179055565b6060600480546107e390612636565b6005546001600160a01b03163314610c675760405162461bcd60e51b81526004016109069061266e565b6007546001600160a01b0390811690831603610cd65760405162461bcd60e51b815260206004820152602860248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015267616d6d506169727360c01b6064820152608401610906565b610ce082826121be565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610d9c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610906565b610da9338585840361181a565b5060019392505050565b5f61087033848461193d565b6005546001600160a01b03163314610de95760405162461bcd60e51b81526004016109069061266e565b60138290556014819055610dfd81836126ed565b601281905560141015610e525760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610906565b5050565b6005546001600160a01b03163314610e805760405162461bcd60e51b81526004016109069061266e565b60108290556011819055610e9481836126ed565b600f81905560141015610e525760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610906565b6005546001600160a01b03163314610f135760405162461bcd60e51b81526004016109069061266e565b6001600160a01b0382165f81815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f9b5760405162461bcd60e51b81526004016109069061266e565b670de0b6b3a76400006103e8610fb060025490565b610fbb9060036126b7565b610fc591906126ce565b610fcf91906126ce565b8110156110335760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610906565b61104581670de0b6b3a76400006126b7565b600c8190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610a29565b6005546001600160a01b031633146110a45760405162461bcd60e51b81526004016109069061266e565b600954600160a81b900460ff16156110fe5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610906565b5f6064600f5461110d60025490565b61111791906126b7565b61112191906126ce565b61112a30610a6f565b6111349190612700565b6006546040805163f305d71960e01b8152306004820152602481018490525f6044820181905260648201523360848201524260a482015290519293506001600160a01b039091169163f305d71991479160c4808301926060929190829003018185885af11580156111a7573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111cc9190612713565b505060075460065460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015611221573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611245919061273e565b506009805461ffff60a81b191661010160a81b1790556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a150565b6005546001600160a01b031633146112b05760405162461bcd60e51b81526004016109069061266e565b620186a06112bd60025490565b6112c89060016126b7565b6112d291906126ce565b81101561133f5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610906565b6103e861134b60025490565b6113569060016126b7565b61136091906126ce565b8111156113cc5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610906565b600855565b6005546001600160a01b031633146113fb5760405162461bcd60e51b81526004016109069061266e565b670de0b6b3a76400006103e861141060025490565b61141b9060026126b7565b61142591906126ce565b61142f91906126ce565b8110156114915760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610906565b6114a381670de0b6b3a76400006126b7565b600b8190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610a29565b6005546001600160a01b031633146115025760405162461bcd60e51b81526004016109069061266e565b600954600160a81b900460ff16156115525760405162461bcd60e51b81526020600482015260136024820152721a5b9a5d08185b1c9958591e4818d85b1b1959606a1b6044820152606401610906565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556115889030905f1961181a565b60065f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115fc9190612759565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561165b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061167f9190612759565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156116c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116ed9190612759565b600780546001600160a01b0319166001600160a01b039290921691821790556117179060016121e7565b60075461172e906001600160a01b031660016121be565b565b6005546001600160a01b0316331461175a5760405162461bcd60e51b81526004016109069061266e565b6001600160a01b0381166117bf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610906565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661187c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610906565b6001600160a01b0382166118dd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610906565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61194784610a6f565b90506001600160a01b03841661196f5760405162461bcd60e51b815260040161090690612774565b6001600160a01b0383166119955760405162461bcd60e51b8152600401610906906127b9565b5f82116119e45760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610906565b6001600160a01b0384165f9081526017602052604090205460ff1680611a0a5750818110155b611a4f5760405162461bcd60e51b81526020600482015260166024820152752a3930b739b332b91037bb32b9103130b630b731b29760511b6044820152606401610906565b600954600160a81b900460ff16611ae2576001600160a01b0384165f9081526017602052604090205460ff1680611a9d57506001600160a01b0383165f9081526017602052604090205460ff165b611ae25760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610906565b600954600160a01b900460ff1615611edb576005546001600160a01b03858116911614801590611b2057506005546001600160a01b03848116911614155b8015611b3457506001600160a01b03831615155b8015611b4b57506001600160a01b03831661dead14155b8015611b6f57506001600160a01b0384165f9081526017602052604090205460ff16155b8015611b9357506001600160a01b0383165f9081526017602052604090205460ff16155b15611edb57600e5460ff1615611ca9576006546001600160a01b03848116911614801590611bcf57506007546001600160a01b03848116911614155b15611ca957611bdf600243612700565b325f908152600d6020526040902054108015611c1b5750611c01600243612700565b6001600160a01b0384165f908152600d6020526040902054105b611c855760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610906565b325f908152600d602052604080822043908190556001600160a01b03861683529120555b6001600160a01b0384165f9081526019602052604090205460ff168015611ce857506001600160a01b0383165f9081526018602052604090205460ff16155b15611db457600a54821115611d505760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610906565b600c54611d5c84610a6f565b611d6690846126ed565b1115611daf5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610906565b611edb565b6001600160a01b0383165f9081526019602052604090205460ff168015611df357506001600160a01b0384165f9081526018602052604090205460ff16155b15611e5d57600b54821115611daf5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610906565b6001600160a01b0383165f9081526018602052604090205460ff16611edb57600c54611e8884610a6f565b611e9290846126ed565b1115611edb5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610906565b5f611ee530610a6f565b60095490915081151590600160b01b900460ff168015611f1c57506001600160a01b0385165f9081526019602052604090205460ff165b8015611f325750600754600160a01b900460ff16155b8015611f5657506001600160a01b0386165f9081526017602052604090205460ff16155b8015611f7a57506001600160a01b0385165f9081526017602052604090205460ff16155b15611fe5576007805460ff60a01b1916600160a01b1790558015611fa057611fa0612249565b6009546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611fd6573d5f803e3d5ffd5b506007805460ff60a01b191690555b6001600160a01b0386165f908152601760205260408120546001919060ff168061202657506001600160a01b0387165f9081526017602052604090205460ff165b1561202f575f91505b81156121a9576001600160a01b0387165f9081526019602052604090205460ff16801561205d57505f601254115b156120e35760646012548761207291906126b7565b61207c91906126ce565b90506012546014548261208f91906126b7565b61209991906126ce565b60165f8282546120a991906126ed565b90915550506012546013546120be90836126b7565b6120c891906126ce565b60155f8282546120d891906126ed565b9091555061218c9050565b6001600160a01b0388165f9081526019602052604090205460ff16801561210b57505f600f54115b1561218c576064600f548761212091906126b7565b61212a91906126ce565b9050600f546011548261213d91906126b7565b61214791906126ce565b60165f82825461215791906126ed565b9091555050600f5460105461216c90836126b7565b61217691906126ce565b60155f82825461218691906126ed565b90915550505b6121968187612700565b955080156121a9576121a9883083612274565b6121b4888888612274565b5050505050505050565b6001600160a01b0382165f908152601960205260409020805460ff1916821515179055610ce082825b6001600160a01b0382165f81815260186020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b5f61225330610a6f565b9050805f0361225f5750565b61226881612352565b505f6016819055601555565b6001600160a01b03831661229a5760405162461bcd60e51b815260040161090690612774565b6001600160a01b0382166122c05760405162461bcd60e51b8152600401610906906127b9565b6001600160a01b038084165f9081526020819052604080822080548581039091559285168252812080548492906122f89084906126ed565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161234491815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612385576123856127fc565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156123dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124009190612759565b81600181518110612413576124136127fc565b6001600160a01b039283166020918202929092010152600654612439913091168461181a565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906124719085905f90869030904290600401612810565b5f604051808303815f87803b158015612488575f80fd5b505af115801561249a573d5f803e3d5ffd5b505050505050565b5f602080835283518060208501525f5b818110156124ce578581018301518582016040015282016124b2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612502575f80fd5b50565b5f8060408385031215612516575f80fd5b8235612521816124ee565b946020939093013593505050565b5f805f60608486031215612541575f80fd5b833561254c816124ee565b9250602084013561255c816124ee565b929592945050506040919091013590565b5f6020828403121561257d575f80fd5b5035919050565b5f60208284031215612594575f80fd5b813561259f816124ee565b9392505050565b8015158114612502575f80fd5b5f80604083850312156125c4575f80fd5b82356125cf816124ee565b915060208301356125df816125a6565b809150509250929050565b5f80604083850312156125fb575f80fd5b50508035926020909101359150565b5f806040838503121561261b575f80fd5b8235612626816124ee565b915060208301356125df816124ee565b600181811c9082168061264a57607f821691505b60208210810361266857634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610874576108746126a3565b5f826126e857634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610874576108746126a3565b81810381811115610874576108746126a3565b5f805f60608486031215612725575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561274e575f80fd5b815161259f816125a6565b5f60208284031215612769575f80fd5b815161259f816124ee565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156128605784516001600160a01b03168352938301939183019160010161283b565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220563b9bacc5c80523f85ab01926f7793a0aa072afad7ae2259b82998c2cf3d57464736f6c634300081600334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x608060405260043610610278575f3560e01c8063a0e47bf61161014a578063c876d0b9116100be578063e2f4560511610078578063e2f456051461074d578063eaecd70a14610762578063f11a24d314610776578063f2fde38b1461078b578063f6374342146107aa578063fb002c97146107bf575f80fd5b8063c876d0b914610689578063c9567bf9146106a2578063d257b34f146106b6578063d85ba063146106d5578063dc3f0d0f146106ea578063dd62ed3e14610709575f80fd5b8063aa4bde281161010f578063aa4bde28146105c9578063ac411c7a146105de578063b196873b146105fd578063bbc0c7421461062b578063c02466681461064b578063c18bc1951461066a575f80fd5b8063a0e47bf61461051f578063a457c2d71461053e578063a72905a21461055d578063a9059cbb1461058b578063a98ceb8a146105aa575f80fd5b80635a139dd4116101ec578063751039fc116101a6578063751039fc146104875780637571336a1461049b57806388e765ff146104ba5780638da5cb5b146104cf57806395d89b41146104ec5780639a7a23d614610500575f80fd5b80635a139dd4146103f557806366d602ae1461040a5780636a486a8e1461041f5780636ddd17131461043457806370a0823114610454578063715018a614610473575f80fd5b80632be32b611161023d5780632be32b611461032e578063313ce5671461034f57806332972e461461036a57806339509351146103a15780634a62bb65146103c05780634f77f6c0146103e0575f80fd5b806306fdde0314610283578063095ea7b3146102ad57806318160ddd146102dc5780631a8145bb146102fa57806323b872dd1461030f575f80fd5b3661027f57005b5f80fd5b34801561028e575f80fd5b506102976107d4565b6040516102a491906124a2565b60405180910390f35b3480156102b8575f80fd5b506102cc6102c7366004612505565b610864565b60405190151581526020016102a4565b3480156102e7575f80fd5b506002545b6040519081526020016102a4565b348015610305575f80fd5b506102ec60165481565b34801561031a575f80fd5b506102cc61032936600461252f565b61087a565b348015610339575f80fd5b5061034d61034836600461256d565b610927565b005b34801561035a575f80fd5b50604051601281526020016102a4565b348015610375575f80fd5b50600754610389906001600160a01b031681565b6040516001600160a01b0390911681526020016102a4565b3480156103ac575f80fd5b506102cc6103bb366004612505565b610a34565b3480156103cb575f80fd5b506009546102cc90600160a01b900460ff1681565b3480156103eb575f80fd5b506102ec60135481565b348015610400575f80fd5b506102ec60105481565b348015610415575f80fd5b506102ec600b5481565b34801561042a575f80fd5b506102ec60125481565b34801561043f575f80fd5b506009546102cc90600160b01b900460ff1681565b34801561045f575f80fd5b506102ec61046e366004612584565b610a6f565b34801561047e575f80fd5b5061034d610a89565b348015610492575f80fd5b5061034d610afc565b3480156104a6575f80fd5b5061034d6104b53660046125b3565b610b67565b3480156104c5575f80fd5b506102ec600a5481565b3480156104da575f80fd5b506005546001600160a01b0316610389565b3480156104f7575f80fd5b50610297610c2e565b34801561050b575f80fd5b5061034d61051a3660046125b3565b610c3d565b34801561052a575f80fd5b50600654610389906001600160a01b031681565b348015610549575f80fd5b506102cc610558366004612505565b610d1b565b348015610568575f80fd5b506102cc610577366004612584565b60196020525f908152604090205460ff1681565b348015610596575f80fd5b506102cc6105a5366004612505565b610db3565b3480156105b5575f80fd5b5061034d6105c43660046125ea565b610dbf565b3480156105d4575f80fd5b506102ec600c5481565b3480156105e9575f80fd5b5061034d6105f83660046125ea565b610e56565b348015610608575f80fd5b506102cc610617366004612584565b60186020525f908152604090205460ff1681565b348015610636575f80fd5b506009546102cc90600160a81b900460ff1681565b348015610656575f80fd5b5061034d6106653660046125b3565b610ee9565b348015610675575f80fd5b5061034d61068436600461256d565b610f71565b348015610694575f80fd5b50600e546102cc9060ff1681565b3480156106ad575f80fd5b5061034d61107a565b3480156106c1575f80fd5b5061034d6106d036600461256d565b611286565b3480156106e0575f80fd5b506102ec600f5481565b3480156106f5575f80fd5b5061034d61070436600461256d565b6113d1565b348015610714575f80fd5b506102ec61072336600461260a565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610758575f80fd5b506102ec60085481565b34801561076d575f80fd5b5061034d6114d8565b348015610781575f80fd5b506102ec60115481565b348015610796575f80fd5b5061034d6107a5366004612584565b611730565b3480156107b5575f80fd5b506102ec60145481565b3480156107ca575f80fd5b506102ec60155481565b6060600380546107e390612636565b80601f016020809104026020016040519081016040528092919081815260200182805461080f90612636565b801561085a5780601f106108315761010080835404028352916020019161085a565b820191905f5260205f20905b81548152906001019060200180831161083d57829003601f168201915b5050505050905090565b5f61087033848461181a565b5060015b92915050565b5f61088684848461193d565b6001600160a01b0384165f9081526001602090815260408083203384529091529020548281101561090f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61091c853385840361181a565b506001949350505050565b6005546001600160a01b031633146109515760405162461bcd60e51b81526004016109069061266e565b670de0b6b3a76400006103e861096660025490565b6109719060026126b7565b61097b91906126ce565b61098591906126ce565b8110156109e65760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610906565b6109f881670de0b6b3a76400006126b7565b600a8190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610870918590610a6a9086906126ed565b61181a565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610ab35760405162461bcd60e51b81526004016109069061266e565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610b265760405162461bcd60e51b81526004016109069061266e565b6009805460ff60a01b19169055600e805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610b915760405162461bcd60e51b81526004016109069061266e565b80610c04576007546001600160a01b0390811690831603610c045760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610906565b6001600160a01b03919091165f908152601860205260409020805460ff1916911515919091179055565b6060600480546107e390612636565b6005546001600160a01b03163314610c675760405162461bcd60e51b81526004016109069061266e565b6007546001600160a01b0390811690831603610cd65760405162461bcd60e51b815260206004820152602860248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015267616d6d506169727360c01b6064820152608401610906565b610ce082826121be565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610d9c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610906565b610da9338585840361181a565b5060019392505050565b5f61087033848461193d565b6005546001600160a01b03163314610de95760405162461bcd60e51b81526004016109069061266e565b60138290556014819055610dfd81836126ed565b601281905560141015610e525760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610906565b5050565b6005546001600160a01b03163314610e805760405162461bcd60e51b81526004016109069061266e565b60108290556011819055610e9481836126ed565b600f81905560141015610e525760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610906565b6005546001600160a01b03163314610f135760405162461bcd60e51b81526004016109069061266e565b6001600160a01b0382165f81815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f9b5760405162461bcd60e51b81526004016109069061266e565b670de0b6b3a76400006103e8610fb060025490565b610fbb9060036126b7565b610fc591906126ce565b610fcf91906126ce565b8110156110335760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610906565b61104581670de0b6b3a76400006126b7565b600c8190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610a29565b6005546001600160a01b031633146110a45760405162461bcd60e51b81526004016109069061266e565b600954600160a81b900460ff16156110fe5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610906565b5f6064600f5461110d60025490565b61111791906126b7565b61112191906126ce565b61112a30610a6f565b6111349190612700565b6006546040805163f305d71960e01b8152306004820152602481018490525f6044820181905260648201523360848201524260a482015290519293506001600160a01b039091169163f305d71991479160c4808301926060929190829003018185885af11580156111a7573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111cc9190612713565b505060075460065460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015611221573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611245919061273e565b506009805461ffff60a81b191661010160a81b1790556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a150565b6005546001600160a01b031633146112b05760405162461bcd60e51b81526004016109069061266e565b620186a06112bd60025490565b6112c89060016126b7565b6112d291906126ce565b81101561133f5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610906565b6103e861134b60025490565b6113569060016126b7565b61136091906126ce565b8111156113cc5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610906565b600855565b6005546001600160a01b031633146113fb5760405162461bcd60e51b81526004016109069061266e565b670de0b6b3a76400006103e861141060025490565b61141b9060026126b7565b61142591906126ce565b61142f91906126ce565b8110156114915760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610906565b6114a381670de0b6b3a76400006126b7565b600b8190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610a29565b6005546001600160a01b031633146115025760405162461bcd60e51b81526004016109069061266e565b600954600160a81b900460ff16156115525760405162461bcd60e51b81526020600482015260136024820152721a5b9a5d08185b1c9958591e4818d85b1b1959606a1b6044820152606401610906565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556115889030905f1961181a565b60065f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115fc9190612759565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561165b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061167f9190612759565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156116c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116ed9190612759565b600780546001600160a01b0319166001600160a01b039290921691821790556117179060016121e7565b60075461172e906001600160a01b031660016121be565b565b6005546001600160a01b0316331461175a5760405162461bcd60e51b81526004016109069061266e565b6001600160a01b0381166117bf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610906565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661187c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610906565b6001600160a01b0382166118dd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610906565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61194784610a6f565b90506001600160a01b03841661196f5760405162461bcd60e51b815260040161090690612774565b6001600160a01b0383166119955760405162461bcd60e51b8152600401610906906127b9565b5f82116119e45760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610906565b6001600160a01b0384165f9081526017602052604090205460ff1680611a0a5750818110155b611a4f5760405162461bcd60e51b81526020600482015260166024820152752a3930b739b332b91037bb32b9103130b630b731b29760511b6044820152606401610906565b600954600160a81b900460ff16611ae2576001600160a01b0384165f9081526017602052604090205460ff1680611a9d57506001600160a01b0383165f9081526017602052604090205460ff165b611ae25760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610906565b600954600160a01b900460ff1615611edb576005546001600160a01b03858116911614801590611b2057506005546001600160a01b03848116911614155b8015611b3457506001600160a01b03831615155b8015611b4b57506001600160a01b03831661dead14155b8015611b6f57506001600160a01b0384165f9081526017602052604090205460ff16155b8015611b9357506001600160a01b0383165f9081526017602052604090205460ff16155b15611edb57600e5460ff1615611ca9576006546001600160a01b03848116911614801590611bcf57506007546001600160a01b03848116911614155b15611ca957611bdf600243612700565b325f908152600d6020526040902054108015611c1b5750611c01600243612700565b6001600160a01b0384165f908152600d6020526040902054105b611c855760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610906565b325f908152600d602052604080822043908190556001600160a01b03861683529120555b6001600160a01b0384165f9081526019602052604090205460ff168015611ce857506001600160a01b0383165f9081526018602052604090205460ff16155b15611db457600a54821115611d505760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610906565b600c54611d5c84610a6f565b611d6690846126ed565b1115611daf5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610906565b611edb565b6001600160a01b0383165f9081526019602052604090205460ff168015611df357506001600160a01b0384165f9081526018602052604090205460ff16155b15611e5d57600b54821115611daf5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610906565b6001600160a01b0383165f9081526018602052604090205460ff16611edb57600c54611e8884610a6f565b611e9290846126ed565b1115611edb5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610906565b5f611ee530610a6f565b60095490915081151590600160b01b900460ff168015611f1c57506001600160a01b0385165f9081526019602052604090205460ff165b8015611f325750600754600160a01b900460ff16155b8015611f5657506001600160a01b0386165f9081526017602052604090205460ff16155b8015611f7a57506001600160a01b0385165f9081526017602052604090205460ff16155b15611fe5576007805460ff60a01b1916600160a01b1790558015611fa057611fa0612249565b6009546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611fd6573d5f803e3d5ffd5b506007805460ff60a01b191690555b6001600160a01b0386165f908152601760205260408120546001919060ff168061202657506001600160a01b0387165f9081526017602052604090205460ff165b1561202f575f91505b81156121a9576001600160a01b0387165f9081526019602052604090205460ff16801561205d57505f601254115b156120e35760646012548761207291906126b7565b61207c91906126ce565b90506012546014548261208f91906126b7565b61209991906126ce565b60165f8282546120a991906126ed565b90915550506012546013546120be90836126b7565b6120c891906126ce565b60155f8282546120d891906126ed565b9091555061218c9050565b6001600160a01b0388165f9081526019602052604090205460ff16801561210b57505f600f54115b1561218c576064600f548761212091906126b7565b61212a91906126ce565b9050600f546011548261213d91906126b7565b61214791906126ce565b60165f82825461215791906126ed565b9091555050600f5460105461216c90836126b7565b61217691906126ce565b60155f82825461218691906126ed565b90915550505b6121968187612700565b955080156121a9576121a9883083612274565b6121b4888888612274565b5050505050505050565b6001600160a01b0382165f908152601960205260409020805460ff1916821515179055610ce082825b6001600160a01b0382165f81815260186020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b5f61225330610a6f565b9050805f0361225f5750565b61226881612352565b505f6016819055601555565b6001600160a01b03831661229a5760405162461bcd60e51b815260040161090690612774565b6001600160a01b0382166122c05760405162461bcd60e51b8152600401610906906127b9565b6001600160a01b038084165f9081526020819052604080822080548581039091559285168252812080548492906122f89084906126ed565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161234491815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612385576123856127fc565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156123dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124009190612759565b81600181518110612413576124136127fc565b6001600160a01b039283166020918202929092010152600654612439913091168461181a565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906124719085905f90869030904290600401612810565b5f604051808303815f87803b158015612488575f80fd5b505af115801561249a573d5f803e3d5ffd5b505050505050565b5f602080835283518060208501525f5b818110156124ce578581018301518582016040015282016124b2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612502575f80fd5b50565b5f8060408385031215612516575f80fd5b8235612521816124ee565b946020939093013593505050565b5f805f60608486031215612541575f80fd5b833561254c816124ee565b9250602084013561255c816124ee565b929592945050506040919091013590565b5f6020828403121561257d575f80fd5b5035919050565b5f60208284031215612594575f80fd5b813561259f816124ee565b9392505050565b8015158114612502575f80fd5b5f80604083850312156125c4575f80fd5b82356125cf816124ee565b915060208301356125df816125a6565b809150509250929050565b5f80604083850312156125fb575f80fd5b50508035926020909101359150565b5f806040838503121561261b575f80fd5b8235612626816124ee565b915060208301356125df816124ee565b600181811c9082168061264a57607f821691505b60208210810361266857634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610874576108746126a3565b5f826126e857634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610874576108746126a3565b81810381811115610874576108746126a3565b5f805f60608486031215612725575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561274e575f80fd5b815161259f816125a6565b5f60208284031215612769575f80fd5b815161259f816124ee565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156128605784516001600160a01b03168352938301939183019160010161283b565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220563b9bacc5c80523f85ab01926f7793a0aa072afad7ae2259b82998c2cf3d57464736f6c63430008160033

Deployed Bytecode Sourcemap

9946:13204:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6198:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7178:194;;;;;;;;;;-1:-1:-1;7178:194:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7178:194:0;1023:187:1;6519:108:0;;;;;;;;;;-1:-1:-1;6607:12:0;;6519:108;;;1361:25:1;;;1349:2;1334:18;6519:108:0;1215:177:1;10876:33:0;;;;;;;;;;;;;;;;7380:529;;;;;;;;;;-1:-1:-1;7380:529:0;;;;;:::i;:::-;;:::i;18215:312::-;;;;;;;;;;-1:-1:-1;18215:312:0;;;;;:::i;:::-;;:::i;:::-;;6418:93;;;;;;;;;;-1:-1:-1;6418:93:0;;6501:2;2185:36:1;;2173:2;2158:18;6418:93:0;2043:184:1;10021:22:0;;;;;;;;;;-1:-1:-1;10021:22:0;;;;-1:-1:-1;;;;;10021:22:0;;;;;;-1:-1:-1;;;;;2396:32:1;;;2378:51;;2366:2;2351:18;10021:22:0;2232:203:1;7917:290:0;;;;;;;;;;-1:-1:-1;7917:290:0;;;;;:::i;:::-;;:::i;10155:33::-;;;;;;;;;;-1:-1:-1;10155:33:0;;;;-1:-1:-1;;;10155:33:0;;;;;;10756:32;;;;;;;;;;;;;;;;10644:31;;;;;;;;;;;;;;;;10309:28;;;;;;;;;;;;;;;;10721;;;;;;;;;;;;;;;;10235:31;;;;;;;;;;-1:-1:-1;10235:31:0;;;;-1:-1:-1;;;10235:31:0;;;;;;6635:143;;;;;;;;;;-1:-1:-1;6635:143:0;;;;;:::i;:::-;;:::i;4465:150::-;;;;;;;;;;;;;:::i;18053:154::-;;;;;;;;;;;;;:::i;19918:322::-;;;;;;;;;;-1:-1:-1;19918:322:0;;;;;:::i;:::-;;:::i;10275:27::-;;;;;;;;;;;;;;;;4251:79;;;;;;;;;;-1:-1:-1;4316:6:0;;-1:-1:-1;;;;;4316:6:0;4251:79;;6306:104;;;;;;;;;;;;;:::i;20248:341::-;;;;;;;;;;-1:-1:-1;20248:341:0;;;;;:::i;:::-;;:::i;9985:29::-;;;;;;;;;;-1:-1:-1;9985:29:0;;;;-1:-1:-1;;;;;9985:29:0;;;8215:475;;;;;;;;;;-1:-1:-1;8215:475:0;;;;;:::i;:::-;;:::i;11697:40::-;;;;;;;;;;-1:-1:-1;11697:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6786:200;;;;;;;;;;-1:-1:-1;6786:200:0;;;;;:::i;:::-;;:::i;21745:346::-;;;;;;;;;;-1:-1:-1;21745:346:0;;;;;:::i;:::-;;:::i;10344:30::-;;;;;;;;;;;;;;;;21398:339;;;;;;;;;;-1:-1:-1;21398:339:0;;;;;:::i;:::-;;:::i;11491:48::-;;;;;;;;;;-1:-1:-1;11491:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10195:33;;;;;;;;;;-1:-1:-1;10195:33:0;;;;-1:-1:-1;;;10195:33:0;;;;;;22099:178;;;;;;;;;;-1:-1:-1;22099:178:0;;;;;:::i;:::-;;:::i;18860:327::-;;;;;;;;;;-1:-1:-1;18860:327:0;;;;;:::i;:::-;;:::i;10561:40::-;;;;;;;;;;-1:-1:-1;10561:40:0;;;;;;;;17446:599;;;;;;;;;;;;;:::i;19257:428::-;;;;;;;;;;-1:-1:-1;19257:428:0;;;;;:::i;:::-;;:::i;10610:27::-;;;;;;;;;;;;;;;;18535:317;;;;;;;;;;-1:-1:-1;18535:317:0;;;;;:::i;:::-;;:::i;6994:176::-;;;;;;;;;;-1:-1:-1;6994:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;7135:18:0;;;7108:7;7135:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6994:176;10080:33;;;;;;;;;;;;;;;;20828:525;;;;;;;;;;;;;:::i;10682:30::-;;;;;;;;;;;;;;;;4623:281;;;;;;;;;;-1:-1:-1;4623:281:0;;;;;:::i;:::-;;:::i;10795:31::-;;;;;;;;;;;;;;;;10835:34;;;;;;;;;;;;;;;;6198:100;6252:13;6285:5;6278:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6198:100;:::o;7178:194::-;7286:4;7303:39;3639:10;7326:7;7335:6;7303:8;:39::i;:::-;-1:-1:-1;7360:4:0;7178:194;;;;;:::o;7380:529::-;7520:4;7537:36;7547:6;7555:9;7566:6;7537:9;:36::i;:::-;-1:-1:-1;;;;;7613:19:0;;7586:24;7613:19;;;:11;:19;;;;;;;;3639:10;7613:33;;;;;;;;7679:26;;;;7657:116;;;;-1:-1:-1;;;7657:116:0;;4663:2:1;7657:116:0;;;4645:21:1;4702:2;4682:18;;;4675:30;4741:34;4721:18;;;4714:62;-1:-1:-1;;;4792:18:1;;;4785:38;4840:19;;7657:116:0;;;;;;;;;7809:57;7818:6;3639:10;7859:6;7840:16;:25;7809:8;:57::i;:::-;-1:-1:-1;7897:4:0;;7380:529;-1:-1:-1;;;;7380:529:0:o;18215:312::-;4378:6;;-1:-1:-1;;;;;4378:6:0;3639:10;4378:22;4370:67;;;;-1:-1:-1;;;4370:67:0;;;;;;;:::i;:::-;18352:4:::1;18344;18323:13;6607:12:::0;;;6519:108;18323:13:::1;:17;::::0;18339:1:::1;18323:17;:::i;:::-;18322:26;;;;:::i;:::-;18321:35;;;;:::i;:::-;18311:6;:45;;18289:136;;;::::0;-1:-1:-1;;;18289:136:0;;5960:2:1;18289:136:0::1;::::0;::::1;5942:21:1::0;5999:2;5979:18;;;5972:30;6038:34;6018:18;;;6011:62;-1:-1:-1;;;6089:18:1;;;6082:39;6138:19;;18289:136:0::1;5758:405:1::0;18289:136:0::1;18451:19;:6:::0;18461:8:::1;18451:19;:::i;:::-;18436:12;:34:::0;;;18486:33:::1;::::0;1361:25:1;;;18486:33:0::1;::::0;1349:2:1;1334:18;18486:33:0::1;;;;;;;;18215:312:::0;:::o;7917:290::-;3639:10;8030:4;8119:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8119:34:0;;;;;;;;;;8030:4;;8047:130;;8097:7;;8119:47;;8156:10;;8119:47;:::i;:::-;8047:8;:130::i;6635:143::-;-1:-1:-1;;;;;6752:18:0;6725:7;6752:18;;;;;;;;;;;;6635:143::o;4465:150::-;4378:6;;-1:-1:-1;;;;;4378:6:0;3639:10;4378:22;4370:67;;;;-1:-1:-1;;;4370:67:0;;;;;;;:::i;:::-;4558:6:::1;::::0;4537:40:::1;::::0;4574:1:::1;::::0;-1:-1:-1;;;;;4558:6:0::1;::::0;4537:40:::1;::::0;4574:1;;4537:40:::1;4588:6;:19:::0;;-1:-1:-1;;;;;;4588:19:0::1;::::0;;4465:150::o;18053:154::-;4378:6;;-1:-1:-1;;;;;4378:6:0;3639:10;4378:22;4370:67;;;;-1:-1:-1;;;4370:67:0;;;;;;;:::i;:::-;18107:14:::1;:22:::0;;-1:-1:-1;;;;18107:22:0::1;::::0;;18140:20:::1;:28:::0;;-1:-1:-1;;18140:28:0::1;::::0;;18184:15:::1;::::0;::::1;::::0;18124:5:::1;::::0;18184:15:::1;18053:154::o:0;19918:322::-;4378:6;;-1:-1:-1;;;;;4378:6:0;3639:10;4378:22;4370:67;;;;-1:-1:-1;;;4370:67:0;;;;;;;:::i;:::-;20040:4:::1;20035:156;;20097:7;::::0;-1:-1:-1;;;;;20097:7:0;;::::1;20087:17:::0;;::::1;::::0;20061:118:::1;;;::::0;-1:-1:-1;;;20061:118:0;;6500:2:1;20061:118:0::1;::::0;::::1;6482:21:1::0;6539:2;6519:18;;;6512:30;6578:34;6558:18;;;6551:62;-1:-1:-1;;;6629:18:1;;;6622:37;6676:19;;20061:118:0::1;6298:403:1::0;20061:118:0::1;-1:-1:-1::0;;;;;20201:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:31;;-1:-1:-1;;20201:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19918:322::o;6306:104::-;6362:13;6395:7;6388:14;;;;;:::i;20248:341::-;4378:6;;-1:-1:-1;;;;;4378:6:0;3639:10;4378:22;4370:67;;;;-1:-1:-1;;;4370:67:0;;;;;;;:::i;:::-;20396:7:::1;::::0;-1:-1:-1;;;;;20396:7:0;;::::1;20388:15:::0;;::::1;::::0;20366:105:::1;;;::::0;-1:-1:-1;;;20366:105:0;;6908:2:1;20366:105:0::1;::::0;::::1;6890:21:1::0;6947:2;6927:18;;;6920:30;6986:34;6966:18;;;6959:62;-1:-1:-1;;;7037:18:1;;;7030:38;7085:19;;20366:105:0::1;6706:404:1::0;20366:105:0::1;20484:41;20513:4;20519:5;20484:28;:41::i;:::-;20541:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;20541:40:0;::::1;::::0;::::1;::::0;;;::::1;20248:341:::0;;:::o;8215:475::-;3639:10;8333:4;8377:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8377:34:0;;;;;;;;;;8444:35;;;;8422:122;;;;-1:-1:-1;;;8422:122:0;;7317:2:1;8422:122:0;;;7299:21:1;7356:2;7336:18;;;7329:30;7395:34;7375:18;;;7368:62;-1:-1:-1;;;7446:18:1;;;7439:35;7491:19;;8422:122:0;7115:401:1;8422:122:0;8580:67;3639:10;8603:7;8631:15;8612:16;:34;8580:8;:67::i;:::-;-1:-1:-1;8678:4:0;;8215:475;-1:-1:-1;;;8215:475:0:o;6786:200::-;6897:4;6914:42;3639:10;6938:9;6949:6;6914:9;:42::i;21745:346::-;4378:6;;-1:-1:-1;;;;;4378:6:0;3639:10;4378:22;4370:67;;;;-1:-1:-1;;;4370:67:0;;;;;;;:::i;:::-;21871:17:::1;:34:::0;;;21916:16:::1;:32:::0;;;21975:36:::1;21935:13:::0;21891:14;21975:36:::1;:::i;:::-;21959:13;:52:::0;;;22047:2:::1;-1:-1:-1::0;22030:19:0::1;22022:61;;;::::0;-1:-1:-1;;;22022:61:0;;7723:2:1;22022:61:0::1;::::0;::::1;7705:21:1::0;7762:2;7742:18;;;7735:30;7801:31;7781:18;;;7774:59;7850:18;;22022:61:0::1;7521:353:1::0;22022:61:0::1;21745:346:::0;;:::o;21398:339::-;4378:6;;-1:-1:-1;;;;;4378:6:0;3639:10;4378:22;4370:67;;;;-1:-1:-1;;;4370:67:0;;;;;;;:::i;:::-;21523:16:::1;:33:::0;;;21567:15:::1;:31:::0;;;21624:34:::1;21585:13:::0;21542:14;21624:34:::1;:::i;:::-;21609:12;:49:::0;;;21693:2:::1;-1:-1:-1::0;21677:18:0::1;21669:60;;;::::0;-1:-1:-1;;;21669:60:0;;7723:2:1;21669:60:0::1;::::0;::::1;7705:21:1::0;7762:2;7742:18;;;7735:30;7801:31;7781:18;;;7774:59;7850:18;;21669:60:0::1;7521:353:1::0;22099:178:0;4378:6;;-1:-1:-1;;;;;4378:6:0;3639:10;4378:22;4370:67;;;;-1:-1:-1;;;4370:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22184:24:0;::::1;;::::0;;;:15:::1;:24;::::0;;;;;;;;:35;;-1:-1:-1;;22184:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;22235:34;;1163:41:1;;;22235:34:0::1;::::0;1136:18:1;22235:34:0::1;;;;;;;22099:178:::0;;:::o;18860:327::-;4378:6;;-1:-1:-1;;;;;4378:6:0;3639:10;4378:22;4370:67;;;;-1:-1:-1;;;4370:67:0;;;;;;;:::i;:::-;19000:4:::1;18992;18971:13;6607:12:::0;;;6519:108;18971:13:::1;:17;::::0;18987:1:::1;18971:17;:::i;:::-;18970:26;;;;:::i;:::-;18969:35;;;;:::i;:::-;18959:6;:45;;18937:139;;;::::0;-1:-1:-1;;;18937:139:0;;8081:2:1;18937:139:0::1;::::0;::::1;8063:21:1::0;8120:2;8100:18;;;8093:30;8159:34;8139:18;;;8132:62;-1:-1:-1;;;8210:18:1;;;8203:42;8262:19;;18937:139:0::1;7879:408:1::0;18937:139:0::1;19105:19;:6:::0;19115:8:::1;19105:19;:::i;:::-;19087:15;:37:::0;;;19140:39:::1;::::0;1361:25:1;;;19140:39:0::1;::::0;1349:2:1;1334:18;19140:39:0::1;1215:177:1::0;17446:599:0;4378:6;;-1:-1:-1;;;;;4378:6:0;3639:10;4378:22;4370:67;;;;-1:-1:-1;;;4370:67:0;;;;;;;:::i;:::-;17508:13:::1;::::0;-1:-1:-1;;;17508:13:0;::::1;;;17507:14;17499:50;;;::::0;-1:-1:-1;;;17499:50:0;;8494:2:1;17499:50:0::1;::::0;::::1;8476:21:1::0;8533:2;8513:18;;;8506:30;8572:25;8552:18;;;8545:53;8615:18;;17499:50:0::1;8292:347:1::0;17499:50:0::1;17562:19;17644:3;17628:12;;17612:13;6607:12:::0;;;6519:108;17612:13:::1;:28;;;;:::i;:::-;17611:36;;;;:::i;:::-;17584:24;17602:4;17584:9;:24::i;:::-;:63;;;;:::i;:::-;17660:9;::::0;:209:::1;::::0;;-1:-1:-1;;;17660:209:0;;17738:4:::1;17660:209;::::0;::::1;9118:34:1::0;9168:18;;;9161:34;;;17660:9:0::1;9211:18:1::0;;;9204:34;;;9254:18;;;9247:34;3639:10:0;9297:19:1;;;9290:44;17843:15:0::1;9350:19:1::0;;;9343:35;17660:209:0;;17562:85;;-1:-1:-1;;;;;;17660:9:0;;::::1;::::0;:25:::1;::::0;17693:21:::1;::::0;9052:19:1;;;;;17660:209:0::1;::::0;;;;;;;;17693:21;17660:9;:209:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;17889:7:0::1;::::0;17914:9:::1;::::0;17882:59:::1;::::0;-1:-1:-1;;;17882:59:0;;-1:-1:-1;;;;;17914:9:0;;::::1;17882:59;::::0;::::1;9874:51:1::0;-1:-1:-1;;9941:18:1;;;9934:34;17889:7:0;::::1;::::0;-1:-1:-1;17882:23:0::1;::::0;9847:18:1;;17882:59:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;17954:13:0::1;:20:::0;;-1:-1:-1;;;;17985:18:0;-1:-1:-1;;;17985:18:0;;;18021:16:::1;::::0;::::1;::::0;-1:-1:-1;;18021:16:0::1;17488:557;17446:599::o:0;19257:428::-;4378:6;;-1:-1:-1;;;;;4378:6:0;3639:10;4378:22;4370:67;;;;-1:-1:-1;;;4370:67:0;;;;;;;:::i;:::-;19397:6:::1;19376:13;6607:12:::0;;;6519:108;19376:13:::1;:17;::::0;19392:1:::1;19376:17;:::i;:::-;19375:28;;;;:::i;:::-;19362:9;:41;;19340:144;;;::::0;-1:-1:-1;;;19340:144:0;;10431:2:1;19340:144:0::1;::::0;::::1;10413:21:1::0;10470:2;10450:18;;;10443:30;10509:34;10489:18;;;10482:62;-1:-1:-1;;;10560:18:1;;;10553:51;10621:19;;19340:144:0::1;10229:417:1::0;19340:144:0::1;19552:4;19531:13;6607:12:::0;;;6519:108;19531:13:::1;:17;::::0;19547:1:::1;19531:17;:::i;:::-;19530:26;;;;:::i;:::-;19517:9;:39;;19495:141;;;::::0;-1:-1:-1;;;19495:141:0;;10853:2:1;19495:141:0::1;::::0;::::1;10835:21:1::0;10892:2;10872:18;;;10865:30;10931:34;10911:18;;;10904:62;-1:-1:-1;;;10982:18:1;;;10975:50;11042:19;;19495:141:0::1;10651:416:1::0;19495:141:0::1;19647:18;:30:::0;19257:428::o;18535:317::-;4378:6;;-1:-1:-1;;;;;4378:6:0;3639:10;4378:22;4370:67;;;;-1:-1:-1;;;4370:67:0;;;;;;;:::i;:::-;18673:4:::1;18665;18644:13;6607:12:::0;;;6519:108;18644:13:::1;:17;::::0;18660:1:::1;18644:17;:::i;:::-;18643:26;;;;:::i;:::-;18642:35;;;;:::i;:::-;18632:6;:45;;18610:137;;;::::0;-1:-1:-1;;;18610:137:0;;11274:2:1;18610:137:0::1;::::0;::::1;11256:21:1::0;11313:2;11293:18;;;11286:30;11352:34;11332:18;;;11325:62;-1:-1:-1;;;11403:18:1;;;11396:40;11453:19;;18610:137:0::1;11072:406:1::0;18610:137:0::1;18774:19;:6:::0;18784:8:::1;18774:19;:::i;:::-;18758:13;:35:::0;;;18809::::1;::::0;1361:25:1;;;18809:35:0::1;::::0;1349:2:1;1334:18;18809:35:0::1;1215:177:1::0;20828:525:0;4378:6;;-1:-1:-1;;;;;4378:6:0;3639:10;4378:22;4370:67;;;;-1:-1:-1;;;4370:67:0;;;;;;;:::i;:::-;20888:13:::1;::::0;-1:-1:-1;;;20888:13:0;::::1;;;20887:14;20879:46;;;::::0;-1:-1:-1;;;20879:46:0;;11685:2:1;20879:46:0::1;::::0;::::1;11667:21:1::0;11724:2;11704:18;;;11697:30;-1:-1:-1;;;11743:18:1;;;11736:49;11802:18;;20879:46:0::1;11483:343:1::0;20879:46:0::1;20946:9;:68:::0;;-1:-1:-1;;;;;;20946:68:0::1;20971:42;20946:68:::0;;::::1;::::0;;;21027:56:::1;::::0;21044:4:::1;::::0;-1:-1:-1;;21027:8:0::1;:56::i;:::-;21118:9;;;;;;;;;-1:-1:-1::0;;;;;21118:9:0::1;-1:-1:-1::0;;;;;21118:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21106:43:0::1;;21172:4;21192:9;;;;;;;;;-1:-1:-1::0;;;;;21192:9:0::1;-1:-1:-1::0;;;;;21192:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21106:113;::::0;-1:-1:-1;;;;;;21106:113:0::1;::::0;;;;;;-1:-1:-1;;;;;12317:15:1;;;21106:113:0::1;::::0;::::1;12299:34:1::0;12369:15;;12349:18;;;12342:43;12234:18;;21106:113:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21096:7;:123:::0;;-1:-1:-1;;;;;;21096:123:0::1;-1:-1:-1::0;;;;;21096:123:0;;;::::1;::::0;;::::1;::::0;;21232:50:::1;::::0;-1:-1:-1;21232:26:0::1;:50::i;:::-;21330:7;::::0;21293:52:::1;::::0;-1:-1:-1;;;;;21330:7:0::1;::::0;21293:28:::1;:52::i;:::-;20828:525::o:0;4623:281::-;4378:6;;-1:-1:-1;;;;;4378:6:0;3639:10;4378:22;4370:67;;;;-1:-1:-1;;;4370:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4726:22:0;::::1;4704:110;;;::::0;-1:-1:-1;;;4704:110:0;;12598:2:1;4704:110:0::1;::::0;::::1;12580:21:1::0;12637:2;12617:18;;;12610:30;12676:34;12656:18;;;12649:62;-1:-1:-1;;;12727:18:1;;;12720:36;12773:19;;4704:110:0::1;12396:402:1::0;4704:110:0::1;4851:6;::::0;4830:38:::1;::::0;-1:-1:-1;;;;;4830:38:0;;::::1;::::0;4851:6:::1;::::0;4830:38:::1;::::0;4851:6:::1;::::0;4830:38:::1;4879:6;:17:::0;;-1:-1:-1;;;;;;4879:17:0::1;-1:-1:-1::0;;;;;4879:17:0;;;::::1;::::0;;;::::1;::::0;;4623:281::o;9559:380::-;-1:-1:-1;;;;;9695:19:0;;9687:68;;;;-1:-1:-1;;;9687:68:0;;13005:2:1;9687:68:0;;;12987:21:1;13044:2;13024:18;;;13017:30;13083:34;13063:18;;;13056:62;-1:-1:-1;;;13134:18:1;;;13127:34;13178:19;;9687:68:0;12803:400:1;9687:68:0;-1:-1:-1;;;;;9774:21:0;;9766:68;;;;-1:-1:-1;;;9766:68:0;;13410:2:1;9766:68:0;;;13392:21:1;13449:2;13429:18;;;13422:30;13488:34;13468:18;;;13461:62;-1:-1:-1;;;13539:18:1;;;13532:32;13581:19;;9766:68:0;13208:398:1;9766:68:0;-1:-1:-1;;;;;9847:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9899:32;;1361:25:1;;;9899:32:0;;1334:18:1;9899:32:0;;;;;;;9559:380;;;:::o;12865:4573::-;12989:20;13012:15;13022:4;13012:9;:15::i;:::-;12989:38;-1:-1:-1;;;;;;13046:18:0;;13038:68;;;;-1:-1:-1;;;13038:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13125:16:0;;13117:64;;;;-1:-1:-1;;;13117:64:0;;;;;;;:::i;:::-;13209:1;13200:6;:10;13192:52;;;;-1:-1:-1;;;13192:52:0;;14623:2:1;13192:52:0;;;14605:21:1;14662:2;14642:18;;;14635:30;14701:31;14681:18;;;14674:59;14750:18;;13192:52:0;14421:353:1;13192:52:0;-1:-1:-1;;;;;13263:21:0;;;;;;:15;:21;;;;;;;;;:47;;;13304:6;13288:12;:22;;13263:47;13255:82;;;;-1:-1:-1;;;13255:82:0;;14981:2:1;13255:82:0;;;14963:21:1;15020:2;15000:18;;;14993:30;-1:-1:-1;;;15039:18:1;;;15032:52;15101:18;;13255:82:0;14779:346:1;13255:82:0;13356:13;;-1:-1:-1;;;13356:13:0;;;;13351:175;;-1:-1:-1;;;;;13412:21:0;;;;;;:15;:21;;;;;;;;;:44;;-1:-1:-1;;;;;;13437:19:0;;;;;;:15;:19;;;;;;;;13412:44;13386:128;;;;-1:-1:-1;;;13386:128:0;;15332:2:1;13386:128:0;;;15314:21:1;15371:2;15351:18;;;15344:30;-1:-1:-1;;;15390:18:1;;;15383:52;15452:18;;13386:128:0;15130:346:1;13386:128:0;13542:14;;-1:-1:-1;;;13542:14:0;;;;13538:2253;;;4316:6;;-1:-1:-1;;;;;13595:15:0;;;4316:6;;13595:15;;;;:49;;-1:-1:-1;4316:6:0;;-1:-1:-1;;;;;13631:13:0;;;4316:6;;13631:13;;13595:49;:86;;;;-1:-1:-1;;;;;;13665:16:0;;;;13595:86;:128;;;;-1:-1:-1;;;;;;13702:21:0;;13716:6;13702:21;;13595:128;:171;;;;-1:-1:-1;;;;;;13745:21:0;;;;;;:15;:21;;;;;;;;13744:22;13595:171;:212;;;;-1:-1:-1;;;;;;13788:19:0;;;;;;:15;:19;;;;;;;;13787:20;13595:212;13573:2207;;;13978:20;;;;13974:693;;;14041:9;;-1:-1:-1;;;;;14027:24:0;;;14041:9;;14027:24;;;;:50;;-1:-1:-1;14069:7:0;;-1:-1:-1;;;;;14055:22:0;;;14069:7;;14055:22;;14027:50;14023:625;;;14219:16;14234:1;14219:12;:16;:::i;:::-;14173:9;14144:39;;;;:28;:39;;;;;;:91;:212;;;;-1:-1:-1;14340:16:0;14355:1;14340:12;:16;:::i;:::-;-1:-1:-1;;;;;14272:32:0;;;;;;:28;:32;;;;;;:84;14144:212;14106:363;;;;-1:-1:-1;;;14106:363:0;;15683:2:1;14106:363:0;;;15665:21:1;15722:2;15702:18;;;15695:30;15761:34;15741:18;;;15734:62;-1:-1:-1;;;15812:18:1;;;15805:51;15873:19;;14106:363:0;15481:417:1;14106:363:0;14525:9;14496:39;;;;:28;:39;;;;;;14538:12;14496:54;;;;-1:-1:-1;;;;;14577:32:0;;;;;;:47;14023:625;-1:-1:-1;;;;;14741:14:0;;;;;;:8;:14;;;;;;;;:60;;;;-1:-1:-1;;;;;;14781:20:0;;;;;;:16;:20;;;;;;;;14780:21;14741:60;14715:1050;;;14888:12;;14878:6;:22;;14844:148;;;;-1:-1:-1;;;14844:148:0;;16105:2:1;14844:148:0;;;16087:21:1;16144:2;16124:18;;;16117:30;16183:34;16163:18;;;16156:62;-1:-1:-1;;;16234:18:1;;;16227:38;16282:19;;14844:148:0;15903:404:1;14844:148:0;15075:15;;15058:13;15068:2;15058:9;:13::i;:::-;15049:22;;:6;:22;:::i;:::-;:41;;15015:151;;;;-1:-1:-1;;;15015:151:0;;16514:2:1;15015:151:0;;;16496:21:1;16553:2;16533:18;;;16526:30;-1:-1:-1;;;16572:18:1;;;16565:54;16636:18;;15015:151:0;16312:348:1;15015:151:0;14715:1050;;;-1:-1:-1;;;;;15264:12:0;;;;;;:8;:12;;;;;;;;:60;;;;-1:-1:-1;;;;;;15302:22:0;;;;;;:16;:22;;;;;;;;15301:23;15264:60;15238:527;;;15411:13;;15401:6;:23;;15367:151;;;;-1:-1:-1;;;15367:151:0;;16867:2:1;15367:151:0;;;16849:21:1;16906:2;16886:18;;;16879:30;16945:34;16925:18;;;16918:62;-1:-1:-1;;;16996:18:1;;;16989:40;17046:19;;15367:151:0;16665:406:1;15238:527:0;-1:-1:-1;;;;;15549:20:0;;;;;;:16;:20;;;;;;;;15544:221;;15654:15;;15637:13;15647:2;15637:9;:13::i;:::-;15628:22;;:6;:22;:::i;:::-;:41;;15594:151;;;;-1:-1:-1;;;15594:151:0;;16514:2:1;15594:151:0;;;16496:21:1;16553:2;16533:18;;;16526:30;-1:-1:-1;;;16572:18:1;;;16565:54;16636:18;;15594:151:0;16312:348:1;15594:151:0;15803:28;15834:24;15852:4;15834:9;:24::i;:::-;15944:11;;15803:55;;-1:-1:-1;15889:24:0;;;;-1:-1:-1;;;15944:11:0;;;;:40;;;;-1:-1:-1;;;;;;15972:12:0;;;;;;:8;:12;;;;;;;;15944:40;:66;;;;-1:-1:-1;16002:8:0;;-1:-1:-1;;;16002:8:0;;;;16001:9;15944:66;:105;;;;-1:-1:-1;;;;;;16028:21:0;;;;;;:15;:21;;;;;;;;16027:22;15944:105;:142;;;;-1:-1:-1;;;;;;16067:19:0;;;;;;:15;:19;;;;;;;;16066:20;15944:142;15926:371;;;16113:8;:15;;-1:-1:-1;;;;16113:15:0;-1:-1:-1;;;16113:15:0;;;16145:25;;;;16160:10;:8;:10::i;:::-;16195:16;;16187:57;;-1:-1:-1;;;;;16195:16:0;;;;16222:21;16187:57;;;;;16195:16;16187:57;16195:16;16187:57;16222:21;16195:16;16187:57;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16269:8:0;:16;;-1:-1:-1;;;;16269:16:0;;;15926:371;-1:-1:-1;;;;;16378:21:0;;16309:12;16378:21;;;:15;:21;;;;;;16324:4;;16309:12;16378:21;;;:44;;-1:-1:-1;;;;;;16403:19:0;;;;;;:15;:19;;;;;;;;16378:44;16374:92;;;16449:5;16439:15;;16374:92;16556:7;16552:833;;;-1:-1:-1;;;;;16608:12:0;;;;;;:8;:12;;;;;;;;:33;;;;;16640:1;16624:13;;:17;16608:33;16604:634;;;16696:3;16679:13;;16670:6;:22;;;;:::i;:::-;16669:30;;;;:::i;:::-;16662:37;;16768:13;;16748:16;;16741:4;:23;;;;:::i;:::-;16740:41;;;;:::i;:::-;16718:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;16894:13:0;;16852:17;;16845:24;;:4;:24;:::i;:::-;16844:63;;;;:::i;:::-;16800:19;;:107;;;;;;;:::i;:::-;;;;-1:-1:-1;16604:634:0;;-1:-1:-1;16604:634:0;;-1:-1:-1;;;;;16969:14:0;;;;;;:8;:14;;;;;;;;:34;;;;;17002:1;16987:12;;:16;16969:34;16965:273;;;17057:3;17041:12;;17032:6;:21;;;;:::i;:::-;17031:29;;;;:::i;:::-;17024:36;;17128:12;;17109:15;;17102:4;:22;;;;:::i;:::-;17101:39;;;;:::i;:::-;17079:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;17210:12:0;;17190:16;;17183:23;;:4;:23;:::i;:::-;17182:40;;;;:::i;:::-;17159:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;16965:273:0;17254:14;17264:4;17254:14;;:::i;:::-;;-1:-1:-1;17287:8:0;;17283:91;;17316:42;17332:4;17346;17353;17316:15;:42::i;:::-;17397:33;17413:4;17419:2;17423:6;17397:15;:33::i;:::-;12978:4460;;;;;12865:4573;;;:::o;20597:223::-;-1:-1:-1;;;;;20680:14:0;;;;;;:8;:14;;;;;:22;;-1:-1:-1;;20680:22:0;;;;;;;20715:39;20680:14;:22;19693:217;-1:-1:-1;;;;;19806:24:0;;;;;;:16;:24;;;;;;;;;:37;;-1:-1:-1;;19806:37:0;;;;;;;;;;19859:43;;17244:51:1;;;17311:18;;;17304:50;19859:43:0;;17217:18:1;19859:43:0;;;;;;;19693:217;;:::o;22285:283::-;22324:23;22350:24;22368:4;22350:9;:24::i;:::-;22324:50;;22391:15;22410:1;22391:20;22387:59;;22428:7;22285:283::o;22387:59::-;22458:33;22475:15;22458:16;:33::i;:::-;-1:-1:-1;22525:1:0;22504:18;:22;;;22537:19;:23;22285:283::o;8698:529::-;-1:-1:-1;;;;;8838:20:0;;8830:70;;;;-1:-1:-1;;;8830:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8919:23:0;;8911:71;;;;-1:-1:-1;;;8911:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9018:17:0;;;8995:20;9018:17;;;;;;;;;;;;;9093:21;;;9073:41;;;9136:20;;;;;;;:30;;9108:6;;8995:20;9136:30;;9108:6;;9136:30;:::i;:::-;;;;;;;;9201:9;-1:-1:-1;;;;;9184:35:0;9193:6;-1:-1:-1;;;;;9184:35:0;;9212:6;9184:35;;;;1361:25:1;;1349:2;1334:18;;1215:177;9184:35:0;;;;;;;;8819:408;8698:529;;;:::o;22576:571::-;22726:16;;;22740:1;22726:16;;;;;;;;22702:21;;22726:16;;;;;;;;;;-1:-1:-1;22726:16:0;22702:40;;22771:4;22753;22758:1;22753:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22753:23:0;;;:7;;;;;;;;;;:23;;;;22797:9;;:16;;;-1:-1:-1;;;22797:16:0;;;;:9;;;;;:14;;:16;;;;;22753:7;;22797:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22787:4;22792:1;22787:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22787:26:0;;;:7;;;;;;;;;:26;22858:9;;22826:56;;22843:4;;22858:9;22870:11;22826:8;:56::i;:::-;22921:9;;:218;;-1:-1:-1;;;22921:218:0;;-1:-1:-1;;;;;22921:9:0;;;;:60;;:218;;22996:11;;22921:9;;23066:4;;23093;;23113:15;;22921:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22631:516;22576:571;:::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;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;-1:-1:-1;2009:23:1;;1858:180;-1:-1:-1;1858:180:1:o;2440:247::-;2499:6;2552:2;2540:9;2531:7;2527:23;2523:32;2520:52;;;2568:1;2565;2558:12;2520:52;2607:9;2594:23;2626:31;2651:5;2626:31;:::i;:::-;2676:5;2440:247;-1:-1:-1;;;2440:247:1:o;2692:118::-;2778:5;2771:13;2764:21;2757:5;2754:32;2744:60;;2800:1;2797;2790:12;2815:382;2880:6;2888;2941:2;2929:9;2920:7;2916:23;2912:32;2909:52;;;2957:1;2954;2947:12;2909:52;2996:9;2983:23;3015:31;3040:5;3015:31;:::i;:::-;3065:5;-1:-1:-1;3122:2:1;3107:18;;3094:32;3135:30;3094:32;3135:30;:::i;:::-;3184:7;3174:17;;;2815:382;;;;;:::o;3430:248::-;3498:6;3506;3559:2;3547:9;3538:7;3534:23;3530:32;3527:52;;;3575:1;3572;3565:12;3527:52;-1:-1:-1;;3598:23:1;;;3668:2;3653:18;;;3640:32;;-1:-1:-1;3430:248:1:o;3683:388::-;3751:6;3759;3812:2;3800:9;3791:7;3787:23;3783:32;3780:52;;;3828:1;3825;3818:12;3780:52;3867:9;3854:23;3886:31;3911:5;3886:31;:::i;:::-;3936:5;-1:-1:-1;3993:2:1;3978:18;;3965:32;4006:33;3965:32;4006:33;:::i;4076:380::-;4155:1;4151:12;;;;4198;;;4219:61;;4273:4;4265:6;4261:17;4251:27;;4219:61;4326:2;4318:6;4315:14;4295:18;4292:38;4289:161;;4372:10;4367:3;4363:20;4360:1;4353:31;4407:4;4404:1;4397:15;4435:4;4432:1;4425:15;4289:161;;4076:380;;;:::o;4870:356::-;5072:2;5054:21;;;5091:18;;;5084:30;5150:34;5145:2;5130:18;;5123:62;5217:2;5202:18;;4870:356::o;5231:127::-;5292:10;5287:3;5283:20;5280:1;5273:31;5323:4;5320:1;5313:15;5347:4;5344:1;5337:15;5363:168;5436:9;;;5467;;5484:15;;;5478:22;;5464:37;5454:71;;5505:18;;:::i;5536:217::-;5576:1;5602;5592:132;;5646:10;5641:3;5637:20;5634:1;5627:31;5681:4;5678:1;5671:15;5709:4;5706:1;5699:15;5592:132;-1:-1:-1;5738:9:1;;5536:217::o;6168:125::-;6233:9;;;6254:10;;;6251:36;;;6267:18;;:::i;8644:128::-;8711:9;;;8732:11;;;8729:37;;;8746:18;;:::i;9389:306::-;9477:6;9485;9493;9546:2;9534:9;9525:7;9521:23;9517:32;9514:52;;;9562:1;9559;9552:12;9514:52;9591:9;9585:16;9575:26;;9641:2;9630:9;9626:18;9620:25;9610:35;;9685:2;9674:9;9670:18;9664:25;9654:35;;9389:306;;;;;:::o;9979:245::-;10046:6;10099:2;10087:9;10078:7;10074:23;10070:32;10067:52;;;10115:1;10112;10105:12;10067:52;10147:9;10141:16;10166:28;10188:5;10166:28;:::i;11831:251::-;11901:6;11954:2;11942:9;11933:7;11929:23;11925:32;11922:52;;;11970:1;11967;11960:12;11922:52;12002:9;11996:16;12021:31;12046:5;12021:31;:::i;13611:401::-;13813:2;13795:21;;;13852:2;13832:18;;;13825:30;13891:34;13886:2;13871:18;;13864:62;-1:-1:-1;;;13957:2:1;13942:18;;13935:35;14002:3;13987:19;;13611:401::o;14017:399::-;14219:2;14201:21;;;14258:2;14238:18;;;14231:30;14297:34;14292:2;14277:18;;14270:62;-1:-1:-1;;;14363:2:1;14348:18;;14341:33;14406:3;14391:19;;14017:399::o;17497:127::-;17558:10;17553:3;17549:20;17546:1;17539:31;17589:4;17586:1;17579:15;17613:4;17610:1;17603:15;17629:980;17891:4;17939:3;17928:9;17924:19;17970:6;17959:9;17952:25;17996:2;18034:6;18029:2;18018:9;18014:18;18007:34;18077:3;18072:2;18061:9;18057:18;18050:31;18101:6;18136;18130:13;18167:6;18159;18152:22;18205:3;18194:9;18190:19;18183:26;;18244:2;18236:6;18232:15;18218:29;;18265:1;18275:195;18289:6;18286:1;18283:13;18275:195;;;18354:13;;-1:-1:-1;;;;;18350:39:1;18338:52;;18445:15;;;;18410:12;;;;18386:1;18304:9;18275:195;;;-1:-1:-1;;;;;;;18526:32:1;;;;18521:2;18506:18;;18499:60;-1:-1:-1;;;18590:3:1;18575:19;18568:35;18487:3;17629:980;-1:-1:-1;;;17629:980:1:o

Swarm Source

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