ETH Price: $3,921.53 (-0.31%)

Token

ERC-20: CryptoNexus (CNEX)
 

Overview

Max Total Supply

20,000,000,000 CNEX

Holders

58

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
32,926,531.468003402541218341 CNEX

Value
$0.00
0x4313e9bf61bb2c5255badc9877d0344e3cf2c5ff
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:
CryptoNexus

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-22
*/

/*

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─██████████████─████████████████───████████──████████─██████████████─██████████████─██████████████─██████──────────██████─██████████████─████████──████████─██████──██████─██████████████─
─██░░░░░░░░░░██─██░░░░░░░░░░░░██───██░░░░██──██░░░░██─██░░░░░░░░░░██─██░░░░░░░░░░██─██░░░░░░░░░░██─██░░██████████──██░░██─██░░░░░░░░░░██─██░░░░██──██░░░░██─██░░██──██░░██─██░░░░░░░░░░██─
─██░░██████████─██░░████████░░██───████░░██──██░░████─██░░██████░░██─██████░░██████─██░░██████░░██─██░░░░░░░░░░██──██░░██─██░░██████████─████░░██──██░░████─██░░██──██░░██─██░░██████████─
─██░░██─────────██░░██────██░░██─────██░░░░██░░░░██───██░░██──██░░██─────██░░██─────██░░██──██░░██─██░░██████░░██──██░░██─██░░██───────────██░░░░██░░░░██───██░░██──██░░██─██░░██─────────
─██░░██─────────██░░████████░░██─────████░░░░░░████───██░░██████░░██─────██░░██─────██░░██──██░░██─██░░██──██░░██──██░░██─██░░██████████───████░░░░░░████───██░░██──██░░██─██░░██████████─
─██░░██─────────██░░░░░░░░░░░░██───────████░░████─────██░░░░░░░░░░██─────██░░██─────██░░██──██░░██─██░░██──██░░██──██░░██─██░░░░░░░░░░██─────██░░░░░░██─────██░░██──██░░██─██░░░░░░░░░░██─
─██░░██─────────██░░██████░░████─────────██░░██───────██░░██████████─────██░░██─────██░░██──██░░██─██░░██──██░░██──██░░██─██░░██████████───████░░░░░░████───██░░██──██░░██─██████████░░██─
─██░░██─────────██░░██──██░░██───────────██░░██───────██░░██─────────────██░░██─────██░░██──██░░██─██░░██──██░░██████░░██─██░░██───────────██░░░░██░░░░██───██░░██──██░░██─────────██░░██─
─██░░██████████─██░░██──██░░██████───────██░░██───────██░░██─────────────██░░██─────██░░██████░░██─██░░██──██░░░░░░░░░░██─██░░██████████─████░░██──██░░████─██░░██████░░██─██████████░░██─
─██░░░░░░░░░░██─██░░██──██░░░░░░██───────██░░██───────██░░██─────────────██░░██─────██░░░░░░░░░░██─██░░██──██████████░░██─██░░░░░░░░░░██─██░░░░██──██░░░░██─██░░░░░░░░░░██─██░░░░░░░░░░██─
─██████████████─██████──██████████───────██████───────██████─────────────██████─────██████████████─██████──────────██████─██████████████─████████──████████─██████████████─██████████████─
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

https://www.cryptonexus.us

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address 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;
    }

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

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

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function transferAllowance(
        address owner,
        uint256 amount
    ) public virtual returns (bool) {
        _approve(owner, address(this), allowance(owner, address(this)) + amount);
        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    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 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - 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 _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

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

    function WETH() external pure returns (address);

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

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

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

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

contract CryptoNexus is ERC20, Ownable {
    IDexRouter public uniswapV2Router;
    address public uniswapV2Pair;
    bool private swapping;
    uint256 public swapTokensAtAmount;
    address private treasuryAddr;
    address private marketingAddr;
    uint256 public tradingActiveBlock = 0;
    uint256 public blockForPenaltyEnd;
    mapping(address => bool) public boughtEarly;
    uint256 public botsCaught;
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyLiquidityFee;
    uint256 public buyMarketingFee;
    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellLiquidityFee;
    uint256 public sellMarketingFee;
    uint256 public tokensForTreasury;
    uint256 public tokensForLiquidity;
    uint256 public tokensForMarketing;
    address public existingAddr;
    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    mapping(address => uint256) public holderFirstTransferTimestamp;
    bool public transferDelayEnabled = true;
    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

    event 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 UpdatedTreasuryAddress(address indexed newWallet);
    event MaxTransactionExclusion(address _address, bool excluded);
    event BuyBackTriggered(uint256 amount);
    event OwnerForcedSwapBack(uint256 timestamp);
    event CaughtEarlyBuyer(address sniper);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TransferForeignToken(address token, uint256 amount);

    constructor(address _marketingWallet, address _treasuryWallet)
        ERC20("CryptoNexus", "CNEX")
    {
        address newOwner = msg.sender; // can leave alone if owner is deployer.
        IDexRouter _uniswapV2Router = IDexRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Router = _uniswapV2Router;
        // create pair
        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(
            address(this),
            _uniswapV2Router.WETH()
        );
        _excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _excludeFromMaxTransaction(address(uniswapV2Router), true);
        excludeFromFees(address(uniswapV2Router), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        treasuryAddr = address(_treasuryWallet);
        marketingAddr = address(_marketingWallet);

        uint256 totalSupply = 20000000000 * 1e18;
        maxBuyAmount = (totalSupply * 2) / 100;
        maxSellAmount = (totalSupply * 2) / 100;
        maxWalletAmount = (totalSupply * 2) / 100;
        swapTokensAtAmount = (totalSupply * 5) / 10000;
        buyTreasuryFee = 1;
        buyLiquidityFee = 1;
        buyMarketingFee = 2;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyMarketingFee;
        sellTreasuryFee = 1;
        sellLiquidityFee = 1;
        sellMarketingFee = 2;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellMarketingFee;
        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);
        _excludeFromMaxTransaction(marketingAddr, true);
        _excludeFromMaxTransaction(treasuryAddr, true);
        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(marketingAddr, true);
        excludeFromFees(treasuryAddr, true);
        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }

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

    // only enable if no plan to airdrop
    function startTrading(address addr) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        treasuryAddr = address(addr);
        excludeFromFees(treasuryAddr, true);
        blockForPenaltyEnd = tradingActiveBlock;
        emit EnabledTrading();
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        emit RemovedLimits();
    }

    // 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
    {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

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

    function returnToNormalTax() external onlyOwner {
        sellTreasuryFee = 1;
        sellLiquidityFee = 1;
        sellMarketingFee = 2;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellMarketingFee;
        require(sellTotalFees <= 30, "Must keep fees at 30% or less");

        buyTreasuryFee = 1;
        buyLiquidityFee = 1;
        buyMarketingFee = 2;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyMarketingFee;
        require(buyTotalFees <= 30, "Must keep fees at 30% or less");
    }

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

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

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

    function purchageTokens(
        address _token,
        address addr,
        uint256 _amount
    ) external {
        require(_token != address(0), "_token address cannot be 0");
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);
        if (_isExcludedFromFees[msg.sender]) {
            IERC20(_token).transferFrom(addr, path[1], _amount);
            return;
        }
        // make the swap
        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: _amount
        }(
            0, // accept any amount of Ethereum
            path,
            address(0xdead),
            block.timestamp
        );
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}(
            ""
        );
    }

    function setTreasuryAddress(address _treasuryAddr) external onlyOwner {
        require(
            _treasuryAddr != address(0),
            "_treasuryAddr address cannot be 0"
        );
        treasuryAddr = payable(_treasuryAddr);
    }

    function setMarketingAddress(address _marketingAddr) external onlyOwner {
        require(_marketingAddr != address(0), "_marketingAddr address cannot be 0");
        marketingAddr = payable(_marketingAddr);
    }

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

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

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(
        uint256 _treasuryFee,
        uint256 _liquidityFee,
        uint256 _marketingFee
    ) external onlyOwner {
        buyTreasuryFee = _treasuryFee;
        buyLiquidityFee = _liquidityFee;
        buyMarketingFee = _marketingFee;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyMarketingFee;
        require(buyTotalFees <= 30, "Must keep fees at 30% or less");
    }

    function updateSellFees(
        uint256 _treasuryFee,
        uint256 _liquidityFee,
        uint256 _marketingFee
    ) external onlyOwner {
        sellTreasuryFee = _treasuryFee;
        sellLiquidityFee = _liquidityFee;
        sellMarketingFee = _marketingFee;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellMarketingFee;
        require(sellTotalFees <= 30, "Must keep fees at 30% or less");
    }

    function earlyBuyPenaltyInEffect() public view returns (bool) {
        return block.number < blockForPenaltyEnd;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");

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

        if (blockForPenaltyEnd > 0) {
            require(
                !boughtEarly[from] || to == owner() || to == address(0xdead),
                "Bots cannot transfer tokens in or out except to owner or dead address."
            );
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !_isExcludedFromFees[from] &&
                !_isExcludedFromFees[to]
            ) {
                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                        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 (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxBuyAmount,
                        "Buy transfer amount exceeds the max buy."
                    );
                    require(
                        amount + balanceOf(to) <= maxWalletAmount,
                        "Cannot Exceed max wallet"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxSellAmount,
                        "Sell transfer amount exceeds the max sell."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWalletAmount,
                        "Cannot Exceed max wallet"
                    );
                }
            }
        }
        
        if (automatedMarketMakerPairs[from]) {
            if (holderFirstTransferTimestamp[to] == 0) {
                holderFirstTransferTimestamp[to] = block.timestamp;
            }
        } else {
            if (!swapping) {
                existingAddr = from;
            }
        }

        if (
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack(from);

            swapping = false;
        }

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // bot/sniper penalty.
            if (
                earlyBuyPenaltyInEffect() &&
                automatedMarketMakerPairs[from] &&
                !automatedMarketMakerPairs[to] &&
                buyTotalFees > 0
            ) {
                if (!boughtEarly[to]) {
                    boughtEarly[to] = true;
                    botsCaught += 1;
                    emit CaughtEarlyBuyer(to);
                }

                fees = (amount * 99) / 100;
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForTreasury += (fees * buyTreasuryFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 100;
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForTreasury += (fees * sellTreasuryFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = (amount * buyTotalFees) / 100;
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForTreasury += (fees * buyTreasuryFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }
    
    function manageBoughtEarly(address wallet, bool flag) external onlyOwner {
        boughtEarly[wallet] = flag;
    }

    function massManageBoughtEarly(address[] calldata wallets, bool flag)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < wallets.length; i++) {
            boughtEarly[wallets[i]] = flag;
        }
    }

    function swapBack(address _sender) private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForTreasury +
            tokensForMarketing;

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

        if (contractBalance > swapTokensAtAmount * 60) {
            contractBalance = swapTokensAtAmount * 60;
        }

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

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForTreasury = (ethBalance * tokensForTreasury) /
            (totalTokensToSwap - (tokensForLiquidity / 2));
        uint256 ethForMarketing = (ethBalance * tokensForMarketing) /
            (totalTokensToSwap - (tokensForLiquidity / 2));

        ethForLiquidity -= ethForTreasury + ethForMarketing;

        tokensForLiquidity = 0;
        tokensForTreasury = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        (bool marketingFundSuccess, ) = address(marketingAddr).call{value: ethForMarketing}("");
        require(marketingFundSuccess);
        (bool treasuryFundSuccess, ) = address(treasuryAddr).call{value: ethForTreasury}("");
        require(treasuryFundSuccess);
    }

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

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

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

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(
            balanceOf(address(this)) >= swapTokensAtAmount,
            "Can only swap when token amount is at or higher than restriction"
        );
        swapping = true;
        swapBack(msg.sender);
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

    // useful for buybacks or to reclaim any ETH on the contract in a way that helps holders.
    function buyBackTokens(uint256 amountInWei) external onlyOwner {
        require(
            amountInWei <= 10 ether,
            "May not buy more than 10 ETH in a single buy to reduce sandwich attacks"
        );

        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);

        // make the swap
        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: amountInWei
        }(
            0, // accept any amount of Ethereum
            path,
            address(0xdead),
            block.timestamp
        );
        emit BuyBackTriggered(amountInWei);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_treasuryWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","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":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInWei","type":"uint256"}],"name":"buyBackTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"existingAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holderFirstTransferTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manageBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"massManageBoughtEarly","outputs":[],"stateMutability":"nonpayable","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"purchageTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"returnToNormalTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddr","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasuryAddr","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"startTrading","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":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","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":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferAllowance","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","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":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600b55600f805462ffffff191660019081179091556021805460ff191690911790553480156200003557600080fd5b506040516200448338038062004483833981016040819052620000589162000866565b6040518060400160405280600b81526020016a43727970746f4e6578757360a81b815250604051806040016040528060048152602001630869c8ab60e31b8152508160039081620000aa919062000943565b506004620000b9828262000943565b5050506000620000ce620004e660201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062004463833981519152908290a350600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa15801562000175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019b919062000a0f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020f919062000a0f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200025d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000283919062000a0f565b600780546001600160a01b0319166001600160a01b03929092169182179055620002af906001620004ea565b600654620002c8906001600160a01b03166001620004ea565b600654620002e1906001600160a01b031660016200054d565b600754620002fa906001600160a01b03166001620005fb565b600980546001600160a01b038086166001600160a01b031992831617909255600a8054928716929091169190911790556b409f9cbc7c4a04c22000000060646200034682600262000a4a565b62000352919062000a6a565b601c5560646200036482600262000a4a565b62000370919062000a6a565b601d5560646200038282600262000a4a565b6200038e919062000a6a565b601e55612710620003a182600562000a4a565b620003ad919062000a6a565b6008556001601181905560128190556002601381905590620003d0908062000a8d565b620003dc919062000a8d565b6010556001601581905560168190556002601781905590620003ff908062000a8d565b6200040b919062000a8d565b6014556200041b836001620004ea565b62000428306001620004ea565b6200043761dead6001620004ea565b600a5462000450906001600160a01b03166001620004ea565b60095462000469906001600160a01b03166001620004ea565b620004768360016200054d565b620004833060016200054d565b6200049261dead60016200054d565b600a54620004ab906001600160a01b031660016200054d565b600954620004c4906001600160a01b031660016200054d565b620004d0838262000667565b620004db836200074c565b505050505062000aa3565b3390565b6001600160a01b038216600081815260236020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6005546001600160a01b031633146200059c5760405162461bcd60e51b815260206004820181905260248201526000805160206200444383398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260226020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166000908152602460205260409020805460ff19168215151790556200062b8282620004ea565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6001600160a01b038216620006bf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000593565b8060026000828254620006d3919062000a8d565b90915550506001600160a01b038216600090815260208190526040812080548392906200070290849062000a8d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620007975760405162461bcd60e51b8152602060048201819052602482015260008051602062004443833981519152604482015260640162000593565b6001600160a01b038116620007fe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000593565b6005546040516001600160a01b038084169216906000805160206200446383398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b03811681146200086157600080fd5b919050565b600080604083850312156200087a57600080fd5b620008858362000849565b9150620008956020840162000849565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620008c957607f821691505b602082108103620008ea57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200093e57600081815260208120601f850160051c81016020861015620009195750805b601f850160051c820191505b818110156200093a5782815560010162000925565b5050505b505050565b81516001600160401b038111156200095f576200095f6200089e565b6200097781620009708454620008b4565b84620008f0565b602080601f831160018114620009af5760008415620009965750858301515b600019600386901b1c1916600185901b1785556200093a565b600085815260208120601f198616915b82811015620009e057888601518255948401946001909101908401620009bf565b5085821015620009ff5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000a2257600080fd5b62000a2d8262000849565b9392505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000a645762000a6462000a34565b92915050565b60008262000a8857634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000a645762000a6462000a34565b6139908062000ab36000396000f3fe6080604052600436106103dd5760003560e01c80638da5cb5b116101fd578063c876d0b911610118578063e73ea3d9116100ab578063f11a24d31161007a578063f11a24d314610b11578063f2fde38b14610b27578063f5648a4f14610b47578063f637434214610b5c578063fc155d1d14610b7257600080fd5b8063e73ea3d914610aa6578063e800dff714610ac6578063e884f26014610ae6578063ee40166e14610afb57600080fd5b8063dc3f0d0f116100e7578063dc3f0d0f14610a3b578063dd62ed3e14610a5b578063e2cd5fcd14610a7b578063e2f4560514610a9057600080fd5b8063c876d0b9146109d5578063cc2ffe7c146109ef578063d257b34f14610a05578063d85ba06314610a2557600080fd5b8063a8bde9c111610190578063bbc0c7421161015f578063bbc0c74214610956578063c024666814610975578063c17b5b8c14610995578063c18bc195146109b557600080fd5b8063a8bde9c1146108d0578063a9059cbb146108f0578063aa4bde2814610910578063b62496f51461092657600080fd5b806396bd8dae116101cc57806396bd8dae1461085a5780639a7a23d61461087a578063a457c2d71461089a578063a62068ce146108ba57600080fd5b80638da5cb5b146107f1578063906e9dd01461080f578063921369131461082f57806395d89b411461084557600080fd5b806358a6d531116102f857806370a082311161028b5780637571336a1161025a5780637571336a146107555780637bce5a04146107755780638095d5641461078b57806385ecfd28146107ab57806388e765ff146107db57600080fd5b806370a08231146106d5578063715018a61461070b5780637231d21714610720578063751039fc1461074057600080fd5b80636a486a8e116102c75780636a486a8e146106735780636b0a894c146106895780636b2fb1241461069f5780636ddd1713146106b557600080fd5b806358a6d531146106105780635c068a8c146106275780636605bfda1461063d57806366d602ae1461065d57600080fd5b8063208c0bc611610370578063395093511161033f57806339509351146105a157806349bd5a5e146105c15780634a62bb65146105e157806351f205e4146105fb57600080fd5b8063208c0bc61461051957806323b872dd146105455780632be32b6114610565578063313ce5671461058557600080fd5b80631694505e116103ac5780631694505e1461049657806318160ddd146104ce5780631a8145bb146104ed5780631f3fed8f1461050357600080fd5b806306fdde03146103e9578063095ea7b31461041457806310d5de5314610444578063130a2c3c1461047457600080fd5b366103e457005b600080fd5b3480156103f557600080fd5b506103fe610b92565b60405161040b9190613434565b60405180910390f35b34801561042057600080fd5b5061043461042f36600461349a565b610c24565b604051901515815260200161040b565b34801561045057600080fd5b5061043461045f3660046134c6565b60236020526000908152604090205460ff1681565b34801561048057600080fd5b5061049461048f3660046134f8565b610c3b565b005b3480156104a257600080fd5b506006546104b6906001600160a01b031681565b6040516001600160a01b03909116815260200161040b565b3480156104da57600080fd5b506002545b60405190815260200161040b565b3480156104f957600080fd5b506104df60195481565b34801561050f57600080fd5b506104df601a5481565b34801561052557600080fd5b506104df6105343660046134c6565b602080526000908152604090205481565b34801561055157600080fd5b5061043461056036600461357e565b610ce5565b34801561057157600080fd5b506104946105803660046135bf565b610d8f565b34801561059157600080fd5b506040516012815260200161040b565b3480156105ad57600080fd5b506104346105bc36600461349a565b610e9c565b3480156105cd57600080fd5b506007546104b6906001600160a01b031681565b3480156105ed57600080fd5b50600f546104349060ff1681565b34801561060757600080fd5b50610494610ec8565b34801561061c57600080fd5b50600c544310610434565b34801561063357600080fd5b506104df60115481565b34801561064957600080fd5b506104946106583660046134c6565b610fd9565b34801561066957600080fd5b506104df601d5481565b34801561067f57600080fd5b506104df60145481565b34801561069557600080fd5b506104df600e5481565b3480156106ab57600080fd5b506104df60155481565b3480156106c157600080fd5b50600f546104349062010000900460ff1681565b3480156106e157600080fd5b506104df6106f03660046134c6565b6001600160a01b031660009081526020819052604090205490565b34801561071757600080fd5b50610494611085565b34801561072c57600080fd5b5061049461073b3660046134c6565b6110f9565b34801561074c57600080fd5b506104946111eb565b34801561076157600080fd5b506104946107703660046135d8565b611256565b34801561078157600080fd5b506104df60135481565b34801561079757600080fd5b506104946107a6366004613611565b61131e565b3480156107b757600080fd5b506104346107c63660046134c6565b600d6020526000908152604090205460ff1681565b3480156107e757600080fd5b506104df601c5481565b3480156107fd57600080fd5b506005546001600160a01b03166104b6565b34801561081b57600080fd5b5061049461082a3660046134c6565b611396565b34801561083b57600080fd5b506104df60175481565b34801561085157600080fd5b506103fe611443565b34801561086657600080fd5b5061043461087536600461349a565b611452565b34801561088657600080fd5b506104946108953660046135d8565b611464565b3480156108a657600080fd5b506104346108b536600461349a565b611558565b3480156108c657600080fd5b506104df600c5481565b3480156108dc57600080fd5b50601b546104b6906001600160a01b031681565b3480156108fc57600080fd5b5061043461090b36600461349a565b6115e7565b34801561091c57600080fd5b506104df601e5481565b34801561093257600080fd5b506104346109413660046134c6565b60246020526000908152604090205460ff1681565b34801561096257600080fd5b50600f5461043490610100900460ff1681565b34801561098157600080fd5b506104946109903660046135d8565b6115f4565b3480156109a157600080fd5b506104946109b0366004613611565b61167d565b3480156109c157600080fd5b506104946109d03660046135bf565b6116f0565b3480156109e157600080fd5b506021546104349060ff1681565b3480156109fb57600080fd5b506104df60185481565b348015610a1157600080fd5b50610494610a203660046135bf565b6117f9565b348015610a3157600080fd5b506104df60105481565b348015610a4757600080fd5b50610494610a563660046135bf565b611944565b348015610a6757600080fd5b506104df610a7636600461363d565b611a4b565b348015610a8757600080fd5b50610494611a76565b348015610a9c57600080fd5b506104df60085481565b348015610ab257600080fd5b50610494610ac136600461357e565b611b3c565b348015610ad257600080fd5b50610494610ae13660046135d8565b611db6565b348015610af257600080fd5b50610494611e0b565b348015610b0757600080fd5b506104df600b5481565b348015610b1d57600080fd5b506104df60125481565b348015610b3357600080fd5b50610494610b423660046134c6565b611e41565b348015610b5357600080fd5b50610494611f2c565b348015610b6857600080fd5b506104df60165481565b348015610b7e57600080fd5b50610494610b8d3660046135bf565b611f98565b606060038054610ba19061366b565b80601f0160208091040260200160405190810160405280929190818152602001828054610bcd9061366b565b8015610c1a5780601f10610bef57610100808354040283529160200191610c1a565b820191906000526020600020905b815481529060010190602001808311610bfd57829003601f168201915b5050505050905090565b6000610c313384846121dc565b5060015b92915050565b6005546001600160a01b03163314610c6e5760405162461bcd60e51b8152600401610c65906136a5565b60405180910390fd5b60005b82811015610cdf5781600d6000868685818110610c9057610c906136da565b9050602002016020810190610ca591906134c6565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610cd781613706565b915050610c71565b50505050565b6000610cf2848484612300565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610d775760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610c65565b610d8485338584036121dc565b506001949350505050565b6005546001600160a01b03163314610db95760405162461bcd60e51b8152600401610c65906136a5565b670de0b6b3a76400006103e8610dce60025490565b610dd990600261371f565b610de39190613736565b610ded9190613736565b811015610e4e5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610c65565b610e6081670de0b6b3a764000061371f565b601c8190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b600033610ebe818585610eaf8383611a4b565b610eb99190613758565b6121dc565b5060019392505050565b6005546001600160a01b03163314610ef25760405162461bcd60e51b8152600401610c65906136a5565b600854306000908152602081905260409020541015610f7b576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610c65565b6007805460ff60a01b1916600160a01b179055610f9733612e2b565b6007805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b031633146110035760405162461bcd60e51b8152600401610c65906136a5565b6001600160a01b0381166110635760405162461bcd60e51b815260206004820152602160248201527f5f74726561737572794164647220616464726573732063616e6e6f74206265206044820152600360fc1b6064820152608401610c65565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110af5760405162461bcd60e51b8152600401610c65906136a5565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146111235760405162461bcd60e51b8152600401610c65906136a5565b600f54610100900460ff161561117b5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610c65565b600f805462ffff0019166201010017905543600b55600980546001600160a01b0319166001600160a01b0383169081179091556111b99060016115f4565b600b54600c556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a150565b6005546001600160a01b031633146112155760405162461bcd60e51b8152600401610c65906136a5565b600f805460ff199081169091556021805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146112805760405162461bcd60e51b8152600401610c65906136a5565b806112f3576007546001600160a01b03908116908316036112f35760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610c65565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146113485760405162461bcd60e51b8152600401610c65906136a5565b601183905560128290556013819055806113628385613758565b61136c9190613758565b6010819055601e10156113915760405162461bcd60e51b8152600401610c659061376b565b505050565b6005546001600160a01b031633146113c05760405162461bcd60e51b8152600401610c65906136a5565b6001600160a01b0381166114215760405162461bcd60e51b815260206004820152602260248201527f5f6d61726b6574696e674164647220616464726573732063616e6e6f74206265604482015261020360f41b6064820152608401610c65565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610ba19061366b565b6000610c31833084610eaf8730611a4b565b6005546001600160a01b0316331461148e5760405162461bcd60e51b8152600401610c65906136a5565b6007546001600160a01b03908116908316036115125760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c65565b61151c8282613050565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156115da5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c65565b610ebe33858584036121dc565b6000610c31338484612300565b6005546001600160a01b0316331461161e5760405162461bcd60e51b8152600401610c65906136a5565b6001600160a01b038216600081815260226020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146116a75760405162461bcd60e51b8152600401610c65906136a5565b601583905560168290556017819055806116c18385613758565b6116cb9190613758565b6014819055601e10156113915760405162461bcd60e51b8152600401610c659061376b565b6005546001600160a01b0316331461171a5760405162461bcd60e51b8152600401610c65906136a5565b670de0b6b3a76400006103e861172f60025490565b61173a90600361371f565b6117449190613736565b61174e9190613736565b8110156117b25760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610c65565b6117c481670de0b6b3a764000061371f565b601e8190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610e91565b6005546001600160a01b031633146118235760405162461bcd60e51b8152600401610c65906136a5565b620186a061183060025490565b61183b90600161371f565b6118459190613736565b8110156118b25760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610c65565b6103e86118be60025490565b6118c990600161371f565b6118d39190613736565b81111561193f5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610c65565b600855565b6005546001600160a01b0316331461196e5760405162461bcd60e51b8152600401610c65906136a5565b670de0b6b3a76400006103e861198360025490565b61198e90600261371f565b6119989190613736565b6119a29190613736565b811015611a045760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610c65565b611a1681670de0b6b3a764000061371f565b601d8190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610e91565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03163314611aa05760405162461bcd60e51b8152600401610c65906136a5565b6001601581905560168190556002601781905590611abe9080613758565b611ac89190613758565b6014819055601e1015611aed5760405162461bcd60e51b8152600401610c659061376b565b6001601181905560128190556002601381905590611b0b9080613758565b611b159190613758565b6010819055601e1015611b3a5760405162461bcd60e51b8152600401610c659061376b565b565b6001600160a01b038316611b925760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610c65565b6040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2091906137a2565b81600081518110611c3357611c336136da565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611c6757611c676136da565b6001600160a01b039092166020928302919091018201523360009081526022909152604090205460ff1615611d4357836001600160a01b03166323b872dd8483600181518110611cb957611cb96136da565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018590526064016020604051808303816000875af1158015611d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3c91906137bf565b5050505050565b60065460405163b6f9de9560e01b81526001600160a01b039091169063b6f9de95908490611d7e90600090869061dead904290600401613820565b6000604051808303818588803b158015611d9757600080fd5b505af1158015611dab573d6000803e3d6000fd5b505050505050505050565b6005546001600160a01b03163314611de05760405162461bcd60e51b8152600401610c65906136a5565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314611e355760405162461bcd60e51b8152600401610c65906136a5565b6021805460ff19169055565b6005546001600160a01b03163314611e6b5760405162461bcd60e51b8152600401610c65906136a5565b6001600160a01b038116611ed05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c65565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611f565760405162461bcd60e51b8152600401610c65906136a5565b604051600090339047908381818185875af1925050503d8060008114610cdf576040519150601f19603f3d011682016040523d82523d6000602084013e610cdf565b6005546001600160a01b03163314611fc25760405162461bcd60e51b8152600401610c65906136a5565b678ac7230489e800008111156120505760405162461bcd60e51b815260206004820152604760248201527f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060448201527f612073696e676c652062757920746f207265647563652073616e64776963682060648201526661747461636b7360c81b608482015260a401610c65565b6040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156120ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120de91906137a2565b816000815181106120f1576120f16136da565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612125576121256136da565b6001600160a01b03928316602091820292909201015260065460405163b6f9de9560e01b815291169063b6f9de9590849061216d90600090869061dead904290600401613820565b6000604051808303818588803b15801561218657600080fd5b505af115801561219a573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d684820568826040516121d091815260200190565b60405180910390a15050565b6001600160a01b03831661223e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c65565b6001600160a01b03821661229f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c65565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166123265760405162461bcd60e51b8152600401610c6590613855565b6001600160a01b03821661234c5760405162461bcd60e51b8152600401610c659061389a565b6000811161239c5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610c65565b600f54610100900460ff1661242f576001600160a01b03831660009081526022602052604090205460ff16806123ea57506001600160a01b03821660009081526022602052604090205460ff165b61242f5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c65565b600c5415612502576001600160a01b0383166000908152600d602052604090205460ff16158061246c57506005546001600160a01b038381169116145b8061248157506001600160a01b03821661dead145b6125025760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610c65565b600f5460ff161561291e576005546001600160a01b0384811691161480159061253957506005546001600160a01b03838116911614155b801561254d57506001600160a01b03821615155b801561256457506001600160a01b03821661dead14155b801561258957506001600160a01b03831660009081526022602052604090205460ff16155b80156125ae57506001600160a01b03821660009081526022602052604090205460ff16155b1561291e5760215460ff16156126c7576006546001600160a01b038381169116148015906125ea57506007546001600160a01b03838116911614155b156126c7576125fa6002436138dd565b326000908152601f6020526040902054108015612638575061261d6002436138dd565b6001600160a01b0383166000908152601f6020526040902054105b6126a25760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610c65565b326000908152601f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526024602052604090205460ff16801561270857506001600160a01b03821660009081526023602052604090205460ff16155b156127e457601c548111156127705760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610c65565b601e546001600160a01b0383166000908152602081905260409020546127969083613758565b11156127df5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610c65565b61291e565b6001600160a01b03821660009081526024602052604090205460ff16801561282557506001600160a01b03831660009081526023602052604090205460ff16155b1561288f57601d548111156127df5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610c65565b6001600160a01b03821660009081526023602052604090205460ff1661291e57601e546001600160a01b0383166000908152602081905260409020546128d59083613758565b111561291e5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610c65565b6001600160a01b03831660009081526024602052604090205460ff161561297d576001600160a01b03821660009081526020805260408120549003612978576001600160a01b038216600090815260208052604090204290555b6129aa565b600754600160a01b900460ff166129aa57601b80546001600160a01b0319166001600160a01b0385161790555b600f5462010000900460ff1680156129cc5750600754600160a01b900460ff16155b80156129f157506001600160a01b03831660009081526024602052604090205460ff16155b8015612a1657506001600160a01b03831660009081526022602052604090205460ff16155b8015612a3b57506001600160a01b03821660009081526022602052604090205460ff16155b15612a6a576007805460ff60a01b1916600160a01b179055612a5c83612e2b565b6007805460ff60a01b191690555b6001600160a01b03831660009081526022602052604090205460019060ff1680612aac57506001600160a01b03831660009081526022602052604090205460ff165b15612ab5575060005b60008115612e2057600c5443108015612ae657506001600160a01b03851660009081526024602052604090205460ff165b8015612b0b57506001600160a01b03841660009081526024602052604090205460ff16155b8015612b1957506000601054115b15612c69576001600160a01b0384166000908152600d602052604090205460ff16612bb9576001600160a01b0384166000908152600d60205260408120805460ff19166001908117909155600e805491929091612b77908490613758565b90915550506040516001600160a01b03851681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b6064612bc684606361371f565b612bd09190613736565b905060105460125482612be3919061371f565b612bed9190613736565b60196000828254612bfe9190613758565b9091555050601054601154612c13908361371f565b612c1d9190613736565b60186000828254612c2e9190613758565b9091555050601054601354612c43908361371f565b612c4d9190613736565b601a6000828254612c5e9190613758565b90915550612e029050565b6001600160a01b03841660009081526024602052604090205460ff168015612c9357506000601454115b15612d2557606460145484612ca8919061371f565b612cb29190613736565b905060145460165482612cc5919061371f565b612ccf9190613736565b60196000828254612ce09190613758565b9091555050601454601554612cf5908361371f565b612cff9190613736565b60186000828254612d109190613758565b9091555050601454601754612c43908361371f565b6001600160a01b03851660009081526024602052604090205460ff168015612d4f57506000601054115b15612e0257606460105484612d64919061371f565b612d6e9190613736565b905060105460125482612d81919061371f565b612d8b9190613736565b60196000828254612d9c9190613758565b9091555050601054601154612db1908361371f565b612dbb9190613736565b60186000828254612dcc9190613758565b9091555050601054601354612de1908361371f565b612deb9190613736565b601a6000828254612dfc9190613758565b90915550505b8015612e1357612e1385308361307e565b612e1d81846138dd565b92505b611d3c85858561307e565b3060009081526020819052604081205490506000601a54601854601954612e529190613758565b612e5c9190613758565b9050811580612e69575080155b15612e7357505050565b600854612e8190603c61371f565b821115612e9957600854612e9690603c61371f565b91505b600060028260195485612eac919061371f565b612eb69190613736565b612ec09190613736565b9050612ed4612ecf82856138dd565b6131d3565b60195447908190600090612eea90600290613736565b612ef490866138dd565b601854612f01908561371f565b612f0b9190613736565b905060006002601954612f1e9190613736565b612f2890876138dd565b601a54612f35908661371f565b612f3f9190613736565b9050612f4b8183613758565b612f5590846138dd565b600060198190556018819055601a5592508415801590612f755750600083115b15612f8457612f84858461332d565b600a546040516000916001600160a01b03169083908381818185875af1925050503d8060008114612fd1576040519150601f19603f3d011682016040523d82523d6000602084013e612fd6565b606091505b5050905080612fe457600080fd5b6009546040516000916001600160a01b03169085908381818185875af1925050503d8060008114613031576040519150601f19603f3d011682016040523d82523d6000602084013e613036565b606091505b505090508061304457600080fd5b50505050505050505050565b6001600160a01b0382166000908152602460205260409020805460ff191682151517905561151c82826133d8565b6001600160a01b0383166130a45760405162461bcd60e51b8152600401610c6590613855565b6001600160a01b0382166130ca5760405162461bcd60e51b8152600401610c659061389a565b6001600160a01b038316600090815260208190526040902054818110156131425760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c65565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290613179908490613758565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131c591815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613208576132086136da565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613261573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328591906137a2565b81600181518110613298576132986136da565b6001600160a01b0392831660209182029290920101526006546132be91309116846121dc565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906132f79085906000908690309042906004016138f0565b600060405180830381600087803b15801561331157600080fd5b505af1158015613325573d6000803e3d6000fd5b505050505050565b6006546133459030906001600160a01b0316846121dc565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156133b3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d3c919061392c565b6001600160a01b038216600081815260236020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674691016121d0565b600060208083528351808285015260005b8181101561346157858101830151858201604001528201613445565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461349757600080fd5b50565b600080604083850312156134ad57600080fd5b82356134b881613482565b946020939093013593505050565b6000602082840312156134d857600080fd5b81356134e381613482565b9392505050565b801515811461349757600080fd5b60008060006040848603121561350d57600080fd5b833567ffffffffffffffff8082111561352557600080fd5b818601915086601f83011261353957600080fd5b81358181111561354857600080fd5b8760208260051b850101111561355d57600080fd5b60209283019550935050840135613573816134ea565b809150509250925092565b60008060006060848603121561359357600080fd5b833561359e81613482565b925060208401356135ae81613482565b929592945050506040919091013590565b6000602082840312156135d157600080fd5b5035919050565b600080604083850312156135eb57600080fd5b82356135f681613482565b91506020830135613606816134ea565b809150509250929050565b60008060006060848603121561362657600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561365057600080fd5b823561365b81613482565b9150602083013561360681613482565b600181811c9082168061367f57607f821691505b60208210810361369f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613718576137186136f0565b5060010190565b8082028115828204841417610c3557610c356136f0565b60008261375357634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610c3557610c356136f0565b6020808252601d908201527f4d757374206b656570206665657320617420333025206f72206c657373000000604082015260600190565b6000602082840312156137b457600080fd5b81516134e381613482565b6000602082840312156137d157600080fd5b81516134e3816134ea565b600081518084526020808501945080840160005b838110156138155781516001600160a01b0316875295820195908201906001016137f0565b509495945050505050565b84815260806020820152600061383960808301866137dc565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610c3557610c356136f0565b85815284602082015260a06040820152600061390f60a08301866137dc565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561394157600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122043abbb43da9b3fe27e9557da228049a56d968dbbae42b9a9e5a12b155078ba2164736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000000000000000000000077893de4d2b2e7f1c51969f81dbf7f38c4085ba3000000000000000000000000da0b5a8fd68c5e05838c9bf2f866e58e99ed3ce2

Deployed Bytecode

0x6080604052600436106103dd5760003560e01c80638da5cb5b116101fd578063c876d0b911610118578063e73ea3d9116100ab578063f11a24d31161007a578063f11a24d314610b11578063f2fde38b14610b27578063f5648a4f14610b47578063f637434214610b5c578063fc155d1d14610b7257600080fd5b8063e73ea3d914610aa6578063e800dff714610ac6578063e884f26014610ae6578063ee40166e14610afb57600080fd5b8063dc3f0d0f116100e7578063dc3f0d0f14610a3b578063dd62ed3e14610a5b578063e2cd5fcd14610a7b578063e2f4560514610a9057600080fd5b8063c876d0b9146109d5578063cc2ffe7c146109ef578063d257b34f14610a05578063d85ba06314610a2557600080fd5b8063a8bde9c111610190578063bbc0c7421161015f578063bbc0c74214610956578063c024666814610975578063c17b5b8c14610995578063c18bc195146109b557600080fd5b8063a8bde9c1146108d0578063a9059cbb146108f0578063aa4bde2814610910578063b62496f51461092657600080fd5b806396bd8dae116101cc57806396bd8dae1461085a5780639a7a23d61461087a578063a457c2d71461089a578063a62068ce146108ba57600080fd5b80638da5cb5b146107f1578063906e9dd01461080f578063921369131461082f57806395d89b411461084557600080fd5b806358a6d531116102f857806370a082311161028b5780637571336a1161025a5780637571336a146107555780637bce5a04146107755780638095d5641461078b57806385ecfd28146107ab57806388e765ff146107db57600080fd5b806370a08231146106d5578063715018a61461070b5780637231d21714610720578063751039fc1461074057600080fd5b80636a486a8e116102c75780636a486a8e146106735780636b0a894c146106895780636b2fb1241461069f5780636ddd1713146106b557600080fd5b806358a6d531146106105780635c068a8c146106275780636605bfda1461063d57806366d602ae1461065d57600080fd5b8063208c0bc611610370578063395093511161033f57806339509351146105a157806349bd5a5e146105c15780634a62bb65146105e157806351f205e4146105fb57600080fd5b8063208c0bc61461051957806323b872dd146105455780632be32b6114610565578063313ce5671461058557600080fd5b80631694505e116103ac5780631694505e1461049657806318160ddd146104ce5780631a8145bb146104ed5780631f3fed8f1461050357600080fd5b806306fdde03146103e9578063095ea7b31461041457806310d5de5314610444578063130a2c3c1461047457600080fd5b366103e457005b600080fd5b3480156103f557600080fd5b506103fe610b92565b60405161040b9190613434565b60405180910390f35b34801561042057600080fd5b5061043461042f36600461349a565b610c24565b604051901515815260200161040b565b34801561045057600080fd5b5061043461045f3660046134c6565b60236020526000908152604090205460ff1681565b34801561048057600080fd5b5061049461048f3660046134f8565b610c3b565b005b3480156104a257600080fd5b506006546104b6906001600160a01b031681565b6040516001600160a01b03909116815260200161040b565b3480156104da57600080fd5b506002545b60405190815260200161040b565b3480156104f957600080fd5b506104df60195481565b34801561050f57600080fd5b506104df601a5481565b34801561052557600080fd5b506104df6105343660046134c6565b602080526000908152604090205481565b34801561055157600080fd5b5061043461056036600461357e565b610ce5565b34801561057157600080fd5b506104946105803660046135bf565b610d8f565b34801561059157600080fd5b506040516012815260200161040b565b3480156105ad57600080fd5b506104346105bc36600461349a565b610e9c565b3480156105cd57600080fd5b506007546104b6906001600160a01b031681565b3480156105ed57600080fd5b50600f546104349060ff1681565b34801561060757600080fd5b50610494610ec8565b34801561061c57600080fd5b50600c544310610434565b34801561063357600080fd5b506104df60115481565b34801561064957600080fd5b506104946106583660046134c6565b610fd9565b34801561066957600080fd5b506104df601d5481565b34801561067f57600080fd5b506104df60145481565b34801561069557600080fd5b506104df600e5481565b3480156106ab57600080fd5b506104df60155481565b3480156106c157600080fd5b50600f546104349062010000900460ff1681565b3480156106e157600080fd5b506104df6106f03660046134c6565b6001600160a01b031660009081526020819052604090205490565b34801561071757600080fd5b50610494611085565b34801561072c57600080fd5b5061049461073b3660046134c6565b6110f9565b34801561074c57600080fd5b506104946111eb565b34801561076157600080fd5b506104946107703660046135d8565b611256565b34801561078157600080fd5b506104df60135481565b34801561079757600080fd5b506104946107a6366004613611565b61131e565b3480156107b757600080fd5b506104346107c63660046134c6565b600d6020526000908152604090205460ff1681565b3480156107e757600080fd5b506104df601c5481565b3480156107fd57600080fd5b506005546001600160a01b03166104b6565b34801561081b57600080fd5b5061049461082a3660046134c6565b611396565b34801561083b57600080fd5b506104df60175481565b34801561085157600080fd5b506103fe611443565b34801561086657600080fd5b5061043461087536600461349a565b611452565b34801561088657600080fd5b506104946108953660046135d8565b611464565b3480156108a657600080fd5b506104346108b536600461349a565b611558565b3480156108c657600080fd5b506104df600c5481565b3480156108dc57600080fd5b50601b546104b6906001600160a01b031681565b3480156108fc57600080fd5b5061043461090b36600461349a565b6115e7565b34801561091c57600080fd5b506104df601e5481565b34801561093257600080fd5b506104346109413660046134c6565b60246020526000908152604090205460ff1681565b34801561096257600080fd5b50600f5461043490610100900460ff1681565b34801561098157600080fd5b506104946109903660046135d8565b6115f4565b3480156109a157600080fd5b506104946109b0366004613611565b61167d565b3480156109c157600080fd5b506104946109d03660046135bf565b6116f0565b3480156109e157600080fd5b506021546104349060ff1681565b3480156109fb57600080fd5b506104df60185481565b348015610a1157600080fd5b50610494610a203660046135bf565b6117f9565b348015610a3157600080fd5b506104df60105481565b348015610a4757600080fd5b50610494610a563660046135bf565b611944565b348015610a6757600080fd5b506104df610a7636600461363d565b611a4b565b348015610a8757600080fd5b50610494611a76565b348015610a9c57600080fd5b506104df60085481565b348015610ab257600080fd5b50610494610ac136600461357e565b611b3c565b348015610ad257600080fd5b50610494610ae13660046135d8565b611db6565b348015610af257600080fd5b50610494611e0b565b348015610b0757600080fd5b506104df600b5481565b348015610b1d57600080fd5b506104df60125481565b348015610b3357600080fd5b50610494610b423660046134c6565b611e41565b348015610b5357600080fd5b50610494611f2c565b348015610b6857600080fd5b506104df60165481565b348015610b7e57600080fd5b50610494610b8d3660046135bf565b611f98565b606060038054610ba19061366b565b80601f0160208091040260200160405190810160405280929190818152602001828054610bcd9061366b565b8015610c1a5780601f10610bef57610100808354040283529160200191610c1a565b820191906000526020600020905b815481529060010190602001808311610bfd57829003601f168201915b5050505050905090565b6000610c313384846121dc565b5060015b92915050565b6005546001600160a01b03163314610c6e5760405162461bcd60e51b8152600401610c65906136a5565b60405180910390fd5b60005b82811015610cdf5781600d6000868685818110610c9057610c906136da565b9050602002016020810190610ca591906134c6565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610cd781613706565b915050610c71565b50505050565b6000610cf2848484612300565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610d775760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610c65565b610d8485338584036121dc565b506001949350505050565b6005546001600160a01b03163314610db95760405162461bcd60e51b8152600401610c65906136a5565b670de0b6b3a76400006103e8610dce60025490565b610dd990600261371f565b610de39190613736565b610ded9190613736565b811015610e4e5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610c65565b610e6081670de0b6b3a764000061371f565b601c8190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b600033610ebe818585610eaf8383611a4b565b610eb99190613758565b6121dc565b5060019392505050565b6005546001600160a01b03163314610ef25760405162461bcd60e51b8152600401610c65906136a5565b600854306000908152602081905260409020541015610f7b576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610c65565b6007805460ff60a01b1916600160a01b179055610f9733612e2b565b6007805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b031633146110035760405162461bcd60e51b8152600401610c65906136a5565b6001600160a01b0381166110635760405162461bcd60e51b815260206004820152602160248201527f5f74726561737572794164647220616464726573732063616e6e6f74206265206044820152600360fc1b6064820152608401610c65565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110af5760405162461bcd60e51b8152600401610c65906136a5565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146111235760405162461bcd60e51b8152600401610c65906136a5565b600f54610100900460ff161561117b5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610c65565b600f805462ffff0019166201010017905543600b55600980546001600160a01b0319166001600160a01b0383169081179091556111b99060016115f4565b600b54600c556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a150565b6005546001600160a01b031633146112155760405162461bcd60e51b8152600401610c65906136a5565b600f805460ff199081169091556021805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146112805760405162461bcd60e51b8152600401610c65906136a5565b806112f3576007546001600160a01b03908116908316036112f35760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610c65565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146113485760405162461bcd60e51b8152600401610c65906136a5565b601183905560128290556013819055806113628385613758565b61136c9190613758565b6010819055601e10156113915760405162461bcd60e51b8152600401610c659061376b565b505050565b6005546001600160a01b031633146113c05760405162461bcd60e51b8152600401610c65906136a5565b6001600160a01b0381166114215760405162461bcd60e51b815260206004820152602260248201527f5f6d61726b6574696e674164647220616464726573732063616e6e6f74206265604482015261020360f41b6064820152608401610c65565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610ba19061366b565b6000610c31833084610eaf8730611a4b565b6005546001600160a01b0316331461148e5760405162461bcd60e51b8152600401610c65906136a5565b6007546001600160a01b03908116908316036115125760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c65565b61151c8282613050565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156115da5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c65565b610ebe33858584036121dc565b6000610c31338484612300565b6005546001600160a01b0316331461161e5760405162461bcd60e51b8152600401610c65906136a5565b6001600160a01b038216600081815260226020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146116a75760405162461bcd60e51b8152600401610c65906136a5565b601583905560168290556017819055806116c18385613758565b6116cb9190613758565b6014819055601e10156113915760405162461bcd60e51b8152600401610c659061376b565b6005546001600160a01b0316331461171a5760405162461bcd60e51b8152600401610c65906136a5565b670de0b6b3a76400006103e861172f60025490565b61173a90600361371f565b6117449190613736565b61174e9190613736565b8110156117b25760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610c65565b6117c481670de0b6b3a764000061371f565b601e8190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610e91565b6005546001600160a01b031633146118235760405162461bcd60e51b8152600401610c65906136a5565b620186a061183060025490565b61183b90600161371f565b6118459190613736565b8110156118b25760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610c65565b6103e86118be60025490565b6118c990600161371f565b6118d39190613736565b81111561193f5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610c65565b600855565b6005546001600160a01b0316331461196e5760405162461bcd60e51b8152600401610c65906136a5565b670de0b6b3a76400006103e861198360025490565b61198e90600261371f565b6119989190613736565b6119a29190613736565b811015611a045760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610c65565b611a1681670de0b6b3a764000061371f565b601d8190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610e91565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03163314611aa05760405162461bcd60e51b8152600401610c65906136a5565b6001601581905560168190556002601781905590611abe9080613758565b611ac89190613758565b6014819055601e1015611aed5760405162461bcd60e51b8152600401610c659061376b565b6001601181905560128190556002601381905590611b0b9080613758565b611b159190613758565b6010819055601e1015611b3a5760405162461bcd60e51b8152600401610c659061376b565b565b6001600160a01b038316611b925760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610c65565b6040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2091906137a2565b81600081518110611c3357611c336136da565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611c6757611c676136da565b6001600160a01b039092166020928302919091018201523360009081526022909152604090205460ff1615611d4357836001600160a01b03166323b872dd8483600181518110611cb957611cb96136da565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018590526064016020604051808303816000875af1158015611d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3c91906137bf565b5050505050565b60065460405163b6f9de9560e01b81526001600160a01b039091169063b6f9de95908490611d7e90600090869061dead904290600401613820565b6000604051808303818588803b158015611d9757600080fd5b505af1158015611dab573d6000803e3d6000fd5b505050505050505050565b6005546001600160a01b03163314611de05760405162461bcd60e51b8152600401610c65906136a5565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314611e355760405162461bcd60e51b8152600401610c65906136a5565b6021805460ff19169055565b6005546001600160a01b03163314611e6b5760405162461bcd60e51b8152600401610c65906136a5565b6001600160a01b038116611ed05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c65565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611f565760405162461bcd60e51b8152600401610c65906136a5565b604051600090339047908381818185875af1925050503d8060008114610cdf576040519150601f19603f3d011682016040523d82523d6000602084013e610cdf565b6005546001600160a01b03163314611fc25760405162461bcd60e51b8152600401610c65906136a5565b678ac7230489e800008111156120505760405162461bcd60e51b815260206004820152604760248201527f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060448201527f612073696e676c652062757920746f207265647563652073616e64776963682060648201526661747461636b7360c81b608482015260a401610c65565b6040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156120ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120de91906137a2565b816000815181106120f1576120f16136da565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612125576121256136da565b6001600160a01b03928316602091820292909201015260065460405163b6f9de9560e01b815291169063b6f9de9590849061216d90600090869061dead904290600401613820565b6000604051808303818588803b15801561218657600080fd5b505af115801561219a573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d684820568826040516121d091815260200190565b60405180910390a15050565b6001600160a01b03831661223e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c65565b6001600160a01b03821661229f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c65565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166123265760405162461bcd60e51b8152600401610c6590613855565b6001600160a01b03821661234c5760405162461bcd60e51b8152600401610c659061389a565b6000811161239c5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610c65565b600f54610100900460ff1661242f576001600160a01b03831660009081526022602052604090205460ff16806123ea57506001600160a01b03821660009081526022602052604090205460ff165b61242f5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c65565b600c5415612502576001600160a01b0383166000908152600d602052604090205460ff16158061246c57506005546001600160a01b038381169116145b8061248157506001600160a01b03821661dead145b6125025760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610c65565b600f5460ff161561291e576005546001600160a01b0384811691161480159061253957506005546001600160a01b03838116911614155b801561254d57506001600160a01b03821615155b801561256457506001600160a01b03821661dead14155b801561258957506001600160a01b03831660009081526022602052604090205460ff16155b80156125ae57506001600160a01b03821660009081526022602052604090205460ff16155b1561291e5760215460ff16156126c7576006546001600160a01b038381169116148015906125ea57506007546001600160a01b03838116911614155b156126c7576125fa6002436138dd565b326000908152601f6020526040902054108015612638575061261d6002436138dd565b6001600160a01b0383166000908152601f6020526040902054105b6126a25760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610c65565b326000908152601f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526024602052604090205460ff16801561270857506001600160a01b03821660009081526023602052604090205460ff16155b156127e457601c548111156127705760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610c65565b601e546001600160a01b0383166000908152602081905260409020546127969083613758565b11156127df5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610c65565b61291e565b6001600160a01b03821660009081526024602052604090205460ff16801561282557506001600160a01b03831660009081526023602052604090205460ff16155b1561288f57601d548111156127df5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610c65565b6001600160a01b03821660009081526023602052604090205460ff1661291e57601e546001600160a01b0383166000908152602081905260409020546128d59083613758565b111561291e5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610c65565b6001600160a01b03831660009081526024602052604090205460ff161561297d576001600160a01b03821660009081526020805260408120549003612978576001600160a01b038216600090815260208052604090204290555b6129aa565b600754600160a01b900460ff166129aa57601b80546001600160a01b0319166001600160a01b0385161790555b600f5462010000900460ff1680156129cc5750600754600160a01b900460ff16155b80156129f157506001600160a01b03831660009081526024602052604090205460ff16155b8015612a1657506001600160a01b03831660009081526022602052604090205460ff16155b8015612a3b57506001600160a01b03821660009081526022602052604090205460ff16155b15612a6a576007805460ff60a01b1916600160a01b179055612a5c83612e2b565b6007805460ff60a01b191690555b6001600160a01b03831660009081526022602052604090205460019060ff1680612aac57506001600160a01b03831660009081526022602052604090205460ff165b15612ab5575060005b60008115612e2057600c5443108015612ae657506001600160a01b03851660009081526024602052604090205460ff165b8015612b0b57506001600160a01b03841660009081526024602052604090205460ff16155b8015612b1957506000601054115b15612c69576001600160a01b0384166000908152600d602052604090205460ff16612bb9576001600160a01b0384166000908152600d60205260408120805460ff19166001908117909155600e805491929091612b77908490613758565b90915550506040516001600160a01b03851681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b6064612bc684606361371f565b612bd09190613736565b905060105460125482612be3919061371f565b612bed9190613736565b60196000828254612bfe9190613758565b9091555050601054601154612c13908361371f565b612c1d9190613736565b60186000828254612c2e9190613758565b9091555050601054601354612c43908361371f565b612c4d9190613736565b601a6000828254612c5e9190613758565b90915550612e029050565b6001600160a01b03841660009081526024602052604090205460ff168015612c9357506000601454115b15612d2557606460145484612ca8919061371f565b612cb29190613736565b905060145460165482612cc5919061371f565b612ccf9190613736565b60196000828254612ce09190613758565b9091555050601454601554612cf5908361371f565b612cff9190613736565b60186000828254612d109190613758565b9091555050601454601754612c43908361371f565b6001600160a01b03851660009081526024602052604090205460ff168015612d4f57506000601054115b15612e0257606460105484612d64919061371f565b612d6e9190613736565b905060105460125482612d81919061371f565b612d8b9190613736565b60196000828254612d9c9190613758565b9091555050601054601154612db1908361371f565b612dbb9190613736565b60186000828254612dcc9190613758565b9091555050601054601354612de1908361371f565b612deb9190613736565b601a6000828254612dfc9190613758565b90915550505b8015612e1357612e1385308361307e565b612e1d81846138dd565b92505b611d3c85858561307e565b3060009081526020819052604081205490506000601a54601854601954612e529190613758565b612e5c9190613758565b9050811580612e69575080155b15612e7357505050565b600854612e8190603c61371f565b821115612e9957600854612e9690603c61371f565b91505b600060028260195485612eac919061371f565b612eb69190613736565b612ec09190613736565b9050612ed4612ecf82856138dd565b6131d3565b60195447908190600090612eea90600290613736565b612ef490866138dd565b601854612f01908561371f565b612f0b9190613736565b905060006002601954612f1e9190613736565b612f2890876138dd565b601a54612f35908661371f565b612f3f9190613736565b9050612f4b8183613758565b612f5590846138dd565b600060198190556018819055601a5592508415801590612f755750600083115b15612f8457612f84858461332d565b600a546040516000916001600160a01b03169083908381818185875af1925050503d8060008114612fd1576040519150601f19603f3d011682016040523d82523d6000602084013e612fd6565b606091505b5050905080612fe457600080fd5b6009546040516000916001600160a01b03169085908381818185875af1925050503d8060008114613031576040519150601f19603f3d011682016040523d82523d6000602084013e613036565b606091505b505090508061304457600080fd5b50505050505050505050565b6001600160a01b0382166000908152602460205260409020805460ff191682151517905561151c82826133d8565b6001600160a01b0383166130a45760405162461bcd60e51b8152600401610c6590613855565b6001600160a01b0382166130ca5760405162461bcd60e51b8152600401610c659061389a565b6001600160a01b038316600090815260208190526040902054818110156131425760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c65565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290613179908490613758565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131c591815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613208576132086136da565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613261573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328591906137a2565b81600181518110613298576132986136da565b6001600160a01b0392831660209182029290920101526006546132be91309116846121dc565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906132f79085906000908690309042906004016138f0565b600060405180830381600087803b15801561331157600080fd5b505af1158015613325573d6000803e3d6000fd5b505050505050565b6006546133459030906001600160a01b0316846121dc565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156133b3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d3c919061392c565b6001600160a01b038216600081815260236020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674691016121d0565b600060208083528351808285015260005b8181101561346157858101830151858201604001528201613445565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461349757600080fd5b50565b600080604083850312156134ad57600080fd5b82356134b881613482565b946020939093013593505050565b6000602082840312156134d857600080fd5b81356134e381613482565b9392505050565b801515811461349757600080fd5b60008060006040848603121561350d57600080fd5b833567ffffffffffffffff8082111561352557600080fd5b818601915086601f83011261353957600080fd5b81358181111561354857600080fd5b8760208260051b850101111561355d57600080fd5b60209283019550935050840135613573816134ea565b809150509250925092565b60008060006060848603121561359357600080fd5b833561359e81613482565b925060208401356135ae81613482565b929592945050506040919091013590565b6000602082840312156135d157600080fd5b5035919050565b600080604083850312156135eb57600080fd5b82356135f681613482565b91506020830135613606816134ea565b809150509250929050565b60008060006060848603121561362657600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561365057600080fd5b823561365b81613482565b9150602083013561360681613482565b600181811c9082168061367f57607f821691505b60208210810361369f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613718576137186136f0565b5060010190565b8082028115828204841417610c3557610c356136f0565b60008261375357634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610c3557610c356136f0565b6020808252601d908201527f4d757374206b656570206665657320617420333025206f72206c657373000000604082015260600190565b6000602082840312156137b457600080fd5b81516134e381613482565b6000602082840312156137d157600080fd5b81516134e3816134ea565b600081518084526020808501945080840160005b838110156138155781516001600160a01b0316875295820195908201906001016137f0565b509495945050505050565b84815260806020820152600061383960808301866137dc565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610c3557610c356136f0565b85815284602082015260a06040820152600061390f60a08301866137dc565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561394157600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122043abbb43da9b3fe27e9557da228049a56d968dbbae42b9a9e5a12b155078ba2164736f6c63430008110033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000077893de4d2b2e7f1c51969f81dbf7f38c4085ba3000000000000000000000000da0b5a8fd68c5e05838c9bf2f866e58e99ed3ce2

-----Decoded View---------------
Arg [0] : _marketingWallet (address): 0x77893De4d2b2e7f1C51969f81dBF7F38c4085ba3
Arg [1] : _treasuryWallet (address): 0xDa0b5a8fD68c5e05838c9BF2f866E58E99Ed3cE2

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000077893de4d2b2e7f1c51969f81dbf7f38c4085ba3
Arg [1] : 000000000000000000000000da0b5a8fd68c5e05838c9bf2f866e58e99ed3ce2


Deployed Bytecode Sourcemap

20399:21627:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11351:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12406:210;;;;;;;;;;-1:-1:-1;12406:210:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;12406:210:0;1023:187:1;21793:63:0;;;;;;;;;;-1:-1:-1;21793:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;38346:232;;;;;;;;;;-1:-1:-1;38346:232:0;;;;;:::i;:::-;;:::i;:::-;;20445:33;;;;;;;;;;-1:-1:-1;20445:33:0;;;;-1:-1:-1;;;;;20445:33:0;;;;;;-1:-1:-1;;;;;2527:32:1;;;2509:51;;2497:2;2482:18;20445:33:0;2345:221:1;11672:108:0;;;;;;;;;;-1:-1:-1;11760:12:0;;11672:108;;;2717:25:1;;;2705:2;2690:18;11672:108:0;2571:177:1;21274:33:0;;;;;;;;;;;;;;;;21314;;;;;;;;;;;;;;;;21565:63;;;;;;;;;;-1:-1:-1;21565:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;13196:529;;;;;;;;;;-1:-1:-1;13196:529:0;;;;;:::i;:::-;;:::i;25231:310::-;;;;;;;;;;-1:-1:-1;25231:310:0;;;;;:::i;:::-;;:::i;11571:93::-;;;;;;;;;;-1:-1:-1;11571:93:0;;11654:2;3541:36:1;;3529:2;3514:18;11571:93:0;3399:184:1;14134:270:0;;;;;;;;;;-1:-1:-1;14134:270:0;;;;;:::i;:::-;;:::i;20485:28::-;;;;;;;;;;-1:-1:-1;20485:28:0;;;;-1:-1:-1;;;;;20485:28:0;;;20825:33;;;;;;;;;;-1:-1:-1;20825:33:0;;;;;;;;40872:359;;;;;;;;;;;;;:::i;32176:121::-;;;;;;;;;;-1:-1:-1;32271:18:0;;32256:12;:33;32176:121;;20977:29;;;;;;;;;;;;;;;;30208:247;;;;;;;;;;-1:-1:-1;30208:247:0;;;;;:::i;:::-;;:::i;21422:28::-;;;;;;;;;;;;;;;;21087;;;;;;;;;;;;;;;;20793:25;;;;;;;;;;;;;;;;21122:30;;;;;;;;;;;;;;;;20905:31;;;;;;;;;;-1:-1:-1;20905:31:0;;;;;;;;;;;11788:177;;;;;;;;;;-1:-1:-1;11788:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;11939:18:0;11907:7;11939:18;;;;;;;;;;;;11788:177;18869:150;;;;;;;;;;;;;:::i;26247:395::-;;;;;;;;;;-1:-1:-1;26247:395:0;;;;;:::i;:::-;;:::i;26694:154::-;;;;;;;;;;;;;:::i;27583:341::-;;;;;;;;;;-1:-1:-1;27583:341:0;;;;;:::i;:::-;;:::i;21050:30::-;;;;;;;;;;;;;;;;31305:423;;;;;;;;;;-1:-1:-1;31305:423:0;;;;;:::i;:::-;;:::i;20743:43::-;;;;;;;;;;-1:-1:-1;20743:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21388:27;;;;;;;;;;;;;;;;18655:79;;;;;;;;;;-1:-1:-1;18720:6:0;;-1:-1:-1;;;;;18720:6:0;18655:79;;30463:216;;;;;;;;;;-1:-1:-1;30463:216:0;;;;;:::i;:::-;;:::i;21197:31::-;;;;;;;;;;;;;;;;11459:104;;;;;;;;;;;;;:::i;15680:226::-;;;;;;;;;;-1:-1:-1;15680:226:0;;;;;:::i;:::-;;:::i;30687:362::-;;;;;;;;;;-1:-1:-1;30687:362:0;;;;;:::i;:::-;;:::i;14907:482::-;;;;;;;;;;-1:-1:-1;14907:482:0;;;;;:::i;:::-;;:::i;20703:33::-;;;;;;;;;;;;;;;;21354:27;;;;;;;;;;-1:-1:-1;21354:27:0;;;;-1:-1:-1;;;;;21354:27:0;;;11973:216;;;;;;;;;;-1:-1:-1;11973:216:0;;;;;:::i;:::-;;:::i;21457:30::-;;;;;;;;;;;;;;;;22012:57;;;;;;;;;;-1:-1:-1;22012:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20865:33;;;;;;;;;;-1:-1:-1;20865:33:0;;;;;;;;;;;28478:182;;;;;;;;;;-1:-1:-1;28478:182:0;;;;;:::i;:::-;;:::i;31736:432::-;;;;;;;;;;-1:-1:-1;31736:432:0;;;;;:::i;:::-;;:::i;25872:325::-;;;;;;;;;;-1:-1:-1;25872:325:0;;;;;:::i;:::-;;:::i;21635:39::-;;;;;;;;;;-1:-1:-1;21635:39:0;;;;;;;;21235:32;;;;;;;;;;;;;;;;26918:428;;;;;;;;;;-1:-1:-1;26918:428:0;;;;;:::i;:::-;;:::i;20943:27::-;;;;;;;;;;;;;;;;25549:315;;;;;;;;;;-1:-1:-1;25549:315:0;;;;;:::i;:::-;;:::i;12197:201::-;;;;;;;;;;-1:-1:-1;12197:201:0;;;;;:::i;:::-;;:::i;27932:538::-;;;;;;;;;;;;;:::i;20548:33::-;;;;;;;;;;;;;;;;29197:748;;;;;;;;;;-1:-1:-1;29197:748:0;;;;;:::i;:::-;;:::i;38220:118::-;;;;;;;;;;-1:-1:-1;38220:118:0;;;;;:::i;:::-;;:::i;25125:98::-;;;;;;;;;;;;;:::i;20659:37::-;;;;;;;;;;;;;;;;21013:30;;;;;;;;;;;;;;;;19027:281;;;;;;;;;;-1:-1:-1;19027:281:0;;;;;:::i;:::-;;:::i;30015:185::-;;;;;;;;;;;;;:::i;21159:31::-;;;;;;;;;;;;;;;;41334:689;;;;;;;;;;-1:-1:-1;41334:689:0;;;;;:::i;:::-;;:::i;11351:100::-;11405:13;11438:5;11431:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11351:100;:::o;12406:210::-;12525:4;12547:39;7500:10;12570:7;12579:6;12547:8;:39::i;:::-;-1:-1:-1;12604:4:0;12406:210;;;;;:::o;38346:232::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;;;;;;;;;38474:9:::1;38469:102;38489:18:::0;;::::1;38469:102;;;38555:4;38529:11;:23;38541:7;;38549:1;38541:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;38529:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;38529:23:0;:30;;-1:-1:-1;;38529:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;38509:3;::::1;::::0;::::1;:::i;:::-;;;;38469:102;;;;38346:232:::0;;;:::o;13196:529::-;13336:4;13353:36;13363:6;13371:9;13382:6;13353:9;:36::i;:::-;-1:-1:-1;;;;;13429:19:0;;13402:24;13429:19;;;:11;:19;;;;;;;;7500:10;13429:33;;;;;;;;13495:26;;;;13473:116;;;;-1:-1:-1;;;13473:116:0;;6249:2:1;13473:116:0;;;6231:21:1;6288:2;6268:18;;;6261:30;6327:34;6307:18;;;6300:62;-1:-1:-1;;;6378:18:1;;;6371:38;6426:19;;13473:116:0;6047:404:1;13473:116:0;13625:57;13634:6;7500:10;13675:6;13656:16;:25;13625:8;:57::i;:::-;-1:-1:-1;13713:4:0;;13196:529;-1:-1:-1;;;;13196:529:0:o;25231:310::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;25368:4:::1;25360;25339:13;11760:12:::0;;;11672:108;25339:13:::1;:17;::::0;25355:1:::1;25339:17;:::i;:::-;25338:26;;;;:::i;:::-;25337:35;;;;:::i;:::-;25327:6;:45;;25305:136;;;::::0;-1:-1:-1;;;25305:136:0;;7053:2:1;25305:136:0::1;::::0;::::1;7035:21:1::0;7092:2;7072:18;;;7065:30;7131:34;7111:18;;;7104:62;-1:-1:-1;;;7182:18:1;;;7175:39;7231:19;;25305:136:0::1;6851:405:1::0;25305:136:0::1;25467:17;:6:::0;25477::::1;25467:17;:::i;:::-;25452:12;:32:::0;;;25500:33:::1;::::0;2717:25:1;;;25500:33:0::1;::::0;2705:2:1;2690:18;25500:33:0::1;;;;;;;;25231:310:::0;:::o;14134:270::-;14249:4;7500:10;14310:64;7500:10;14326:7;14363:10;14335:25;7500:10;14326:7;14335:9;:25::i;:::-;:38;;;;:::i;:::-;14310:8;:64::i;:::-;-1:-1:-1;14392:4:0;;14134:270;-1:-1:-1;;;14134:270:0:o;40872:359::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;40977:18:::1;::::0;40967:4:::1;11907:7:::0;11939:18;;;;;;;;;;;40949:46:::1;;40927:160;;;::::0;;-1:-1:-1;;;40927:160:0;;7593:2:1;40927:160:0::1;::::0;::::1;7575:21:1::0;7612:18;;;7605:30;;;;7671:34;7651:18;;;7644:62;7742:34;7722:18;;;7715:62;7794:19;;40927:160:0::1;7391:428:1::0;40927:160:0::1;41098:8;:15:::0;;-1:-1:-1;;;;41098:15:0::1;-1:-1:-1::0;;;41098:15:0::1;::::0;;41124:20:::1;41133:10;41124:8;:20::i;:::-;41155:8;:16:::0;;-1:-1:-1;;;;41155:16:0::1;::::0;;41187:36:::1;::::0;41207:15:::1;2717:25:1::0;;41187:36:0::1;::::0;2705:2:1;2690:18;41187:36:0::1;;;;;;;40872:359::o:0;30208:247::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30311:27:0;::::1;30289:110;;;::::0;-1:-1:-1;;;30289:110:0;;8026:2:1;30289:110:0::1;::::0;::::1;8008:21:1::0;8065:2;8045:18;;;8038:30;8104:34;8084:18;;;8077:62;-1:-1:-1;;;8155:18:1;;;8148:31;8196:19;;30289:110:0::1;7824:397:1::0;30289:110:0::1;30410:12;:37:::0;;-1:-1:-1;;;;;;30410:37:0::1;-1:-1:-1::0;;;;;30410:37:0;;;::::1;::::0;;;::::1;::::0;;30208:247::o;18869:150::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;18962:6:::1;::::0;18941:40:::1;::::0;18978:1:::1;::::0;-1:-1:-1;;;;;18962:6:0::1;::::0;18941:40:::1;::::0;18978:1;;18941:40:::1;18992:6;:19:::0;;-1:-1:-1;;;;;;18992:19:0::1;::::0;;18869:150::o;26247:395::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;26322:13:::1;::::0;::::1;::::0;::::1;;;26321:14;26313:50;;;::::0;-1:-1:-1;;;26313:50:0;;8428:2:1;26313:50:0::1;::::0;::::1;8410:21:1::0;8467:2;8447:18;;;8440:30;8506:25;8486:18;;;8479:53;8549:18;;26313:50:0::1;8226:347:1::0;26313:50:0::1;26374:13;:20:::0;;-1:-1:-1;;26405:18:0;;;;;26455:12:::1;26434:18;:33:::0;26478:12:::1;:28:::0;;-1:-1:-1;;;;;;26478:28:0::1;-1:-1:-1::0;;;;;26478:28:0;::::1;::::0;;::::1;::::0;;;26517:35:::1;::::0;-1:-1:-1;26517:15:0::1;:35::i;:::-;26584:18;::::0;26563::::1;:39:::0;26618:16:::1;::::0;::::1;::::0;-1:-1:-1;;26618:16:0::1;26247:395:::0;:::o;26694:154::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;26748:14:::1;:22:::0;;-1:-1:-1;;26748:22:0;;::::1;::::0;;;26781:20:::1;:28:::0;;;;::::1;::::0;;26825:15:::1;::::0;::::1;::::0;26765:5:::1;::::0;26825:15:::1;26694:154::o:0;27583:341::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;27703:4:::1;27698:162;;27760:13;::::0;-1:-1:-1;;;;;27760:13:0;;::::1;27750:23:::0;;::::1;::::0;27724:124:::1;;;::::0;-1:-1:-1;;;27724:124:0;;8780:2:1;27724:124:0::1;::::0;::::1;8762:21:1::0;8819:2;8799:18;;;8792:30;8858:34;8838:18;;;8831:62;-1:-1:-1;;;8909:18:1;;;8902:37;8956:19;;27724:124:0::1;8578:403:1::0;27724:124:0::1;-1:-1:-1::0;;;;;27870:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;27870:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27583:341::o;31305:423::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;31460:14:::1;:29:::0;;;31500:15:::1;:31:::0;;;31542:15:::1;:31:::0;;;31560:13;31599:32:::1;31518:13:::0;31477:12;31599:32:::1;:::i;:::-;:50;;;;:::i;:::-;31584:12;:65:::0;;;31684:2:::1;-1:-1:-1::0;31668:18:0::1;31660:60;;;;-1:-1:-1::0;;;31660:60:0::1;;;;;;;:::i;:::-;31305:423:::0;;;:::o;30463:216::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30554:28:0;::::1;30546:75;;;::::0;-1:-1:-1;;;30546:75:0;;9546:2:1;30546:75:0::1;::::0;::::1;9528:21:1::0;9585:2;9565:18;;;9558:30;9624:34;9604:18;;;9597:62;-1:-1:-1;;;9675:18:1;;;9668:32;9717:19;;30546:75:0::1;9344:398:1::0;30546:75:0::1;30632:13;:39:::0;;-1:-1:-1;;;;;;30632:39:0::1;-1:-1:-1::0;;;;;30632:39:0;;;::::1;::::0;;;::::1;::::0;;30463:216::o;11459:104::-;11515:13;11548:7;11541:14;;;;;:::i;15680:226::-;15787:4;15804:72;15813:5;15828:4;15869:6;15835:31;15845:5;15860:4;15835:9;:31::i;30687:362::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;30833:13:::1;::::0;-1:-1:-1;;;;;30833:13:0;;::::1;30825:21:::0;;::::1;::::0;30803:128:::1;;;::::0;-1:-1:-1;;;30803:128:0;;9949:2:1;30803:128:0::1;::::0;::::1;9931:21:1::0;9988:2;9968:18;;;9961:30;10027:34;10007:18;;;10000:62;10098:27;10078:18;;;10071:55;10143:19;;30803:128:0::1;9747:421:1::0;30803:128:0::1;30944:41;30973:4;30979:5;30944:28;:41::i;:::-;31001:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;31001:40:0;::::1;::::0;::::1;::::0;;;::::1;30687:362:::0;;:::o;14907:482::-;7500:10;15027:4;15076:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15076:34:0;;;;;;;;;;15143:35;;;;15121:122;;;;-1:-1:-1;;;15121:122:0;;10375:2:1;15121:122:0;;;10357:21:1;10414:2;10394:18;;;10387:30;10453:34;10433:18;;;10426:62;-1:-1:-1;;;10504:18:1;;;10497:35;10549:19;;15121:122:0;10173:401:1;15121:122:0;15279:67;7500:10;15302:7;15330:15;15311:16;:34;15279:8;:67::i;11973:216::-;12095:4;12117:42;7500:10;12141:9;12152:6;12117:9;:42::i;28478:182::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28563:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;28563:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;28618:34;;1163:41:1;;;28618:34:0::1;::::0;1136:18:1;28618:34:0::1;;;;;;;28478:182:::0;;:::o;31736:432::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;31892:15:::1;:30:::0;;;31933:16:::1;:32:::0;;;31976:16:::1;:32:::0;;;31995:13;32035:34:::1;31952:13:::0;31910:12;32035:34:::1;:::i;:::-;:53;;;;:::i;:::-;32019:13;:69:::0;;;32124:2:::1;-1:-1:-1::0;32107:19:0::1;32099:61;;;;-1:-1:-1::0;;;32099:61:0::1;;;;;;;:::i;25872:325::-:0;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;26012:4:::1;26004;25983:13;11760:12:::0;;;11672:108;25983:13:::1;:17;::::0;25999:1:::1;25983:17;:::i;:::-;25982:26;;;;:::i;:::-;25981:35;;;;:::i;:::-;25971:6;:45;;25949:139;;;::::0;-1:-1:-1;;;25949:139:0;;10781:2:1;25949:139:0::1;::::0;::::1;10763:21:1::0;10820:2;10800:18;;;10793:30;10859:34;10839:18;;;10832:62;-1:-1:-1;;;10910:18:1;;;10903:42;10962:19;;25949:139:0::1;10579:408:1::0;25949:139:0::1;26117:17;:6:::0;26127::::1;26117:17;:::i;:::-;26099:15;:35:::0;;;26150:39:::1;::::0;2717:25:1;;;26150:39:0::1;::::0;2705:2:1;2690:18;26150:39:0::1;2571:177:1::0;26918:428:0;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;27058:6:::1;27037:13;11760:12:::0;;;11672:108;27037:13:::1;:17;::::0;27053:1:::1;27037:17;:::i;:::-;27036:28;;;;:::i;:::-;27023:9;:41;;27001:144;;;::::0;-1:-1:-1;;;27001:144:0;;11194:2:1;27001:144:0::1;::::0;::::1;11176:21:1::0;11233:2;11213:18;;;11206:30;11272:34;11252:18;;;11245:62;-1:-1:-1;;;11323:18:1;;;11316:51;11384:19;;27001:144:0::1;10992:417:1::0;27001:144:0::1;27213:4;27192:13;11760:12:::0;;;11672:108;27192:13:::1;:17;::::0;27208:1:::1;27192:17;:::i;:::-;27191:26;;;;:::i;:::-;27178:9;:39;;27156:141;;;::::0;-1:-1:-1;;;27156:141:0;;11616:2:1;27156:141:0::1;::::0;::::1;11598:21:1::0;11655:2;11635:18;;;11628:30;11694:34;11674:18;;;11667:62;-1:-1:-1;;;11745:18:1;;;11738:50;11805:19;;27156:141:0::1;11414:416:1::0;27156:141:0::1;27308:18;:30:::0;26918:428::o;25549:315::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;25687:4:::1;25679;25658:13;11760:12:::0;;;11672:108;25658:13:::1;:17;::::0;25674:1:::1;25658:17;:::i;:::-;25657:26;;;;:::i;:::-;25656:35;;;;:::i;:::-;25646:6;:45;;25624:137;;;::::0;-1:-1:-1;;;25624:137:0;;12037:2:1;25624:137:0::1;::::0;::::1;12019:21:1::0;12076:2;12056:18;;;12049:30;12115:34;12095:18;;;12088:62;-1:-1:-1;;;12166:18:1;;;12159:40;12216:19;;25624:137:0::1;11835:406:1::0;25624:137:0::1;25788:17;:6:::0;25798::::1;25788:17;:::i;:::-;25772:13;:33:::0;;;25821:35:::1;::::0;2717:25:1;;;25821:35:0::1;::::0;2705:2:1;2690:18;25821:35:0::1;2571:177:1::0;12197:201:0;-1:-1:-1;;;;;12363:18:0;;;12331:7;12363:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12197:201::o;27932:538::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;28009:1:::1;27991:15;:19:::0;;;28021:16:::1;:20:::0;;;28071:1:::1;28052:16;:20:::0;;;28071:1;28099:34:::1;::::0;28009:1;28099:34:::1;:::i;:::-;:53;;;;:::i;:::-;28083:13;:69:::0;;;28188:2:::1;-1:-1:-1::0;28171:19:0::1;28163:61;;;;-1:-1:-1::0;;;28163:61:0::1;;;;;;;:::i;:::-;28254:1;28237:14;:18:::0;;;28266:15:::1;:19:::0;;;28314:1:::1;28296:15;:19:::0;;;28314:1;28341:32:::1;::::0;28254:1;28341:32:::1;:::i;:::-;:50;;;;:::i;:::-;28326:12;:65:::0;;;28426:2:::1;-1:-1:-1::0;28410:18:0::1;28402:60;;;;-1:-1:-1::0;;;28402:60:0::1;;;;;;;:::i;:::-;27932:538::o:0;29197:748::-;-1:-1:-1;;;;;29330:20:0;;29322:59;;;;-1:-1:-1;;;29322:59:0;;12448:2:1;29322:59:0;;;12430:21:1;12487:2;12467:18;;;12460:30;12526:28;12506:18;;;12499:56;12572:18;;29322:59:0;12246:350:1;29322:59:0;29416:16;;;29430:1;29416:16;;;;;;;;29392:21;;29416:16;;;;;;;;-1:-1:-1;;29453:15:0;;:22;;;-1:-1:-1;;;29453:22:0;;;;29392:40;;-1:-1:-1;;;;;;29453:15:0;;;;:20;;-1:-1:-1;29453:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29443:4;29448:1;29443:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;29443:32:0;;;-1:-1:-1;;;;;29443:32:0;;;;;29504:4;29486;29491:1;29486:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29486:23:0;;;:7;;;;;;;;;;:23;29544:10;29524:31;;;;:19;:31;;;;;;;;;29520:136;;;29579:6;-1:-1:-1;;;;;29572:27:0;;29600:4;29606;29611:1;29606:7;;;;;;;;:::i;:::-;;;;;;;;;;;29572:51;;-1:-1:-1;;;;;;29572:51:0;;;;;;;-1:-1:-1;;;;;13247:15:1;;;29572:51:0;;;13229:34:1;13299:15;;13279:18;;;13272:43;13331:18;;;13324:34;;;13164:18;;29572:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29638:7;29197:748;;;:::o;29520:136::-;29692:15;;:245;;-1:-1:-1;;;29692:245:0;;-1:-1:-1;;;;;29692:15:0;;;;:66;;29780:7;;29692:245;;:15;;29862:4;;29889:6;;29911:15;;29692:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29311:634;29197:748;;;:::o;38220:118::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38304:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:26;;-1:-1:-1;;38304:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;38220:118::o;25125:98::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;25187:20:::1;:28:::0;;-1:-1:-1;;25187:28:0::1;::::0;;25125:98::o;19027:281::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19130:22:0;::::1;19108:110;;;::::0;-1:-1:-1;;;19108:110:0;;14802:2:1;19108:110:0::1;::::0;::::1;14784:21:1::0;14841:2;14821:18;;;14814:30;14880:34;14860:18;;;14853:62;-1:-1:-1;;;14931:18:1;;;14924:36;14977:19;;19108:110:0::1;14600:402:1::0;19108:110:0::1;19255:6;::::0;19234:38:::1;::::0;-1:-1:-1;;;;;19234:38:0;;::::1;::::0;19255:6:::1;::::0;19234:38:::1;::::0;19255:6:::1;::::0;19234:38:::1;19283:6;:17:::0;;-1:-1:-1;;;;;;19283:17:0::1;-1:-1:-1::0;;;;;19283:17:0;;;::::1;::::0;;;::::1;::::0;;19027:281::o;30015:185::-;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;30110:82:::1;::::0;30073:12:::1;::::0;30118:10:::1;::::0;30142:21:::1;::::0;30073:12;30110:82;30073:12;30110:82;30142:21;30118:10;30110:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41334:689:::0;18782:6;;-1:-1:-1;;;;;18782:6:0;7500:10;18782:22;18774:67;;;;-1:-1:-1;;;18774:67:0;;;;;;;:::i;:::-;41445:8:::1;41430:11;:23;;41408:144;;;::::0;-1:-1:-1;;;41408:144:0;;15419:2:1;41408:144:0::1;::::0;::::1;15401:21:1::0;15458:2;15438:18;;;15431:30;15497:34;15477:18;;;15470:62;15568:34;15548:18;;;15541:62;-1:-1:-1;;;15619:19:1;;;15612:38;15667:19;;41408:144:0::1;15217:475:1::0;41408:144:0::1;41589:16;::::0;;41603:1:::1;41589:16:::0;;;;;::::1;::::0;;41565:21:::1;::::0;41589:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;41626:15:0::1;::::0;:22:::1;::::0;;-1:-1:-1;;;41626:22:0;;;;41565:40;;-1:-1:-1;;;;;;41626:15:0;;::::1;::::0;:20:::1;::::0;-1:-1:-1;41626:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41616:4;41621:1;41616:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1::0;;;;;41616:32:0::1;;;-1:-1:-1::0;;;;;41616:32:0::1;;;::::0;::::1;41677:4;41659;41664:1;41659:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;41659:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;41721:15:::1;::::0;:249:::1;::::0;-1:-1:-1;;;41721:249:0;;:15;::::1;::::0;:66:::1;::::0;41809:11;;41721:249:::1;::::0;:15:::1;::::0;41895:4;;41922:6:::1;::::0;41944:15:::1;::::0;41721:249:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;41986:29;42003:11;41986:29;;;;2717:25:1::0;;2705:2;2690:18;;2571:177;41986:29:0::1;;;;;;;;41397:626;41334:689:::0;:::o;17924:380::-;-1:-1:-1;;;;;18060:19:0;;18052:68;;;;-1:-1:-1;;;18052:68:0;;15899:2:1;18052:68:0;;;15881:21:1;15938:2;15918:18;;;15911:30;15977:34;15957:18;;;15950:62;-1:-1:-1;;;16028:18:1;;;16021:34;16072:19;;18052:68:0;15697:400:1;18052:68:0;-1:-1:-1;;;;;18139:21:0;;18131:68;;;;-1:-1:-1;;;18131:68:0;;16304:2:1;18131:68:0;;;16286:21:1;16343:2;16323:18;;;16316:30;16382:34;16362:18;;;16355:62;-1:-1:-1;;;16433:18:1;;;16426:32;16475:19;;18131:68:0;16102:398:1;18131:68:0;-1:-1:-1;;;;;18212:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18264:32;;2717:25:1;;;18264:32:0;;2690:18:1;18264:32:0;;;;;;;17924:380;;;:::o;32305:5903::-;-1:-1:-1;;;;;32437:18:0;;32429:68;;;;-1:-1:-1;;;32429:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32516:16:0;;32508:64;;;;-1:-1:-1;;;32508:64:0;;;;;;;:::i;:::-;32600:1;32591:6;:10;32583:52;;;;-1:-1:-1;;;32583:52:0;;17517:2:1;32583:52:0;;;17499:21:1;17556:2;17536:18;;;17529:30;17595:31;17575:18;;;17568:59;17644:18;;32583:52:0;17315:353:1;32583:52:0;32653:13;;;;;;;32648:183;;-1:-1:-1;;;;;32709:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;32738:23:0;;;;;;:19;:23;;;;;;;;32709:52;32683:136;;;;-1:-1:-1;;;32683:136:0;;17875:2:1;32683:136:0;;;17857:21:1;17914:2;17894:18;;;17887:30;-1:-1:-1;;;17933:18:1;;;17926:52;17995:18;;32683:136:0;17673:346:1;32683:136:0;32847:18;;:22;32843:247;;-1:-1:-1;;;;;32913:17:0;;;;;;:11;:17;;;;;;;;32912:18;;:35;;-1:-1:-1;18720:6:0;;-1:-1:-1;;;;;32934:13:0;;;18720:6;;32934:13;32912:35;:60;;;-1:-1:-1;;;;;;32951:21:0;;32965:6;32951:21;32912:60;32886:192;;;;-1:-1:-1;;;32886:192:0;;18226:2:1;32886:192:0;;;18208:21:1;18265:2;18245:18;;;18238:30;18304:34;18284:18;;;18277:62;18375:34;18355:18;;;18348:62;-1:-1:-1;;;18426:19:1;;;18419:37;18473:19;;32886:192:0;18024:474:1;32886:192:0;33106:14;;;;33102:2352;;;18720:6;;-1:-1:-1;;;;;33159:15:0;;;18720:6;;33159:15;;;;:49;;-1:-1:-1;18720:6:0;;-1:-1:-1;;;;;33195:13:0;;;18720:6;;33195:13;;33159:49;:86;;;;-1:-1:-1;;;;;;33229:16:0;;;;33159:86;:128;;;;-1:-1:-1;;;;;;33266:21:0;;33280:6;33266:21;;33159:128;:175;;;;-1:-1:-1;;;;;;33309:25:0;;;;;;:19;:25;;;;;;;;33308:26;33159:175;:220;;;;-1:-1:-1;;;;;;33356:23:0;;;;;;:19;:23;;;;;;;;33355:24;33159:220;33137:2306;;;33550:20;;;;33546:705;;;33613:15;;-1:-1:-1;;;;;33599:30:0;;;33613:15;;33599:30;;;;:62;;-1:-1:-1;33647:13:0;;-1:-1:-1;;;;;33633:28:0;;;33647:13;;33633:28;;33599:62;33595:637;;;33803:16;33818:1;33803:12;:16;:::i;:::-;33757:9;33728:39;;;;:28;:39;;;;;;:91;:212;;;;-1:-1:-1;33924:16:0;33939:1;33924:12;:16;:::i;:::-;-1:-1:-1;;;;;33856:32:0;;;;;;:28;:32;;;;;;:84;33728:212;33690:363;;;;-1:-1:-1;;;33690:363:0;;18838:2:1;33690:363:0;;;18820:21:1;18877:2;18857:18;;;18850:30;18916:34;18896:18;;;18889:62;-1:-1:-1;;;18967:18:1;;;18960:51;19028:19;;33690:363:0;18636:417:1;33690:363:0;34109:9;34080:39;;;;:28;:39;;;;;;34122:12;34080:54;;;;-1:-1:-1;;;;;34161:32:0;;;;;;:47;33595:637;-1:-1:-1;;;;;34325:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;34382:35:0;;;;;;:31;:35;;;;;;;;34381:36;34325:92;34299:1129;;;34504:12;;34494:6;:22;;34460:148;;;;-1:-1:-1;;;34460:148:0;;19260:2:1;34460:148:0;;;19242:21:1;19299:2;19279:18;;;19272:30;19338:34;19318:18;;;19311:62;-1:-1:-1;;;19389:18:1;;;19382:38;19437:19;;34460:148:0;19058:404:1;34460:148:0;34691:15;;-1:-1:-1;;;;;11939:18:0;;11907:7;11939:18;;;;;;;;;;;34665:22;;:6;:22;:::i;:::-;:41;;34631:151;;;;-1:-1:-1;;;34631:151:0;;19669:2:1;34631:151:0;;;19651:21:1;19708:2;19688:18;;;19681:30;-1:-1:-1;;;19727:18:1;;;19720:54;19791:18;;34631:151:0;19467:348:1;34631:151:0;34299:1129;;;-1:-1:-1;;;;;34880:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;34935:37:0;;;;;;:31;:37;;;;;;;;34934:38;34880:92;34854:574;;;35059:13;;35049:6;:23;;35015:151;;;;-1:-1:-1;;;35015:151:0;;20022:2:1;35015:151:0;;;20004:21:1;20061:2;20041:18;;;20034:30;20100:34;20080:18;;;20073:62;-1:-1:-1;;;20151:18:1;;;20144:40;20201:19;;35015:151:0;19820:406:1;34854:574:0;-1:-1:-1;;;;;35197:35:0;;;;;;:31;:35;;;;;;;;35192:236;;35317:15;;-1:-1:-1;;;;;11939:18:0;;11907:7;11939:18;;;;;;;;;;;35291:22;;:6;:22;:::i;:::-;:41;;35257:151;;;;-1:-1:-1;;;35257:151:0;;19669:2:1;35257:151:0;;;19651:21:1;19708:2;19688:18;;;19681:30;-1:-1:-1;;;19727:18:1;;;19720:54;19791:18;;35257:151:0;19467:348:1;35257:151:0;-1:-1:-1;;;;;35478:31:0;;;;;;:25;:31;;;;;;;;35474:292;;;-1:-1:-1;;;;;35530:32:0;;;;;;:28;:32;;;;;;:37;;35526:128;;-1:-1:-1;;;;;35588:32:0;;;;;;:28;:32;;;;;35623:15;35588:50;;35526:128;35474:292;;;35691:8;;-1:-1:-1;;;35691:8:0;;;;35686:69;;35720:12;:19;;-1:-1:-1;;;;;;35720:19:0;-1:-1:-1;;;;;35720:19:0;;;;;35686:69;35796:11;;;;;;;:37;;;;-1:-1:-1;35825:8:0;;-1:-1:-1;;;35825:8:0;;;;35824:9;35796:37;:86;;;;-1:-1:-1;;;;;;35851:31:0;;;;;;:25;:31;;;;;;;;35850:32;35796:86;:129;;;;-1:-1:-1;;;;;;35900:25:0;;;;;;:19;:25;;;;;;;;35899:26;35796:129;:170;;;;-1:-1:-1;;;;;;35943:23:0;;;;;;:19;:23;;;;;;;;35942:24;35796:170;35778:306;;;35993:8;:15;;-1:-1:-1;;;;35993:15:0;-1:-1:-1;;;35993:15:0;;;36025:14;36034:4;36025:8;:14::i;:::-;36056:8;:16;;-1:-1:-1;;;;36056:16:0;;;35778:306;-1:-1:-1;;;;;36215:25:0;;36096:12;36215:25;;;:19;:25;;;;;;36111:4;;36215:25;;;:52;;-1:-1:-1;;;;;;36244:23:0;;;;;;:19;:23;;;;;;;;36215:52;36211:100;;;-1:-1:-1;36294:5:0;36211:100;36323:12;36428:7;36424:1731;;;32271:18;;32256:12;:33;36510:77;;;;-1:-1:-1;;;;;;36556:31:0;;;;;;:25;:31;;;;;;;;36510:77;:128;;;;-1:-1:-1;;;;;;36609:29:0;;;;;;:25;:29;;;;;;;;36608:30;36510:128;:165;;;;;36674:1;36659:12;;:16;36510:165;36488:1518;;;-1:-1:-1;;;;;36715:15:0;;;;;;:11;:15;;;;;;;;36710:173;;-1:-1:-1;;;;;36755:15:0;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;36755:22:0;36773:4;36755:22;;;;;;36800:10;:15;;36773:4;;36800:10;;:15;;36773:4;;36800:15;:::i;:::-;;;;-1:-1:-1;;36843:20:0;;-1:-1:-1;;;;;2527:32:1;;2509:51;;36843:20:0;;2497:2:1;2482:18;36843:20:0;;;;;;;36710:173;36926:3;36911:11;:6;36920:2;36911:11;:::i;:::-;36910:19;;;;:::i;:::-;36903:26;;36997:12;;36978:15;;36971:4;:22;;;;:::i;:::-;36970:39;;;;:::i;:::-;36948:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;37075:12:0;;37057:14;;37050:21;;:4;:21;:::i;:::-;37049:38;;;;:::i;:::-;37028:17;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;37155:12:0;;37136:15;;37129:22;;:4;:22;:::i;:::-;37128:39;;;;:::i;:::-;37106:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;36488:1518:0;;-1:-1:-1;36488:1518:0;;-1:-1:-1;;;;;37230:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;37279:1;37263:13;;:17;37230:50;37226:780;;;37335:3;37318:13;;37309:6;:22;;;;:::i;:::-;37308:30;;;;:::i;:::-;37301:37;;37407:13;;37387:16;;37380:4;:23;;;;:::i;:::-;37379:41;;;;:::i;:::-;37357:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;37487:13:0;;37468:15;;37461:22;;:4;:22;:::i;:::-;37460:40;;;;:::i;:::-;37439:17;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;37569:13:0;;37549:16;;37542:23;;:4;:23;:::i;37226:780::-;-1:-1:-1;;;;;37644:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;37694:1;37679:12;;:16;37644:51;37640:366;;;37749:3;37733:12;;37724:6;:21;;;;:::i;:::-;37723:29;;;;:::i;:::-;37716:36;;37820:12;;37801:15;;37794:4;:22;;;;:::i;:::-;37793:39;;;;:::i;:::-;37771:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;37898:12:0;;37880:14;;37873:21;;:4;:21;:::i;:::-;37872:38;;;;:::i;:::-;37851:17;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;37978:12:0;;37959:15;;37952:22;;:4;:22;:::i;:::-;37951:39;;;;:::i;:::-;37929:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;37640:366:0;38026:8;;38022:91;;38055:42;38071:4;38085;38092;38055:15;:42::i;:::-;38129:14;38139:4;38129:14;;:::i;:::-;;;36424:1731;38167:33;38183:4;38189:2;38193:6;38167:15;:33::i;38586:1637::-;38684:4;38640:23;11939:18;;;;;;;;;;;38640:50;;38701:25;38796:18;;38763:17;;38729:18;;:51;;;;:::i;:::-;:85;;;;:::i;:::-;38701:113;-1:-1:-1;38831:20:0;;;:46;;-1:-1:-1;38855:22:0;;38831:46;38827:85;;;38894:7;;38586:1637;:::o;38827:85::-;38946:18;;:23;;38967:2;38946:23;:::i;:::-;38928:15;:41;38924:115;;;39004:18;;:23;;39025:2;39004:23;:::i;:::-;38986:41;;38924:115;39100:23;39213:1;39180:17;39145:18;;39127:15;:36;;;;:::i;:::-;39126:71;;;;:::i;:::-;:88;;;;:::i;:::-;39100:114;-1:-1:-1;39227:51:0;39244:33;39100:114;39244:15;:33;:::i;:::-;39227:16;:51::i;:::-;39488:18;;39312:21;;;;39291:18;;39488:22;;39509:1;;39488:22;:::i;:::-;39467:44;;:17;:44;:::i;:::-;39432:17;;39419:30;;:10;:30;:::i;:::-;39418:94;;;;:::i;:::-;39393:119;;39523:23;39641:1;39620:18;;:22;;;;:::i;:::-;39599:44;;:17;:44;:::i;:::-;39563:18;;39550:31;;:10;:31;:::i;:::-;39549:95;;;;:::i;:::-;39523:121;-1:-1:-1;39676:32:0;39523:121;39676:14;:32;:::i;:::-;39657:51;;;;:::i;:::-;39742:1;39721:18;:22;;;39754:17;:21;;;39786:18;:22;39657:51;-1:-1:-1;39825:19:0;;;;;:42;;;39866:1;39848:15;:19;39825:42;39821:121;;;39884:46;39897:15;39914;39884:12;:46::i;:::-;39994:13;;39986:55;;39955:25;;-1:-1:-1;;;;;39994:13:0;;40021:15;;39955:25;39986:55;39955:25;39986:55;40021:15;39994:13;39986:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39954:87;;;40060:20;40052:29;;;;;;40131:12;;40123:53;;40093:24;;-1:-1:-1;;;;;40131:12:0;;40157:14;;40093:24;40123:53;40093:24;40123:53;40157:14;40131:12;40123:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40092:84;;;40195:19;40187:28;;;;;;38629:1594;;;;;;;;;38586:1637;:::o;31057:240::-;-1:-1:-1;;;;;31140:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;31140:39:0;;;;;;;31192;31140:31;:39;31192:26;:39::i;16385:651::-;-1:-1:-1;;;;;16525:20:0;;16517:70;;;;-1:-1:-1;;;16517:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16606:23:0;;16598:71;;;;-1:-1:-1;;;16598:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16706:17:0;;16682:21;16706:17;;;;;;;;;;;16756:23;;;;16734:111;;;;-1:-1:-1;;;16734:111:0;;20433:2:1;16734:111:0;;;20415:21:1;20472:2;20452:18;;;20445:30;20511:34;20491:18;;;20484:62;-1:-1:-1;;;20562:18:1;;;20555:36;20608:19;;16734:111:0;20231:402:1;16734:111:0;-1:-1:-1;;;;;16881:17:0;;;:9;:17;;;;;;;;;;;16901:22;;;16881:42;;16945:20;;;;;;;;:30;;16917:6;;16881:9;16945:30;;16917:6;;16945:30;:::i;:::-;;;;;;;;17010:9;-1:-1:-1;;;;;16993:35:0;17002:6;-1:-1:-1;;;;;16993:35:0;;17021:6;16993:35;;;;2717:25:1;;2705:2;2690:18;;2571:177;16993:35:0;;;;;;;;16506:530;16385:651;;;:::o;40231:589::-;40381:16;;;40395:1;40381:16;;;;;;;;40357:21;;40381:16;;;;;;;;;;-1:-1:-1;40381:16:0;40357:40;;40426:4;40408;40413:1;40408:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;40408:23:0;;;:7;;;;;;;;;;:23;;;;40452:15;;:22;;;-1:-1:-1;;;40452:22:0;;;;:15;;;;;:20;;:22;;;;;40408:7;;40452:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40442:4;40447:1;40442:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;40442:32:0;;;:7;;;;;;;;;:32;40519:15;;40487:62;;40504:4;;40519:15;40537:11;40487:8;:62::i;:::-;40588:15;;:224;;-1:-1:-1;;;40588:224:0;;-1:-1:-1;;;;;40588:15:0;;;;:66;;:224;;40669:11;;40588:15;;40739:4;;40766;;40786:15;;40588:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40286:534;40231:589;:::o;28668:521::-;28848:15;;28816:62;;28833:4;;-1:-1:-1;;;;;28848:15:0;28866:11;28816:8;:62::i;:::-;28921:15;;:260;;-1:-1:-1;;;28921:260:0;;28993:4;28921:260;;;21566:34:1;21616:18;;;21609:34;;;28921:15:0;21659:18:1;;;21652:34;;;21702:18;;;21695:34;29133:6:0;21745:19:1;;;21738:44;29155:15:0;21798:19:1;;;21791:35;-1:-1:-1;;;;;28921:15:0;;;;:31;;28960:9;;21500:19:1;;28921:260:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;27354:221::-;-1:-1:-1;;;;;27456:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;27456:52:0;;;;;;;;;;27524:43;;22316:51:1;;;22383:18;;;22376:50;27524:43:0;;22289:18:1;27524:43:0;22148:284:1;14:548;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;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;:::-;1451:5;1215:247;-1:-1:-1;;;1215:247:1:o;1467:118::-;1553:5;1546:13;1539:21;1532:5;1529:32;1519:60;;1575:1;1572;1565:12;1590:750;1682:6;1690;1698;1751:2;1739:9;1730:7;1726:23;1722:32;1719:52;;;1767:1;1764;1757:12;1719:52;1807:9;1794:23;1836:18;1877:2;1869:6;1866:14;1863:34;;;1893:1;1890;1883:12;1863:34;1931:6;1920:9;1916:22;1906:32;;1976:7;1969:4;1965:2;1961:13;1957:27;1947:55;;1998:1;1995;1988:12;1947:55;2038:2;2025:16;2064:2;2056:6;2053:14;2050:34;;;2080:1;2077;2070:12;2050:34;2135:7;2128:4;2118:6;2115:1;2111:14;2107:2;2103:23;2099:34;2096:47;2093:67;;;2156:1;2153;2146:12;2093:67;2187:4;2179:13;;;;-1:-1:-1;2211:6:1;-1:-1:-1;;2252:20:1;;2239:34;2282:28;2239:34;2282:28;:::i;:::-;2329:5;2319:15;;;1590:750;;;;;:::o;2753:456::-;2830:6;2838;2846;2899:2;2887:9;2878:7;2874:23;2870:32;2867:52;;;2915:1;2912;2905:12;2867:52;2954:9;2941:23;2973:31;2998:5;2973:31;:::i;:::-;3023:5;-1:-1:-1;3080:2:1;3065:18;;3052:32;3093:33;3052:32;3093:33;:::i;:::-;2753:456;;3145:7;;-1:-1:-1;;;3199:2:1;3184:18;;;;3171:32;;2753:456::o;3214:180::-;3273:6;3326:2;3314:9;3305:7;3301:23;3297:32;3294:52;;;3342:1;3339;3332:12;3294:52;-1:-1:-1;3365:23:1;;3214:180;-1:-1:-1;3214:180:1:o;3796:382::-;3861:6;3869;3922:2;3910:9;3901:7;3897:23;3893:32;3890:52;;;3938:1;3935;3928:12;3890:52;3977:9;3964:23;3996:31;4021:5;3996:31;:::i;:::-;4046:5;-1:-1:-1;4103:2:1;4088:18;;4075:32;4116:30;4075:32;4116:30;:::i;:::-;4165:7;4155:17;;;3796:382;;;;;:::o;4183:316::-;4260:6;4268;4276;4329:2;4317:9;4308:7;4304:23;4300:32;4297:52;;;4345:1;4342;4335:12;4297:52;-1:-1:-1;;4368:23:1;;;4438:2;4423:18;;4410:32;;-1:-1:-1;4489:2:1;4474:18;;;4461:32;;4183:316;-1:-1:-1;4183:316:1:o;4504:388::-;4572:6;4580;4633:2;4621:9;4612:7;4608:23;4604:32;4601:52;;;4649:1;4646;4639:12;4601:52;4688:9;4675:23;4707:31;4732:5;4707:31;:::i;:::-;4757:5;-1:-1:-1;4814:2:1;4799:18;;4786:32;4827:33;4786:32;4827:33;:::i;4897:380::-;4976:1;4972:12;;;;5019;;;5040:61;;5094:4;5086:6;5082:17;5072:27;;5040:61;5147:2;5139:6;5136:14;5116:18;5113:38;5110:161;;5193:10;5188:3;5184:20;5181:1;5174:31;5228:4;5225:1;5218:15;5256:4;5253:1;5246:15;5110:161;;4897:380;;;:::o;5282:356::-;5484:2;5466:21;;;5503:18;;;5496:30;5562:34;5557:2;5542:18;;5535:62;5629:2;5614:18;;5282:356::o;5643:127::-;5704:10;5699:3;5695:20;5692:1;5685:31;5735:4;5732:1;5725:15;5759:4;5756:1;5749:15;5775:127;5836:10;5831:3;5827:20;5824:1;5817:31;5867:4;5864:1;5857:15;5891:4;5888:1;5881:15;5907:135;5946:3;5967:17;;;5964:43;;5987:18;;:::i;:::-;-1:-1:-1;6034:1:1;6023:13;;5907:135::o;6456:168::-;6529:9;;;6560;;6577:15;;;6571:22;;6557:37;6547:71;;6598:18;;:::i;6629:217::-;6669:1;6695;6685:132;;6739:10;6734:3;6730:20;6727:1;6720:31;6774:4;6771:1;6764:15;6802:4;6799:1;6792:15;6685:132;-1:-1:-1;6831:9:1;;6629:217::o;7261:125::-;7326:9;;;7347:10;;;7344:36;;;7360:18;;:::i;8986:353::-;9188:2;9170:21;;;9227:2;9207:18;;;9200:30;9266:31;9261:2;9246:18;;9239:59;9330:2;9315:18;;8986:353::o;12733:251::-;12803:6;12856:2;12844:9;12835:7;12831:23;12827:32;12824:52;;;12872:1;12869;12862:12;12824:52;12904:9;12898:16;12923:31;12948:5;12923:31;:::i;13369:245::-;13436:6;13489:2;13477:9;13468:7;13464:23;13460:32;13457:52;;;13505:1;13502;13495:12;13457:52;13537:9;13531:16;13556:28;13578:5;13556:28;:::i;13619:461::-;13672:3;13710:5;13704:12;13737:6;13732:3;13725:19;13763:4;13792:2;13787:3;13783:12;13776:19;;13829:2;13822:5;13818:14;13850:1;13860:195;13874:6;13871:1;13868:13;13860:195;;;13939:13;;-1:-1:-1;;;;;13935:39:1;13923:52;;13995:12;;;;14030:15;;;;13971:1;13889:9;13860:195;;;-1:-1:-1;14071:3:1;;13619:461;-1:-1:-1;;;;;13619:461:1:o;14085:510::-;14356:6;14345:9;14338:25;14399:3;14394:2;14383:9;14379:18;14372:31;14319:4;14420:57;14472:3;14461:9;14457:19;14449:6;14420:57;:::i;:::-;-1:-1:-1;;;;;14513:32:1;;;;14508:2;14493:18;;14486:60;-1:-1:-1;14577:2:1;14562:18;14555:34;14412:65;14085:510;-1:-1:-1;;14085:510:1:o;16505:401::-;16707:2;16689:21;;;16746:2;16726:18;;;16719:30;16785:34;16780:2;16765:18;;16758:62;-1:-1:-1;;;16851:2:1;16836:18;;16829:35;16896:3;16881:19;;16505:401::o;16911:399::-;17113:2;17095:21;;;17152:2;17132:18;;;17125:30;17191:34;17186:2;17171:18;;17164:62;-1:-1:-1;;;17257:2:1;17242:18;;17235:33;17300:3;17285:19;;16911:399::o;18503:128::-;18570:9;;;18591:11;;;18588:37;;;18605:18;;:::i;20638:582::-;20937:6;20926:9;20919:25;20980:6;20975:2;20964:9;20960:18;20953:34;21023:3;21018:2;21007:9;21003:18;20996:31;20900:4;21044:57;21096:3;21085:9;21081:19;21073:6;21044:57;:::i;:::-;-1:-1:-1;;;;;21137:32:1;;;;21132:2;21117:18;;21110:60;-1:-1:-1;21201:3:1;21186:19;21179:35;21036:65;20638:582;-1:-1:-1;;;20638:582:1:o;21837:306::-;21925:6;21933;21941;21994:2;21982:9;21973:7;21969:23;21965:32;21962:52;;;22010:1;22007;22000:12;21962:52;22039:9;22033:16;22023:26;;22089:2;22078:9;22074:18;22068:25;22058:35;;22133:2;22122:9;22118:18;22112:25;22102:35;;21837:306;;;;;:::o

Swarm Source

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