ETH Price: $2,417.20 (-0.26%)
Gas: 1.71 Gwei

Token

Words.art (WORDS)
 

Overview

Max Total Supply

1,000,000,000 WORDS

Holders

51

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
WORDS

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
File 1 of 10 : test.sol
/**



   ___                           __  ____    ____  _      ______  ___  ___  ____
  / _ )__ ____ __  ___ ____  ___/ / / __/__ / / / | | /| / / __ \/ _ \/ _ \/ __/
 / _  / // / // / / _ `/ _ \/ _  / _\ \/ -_) / /  | |/ |/ / /_/ / , _/ // /\ \  
/____/\_,_/\_, /  \_,_/_//_/\_,_/ /___/\__/_/_/   |__/|__/\____/_/|_/____/___/  
          /___/                                                                 

https://twitter.com/wordsdotart
https://www.words.art/


*/





// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;



import "@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol";
import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/math/Math.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract WORDS is ERC20, Ownable {
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address payable public taxWallet;
    bool private swapping;

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

    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 public sellTotalFees;

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

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

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

    constructor(address router, address team, address dev) ERC20("Words.art", "WORDS") {
        uniswapV2Router = IUniswapV2Router02(router);
        excludeFromMaxTransaction(address(router), true);

        taxWallet = payable(owner());

        uint256 totalTokenSupply = 1_000_000_000 * 1e18; // 1 billion

        maxTransactionAmount = 20000000 * 1e18; // 1.5%
        maxWallet = 20000000 * 1e18; // 1.5%
        swapTokensAtAmount = (totalTokenSupply * 5) / 10000; // 0.05%

        buyTotalFees = 25; // initial 25% to protect from MEV bots

        sellTotalFees = 50; // initial 50% to protect from MEV bots

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(team, true);
        excludeFromFees(dev, true);

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

        _mint(msg.sender, totalTokenSupply);
    }

    receive() external payable {}

    // Will enable trading, once this is toggeled, it will not be able to be turned off.
    function openTrade() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    // Trigger this post launch once price is more stable. Made to avoid whales and snipers hogging supply.
    function setFinalFeesAndLimits(
        uint256 maxTx,
        uint256 _maxWallet,
        uint256 buyFees,
        uint256 sellFees
    ) external onlyOwner {
        maxTransactionAmount = maxTx;
        maxWallet = _maxWallet;

        buyTotalFees = buyFees;

        sellTotalFees = sellFees;
    }

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

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function setlpPair(address pair) public onlyOwner {
        uniswapV2Pair = pair;
        _setAutomatedMarketMakerPair(pair, true);
        _isExcludedMaxTransactionAmount[pair] = true;
    }

    function TokenSellAmount(uint256 amount) public onlyOwner {
        swapTokensAtAmount = amount;
    }

    function setFeeReceiver(address wallet) public onlyOwner {
        taxWallet = payable(wallet);
    }

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

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

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

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

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        // 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) {
            // Sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = Math.mulDiv(
                    amount,
                    sellTotalFees,
                    100,
                    Math.Rounding.Up
                );
            }
            // Buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = Math.mulDiv(amount, buyTotalFees, 100, Math.Rounding.Up);
            }

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

            amount -= fees;
        }

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

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

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

        // Make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // Accept any amount of ETH; ignore slippage
            path,
            taxWallet,
            block.timestamp
        );
    }

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

    function recoverStuckTokens(
        address _token,
        address _to
    ) external onlyOwner {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        IERC20(_token).transfer(_to, _contractBalance);
    }

    function recoverStuckEth(address toAddr) external onlyOwner {
        (bool success, ) = toAddr.call{value: address(this).balance}("");
        require(success);
    }
}

File 2 of 10 : ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the default value returned by this function, unless
     * it's overridden.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, 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 from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, 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) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * 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 from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @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 _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

File 3 of 10 : Math.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)

pragma solidity ^0.8.0;

/**
 * @dev Standard math utilities missing in the Solidity language.
 */
library Math {
    enum Rounding {
        Down, // Toward negative infinity
        Up, // Toward infinity
        Zero // Toward zero
    }

    /**
     * @dev Returns the largest of two numbers.
     */
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a > b ? a : b;
    }

    /**
     * @dev Returns the smallest of two numbers.
     */
    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    /**
     * @dev Returns the average of two numbers. The result is rounded towards
     * zero.
     */
    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b) / 2 can overflow.
        return (a & b) + (a ^ b) / 2;
    }

    /**
     * @dev Returns the ceiling of the division of two numbers.
     *
     * This differs from standard division with `/` in that it rounds up instead
     * of rounding down.
     */
    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b - 1) / b can overflow on addition, so we distribute.
        return a == 0 ? 0 : (a - 1) / b + 1;
    }

    /**
     * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
     * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)
     * with further edits by Uniswap Labs also under MIT license.
     */
    function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {
        unchecked {
            // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use
            // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256
            // variables such that product = prod1 * 2^256 + prod0.
            uint256 prod0; // Least significant 256 bits of the product
            uint256 prod1; // Most significant 256 bits of the product
            assembly {
                let mm := mulmod(x, y, not(0))
                prod0 := mul(x, y)
                prod1 := sub(sub(mm, prod0), lt(mm, prod0))
            }

            // Handle non-overflow cases, 256 by 256 division.
            if (prod1 == 0) {
                // Solidity will revert if denominator == 0, unlike the div opcode on its own.
                // The surrounding unchecked block does not change this fact.
                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.
                return prod0 / denominator;
            }

            // Make sure the result is less than 2^256. Also prevents denominator == 0.
            require(denominator > prod1, "Math: mulDiv overflow");

            ///////////////////////////////////////////////
            // 512 by 256 division.
            ///////////////////////////////////////////////

            // Make division exact by subtracting the remainder from [prod1 prod0].
            uint256 remainder;
            assembly {
                // Compute remainder using mulmod.
                remainder := mulmod(x, y, denominator)

                // Subtract 256 bit number from 512 bit number.
                prod1 := sub(prod1, gt(remainder, prod0))
                prod0 := sub(prod0, remainder)
            }

            // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.
            // See https://cs.stackexchange.com/q/138556/92363.

            // Does not overflow because the denominator cannot be zero at this stage in the function.
            uint256 twos = denominator & (~denominator + 1);
            assembly {
                // Divide denominator by twos.
                denominator := div(denominator, twos)

                // Divide [prod1 prod0] by twos.
                prod0 := div(prod0, twos)

                // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.
                twos := add(div(sub(0, twos), twos), 1)
            }

            // Shift in bits from prod1 into prod0.
            prod0 |= prod1 * twos;

            // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such
            // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for
            // four bits. That is, denominator * inv = 1 mod 2^4.
            uint256 inverse = (3 * denominator) ^ 2;

            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works
            // in modular arithmetic, doubling the correct bits in each step.
            inverse *= 2 - denominator * inverse; // inverse mod 2^8
            inverse *= 2 - denominator * inverse; // inverse mod 2^16
            inverse *= 2 - denominator * inverse; // inverse mod 2^32
            inverse *= 2 - denominator * inverse; // inverse mod 2^64
            inverse *= 2 - denominator * inverse; // inverse mod 2^128
            inverse *= 2 - denominator * inverse; // inverse mod 2^256

            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.
            // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is
            // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1
            // is no longer required.
            result = prod0 * inverse;
            return result;
        }
    }

    /**
     * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.
     */
    function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {
        uint256 result = mulDiv(x, y, denominator);
        if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {
            result += 1;
        }
        return result;
    }

    /**
     * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.
     *
     * Inspired by Henry S. Warren, Jr.'s "Hacker's Delight" (Chapter 11).
     */
    function sqrt(uint256 a) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.
        //
        // We know that the "msb" (most significant bit) of our target number `a` is a power of 2 such that we have
        // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.
        //
        // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`
        // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`
        // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`
        //
        // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.
        uint256 result = 1 << (log2(a) >> 1);

        // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,
        // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at
        // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision
        // into the expected uint128 result.
        unchecked {
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            return min(result, a / result);
        }
    }

    /**
     * @notice Calculates sqrt(a), following the selected rounding direction.
     */
    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = sqrt(a);
            return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);
        }
    }

    /**
     * @dev Return the log in base 2, rounded down, of a positive value.
     * Returns 0 if given 0.
     */
    function log2(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >> 128 > 0) {
                value >>= 128;
                result += 128;
            }
            if (value >> 64 > 0) {
                value >>= 64;
                result += 64;
            }
            if (value >> 32 > 0) {
                value >>= 32;
                result += 32;
            }
            if (value >> 16 > 0) {
                value >>= 16;
                result += 16;
            }
            if (value >> 8 > 0) {
                value >>= 8;
                result += 8;
            }
            if (value >> 4 > 0) {
                value >>= 4;
                result += 4;
            }
            if (value >> 2 > 0) {
                value >>= 2;
                result += 2;
            }
            if (value >> 1 > 0) {
                result += 1;
            }
        }
        return result;
    }

    /**
     * @dev Return the log in base 2, following the selected rounding direction, of a positive value.
     * Returns 0 if given 0.
     */
    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log2(value);
            return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);
        }
    }

    /**
     * @dev Return the log in base 10, rounded down, of a positive value.
     * Returns 0 if given 0.
     */
    function log10(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >= 10 ** 64) {
                value /= 10 ** 64;
                result += 64;
            }
            if (value >= 10 ** 32) {
                value /= 10 ** 32;
                result += 32;
            }
            if (value >= 10 ** 16) {
                value /= 10 ** 16;
                result += 16;
            }
            if (value >= 10 ** 8) {
                value /= 10 ** 8;
                result += 8;
            }
            if (value >= 10 ** 4) {
                value /= 10 ** 4;
                result += 4;
            }
            if (value >= 10 ** 2) {
                value /= 10 ** 2;
                result += 2;
            }
            if (value >= 10 ** 1) {
                result += 1;
            }
        }
        return result;
    }

    /**
     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.
     * Returns 0 if given 0.
     */
    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log10(value);
            return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);
        }
    }

    /**
     * @dev Return the log in base 256, rounded down, of a positive value.
     * Returns 0 if given 0.
     *
     * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.
     */
    function log256(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >> 128 > 0) {
                value >>= 128;
                result += 16;
            }
            if (value >> 64 > 0) {
                value >>= 64;
                result += 8;
            }
            if (value >> 32 > 0) {
                value >>= 32;
                result += 4;
            }
            if (value >> 16 > 0) {
                value >>= 16;
                result += 2;
            }
            if (value >> 8 > 0) {
                result += 1;
            }
        }
        return result;
    }

    /**
     * @dev Return the log in base 256, following the selected rounding direction, of a positive value.
     * Returns 0 if given 0.
     */
    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log256(value);
            return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);
        }
    }
}

File 4 of 10 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 5 of 10 : IUniswapV2Router02.sol
pragma solidity >=0.6.2;

import './IUniswapV2Router01.sol';

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

File 6 of 10 : IUniswapV2Factory.sol
pragma solidity >=0.5.0;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

File 7 of 10 : IUniswapV2Router01.sol
pragma solidity >=0.6.2;

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

File 8 of 10 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 9 of 10 : IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

import "../IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
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);
}

File 10 of 10 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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);

    /**
     * @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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount) external returns (bool);
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"team","type":"address"},{"internalType":"address","name":"dev","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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toAddr","type":"address"}],"name":"recoverStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"recoverStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTx","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"},{"internalType":"uint256","name":"buyFees","type":"uint256"},{"internalType":"uint256","name":"sellFees","type":"uint256"}],"name":"setFinalFeesAndLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"setlpPair","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":"taxWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b50604051620046f6380380620046f683398181016040528101906200006d9190620007b8565b6040518060400160405280600981526020017f576f7264732e61727400000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f574f5244530000000000000000000000000000000000000000000000000000008152508160039081620000ea919062000a8e565b508060049081620000fc919062000a8e565b5050506200011f620001136200032860201b60201c565b6200033060201b60201c565b82600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000173836001620003f660201b60201c565b620001836200046160201b60201c565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006b033b2e3c9fd0803ce800000090506a108b2a2c280290940000006009819055506a108b2a2c28029094000000600b819055506127106005826200020a919062000ba4565b62000216919062000c1e565b600a819055506019600d819055506032600e819055506200024e620002406200046160201b60201c565b60016200048b60201b60201c565b620002613060016200048b60201b60201c565b6200027661dead60016200048b60201b60201c565b620002898360016200048b60201b60201c565b6200029c8260016200048b60201b60201c565b620002be620002b06200046160201b60201c565b6001620003f660201b60201c565b620002d1306001620003f660201b60201c565b620002e661dead6001620003f660201b60201c565b620002f9836001620003f660201b60201c565b6200030c826001620003f660201b60201c565b6200031e33826200054660201b60201c565b5050505062000dee565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000406620006b360201b60201c565b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200049b620006b360201b60201c565b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200053a919062000c73565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005af9062000cf1565b60405180910390fd5b620005cc600083836200074460201b60201c565b8060026000828254620005e0919062000d13565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000693919062000d5f565b60405180910390a3620006af600083836200074960201b60201c565b5050565b620006c36200032860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006e96200046160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000742576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007399062000dcc565b60405180910390fd5b565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007808262000753565b9050919050565b620007928162000773565b81146200079e57600080fd5b50565b600081519050620007b28162000787565b92915050565b600080600060608486031215620007d457620007d36200074e565b5b6000620007e486828701620007a1565b9350506020620007f786828701620007a1565b92505060406200080a86828701620007a1565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200089657607f821691505b602082108103620008ac57620008ab6200084e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008d7565b620009228683620008d7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200096f6200096962000963846200093a565b62000944565b6200093a565b9050919050565b6000819050919050565b6200098b836200094e565b620009a36200099a8262000976565b848454620008e4565b825550505050565b600090565b620009ba620009ab565b620009c781848462000980565b505050565b5b81811015620009ef57620009e3600082620009b0565b600181019050620009cd565b5050565b601f82111562000a3e5762000a0881620008b2565b62000a1384620008c7565b8101602085101562000a23578190505b62000a3b62000a3285620008c7565b830182620009cc565b50505b505050565b600082821c905092915050565b600062000a636000198460080262000a43565b1980831691505092915050565b600062000a7e838362000a50565b9150826002028217905092915050565b62000a998262000814565b67ffffffffffffffff81111562000ab55762000ab46200081f565b5b62000ac182546200087d565b62000ace828285620009f3565b600060209050601f83116001811462000b06576000841562000af1578287015190505b62000afd858262000a70565b86555062000b6d565b601f19841662000b1686620008b2565b60005b8281101562000b405784890151825560018201915060208501945060208101905062000b19565b8683101562000b60578489015162000b5c601f89168262000a50565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bb1826200093a565b915062000bbe836200093a565b925082820262000bce816200093a565b9150828204841483151762000be85762000be762000b75565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000c2b826200093a565b915062000c38836200093a565b92508262000c4b5762000c4a62000bef565b5b828204905092915050565b60008115159050919050565b62000c6d8162000c56565b82525050565b600060208201905062000c8a600083018462000c62565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000cd9601f8362000c90565b915062000ce68262000ca1565b602082019050919050565b6000602082019050818103600083015262000d0c8162000cca565b9050919050565b600062000d20826200093a565b915062000d2d836200093a565b925082820190508082111562000d485762000d4762000b75565b5b92915050565b62000d59816200093a565b82525050565b600060208201905062000d76600083018462000d4e565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000db460208362000c90565b915062000dc18262000d7c565b602082019050919050565b6000602082019050818103600083015262000de78162000da5565b9050919050565b6138f88062000dfe6000396000f3fe60806040526004361061021e5760003560e01c806376bd38b211610123578063bbc0c742116100ab578063e2f456051161006f578063e2f456051461081a578063efdcd97414610845578063f2fde38b1461086e578063f8b45b0514610897578063fb201b1d146108c257610225565b8063bbc0c74214610733578063c02466681461075e578063c8c8ebe414610787578063d85ba063146107b2578063dd62ed3e146107dd57610225565b80639a7a23d6116100f25780639a7a23d61461062a578063a457c2d714610653578063a9059cbb14610690578063b62496f5146106cd578063b9af85671461070a57610225565b806376bd38b2146105825780638c2676f7146105ab5780638da5cb5b146105d457806395d89b41146105ff57610225565b80634845bb6b116101a65780636ddd1713116101755780636ddd1713146104b157806370a08231146104dc578063715018a61461051957806374d3b1c0146105305780637571336a1461055957610225565b80634845bb6b146103f557806349bd5a5e1461041e5780634fbee193146104495780636a486a8e1461048657610225565b806318160ddd116101ed57806318160ddd146102fa57806323b872dd146103255780632dc0562d14610362578063313ce5671461038d57806339509351146103b857610225565b806306fdde031461022a578063095ea7b31461025557806310d5de53146102925780631694505e146102cf57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108d9565b60405161024c91906127f8565b60405180910390f35b34801561026157600080fd5b5061027c600480360381019061027791906128b3565b61096b565b604051610289919061290e565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190612929565b61098e565b6040516102c6919061290e565b60405180910390f35b3480156102db57600080fd5b506102e46109ae565b6040516102f191906129b5565b60405180910390f35b34801561030657600080fd5b5061030f6109d4565b60405161031c91906129df565b60405180910390f35b34801561033157600080fd5b5061034c600480360381019061034791906129fa565b6109de565b604051610359919061290e565b60405180910390f35b34801561036e57600080fd5b50610377610a0d565b6040516103849190612a6e565b60405180910390f35b34801561039957600080fd5b506103a2610a33565b6040516103af9190612aa5565b60405180910390f35b3480156103c457600080fd5b506103df60048036038101906103da91906128b3565b610a3c565b6040516103ec919061290e565b60405180910390f35b34801561040157600080fd5b5061041c60048036038101906104179190612ac0565b610a73565b005b34801561042a57600080fd5b50610433610a85565b6040516104409190612afc565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b9190612929565b610aab565b60405161047d919061290e565b60405180910390f35b34801561049257600080fd5b5061049b610b01565b6040516104a891906129df565b60405180910390f35b3480156104bd57600080fd5b506104c6610b07565b6040516104d3919061290e565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe9190612929565b610b1a565b60405161051091906129df565b60405180910390f35b34801561052557600080fd5b5061052e610b62565b005b34801561053c57600080fd5b5061055760048036038101906105529190612b17565b610b76565b005b34801561056557600080fd5b50610580600480360381019061057b9190612b83565b610cef565b005b34801561058e57600080fd5b506105a960048036038101906105a49190612929565b610d52565b005b3480156105b757600080fd5b506105d260048036038101906105cd9190612bc3565b610dd4565b005b3480156105e057600080fd5b506105e9610dfe565b6040516105f69190612afc565b60405180910390f35b34801561060b57600080fd5b50610614610e28565b60405161062191906127f8565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190612b83565b610eba565b005b34801561065f57600080fd5b5061067a600480360381019061067591906128b3565b610f60565b604051610687919061290e565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b291906128b3565b610fd7565b6040516106c4919061290e565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190612929565b610ffa565b604051610701919061290e565b60405180910390f35b34801561071657600080fd5b50610731600480360381019061072c9190612929565b61101a565b005b34801561073f57600080fd5b506107486110c9565b604051610755919061290e565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190612b83565b6110dc565b005b34801561079357600080fd5b5061079c61118d565b6040516107a991906129df565b60405180910390f35b3480156107be57600080fd5b506107c7611193565b6040516107d491906129df565b60405180910390f35b3480156107e957600080fd5b5061080460048036038101906107ff9190612b17565b611199565b60405161081191906129df565b60405180910390f35b34801561082657600080fd5b5061082f611220565b60405161083c91906129df565b60405180910390f35b34801561085157600080fd5b5061086c60048036038101906108679190612929565b611226565b005b34801561087a57600080fd5b5061089560048036038101906108909190612929565b611272565b005b3480156108a357600080fd5b506108ac6112f5565b6040516108b991906129df565b60405180910390f35b3480156108ce57600080fd5b506108d76112fb565b005b6060600380546108e890612c59565b80601f016020809104026020016040519081016040528092919081815260200182805461091490612c59565b80156109615780601f1061093657610100808354040283529160200191610961565b820191906000526020600020905b81548152906001019060200180831161094457829003601f168201915b5050505050905090565b60008061097661133b565b9050610983818585611343565b600191505092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000806109e961133b565b90506109f685828561150c565b610a01858585611598565b60019150509392505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b600080610a4761133b565b9050610a68818585610a598589611199565b610a639190612cb9565b611343565b600191505092915050565b610a7b611eef565b80600a8190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600e5481565b600c60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b6a611eef565b610b746000611f6d565b565b610b7e611eef565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be490612d39565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c289190612afc565b602060405180830381865afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c699190612d6e565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610ca6929190612d9b565b6020604051808303816000875af1158015610cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce99190612dd9565b50505050565b610cf7611eef565b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610d5a611eef565b60008173ffffffffffffffffffffffffffffffffffffffff1647604051610d8090612e37565b60006040518083038185875af1925050503d8060008114610dbd576040519150601f19603f3d011682016040523d82523d6000602084013e610dc2565b606091505b5050905080610dd057600080fd5b5050565b610ddc611eef565b8360098190555082600b8190555081600d8190555080600e8190555050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e3790612c59565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6390612c59565b8015610eb05780601f10610e8557610100808354040283529160200191610eb0565b820191906000526020600020905b815481529060010190602001808311610e9357829003601f168201915b5050505050905090565b610ec2611eef565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4990612ebe565b60405180910390fd5b610f5c8282612033565b5050565b600080610f6b61133b565b90506000610f798286611199565b905083811015610fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb590612f50565b60405180910390fd5b610fcb8286868403611343565b60019250505092915050565b600080610fe261133b565b9050610fef818585611598565b600191505092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b611022611eef565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061106e816001612033565b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600c60009054906101000a900460ff1681565b6110e4611eef565b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611181919061290e565b60405180910390a25050565b60095481565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b61122e611eef565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61127a611eef565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e090612fe2565b60405180910390fd5b6112f281611f6d565b50565b600b5481565b611303611eef565b6001600c60006101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff021916908315150217905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a990613074565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890613106565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114ff91906129df565b60405180910390a3505050565b60006115188484611199565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115925781811015611584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157b90613172565b60405180910390fd5b6115918484848403611343565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe90613204565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166d90613296565b60405180910390fd5b6000810361168f5761168a838360006120d4565b611eea565b611697610dfe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561170557506116d5610dfe565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561173e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611778575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117915750600860149054906101000a900460ff16155b15611b7457600c60009054906101000a900460ff1661188b57600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061184b5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61188a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188190613302565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561192e5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119d557600954811115611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f90613394565b60405180910390fd5b600b5461198483610b1a565b8261198f9190612cb9565b11156119d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c790613400565b60405180910390fd5b611b73565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a785750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ac757600954811115611ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab990613492565b60405180910390fd5b611b72565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b7157600b54611b2483610b1a565b82611b2f9190612cb9565b1115611b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6790613400565b60405180910390fd5b5b5b5b5b6000611b7f30610b1a565b90506000600a548210159050808015611ba45750600c60019054906101000a900460ff165b8015611bbd5750600860149054906101000a900460ff16155b8015611c135750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c695750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cbf5750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d03576001600860146101000a81548160ff021916908315150217905550611ce761234a565b6000600860146101000a81548160ff0219169083151502179055505b6000600860149054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611db95750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611dc357600090505b60008115611eda57601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e2657506000600e54115b15611e4257611e3b85600e5460646001612372565b9050611eb6565b601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e9d57506000600d54115b15611eb557611eb285600d5460646001612372565b90505b5b6000811115611ecb57611eca8730836120d4565b5b8085611ed791906134b2565b94505b611ee58787876120d4565b505050505b505050565b611ef761133b565b73ffffffffffffffffffffffffffffffffffffffff16611f15610dfe565b73ffffffffffffffffffffffffffffffffffffffff1614611f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6290613532565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213a90613204565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a990613296565b60405180910390fd5b6121bd8383836123e8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223a906135c4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161233191906129df565b60405180910390a36123448484846123ed565b50505050565b600061235530610b1a565b9050600081036123655750612370565b61236e816123f2565b505b565b600080612380868686612657565b905060016002811115612396576123956135e4565b5b8360028111156123a9576123a86135e4565b5b1480156123c75750600084806123c2576123c1613613565b5b868809115b156123dc576001816123d99190612cb9565b90505b80915050949350505050565b505050565b505050565b6000600267ffffffffffffffff81111561240f5761240e613642565b5b60405190808252806020026020018201604052801561243d5781602001602082028036833780820191505090505b509050308160008151811061245557612454613671565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252091906136b5565b8160018151811061253457612533613671565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061259b30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611343565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016126219594939291906137fc565b600060405180830381600087803b15801561263b57600080fd5b505af115801561264f573d6000803e3d6000fd5b505050505050565b60008060008019858709858702925082811083820303915050600081036126925783828161268857612687613613565b5b0492505050612761565b8084116126d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cb906138a2565b60405180910390fd5b60008486880990508281118203915080830392506000600186190186169050808604955080840493506001818260000304019050808302841793506000600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808502955050505050505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127a2578082015181840152602081019050612787565b60008484015250505050565b6000601f19601f8301169050919050565b60006127ca82612768565b6127d48185612773565b93506127e4818560208601612784565b6127ed816127ae565b840191505092915050565b6000602082019050818103600083015261281281846127bf565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061284a8261281f565b9050919050565b61285a8161283f565b811461286557600080fd5b50565b60008135905061287781612851565b92915050565b6000819050919050565b6128908161287d565b811461289b57600080fd5b50565b6000813590506128ad81612887565b92915050565b600080604083850312156128ca576128c961281a565b5b60006128d885828601612868565b92505060206128e98582860161289e565b9150509250929050565b60008115159050919050565b612908816128f3565b82525050565b600060208201905061292360008301846128ff565b92915050565b60006020828403121561293f5761293e61281a565b5b600061294d84828501612868565b91505092915050565b6000819050919050565b600061297b6129766129718461281f565b612956565b61281f565b9050919050565b600061298d82612960565b9050919050565b600061299f82612982565b9050919050565b6129af81612994565b82525050565b60006020820190506129ca60008301846129a6565b92915050565b6129d98161287d565b82525050565b60006020820190506129f460008301846129d0565b92915050565b600080600060608486031215612a1357612a1261281a565b5b6000612a2186828701612868565b9350506020612a3286828701612868565b9250506040612a438682870161289e565b9150509250925092565b6000612a588261281f565b9050919050565b612a6881612a4d565b82525050565b6000602082019050612a836000830184612a5f565b92915050565b600060ff82169050919050565b612a9f81612a89565b82525050565b6000602082019050612aba6000830184612a96565b92915050565b600060208284031215612ad657612ad561281a565b5b6000612ae48482850161289e565b91505092915050565b612af68161283f565b82525050565b6000602082019050612b116000830184612aed565b92915050565b60008060408385031215612b2e57612b2d61281a565b5b6000612b3c85828601612868565b9250506020612b4d85828601612868565b9150509250929050565b612b60816128f3565b8114612b6b57600080fd5b50565b600081359050612b7d81612b57565b92915050565b60008060408385031215612b9a57612b9961281a565b5b6000612ba885828601612868565b9250506020612bb985828601612b6e565b9150509250929050565b60008060008060808587031215612bdd57612bdc61281a565b5b6000612beb8782880161289e565b9450506020612bfc8782880161289e565b9350506040612c0d8782880161289e565b9250506060612c1e8782880161289e565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c7157607f821691505b602082108103612c8457612c83612c2a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cc48261287d565b9150612ccf8361287d565b9250828201905080821115612ce757612ce6612c8a565b5b92915050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000612d23601a83612773565b9150612d2e82612ced565b602082019050919050565b60006020820190508181036000830152612d5281612d16565b9050919050565b600081519050612d6881612887565b92915050565b600060208284031215612d8457612d8361281a565b5b6000612d9284828501612d59565b91505092915050565b6000604082019050612db06000830185612aed565b612dbd60208301846129d0565b9392505050565b600081519050612dd381612b57565b92915050565b600060208284031215612def57612dee61281a565b5b6000612dfd84828501612dc4565b91505092915050565b600081905092915050565b50565b6000612e21600083612e06565b9150612e2c82612e11565b600082019050919050565b6000612e4282612e14565b9150819050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000612ea8603983612773565b9150612eb382612e4c565b604082019050919050565b60006020820190508181036000830152612ed781612e9b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612f3a602583612773565b9150612f4582612ede565b604082019050919050565b60006020820190508181036000830152612f6981612f2d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612fcc602683612773565b9150612fd782612f70565b604082019050919050565b60006020820190508181036000830152612ffb81612fbf565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061305e602483612773565b915061306982613002565b604082019050919050565b6000602082019050818103600083015261308d81613051565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130f0602283612773565b91506130fb82613094565b604082019050919050565b6000602082019050818103600083015261311f816130e3565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061315c601d83612773565b915061316782613126565b602082019050919050565b6000602082019050818103600083015261318b8161314f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131ee602583612773565b91506131f982613192565b604082019050919050565b6000602082019050818103600083015261321d816131e1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613280602383612773565b915061328b82613224565b604082019050919050565b600060208201905081810360008301526132af81613273565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006132ec601683612773565b91506132f7826132b6565b602082019050919050565b6000602082019050818103600083015261331b816132df565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061337e603583612773565b915061338982613322565b604082019050919050565b600060208201905081810360008301526133ad81613371565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006133ea601383612773565b91506133f5826133b4565b602082019050919050565b60006020820190508181036000830152613419816133dd565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061347c603683612773565b915061348782613420565b604082019050919050565b600060208201905081810360008301526134ab8161346f565b9050919050565b60006134bd8261287d565b91506134c88361287d565b92508282039050818111156134e0576134df612c8a565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061351c602083612773565b9150613527826134e6565b602082019050919050565b6000602082019050818103600083015261354b8161350f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006135ae602683612773565b91506135b982613552565b604082019050919050565b600060208201905081810360008301526135dd816135a1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506136af81612851565b92915050565b6000602082840312156136cb576136ca61281a565b5b60006136d9848285016136a0565b91505092915050565b6000819050919050565b60006137076137026136fd846136e2565b612956565b61287d565b9050919050565b613717816136ec565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137528161283f565b82525050565b60006137648383613749565b60208301905092915050565b6000602082019050919050565b60006137888261371d565b6137928185613728565b935061379d83613739565b8060005b838110156137ce5781516137b58882613758565b97506137c083613770565b9250506001810190506137a1565b5085935050505092915050565b60006137e682612982565b9050919050565b6137f6816137db565b82525050565b600060a08201905061381160008301886129d0565b61381e602083018761370e565b8181036040830152613830818661377d565b905061383f60608301856137ed565b61384c60808301846129d0565b9695505050505050565b7f4d6174683a206d756c446976206f766572666c6f770000000000000000000000600082015250565b600061388c601583612773565b915061389782613856565b602082019050919050565b600060208201905081810360008301526138bb8161387f565b905091905056fea2646970667358221220f0b715e9cd6001ae96a214b4cef284baa13e4cdc6b136e36abdfe8ecf493b2a864736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000f02c918aaa3727b37ffd8de024a93a319f29fae0000000000000000000000000f02c918aaa3727b37ffd8de024a93a319f29fae0

Deployed Bytecode

0x60806040526004361061021e5760003560e01c806376bd38b211610123578063bbc0c742116100ab578063e2f456051161006f578063e2f456051461081a578063efdcd97414610845578063f2fde38b1461086e578063f8b45b0514610897578063fb201b1d146108c257610225565b8063bbc0c74214610733578063c02466681461075e578063c8c8ebe414610787578063d85ba063146107b2578063dd62ed3e146107dd57610225565b80639a7a23d6116100f25780639a7a23d61461062a578063a457c2d714610653578063a9059cbb14610690578063b62496f5146106cd578063b9af85671461070a57610225565b806376bd38b2146105825780638c2676f7146105ab5780638da5cb5b146105d457806395d89b41146105ff57610225565b80634845bb6b116101a65780636ddd1713116101755780636ddd1713146104b157806370a08231146104dc578063715018a61461051957806374d3b1c0146105305780637571336a1461055957610225565b80634845bb6b146103f557806349bd5a5e1461041e5780634fbee193146104495780636a486a8e1461048657610225565b806318160ddd116101ed57806318160ddd146102fa57806323b872dd146103255780632dc0562d14610362578063313ce5671461038d57806339509351146103b857610225565b806306fdde031461022a578063095ea7b31461025557806310d5de53146102925780631694505e146102cf57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108d9565b60405161024c91906127f8565b60405180910390f35b34801561026157600080fd5b5061027c600480360381019061027791906128b3565b61096b565b604051610289919061290e565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190612929565b61098e565b6040516102c6919061290e565b60405180910390f35b3480156102db57600080fd5b506102e46109ae565b6040516102f191906129b5565b60405180910390f35b34801561030657600080fd5b5061030f6109d4565b60405161031c91906129df565b60405180910390f35b34801561033157600080fd5b5061034c600480360381019061034791906129fa565b6109de565b604051610359919061290e565b60405180910390f35b34801561036e57600080fd5b50610377610a0d565b6040516103849190612a6e565b60405180910390f35b34801561039957600080fd5b506103a2610a33565b6040516103af9190612aa5565b60405180910390f35b3480156103c457600080fd5b506103df60048036038101906103da91906128b3565b610a3c565b6040516103ec919061290e565b60405180910390f35b34801561040157600080fd5b5061041c60048036038101906104179190612ac0565b610a73565b005b34801561042a57600080fd5b50610433610a85565b6040516104409190612afc565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b9190612929565b610aab565b60405161047d919061290e565b60405180910390f35b34801561049257600080fd5b5061049b610b01565b6040516104a891906129df565b60405180910390f35b3480156104bd57600080fd5b506104c6610b07565b6040516104d3919061290e565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe9190612929565b610b1a565b60405161051091906129df565b60405180910390f35b34801561052557600080fd5b5061052e610b62565b005b34801561053c57600080fd5b5061055760048036038101906105529190612b17565b610b76565b005b34801561056557600080fd5b50610580600480360381019061057b9190612b83565b610cef565b005b34801561058e57600080fd5b506105a960048036038101906105a49190612929565b610d52565b005b3480156105b757600080fd5b506105d260048036038101906105cd9190612bc3565b610dd4565b005b3480156105e057600080fd5b506105e9610dfe565b6040516105f69190612afc565b60405180910390f35b34801561060b57600080fd5b50610614610e28565b60405161062191906127f8565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190612b83565b610eba565b005b34801561065f57600080fd5b5061067a600480360381019061067591906128b3565b610f60565b604051610687919061290e565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b291906128b3565b610fd7565b6040516106c4919061290e565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190612929565b610ffa565b604051610701919061290e565b60405180910390f35b34801561071657600080fd5b50610731600480360381019061072c9190612929565b61101a565b005b34801561073f57600080fd5b506107486110c9565b604051610755919061290e565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190612b83565b6110dc565b005b34801561079357600080fd5b5061079c61118d565b6040516107a991906129df565b60405180910390f35b3480156107be57600080fd5b506107c7611193565b6040516107d491906129df565b60405180910390f35b3480156107e957600080fd5b5061080460048036038101906107ff9190612b17565b611199565b60405161081191906129df565b60405180910390f35b34801561082657600080fd5b5061082f611220565b60405161083c91906129df565b60405180910390f35b34801561085157600080fd5b5061086c60048036038101906108679190612929565b611226565b005b34801561087a57600080fd5b5061089560048036038101906108909190612929565b611272565b005b3480156108a357600080fd5b506108ac6112f5565b6040516108b991906129df565b60405180910390f35b3480156108ce57600080fd5b506108d76112fb565b005b6060600380546108e890612c59565b80601f016020809104026020016040519081016040528092919081815260200182805461091490612c59565b80156109615780601f1061093657610100808354040283529160200191610961565b820191906000526020600020905b81548152906001019060200180831161094457829003601f168201915b5050505050905090565b60008061097661133b565b9050610983818585611343565b600191505092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000806109e961133b565b90506109f685828561150c565b610a01858585611598565b60019150509392505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b600080610a4761133b565b9050610a68818585610a598589611199565b610a639190612cb9565b611343565b600191505092915050565b610a7b611eef565b80600a8190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600e5481565b600c60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b6a611eef565b610b746000611f6d565b565b610b7e611eef565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be490612d39565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c289190612afc565b602060405180830381865afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c699190612d6e565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610ca6929190612d9b565b6020604051808303816000875af1158015610cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce99190612dd9565b50505050565b610cf7611eef565b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610d5a611eef565b60008173ffffffffffffffffffffffffffffffffffffffff1647604051610d8090612e37565b60006040518083038185875af1925050503d8060008114610dbd576040519150601f19603f3d011682016040523d82523d6000602084013e610dc2565b606091505b5050905080610dd057600080fd5b5050565b610ddc611eef565b8360098190555082600b8190555081600d8190555080600e8190555050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e3790612c59565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6390612c59565b8015610eb05780601f10610e8557610100808354040283529160200191610eb0565b820191906000526020600020905b815481529060010190602001808311610e9357829003601f168201915b5050505050905090565b610ec2611eef565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4990612ebe565b60405180910390fd5b610f5c8282612033565b5050565b600080610f6b61133b565b90506000610f798286611199565b905083811015610fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb590612f50565b60405180910390fd5b610fcb8286868403611343565b60019250505092915050565b600080610fe261133b565b9050610fef818585611598565b600191505092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b611022611eef565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061106e816001612033565b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600c60009054906101000a900460ff1681565b6110e4611eef565b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611181919061290e565b60405180910390a25050565b60095481565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b61122e611eef565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61127a611eef565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e090612fe2565b60405180910390fd5b6112f281611f6d565b50565b600b5481565b611303611eef565b6001600c60006101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff021916908315150217905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a990613074565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890613106565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114ff91906129df565b60405180910390a3505050565b60006115188484611199565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115925781811015611584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157b90613172565b60405180910390fd5b6115918484848403611343565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe90613204565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166d90613296565b60405180910390fd5b6000810361168f5761168a838360006120d4565b611eea565b611697610dfe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561170557506116d5610dfe565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561173e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611778575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117915750600860149054906101000a900460ff16155b15611b7457600c60009054906101000a900460ff1661188b57600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061184b5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61188a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188190613302565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561192e5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119d557600954811115611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f90613394565b60405180910390fd5b600b5461198483610b1a565b8261198f9190612cb9565b11156119d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c790613400565b60405180910390fd5b611b73565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a785750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ac757600954811115611ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab990613492565b60405180910390fd5b611b72565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b7157600b54611b2483610b1a565b82611b2f9190612cb9565b1115611b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6790613400565b60405180910390fd5b5b5b5b5b6000611b7f30610b1a565b90506000600a548210159050808015611ba45750600c60019054906101000a900460ff165b8015611bbd5750600860149054906101000a900460ff16155b8015611c135750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c695750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cbf5750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d03576001600860146101000a81548160ff021916908315150217905550611ce761234a565b6000600860146101000a81548160ff0219169083151502179055505b6000600860149054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611db95750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611dc357600090505b60008115611eda57601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e2657506000600e54115b15611e4257611e3b85600e5460646001612372565b9050611eb6565b601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e9d57506000600d54115b15611eb557611eb285600d5460646001612372565b90505b5b6000811115611ecb57611eca8730836120d4565b5b8085611ed791906134b2565b94505b611ee58787876120d4565b505050505b505050565b611ef761133b565b73ffffffffffffffffffffffffffffffffffffffff16611f15610dfe565b73ffffffffffffffffffffffffffffffffffffffff1614611f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6290613532565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213a90613204565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a990613296565b60405180910390fd5b6121bd8383836123e8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223a906135c4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161233191906129df565b60405180910390a36123448484846123ed565b50505050565b600061235530610b1a565b9050600081036123655750612370565b61236e816123f2565b505b565b600080612380868686612657565b905060016002811115612396576123956135e4565b5b8360028111156123a9576123a86135e4565b5b1480156123c75750600084806123c2576123c1613613565b5b868809115b156123dc576001816123d99190612cb9565b90505b80915050949350505050565b505050565b505050565b6000600267ffffffffffffffff81111561240f5761240e613642565b5b60405190808252806020026020018201604052801561243d5781602001602082028036833780820191505090505b509050308160008151811061245557612454613671565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252091906136b5565b8160018151811061253457612533613671565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061259b30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611343565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016126219594939291906137fc565b600060405180830381600087803b15801561263b57600080fd5b505af115801561264f573d6000803e3d6000fd5b505050505050565b60008060008019858709858702925082811083820303915050600081036126925783828161268857612687613613565b5b0492505050612761565b8084116126d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cb906138a2565b60405180910390fd5b60008486880990508281118203915080830392506000600186190186169050808604955080840493506001818260000304019050808302841793506000600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808502955050505050505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127a2578082015181840152602081019050612787565b60008484015250505050565b6000601f19601f8301169050919050565b60006127ca82612768565b6127d48185612773565b93506127e4818560208601612784565b6127ed816127ae565b840191505092915050565b6000602082019050818103600083015261281281846127bf565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061284a8261281f565b9050919050565b61285a8161283f565b811461286557600080fd5b50565b60008135905061287781612851565b92915050565b6000819050919050565b6128908161287d565b811461289b57600080fd5b50565b6000813590506128ad81612887565b92915050565b600080604083850312156128ca576128c961281a565b5b60006128d885828601612868565b92505060206128e98582860161289e565b9150509250929050565b60008115159050919050565b612908816128f3565b82525050565b600060208201905061292360008301846128ff565b92915050565b60006020828403121561293f5761293e61281a565b5b600061294d84828501612868565b91505092915050565b6000819050919050565b600061297b6129766129718461281f565b612956565b61281f565b9050919050565b600061298d82612960565b9050919050565b600061299f82612982565b9050919050565b6129af81612994565b82525050565b60006020820190506129ca60008301846129a6565b92915050565b6129d98161287d565b82525050565b60006020820190506129f460008301846129d0565b92915050565b600080600060608486031215612a1357612a1261281a565b5b6000612a2186828701612868565b9350506020612a3286828701612868565b9250506040612a438682870161289e565b9150509250925092565b6000612a588261281f565b9050919050565b612a6881612a4d565b82525050565b6000602082019050612a836000830184612a5f565b92915050565b600060ff82169050919050565b612a9f81612a89565b82525050565b6000602082019050612aba6000830184612a96565b92915050565b600060208284031215612ad657612ad561281a565b5b6000612ae48482850161289e565b91505092915050565b612af68161283f565b82525050565b6000602082019050612b116000830184612aed565b92915050565b60008060408385031215612b2e57612b2d61281a565b5b6000612b3c85828601612868565b9250506020612b4d85828601612868565b9150509250929050565b612b60816128f3565b8114612b6b57600080fd5b50565b600081359050612b7d81612b57565b92915050565b60008060408385031215612b9a57612b9961281a565b5b6000612ba885828601612868565b9250506020612bb985828601612b6e565b9150509250929050565b60008060008060808587031215612bdd57612bdc61281a565b5b6000612beb8782880161289e565b9450506020612bfc8782880161289e565b9350506040612c0d8782880161289e565b9250506060612c1e8782880161289e565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c7157607f821691505b602082108103612c8457612c83612c2a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cc48261287d565b9150612ccf8361287d565b9250828201905080821115612ce757612ce6612c8a565b5b92915050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000612d23601a83612773565b9150612d2e82612ced565b602082019050919050565b60006020820190508181036000830152612d5281612d16565b9050919050565b600081519050612d6881612887565b92915050565b600060208284031215612d8457612d8361281a565b5b6000612d9284828501612d59565b91505092915050565b6000604082019050612db06000830185612aed565b612dbd60208301846129d0565b9392505050565b600081519050612dd381612b57565b92915050565b600060208284031215612def57612dee61281a565b5b6000612dfd84828501612dc4565b91505092915050565b600081905092915050565b50565b6000612e21600083612e06565b9150612e2c82612e11565b600082019050919050565b6000612e4282612e14565b9150819050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000612ea8603983612773565b9150612eb382612e4c565b604082019050919050565b60006020820190508181036000830152612ed781612e9b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612f3a602583612773565b9150612f4582612ede565b604082019050919050565b60006020820190508181036000830152612f6981612f2d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612fcc602683612773565b9150612fd782612f70565b604082019050919050565b60006020820190508181036000830152612ffb81612fbf565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061305e602483612773565b915061306982613002565b604082019050919050565b6000602082019050818103600083015261308d81613051565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130f0602283612773565b91506130fb82613094565b604082019050919050565b6000602082019050818103600083015261311f816130e3565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061315c601d83612773565b915061316782613126565b602082019050919050565b6000602082019050818103600083015261318b8161314f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131ee602583612773565b91506131f982613192565b604082019050919050565b6000602082019050818103600083015261321d816131e1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613280602383612773565b915061328b82613224565b604082019050919050565b600060208201905081810360008301526132af81613273565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006132ec601683612773565b91506132f7826132b6565b602082019050919050565b6000602082019050818103600083015261331b816132df565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061337e603583612773565b915061338982613322565b604082019050919050565b600060208201905081810360008301526133ad81613371565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006133ea601383612773565b91506133f5826133b4565b602082019050919050565b60006020820190508181036000830152613419816133dd565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061347c603683612773565b915061348782613420565b604082019050919050565b600060208201905081810360008301526134ab8161346f565b9050919050565b60006134bd8261287d565b91506134c88361287d565b92508282039050818111156134e0576134df612c8a565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061351c602083612773565b9150613527826134e6565b602082019050919050565b6000602082019050818103600083015261354b8161350f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006135ae602683612773565b91506135b982613552565b604082019050919050565b600060208201905081810360008301526135dd816135a1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506136af81612851565b92915050565b6000602082840312156136cb576136ca61281a565b5b60006136d9848285016136a0565b91505092915050565b6000819050919050565b60006137076137026136fd846136e2565b612956565b61287d565b9050919050565b613717816136ec565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137528161283f565b82525050565b60006137648383613749565b60208301905092915050565b6000602082019050919050565b60006137888261371d565b6137928185613728565b935061379d83613739565b8060005b838110156137ce5781516137b58882613758565b97506137c083613770565b9250506001810190506137a1565b5085935050505092915050565b60006137e682612982565b9050919050565b6137f6816137db565b82525050565b600060a08201905061381160008301886129d0565b61381e602083018761370e565b8181036040830152613830818661377d565b905061383f60608301856137ed565b61384c60808301846129d0565b9695505050505050565b7f4d6174683a206d756c446976206f766572666c6f770000000000000000000000600082015250565b600061388c601583612773565b915061389782613856565b602082019050919050565b600060208201905081810360008301526138bb8161387f565b905091905056fea2646970667358221220f0b715e9cd6001ae96a214b4cef284baa13e4cdc6b136e36abdfe8ecf493b2a864736f6c63430008130033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000f02c918aaa3727b37ffd8de024a93a319f29fae0000000000000000000000000f02c918aaa3727b37ffd8de024a93a319f29fae0

-----Decoded View---------------
Arg [0] : router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : team (address): 0xF02C918aAA3727b37ffD8De024a93A319F29FaE0
Arg [2] : dev (address): 0xF02C918aAA3727b37ffD8De024a93A319F29FaE0

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 000000000000000000000000f02c918aaa3727b37ffd8de024a93a319f29fae0
Arg [2] : 000000000000000000000000f02c918aaa3727b37ffd8de024a93a319f29fae0


Deployed Bytecode Sourcemap

878:9267:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1448:63:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;918:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3255:106:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5203:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1001:32:9;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3104:91:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5854:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5069:104:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;966:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5292:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1299:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1225:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3419:125:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1824:101:0;;;;;;;;;;;;;:::i;:::-;;9651:313:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3989:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9972:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3666:315;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1201:85:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2369:102:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4356:306:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6575:427:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3740:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1669:57:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4866:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1185:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4166:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1070:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1265:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3987:149:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1112:33:9;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5181:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2074:198:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1152:24:9;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3441:108;;;;;;;;;;;;;:::i;:::-;;2158:98:1;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;4444:197::-;4527:4;4543:13;4559:12;:10;:12::i;:::-;4543:28;;4581:32;4590:5;4597:7;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;:::o;1448:63:9:-;;;;;;;;;;;;;;;;;;;;;;:::o;918:41::-;;;;;;;;;;;;;:::o;3255:106:1:-;3316:7;3342:12;;3335:19;;3255:106;:::o;5203:256::-;5300:4;5316:15;5334:12;:10;:12::i;:::-;5316:30;;5356:38;5372:4;5378:7;5387:6;5356:15;:38::i;:::-;5404:27;5414:4;5420:2;5424:6;5404:9;:27::i;:::-;5448:4;5441:11;;;5203:256;;;;;:::o;1001:32:9:-;;;;;;;;;;;;;:::o;3104:91:1:-;3162:5;3186:2;3179:9;;3104:91;:::o;5854:234::-;5942:4;5958:13;5974:12;:10;:12::i;:::-;5958:28;;5996:64;6005:5;6012:7;6049:10;6021:25;6031:5;6038:7;6021:9;:25::i;:::-;:38;;;;:::i;:::-;5996:8;:64::i;:::-;6077:4;6070:11;;;5854:234;;;;:::o;5069:104:9:-;1094:13:0;:11;:13::i;:::-;5159:6:9::1;5138:18;:27;;;;5069:104:::0;:::o;966:28::-;;;;;;;;;;;;;:::o;5292:126::-;5358:4;5382:19;:28;5402:7;5382:28;;;;;;;;;;;;;;;;;;;;;;;;;5375:35;;5292:126;;;:::o;1299:28::-;;;;:::o;1225:31::-;;;;;;;;;;;;;:::o;3419:125:1:-;3493:7;3519:9;:18;3529:7;3519:18;;;;;;;;;;;;;;;;3512:25;;3419:125;;;:::o;1824:101:0:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;9651:313:9:-;1094:13:0;:11;:13::i;:::-;9789:1:9::1;9771:20;;:6;:20;;::::0;9763:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9833:24;9867:6;9860:24;;;9893:4;9860:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9833:66;;9917:6;9910:23;;;9934:3;9939:16;9910:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9752:212;9651:313:::0;;:::o;3989:169::-;1094:13:0;:11;:13::i;:::-;4146:4:9::1;4104:31;:39;4136:6;4104:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;3989:169:::0;;:::o;9972:170::-;1094:13:0;:11;:13::i;:::-;10044:12:9::1;10062:6;:11;;10081:21;10062:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10043:64;;;10126:7;10118:16;;;::::0;::::1;;10032:110;9972:170:::0;:::o;3666:315::-;1094:13:0;:11;:13::i;:::-;3863:5:9::1;3840:20;:28;;;;3891:10;3879:9;:22;;;;3929:7;3914:12;:22;;;;3965:8;3949:13;:24;;;;3666:315:::0;;;;:::o;1201:85:0:-;1247:7;1273:6;;;;;;;;;;;1266:13;;1201:85;:::o;2369:102:1:-;2425:13;2457:7;2450:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2369:102;:::o;4356:306:9:-;1094:13:0;:11;:13::i;:::-;4502::9::1;;;;;;;;;;;4494:21;;:4;:21;;::::0;4472:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4613:41;4642:4;4648:5;4613:28;:41::i;:::-;4356:306:::0;;:::o;6575:427:1:-;6668:4;6684:13;6700:12;:10;:12::i;:::-;6684:28;;6722:24;6749:25;6759:5;6766:7;6749:9;:25::i;:::-;6722:52;;6812:15;6792:16;:35;;6784:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;:::-;6991:4;6984:11;;;;6575:427;;;;:::o;3740:189::-;3819:4;3835:13;3851:12;:10;:12::i;:::-;3835:28;;3873;3883:5;3890:2;3894:6;3873:9;:28::i;:::-;3918:4;3911:11;;;3740:189;;;;:::o;1669:57:9:-;;;;;;;;;;;;;;;;;;;;;;:::o;4866:195::-;1094:13:0;:11;:13::i;:::-;4943:4:9::1;4927:13;;:20;;;;;;;;;;;;;;;;;;4958:40;4987:4;4993;4958:28;:40::i;:::-;5049:4;5009:31;:37;5041:4;5009:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;4866:195:::0;:::o;1185:33::-;;;;;;;;;;;;;:::o;4166:182::-;1094:13:0;:11;:13::i;:::-;4282:8:9::1;4251:19;:28;4271:7;4251:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;4322:7;4306:34;;;4331:8;4306:34;;;;;;:::i;:::-;;;;;;;;4166:182:::0;;:::o;1070:35::-;;;;:::o;1265:27::-;;;;:::o;3987:149:1:-;4076:7;4102:11;:18;4114:5;4102:18;;;;;;;;;;;;;;;:27;4121:7;4102:27;;;;;;;;;;;;;;;;4095:34;;3987:149;;;;:::o;1112:33:9:-;;;;:::o;5181:103::-;1094:13:0;:11;:13::i;:::-;5269:6:9::1;5249:9;;:27;;;;;;;;;;;;;;;;;;5181:103:::0;:::o;2074:198:0:-;1094:13;:11;:13::i;:::-;2182:1:::1;2162:22;;:8;:22;;::::0;2154:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;1152:24:9:-;;;;:::o;3441:108::-;1094:13:0;:11;:13::i;:::-;3508:4:9::1;3492:13;;:20;;;;;;;;;;;;;;;;;;3537:4;3523:11;;:18;;;;;;;;;;;;;;;;;;3441:108::o:0;640:96:4:-;693:7;719:10;712:17;;640:96;:::o;10457:340:1:-;10575:1;10558:19;;:5;:19;;;10550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10655:1;10636:21;;:7;:21;;;10628:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10737:6;10707:11;:18;10719:5;10707:18;;;;;;;;;;;;;;;:27;10726:7;10707:27;;;;;;;;;;;;;;;:36;;;;10774:7;10758:32;;10767:5;10758:32;;;10783:6;10758:32;;;;;;:::i;:::-;;;;;;;;10457:340;;;:::o;11078:411::-;11178:24;11205:25;11215:5;11222:7;11205:9;:25::i;:::-;11178:52;;11264:17;11244:16;:37;11240:243;;11325:6;11305:16;:26;;11297:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11407:51;11416:5;11423:7;11451:6;11432:16;:25;11407:8;:51::i;:::-;11240:243;11168:321;11078:411;;;:::o;5426:3389:9:-;5574:1;5558:18;;:4;:18;;;5550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5651:1;5637:16;;:2;:16;;;5629:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5720:1;5710:6;:11;5706:93;;5738:28;5754:4;5760:2;5764:1;5738:15;:28::i;:::-;5781:7;;5706:93;5837:7;:5;:7::i;:::-;5829:15;;:4;:15;;;;:45;;;;;5867:7;:5;:7::i;:::-;5861:13;;:2;:13;;;;5829:45;:78;;;;;5905:1;5891:16;;:2;:16;;;;5829:78;:116;;;;;5938:6;5924:21;;:2;:21;;;;5829:116;:142;;;;;5963:8;;;;;;;;;;;5962:9;5829:142;5811:1478;;;6003:13;;;;;;;;;;;5998:203;;6067:19;:25;6087:4;6067:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;6096:19;:23;6116:2;6096:23;;;;;;;;;;;;;;;;;;;;;;;;;6067:52;6037:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;5998:203;6262:25;:31;6288:4;6262:31;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;6315:31;:35;6347:2;6315:35;;;;;;;;;;;;;;;;;;;;;;;;;6314:36;6262:88;6240:1038;;;6425:20;;6415:6;:30;;6385:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;6617:9;;6600:13;6610:2;6600:9;:13::i;:::-;6591:6;:22;;;;:::i;:::-;:35;;6561:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;6240:1038;;;6770:25;:29;6796:2;6770:29;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;6821:31;:37;6853:4;6821:37;;;;;;;;;;;;;;;;;;;;;;;;;6820:38;6770:88;6748:530;;;6933:20;;6923:6;:30;;6893:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;6748:530;;;7078:31;:35;7110:2;7078:35;;;;;;;;;;;;;;;;;;;;;;;;;7073:205;;7190:9;;7173:13;7183:2;7173:9;:13::i;:::-;7164:6;:22;;;;:::i;:::-;:35;;7134:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;7073:205;6748:530;6240:1038;5811:1478;7301:28;7332:24;7350:4;7332:9;:24::i;:::-;7301:55;;7369:12;7408:18;;7384:20;:42;;7369:57;;7457:7;:35;;;;;7481:11;;;;;;;;;;;7457:35;:61;;;;;7510:8;;;;;;;;;;;7509:9;7457:61;:110;;;;;7536:25;:31;7562:4;7536:31;;;;;;;;;;;;;;;;;;;;;;;;;7535:32;7457:110;:153;;;;;7585:19;:25;7605:4;7585:25;;;;;;;;;;;;;;;;;;;;;;;;;7584:26;7457:153;:194;;;;;7628:19;:23;7648:2;7628:23;;;;;;;;;;;;;;;;;;;;;;;;;7627:24;7457:194;7439:326;;;7689:4;7678:8;;:15;;;;;;;;;;;;;;;;;;7710:10;:8;:10::i;:::-;7748:5;7737:8;;:16;;;;;;;;;;;;;;;;;;7439:326;7777:12;7793:8;;;;;;;;;;;7792:9;7777:24;;7903:19;:25;7923:4;7903:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;7932:19;:23;7952:2;7932:23;;;;;;;;;;;;;;;;;;;;;;;;;7903:52;7899:100;;;7982:5;7972:15;;7899:100;8011:12;8116:7;8112:650;;;8165:25;:29;8191:2;8165:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;8214:1;8198:13;;:17;8165:50;8161:452;;;8243:160;8277:6;8306:13;;8342:3;8368:16;8243:11;:160::i;:::-;8236:167;;8161:452;;;8462:25;:31;8488:4;8462:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;8512:1;8497:12;;:16;8462:51;8458:155;;;8541:56;8553:6;8561:12;;8575:3;8580:16;8541:11;:56::i;:::-;8534:63;;8458:155;8161:452;8640:1;8633:4;:8;8629:91;;;8662:42;8678:4;8692;8699;8662:15;:42::i;:::-;8629:91;8746:4;8736:14;;;;;:::i;:::-;;;8112:650;8774:33;8790:4;8796:2;8800:6;8774:15;:33::i;:::-;5539:3276;;;;5426:3389;;;;:::o;1359:130:0:-;1433:12;:10;:12::i;:::-;1422:23;;:7;:5;:7::i;:::-;:23;;;1414:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1359:130::o;2426:187::-;2499:16;2518:6;;;;;;;;;;;2499:25;;2543:8;2534:6;;:17;;;;;;;;;;;;;;;;;;2597:8;2566:40;;2587:8;2566:40;;;;;;;;;;;;2489:124;2426:187;:::o;4670:188:9:-;4787:5;4753:25;:31;4779:4;4753:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;4844:5;4810:40;;4838:4;4810:40;;;;;;;;;;;;4670:188;;:::o;7456:788:1:-;7568:1;7552:18;;:4;:18;;;7544:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7644:1;7630:16;;:2;:16;;;7622:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7697:38;7718:4;7724:2;7728:6;7697:20;:38::i;:::-;7746:19;7768:9;:15;7778:4;7768:15;;;;;;;;;;;;;;;;7746:37;;7816:6;7801:11;:21;;7793:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7931:6;7917:11;:20;7899:9;:15;7909:4;7899:15;;;;;;;;;;;;;;;:38;;;;8131:6;8114:9;:13;8124:2;8114:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;8178:2;8163:26;;8172:4;8163:26;;;8182:6;8163:26;;;;;;:::i;:::-;;;;;;;;8200:37;8220:4;8226:2;8230:6;8200:19;:37::i;:::-;7534:710;7456:788;;;:::o;9433:210:9:-;9472:23;9498:24;9516:4;9498:9;:24::i;:::-;9472:50;;9556:1;9537:15;:20;9533:59;;9574:7;;;9533:59;9602:33;9619:15;9602:16;:33::i;:::-;9461:182;9433:210;:::o;6012:299:5:-;6113:7;6132:14;6149:25;6156:1;6159;6162:11;6149:6;:25::i;:::-;6132:42;;6200:11;6188:23;;;;;;;;:::i;:::-;;:8;:23;;;;;;;;:::i;:::-;;;:56;;;;;6243:1;6228:11;6215:25;;;;;:::i;:::-;;6225:1;6222;6215:25;:29;6188:56;6184:98;;;6270:1;6260:11;;;;;:::i;:::-;;;6184:98;6298:6;6291:13;;;6012:299;;;;;;:::o;12073:91:1:-;;;;:::o;12752:90::-;;;;:::o;8823:602:9:-;8949:21;8987:1;8973:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8949:40;;9018:4;9000;9005:1;9000:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;9044:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9034:4;9039:1;9034:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;9079:62;9096:4;9111:15;;;;;;;;;;;9129:11;9079:8;:62::i;:::-;9180:15;;;;;;;;;;;:66;;;9261:11;9287:1;9348:4;9367:9;;;;;;;;;;;9391:15;9180:237;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8878:547;8823:602;:::o;1667:4213:5:-;1749:14;2096:13;2168;2293:1;2289:6;2286:1;2283;2276:20;2329:1;2326;2322:9;2313:18;;2384:5;2380:2;2377:13;2369:5;2365:2;2361:14;2357:34;2348:43;;2248:157;2495:1;2486:5;:10;2482:368;;2824:11;2816:5;:19;;;;;:::i;:::-;;;2809:26;;;;;;2482:368;2974:5;2960:11;:19;2952:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;3261:17;3396:11;3393:1;3390;3383:25;3370:38;;3524:5;3513:9;3510:20;3503:5;3499:32;3490:41;;3568:9;3561:5;3557:21;3548:30;;3899:12;3944:1;3930:11;3929:12;:16;3914:11;:32;3899:47;;4066:4;4053:11;4049:22;4034:37;;4158:4;4151:5;4147:16;4138:25;;4315:1;4308:4;4301;4298:1;4294:12;4290:23;4286:31;4278:39;;4414:4;4406:5;:12;4397:21;;;;4736:15;4774:1;4759:11;4755:1;:15;4754:21;4736:39;;5021:7;5007:11;:21;5003:1;:25;4992:36;;;;5090:7;5076:11;:21;5072:1;:25;5061:36;;;;5160:7;5146:11;:21;5142:1;:25;5131:36;;;;5230:7;5216:11;:21;5212:1;:25;5201:36;;;;5300:7;5286:11;:21;5282:1;:25;5271:36;;;;5371:7;5357:11;:21;5353:1;:25;5342:36;;;;5829:7;5821:5;:15;5812:24;;5850:13;;;;;1667:4213;;;;;;:::o;7:99:10:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:619::-;5188:6;5196;5204;5253:2;5241:9;5232:7;5228:23;5224:32;5221:119;;;5259:79;;:::i;:::-;5221:119;5379:1;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5350:117;5506:2;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;:::i;:::-;5522:63;;5477:118;5634:2;5660:53;5705:7;5696:6;5685:9;5681:22;5660:53;:::i;:::-;5650:63;;5605:118;5111:619;;;;;:::o;5736:104::-;5781:7;5810:24;5828:5;5810:24;:::i;:::-;5799:35;;5736:104;;;:::o;5846:142::-;5949:32;5975:5;5949:32;:::i;:::-;5944:3;5937:45;5846:142;;:::o;5994:254::-;6103:4;6141:2;6130:9;6126:18;6118:26;;6154:87;6238:1;6227:9;6223:17;6214:6;6154:87;:::i;:::-;5994:254;;;;:::o;6254:86::-;6289:7;6329:4;6322:5;6318:16;6307:27;;6254:86;;;:::o;6346:112::-;6429:22;6445:5;6429:22;:::i;:::-;6424:3;6417:35;6346:112;;:::o;6464:214::-;6553:4;6591:2;6580:9;6576:18;6568:26;;6604:67;6668:1;6657:9;6653:17;6644:6;6604:67;:::i;:::-;6464:214;;;;:::o;6684:329::-;6743:6;6792:2;6780:9;6771:7;6767:23;6763:32;6760:119;;;6798:79;;:::i;:::-;6760:119;6918:1;6943:53;6988:7;6979:6;6968:9;6964:22;6943:53;:::i;:::-;6933:63;;6889:117;6684:329;;;;:::o;7019:118::-;7106:24;7124:5;7106:24;:::i;:::-;7101:3;7094:37;7019:118;;:::o;7143:222::-;7236:4;7274:2;7263:9;7259:18;7251:26;;7287:71;7355:1;7344:9;7340:17;7331:6;7287:71;:::i;:::-;7143:222;;;;:::o;7371:474::-;7439:6;7447;7496:2;7484:9;7475:7;7471:23;7467:32;7464:119;;;7502:79;;:::i;:::-;7464:119;7622:1;7647:53;7692:7;7683:6;7672:9;7668:22;7647:53;:::i;:::-;7637:63;;7593:117;7749:2;7775:53;7820:7;7811:6;7800:9;7796:22;7775:53;:::i;:::-;7765:63;;7720:118;7371:474;;;;;:::o;7851:116::-;7921:21;7936:5;7921:21;:::i;:::-;7914:5;7911:32;7901:60;;7957:1;7954;7947:12;7901:60;7851:116;:::o;7973:133::-;8016:5;8054:6;8041:20;8032:29;;8070:30;8094:5;8070:30;:::i;:::-;7973:133;;;;:::o;8112:468::-;8177:6;8185;8234:2;8222:9;8213:7;8209:23;8205:32;8202:119;;;8240:79;;:::i;:::-;8202:119;8360:1;8385:53;8430:7;8421:6;8410:9;8406:22;8385:53;:::i;:::-;8375:63;;8331:117;8487:2;8513:50;8555:7;8546:6;8535:9;8531:22;8513:50;:::i;:::-;8503:60;;8458:115;8112:468;;;;;:::o;8586:765::-;8672:6;8680;8688;8696;8745:3;8733:9;8724:7;8720:23;8716:33;8713:120;;;8752:79;;:::i;:::-;8713:120;8872:1;8897:53;8942:7;8933:6;8922:9;8918:22;8897:53;:::i;:::-;8887:63;;8843:117;8999:2;9025:53;9070:7;9061:6;9050:9;9046:22;9025:53;:::i;:::-;9015:63;;8970:118;9127:2;9153:53;9198:7;9189:6;9178:9;9174:22;9153:53;:::i;:::-;9143:63;;9098:118;9255:2;9281:53;9326:7;9317:6;9306:9;9302:22;9281:53;:::i;:::-;9271:63;;9226:118;8586:765;;;;;;;:::o;9357:180::-;9405:77;9402:1;9395:88;9502:4;9499:1;9492:15;9526:4;9523:1;9516:15;9543:320;9587:6;9624:1;9618:4;9614:12;9604:22;;9671:1;9665:4;9661:12;9692:18;9682:81;;9748:4;9740:6;9736:17;9726:27;;9682:81;9810:2;9802:6;9799:14;9779:18;9776:38;9773:84;;9829:18;;:::i;:::-;9773:84;9594:269;9543:320;;;:::o;9869:180::-;9917:77;9914:1;9907:88;10014:4;10011:1;10004:15;10038:4;10035:1;10028:15;10055:191;10095:3;10114:20;10132:1;10114:20;:::i;:::-;10109:25;;10148:20;10166:1;10148:20;:::i;:::-;10143:25;;10191:1;10188;10184:9;10177:16;;10212:3;10209:1;10206:10;10203:36;;;10219:18;;:::i;:::-;10203:36;10055:191;;;;:::o;10252:176::-;10392:28;10388:1;10380:6;10376:14;10369:52;10252:176;:::o;10434:366::-;10576:3;10597:67;10661:2;10656:3;10597:67;:::i;:::-;10590:74;;10673:93;10762:3;10673:93;:::i;:::-;10791:2;10786:3;10782:12;10775:19;;10434:366;;;:::o;10806:419::-;10972:4;11010:2;10999:9;10995:18;10987:26;;11059:9;11053:4;11049:20;11045:1;11034:9;11030:17;11023:47;11087:131;11213:4;11087:131;:::i;:::-;11079:139;;10806:419;;;:::o;11231:143::-;11288:5;11319:6;11313:13;11304:22;;11335:33;11362:5;11335:33;:::i;:::-;11231:143;;;;:::o;11380:351::-;11450:6;11499:2;11487:9;11478:7;11474:23;11470:32;11467:119;;;11505:79;;:::i;:::-;11467:119;11625:1;11650:64;11706:7;11697:6;11686:9;11682:22;11650:64;:::i;:::-;11640:74;;11596:128;11380:351;;;;:::o;11737:332::-;11858:4;11896:2;11885:9;11881:18;11873:26;;11909:71;11977:1;11966:9;11962:17;11953:6;11909:71;:::i;:::-;11990:72;12058:2;12047:9;12043:18;12034:6;11990:72;:::i;:::-;11737:332;;;;;:::o;12075:137::-;12129:5;12160:6;12154:13;12145:22;;12176:30;12200:5;12176:30;:::i;:::-;12075:137;;;;:::o;12218:345::-;12285:6;12334:2;12322:9;12313:7;12309:23;12305:32;12302:119;;;12340:79;;:::i;:::-;12302:119;12460:1;12485:61;12538:7;12529:6;12518:9;12514:22;12485:61;:::i;:::-;12475:71;;12431:125;12218:345;;;;:::o;12569:147::-;12670:11;12707:3;12692:18;;12569:147;;;;:::o;12722:114::-;;:::o;12842:398::-;13001:3;13022:83;13103:1;13098:3;13022:83;:::i;:::-;13015:90;;13114:93;13203:3;13114:93;:::i;:::-;13232:1;13227:3;13223:11;13216:18;;12842:398;;;:::o;13246:379::-;13430:3;13452:147;13595:3;13452:147;:::i;:::-;13445:154;;13616:3;13609:10;;13246:379;;;:::o;13631:244::-;13771:34;13767:1;13759:6;13755:14;13748:58;13840:27;13835:2;13827:6;13823:15;13816:52;13631:244;:::o;13881:366::-;14023:3;14044:67;14108:2;14103:3;14044:67;:::i;:::-;14037:74;;14120:93;14209:3;14120:93;:::i;:::-;14238:2;14233:3;14229:12;14222:19;;13881:366;;;:::o;14253:419::-;14419:4;14457:2;14446:9;14442:18;14434:26;;14506:9;14500:4;14496:20;14492:1;14481:9;14477:17;14470:47;14534:131;14660:4;14534:131;:::i;:::-;14526:139;;14253:419;;;:::o;14678:224::-;14818:34;14814:1;14806:6;14802:14;14795:58;14887:7;14882:2;14874:6;14870:15;14863:32;14678:224;:::o;14908:366::-;15050:3;15071:67;15135:2;15130:3;15071:67;:::i;:::-;15064:74;;15147:93;15236:3;15147:93;:::i;:::-;15265:2;15260:3;15256:12;15249:19;;14908:366;;;:::o;15280:419::-;15446:4;15484:2;15473:9;15469:18;15461:26;;15533:9;15527:4;15523:20;15519:1;15508:9;15504:17;15497:47;15561:131;15687:4;15561:131;:::i;:::-;15553:139;;15280:419;;;:::o;15705:225::-;15845:34;15841:1;15833:6;15829:14;15822:58;15914:8;15909:2;15901:6;15897:15;15890:33;15705:225;:::o;15936:366::-;16078:3;16099:67;16163:2;16158:3;16099:67;:::i;:::-;16092:74;;16175:93;16264:3;16175:93;:::i;:::-;16293:2;16288:3;16284:12;16277:19;;15936:366;;;:::o;16308:419::-;16474:4;16512:2;16501:9;16497:18;16489:26;;16561:9;16555:4;16551:20;16547:1;16536:9;16532:17;16525:47;16589:131;16715:4;16589:131;:::i;:::-;16581:139;;16308:419;;;:::o;16733:223::-;16873:34;16869:1;16861:6;16857:14;16850:58;16942:6;16937:2;16929:6;16925:15;16918:31;16733:223;:::o;16962:366::-;17104:3;17125:67;17189:2;17184:3;17125:67;:::i;:::-;17118:74;;17201:93;17290:3;17201:93;:::i;:::-;17319:2;17314:3;17310:12;17303:19;;16962:366;;;:::o;17334:419::-;17500:4;17538:2;17527:9;17523:18;17515:26;;17587:9;17581:4;17577:20;17573:1;17562:9;17558:17;17551:47;17615:131;17741:4;17615:131;:::i;:::-;17607:139;;17334:419;;;:::o;17759:221::-;17899:34;17895:1;17887:6;17883:14;17876:58;17968:4;17963:2;17955:6;17951:15;17944:29;17759:221;:::o;17986:366::-;18128:3;18149:67;18213:2;18208:3;18149:67;:::i;:::-;18142:74;;18225:93;18314:3;18225:93;:::i;:::-;18343:2;18338:3;18334:12;18327:19;;17986:366;;;:::o;18358:419::-;18524:4;18562:2;18551:9;18547:18;18539:26;;18611:9;18605:4;18601:20;18597:1;18586:9;18582:17;18575:47;18639:131;18765:4;18639:131;:::i;:::-;18631:139;;18358:419;;;:::o;18783:179::-;18923:31;18919:1;18911:6;18907:14;18900:55;18783:179;:::o;18968:366::-;19110:3;19131:67;19195:2;19190:3;19131:67;:::i;:::-;19124:74;;19207:93;19296:3;19207:93;:::i;:::-;19325:2;19320:3;19316:12;19309:19;;18968:366;;;:::o;19340:419::-;19506:4;19544:2;19533:9;19529:18;19521:26;;19593:9;19587:4;19583:20;19579:1;19568:9;19564:17;19557:47;19621:131;19747:4;19621:131;:::i;:::-;19613:139;;19340:419;;;:::o;19765:224::-;19905:34;19901:1;19893:6;19889:14;19882:58;19974:7;19969:2;19961:6;19957:15;19950:32;19765:224;:::o;19995:366::-;20137:3;20158:67;20222:2;20217:3;20158:67;:::i;:::-;20151:74;;20234:93;20323:3;20234:93;:::i;:::-;20352:2;20347:3;20343:12;20336:19;;19995:366;;;:::o;20367:419::-;20533:4;20571:2;20560:9;20556:18;20548:26;;20620:9;20614:4;20610:20;20606:1;20595:9;20591:17;20584:47;20648:131;20774:4;20648:131;:::i;:::-;20640:139;;20367:419;;;:::o;20792:222::-;20932:34;20928:1;20920:6;20916:14;20909:58;21001:5;20996:2;20988:6;20984:15;20977:30;20792:222;:::o;21020:366::-;21162:3;21183:67;21247:2;21242:3;21183:67;:::i;:::-;21176:74;;21259:93;21348:3;21259:93;:::i;:::-;21377:2;21372:3;21368:12;21361:19;;21020:366;;;:::o;21392:419::-;21558:4;21596:2;21585:9;21581:18;21573:26;;21645:9;21639:4;21635:20;21631:1;21620:9;21616:17;21609:47;21673:131;21799:4;21673:131;:::i;:::-;21665:139;;21392:419;;;:::o;21817:172::-;21957:24;21953:1;21945:6;21941:14;21934:48;21817:172;:::o;21995:366::-;22137:3;22158:67;22222:2;22217:3;22158:67;:::i;:::-;22151:74;;22234:93;22323:3;22234:93;:::i;:::-;22352:2;22347:3;22343:12;22336:19;;21995:366;;;:::o;22367:419::-;22533:4;22571:2;22560:9;22556:18;22548:26;;22620:9;22614:4;22610:20;22606:1;22595:9;22591:17;22584:47;22648:131;22774:4;22648:131;:::i;:::-;22640:139;;22367:419;;;:::o;22792:240::-;22932:34;22928:1;22920:6;22916:14;22909:58;23001:23;22996:2;22988:6;22984:15;22977:48;22792:240;:::o;23038:366::-;23180:3;23201:67;23265:2;23260:3;23201:67;:::i;:::-;23194:74;;23277:93;23366:3;23277:93;:::i;:::-;23395:2;23390:3;23386:12;23379:19;;23038:366;;;:::o;23410:419::-;23576:4;23614:2;23603:9;23599:18;23591:26;;23663:9;23657:4;23653:20;23649:1;23638:9;23634:17;23627:47;23691:131;23817:4;23691:131;:::i;:::-;23683:139;;23410:419;;;:::o;23835:169::-;23975:21;23971:1;23963:6;23959:14;23952:45;23835:169;:::o;24010:366::-;24152:3;24173:67;24237:2;24232:3;24173:67;:::i;:::-;24166:74;;24249:93;24338:3;24249:93;:::i;:::-;24367:2;24362:3;24358:12;24351:19;;24010:366;;;:::o;24382:419::-;24548:4;24586:2;24575:9;24571:18;24563:26;;24635:9;24629:4;24625:20;24621:1;24610:9;24606:17;24599:47;24663:131;24789:4;24663:131;:::i;:::-;24655:139;;24382:419;;;:::o;24807:241::-;24947:34;24943:1;24935:6;24931:14;24924:58;25016:24;25011:2;25003:6;24999:15;24992:49;24807:241;:::o;25054:366::-;25196:3;25217:67;25281:2;25276:3;25217:67;:::i;:::-;25210:74;;25293:93;25382:3;25293:93;:::i;:::-;25411:2;25406:3;25402:12;25395:19;;25054:366;;;:::o;25426:419::-;25592:4;25630:2;25619:9;25615:18;25607:26;;25679:9;25673:4;25669:20;25665:1;25654:9;25650:17;25643:47;25707:131;25833:4;25707:131;:::i;:::-;25699:139;;25426:419;;;:::o;25851:194::-;25891:4;25911:20;25929:1;25911:20;:::i;:::-;25906:25;;25945:20;25963:1;25945:20;:::i;:::-;25940:25;;25989:1;25986;25982:9;25974:17;;26013:1;26007:4;26004:11;26001:37;;;26018:18;;:::i;:::-;26001:37;25851:194;;;;:::o;26051:182::-;26191:34;26187:1;26179:6;26175:14;26168:58;26051:182;:::o;26239:366::-;26381:3;26402:67;26466:2;26461:3;26402:67;:::i;:::-;26395:74;;26478:93;26567:3;26478:93;:::i;:::-;26596:2;26591:3;26587:12;26580:19;;26239:366;;;:::o;26611:419::-;26777:4;26815:2;26804:9;26800:18;26792:26;;26864:9;26858:4;26854:20;26850:1;26839:9;26835:17;26828:47;26892:131;27018:4;26892:131;:::i;:::-;26884:139;;26611:419;;;:::o;27036:225::-;27176:34;27172:1;27164:6;27160:14;27153:58;27245:8;27240:2;27232:6;27228:15;27221:33;27036:225;:::o;27267:366::-;27409:3;27430:67;27494:2;27489:3;27430:67;:::i;:::-;27423:74;;27506:93;27595:3;27506:93;:::i;:::-;27624:2;27619:3;27615:12;27608:19;;27267:366;;;:::o;27639:419::-;27805:4;27843:2;27832:9;27828:18;27820:26;;27892:9;27886:4;27882:20;27878:1;27867:9;27863:17;27856:47;27920:131;28046:4;27920:131;:::i;:::-;27912:139;;27639:419;;;:::o;28064:180::-;28112:77;28109:1;28102:88;28209:4;28206:1;28199:15;28233:4;28230:1;28223:15;28250:180;28298:77;28295:1;28288:88;28395:4;28392:1;28385:15;28419:4;28416:1;28409:15;28436:180;28484:77;28481:1;28474:88;28581:4;28578:1;28571:15;28605:4;28602:1;28595:15;28622:180;28670:77;28667:1;28660:88;28767:4;28764:1;28757:15;28791:4;28788:1;28781:15;28808:143;28865:5;28896:6;28890:13;28881:22;;28912:33;28939:5;28912:33;:::i;:::-;28808:143;;;;:::o;28957:351::-;29027:6;29076:2;29064:9;29055:7;29051:23;29047:32;29044:119;;;29082:79;;:::i;:::-;29044:119;29202:1;29227:64;29283:7;29274:6;29263:9;29259:22;29227:64;:::i;:::-;29217:74;;29173:128;28957:351;;;;:::o;29314:85::-;29359:7;29388:5;29377:16;;29314:85;;;:::o;29405:158::-;29463:9;29496:61;29514:42;29523:32;29549:5;29523:32;:::i;:::-;29514:42;:::i;:::-;29496:61;:::i;:::-;29483:74;;29405:158;;;:::o;29569:147::-;29664:45;29703:5;29664:45;:::i;:::-;29659:3;29652:58;29569:147;;:::o;29722:114::-;29789:6;29823:5;29817:12;29807:22;;29722:114;;;:::o;29842:184::-;29941:11;29975:6;29970:3;29963:19;30015:4;30010:3;30006:14;29991:29;;29842:184;;;;:::o;30032:132::-;30099:4;30122:3;30114:11;;30152:4;30147:3;30143:14;30135:22;;30032:132;;;:::o;30170:108::-;30247:24;30265:5;30247:24;:::i;:::-;30242:3;30235:37;30170:108;;:::o;30284:179::-;30353:10;30374:46;30416:3;30408:6;30374:46;:::i;:::-;30452:4;30447:3;30443:14;30429:28;;30284:179;;;;:::o;30469:113::-;30539:4;30571;30566:3;30562:14;30554:22;;30469:113;;;:::o;30618:732::-;30737:3;30766:54;30814:5;30766:54;:::i;:::-;30836:86;30915:6;30910:3;30836:86;:::i;:::-;30829:93;;30946:56;30996:5;30946:56;:::i;:::-;31025:7;31056:1;31041:284;31066:6;31063:1;31060:13;31041:284;;;31142:6;31136:13;31169:63;31228:3;31213:13;31169:63;:::i;:::-;31162:70;;31255:60;31308:6;31255:60;:::i;:::-;31245:70;;31101:224;31088:1;31085;31081:9;31076:14;;31041:284;;;31045:14;31341:3;31334:10;;30742:608;;;30618:732;;;;:::o;31356:134::-;31414:9;31447:37;31478:5;31447:37;:::i;:::-;31434:50;;31356:134;;;:::o;31496:147::-;31591:45;31630:5;31591:45;:::i;:::-;31586:3;31579:58;31496:147;;:::o;31649:847::-;31920:4;31958:3;31947:9;31943:19;31935:27;;31972:71;32040:1;32029:9;32025:17;32016:6;31972:71;:::i;:::-;32053:80;32129:2;32118:9;32114:18;32105:6;32053:80;:::i;:::-;32180:9;32174:4;32170:20;32165:2;32154:9;32150:18;32143:48;32208:108;32311:4;32302:6;32208:108;:::i;:::-;32200:116;;32326:80;32402:2;32391:9;32387:18;32378:6;32326:80;:::i;:::-;32416:73;32484:3;32473:9;32469:19;32460:6;32416:73;:::i;:::-;31649:847;;;;;;;;:::o;32502:171::-;32642:23;32638:1;32630:6;32626:14;32619:47;32502:171;:::o;32679:366::-;32821:3;32842:67;32906:2;32901:3;32842:67;:::i;:::-;32835:74;;32918:93;33007:3;32918:93;:::i;:::-;33036:2;33031:3;33027:12;33020:19;;32679:366;;;:::o;33051:419::-;33217:4;33255:2;33244:9;33240:18;33232:26;;33304:9;33298:4;33294:20;33290:1;33279:9;33275:17;33268:47;33332:131;33458:4;33332:131;:::i;:::-;33324:139;;33051:419;;;:::o

Swarm Source

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