ETH Price: $3,468.69 (+0.00%)
Gas: 12 Gwei

Token

NOODLE COIN (面条)
 

Overview

Max Total Supply

888,888,888,888 面条

Holders

14

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
39,015,011,097.498050074598939069 面条

Value
$0.00
0x9621D7c71eaC7594CeCB055D25C3663B9d7A200E
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:
NOODLE

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-30
*/

//Website: https://noodlecoin.xyz
//Twitter: https://twitter.com/noodlecoineth
//Telegram: https://t.me/NoodleCoinETH



// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts (last updated v4.6.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);
}

// File: @openzeppelin/contracts/utils/Context.sol


// 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: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @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 anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing 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: noodle.sol

//SPDX-License-Identifier: MIT
//Website: https://noodlecoin.xyz
//Twitter: https://twitter.com/noodlecoineth
//Telegram: https://t.me/NoodleCoinETH

pragma solidity ^0.8.19;



interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address UNISWAP_V2_PAIR);
}

contract NOODLE is IERC20, Ownable {
    /* -------------------------------------------------------------------------- */
    /*                                   events                                   */
    /* -------------------------------------------------------------------------- */
    event Reflect(uint256 amountReflected, uint256 newTotalProportion);

    /* -------------------------------------------------------------------------- */
    /*                                  constants                                 */
    /* -------------------------------------------------------------------------- */
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    uint256 constant MAX_FEE = 10;

    /* -------------------------------------------------------------------------- */
    /*                                   states                                   */
    /* -------------------------------------------------------------------------- */
    IUniswapV2Router02 public constant UNISWAP_V2_ROUTER =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable UNISWAP_V2_PAIR;

    struct Fee {
        uint8 reflection;
        uint8 marketing;
        uint8 lp;
        uint8 buyback;
        uint8 burn;
        uint128 total;
    }

    string _name = "NOODLE COIN";
    string _symbol = unicode"面条";

    uint256 _totalSupply = 888_888_888_888 ether;
    uint256 public _maxTxAmount = _totalSupply * 4 / 100;

    /* rOwned = ratio of tokens owned relative to circulating supply (NOT total supply, since circulating <= total) */
    mapping(address => uint256) public _rOwned;
    uint256 public _totalProportion = _totalSupply;

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

    bool public limitsEnabled = true;
    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isTxLimitExempt;

    Fee public buyFee = Fee({reflection: 0, marketing: 3, lp: 0, buyback: 0, burn: 0, total: 3});
    Fee public sellFee = Fee({reflection: 0, marketing: 3, lp: 0, buyback: 0, burn: 0, total: 3});

    address private marketingFeeReceiver;
    address private lpFeeReceiver;
    address private buybackFeeReceiver;

    bool public claimingFees = true;
    uint256 public swapThreshold = (_totalSupply * 4) / 1000;
    bool inSwap;
    mapping(address => bool) public blacklists;

    /* -------------------------------------------------------------------------- */
    /*                                  modifiers                                 */
    /* -------------------------------------------------------------------------- */
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    /* -------------------------------------------------------------------------- */
    /*                                 constructor                                */
    /* -------------------------------------------------------------------------- */
    constructor() {
        // create uniswap pair
        address _uniswapPair =
            IUniswapV2Factory(UNISWAP_V2_ROUTER.factory()).createPair(address(this), UNISWAP_V2_ROUTER.WETH());
        UNISWAP_V2_PAIR = _uniswapPair;

        _allowances[address(this)][address(UNISWAP_V2_ROUTER)] = type(uint256).max;
        _allowances[address(this)][tx.origin] = type(uint256).max;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(UNISWAP_V2_ROUTER)] = true;
        isTxLimitExempt[_uniswapPair] = true;
        isTxLimitExempt[tx.origin] = true;
        isFeeExempt[tx.origin] = true;

        marketingFeeReceiver = 0x32e74d1419B3cE0Db4e019f32Cda4b0835Ef6DBF;
        lpFeeReceiver = 0x32e74d1419B3cE0Db4e019f32Cda4b0835Ef6DBF;
        buybackFeeReceiver = 0x32e74d1419B3cE0Db4e019f32Cda4b0835Ef6DBF;

        _rOwned[tx.origin] = _totalSupply;
        emit Transfer(address(0), tx.origin, _totalSupply);
    }

    receive() external payable {}

    /* -------------------------------------------------------------------------- */
    /*                                    ERC20                                   */
    /* -------------------------------------------------------------------------- */
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            require(_allowances[sender][msg.sender] >= amount, "ERC20: insufficient allowance");
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

    /* -------------------------------------------------------------------------- */
    /*                                    views                                   */
    /* -------------------------------------------------------------------------- */
    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function decimals() external pure returns (uint8) {
        return 18;
    }

    function name() external view returns (string memory) {
        return _name;
    }

    function symbol() external view returns (string memory) {
        return _symbol;
    }

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

    function allowance(address holder, address spender) external view override returns (uint256) {
        return _allowances[holder][spender];
    }

    function tokensToProportion(uint256 tokens) public view returns (uint256) {
        return tokens * _totalProportion / _totalSupply;
    }

    function tokenFromReflection(uint256 proportion) public view returns (uint256) {
        return proportion * _totalSupply / _totalProportion;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD) - balanceOf(ZERO);
    }

    /* -------------------------------------------------------------------------- */
    /*                                   owners                                   */
    /* -------------------------------------------------------------------------- */
    function clearStuckBalance() external onlyOwner {
        (bool success,) = payable(msg.sender).call{value: address(this).balance}("");
        require(success);
    }

    function clearStuckToken() external onlyOwner {
        _transferFrom(address(this), msg.sender, balanceOf(address(this)));
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        claimingFees = _enabled;
        swapThreshold = _amount;
    }

    function changeFees(
        uint8 reflectionFeeBuy,
        uint8 marketingFeeBuy,
        uint8 lpFeeBuy,
        uint8 buybackFeeBuy,
        uint8 burnFeeBuy,
        uint8 reflectionFeeSell,
        uint8 marketingFeeSell,
        uint8 lpFeeSell,
        uint8 buybackFeeSell,
        uint8 burnFeeSell
    ) external onlyOwner {
        uint128 __totalBuyFee = reflectionFeeBuy + marketingFeeBuy + lpFeeBuy + buybackFeeBuy + burnFeeBuy;
        uint128 __totalSellFee = reflectionFeeSell + marketingFeeSell + lpFeeSell + buybackFeeSell + burnFeeSell;

        require(__totalBuyFee <= MAX_FEE, "Buy fees too high");
        require(__totalSellFee <= MAX_FEE, "Sell fees too high");

        buyFee = Fee({
            reflection: reflectionFeeBuy,
            marketing: reflectionFeeBuy,
            lp: reflectionFeeBuy,
            buyback: reflectionFeeBuy,
            burn: burnFeeBuy,
            total: __totalBuyFee
        });

        sellFee = Fee({
            reflection: reflectionFeeSell,
            marketing: reflectionFeeSell,
            lp: reflectionFeeSell,
            buyback: reflectionFeeSell,
            burn: burnFeeSell,
            total: __totalSellFee
        });
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setFeeReceivers(address m_, address lp_, address b_) external onlyOwner {
        marketingFeeReceiver = m_;
        lpFeeReceiver = lp_;
        buybackFeeReceiver = b_;
    }

    function setMaxTxBasisPoint(uint256 p_) external onlyOwner {
        _maxTxAmount = _totalSupply * p_ / 10000;
    }

    function setLimitsEnabled(bool e_) external onlyOwner {
        limitsEnabled = e_;
    }

    function blacklist(address _address, bool _isBlacklisting) external onlyOwner {
        blacklists[_address] = _isBlacklisting;
    }

    /* -------------------------------------------------------------------------- */
    /*                                   private                                  */
    /* -------------------------------------------------------------------------- */
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!blacklists[recipient] && !blacklists[sender], "Blacklisted");

        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (limitsEnabled && !isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }

        if (_shouldSwapBack()) {
            _swapBack();
        }

        uint256 proportionAmount = tokensToProportion(amount);
        require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
        _rOwned[sender] = _rOwned[sender] - proportionAmount;

        uint256 proportionReceived = _shouldTakeFee(sender, recipient)
            ? _takeFeeInProportions(sender == UNISWAP_V2_PAIR ? true : false, sender, proportionAmount)
            : proportionAmount;
        _rOwned[recipient] = _rOwned[recipient] + proportionReceived;

        emit Transfer(sender, recipient, tokenFromReflection(proportionReceived));
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 proportionAmount = tokensToProportion(amount);
        require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
        _rOwned[sender] = _rOwned[sender] - proportionAmount;
        _rOwned[recipient] = _rOwned[recipient] + proportionAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _takeFeeInProportions(bool buying, address sender, uint256 proportionAmount) internal returns (uint256) {
        Fee memory __buyFee = buyFee;
        Fee memory __sellFee = sellFee;

        uint256 proportionFeeAmount =
            buying == true ? proportionAmount * __buyFee.total / 100 : proportionAmount * __sellFee.total / 100;

        // reflect
        uint256 proportionReflected = buying == true
            ? proportionFeeAmount * __buyFee.reflection / __buyFee.total
            : proportionFeeAmount * __sellFee.reflection / __sellFee.total;

        _totalProportion = _totalProportion - proportionReflected;

        // take fees
        uint256 _proportionToContract = proportionFeeAmount - proportionReflected;
        if (_proportionToContract > 0) {
            _rOwned[address(this)] = _rOwned[address(this)] + _proportionToContract;

            emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract));
        }
        emit Reflect(proportionReflected, _totalProportion);
        return proportionAmount - proportionFeeAmount;
    }

    function _shouldSwapBack() internal view returns (bool) {
        return msg.sender != UNISWAP_V2_PAIR && !inSwap && claimingFees && balanceOf(address(this)) >= swapThreshold;
    }

    function _swapBack() internal swapping {
        Fee memory __sellFee = sellFee;

        uint256 __swapThreshold = swapThreshold;
        uint256 amountToBurn = __swapThreshold * __sellFee.burn / __sellFee.total;
        uint256 amountToSwap = __swapThreshold - amountToBurn;
        approve(address(UNISWAP_V2_ROUTER), amountToSwap);

        // burn
        _transferFrom(address(this), DEAD, amountToBurn);

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

        UNISWAP_V2_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap, 0, path, address(this), block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 totalSwapFee = __sellFee.total - __sellFee.reflection - __sellFee.burn;
        uint256 amountETHMarketing = amountETH * __sellFee.marketing / totalSwapFee;
        uint256 amountETHLP = amountETH * __sellFee.lp / totalSwapFee;
        uint256 amountETHBuyback = amountETH * __sellFee.buyback / totalSwapFee;

        // send
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(lpFeeReceiver).call{value: amountETHLP}("");
        (tmpSuccess,) = payable(buybackFeeReceiver).call{value: amountETHBuyback}("");
    }

    function _shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"UNISWAP_V2_PAIR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAP_V2_ROUTER","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"},{"internalType":"uint8","name":"lp","type":"uint8"},{"internalType":"uint8","name":"buyback","type":"uint8"},{"internalType":"uint8","name":"burn","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"reflectionFeeBuy","type":"uint8"},{"internalType":"uint8","name":"marketingFeeBuy","type":"uint8"},{"internalType":"uint8","name":"lpFeeBuy","type":"uint8"},{"internalType":"uint8","name":"buybackFeeBuy","type":"uint8"},{"internalType":"uint8","name":"burnFeeBuy","type":"uint8"},{"internalType":"uint8","name":"reflectionFeeSell","type":"uint8"},{"internalType":"uint8","name":"marketingFeeSell","type":"uint8"},{"internalType":"uint8","name":"lpFeeSell","type":"uint8"},{"internalType":"uint8","name":"buybackFeeSell","type":"uint8"},{"internalType":"uint8","name":"burnFeeSell","type":"uint8"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"},{"internalType":"uint8","name":"lp","type":"uint8"},{"internalType":"uint8","name":"buyback","type":"uint8"},{"internalType":"uint8","name":"burn","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"m_","type":"address"},{"internalType":"address","name":"lp_","type":"address"},{"internalType":"address","name":"b_","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"e_","type":"bool"}],"name":"setLimitsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"p_","type":"uint256"}],"name":"setMaxTxBasisPoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600b81526020017f4e4f4f444c4520434f494e000000000000000000000000000000000000000000815250600190816200004a919062000d54565b506040518060400160405280600681526020017fe99da2e69da100000000000000000000000000000000000000000000000000008152506002908162000091919062000d54565b506c0b3827a7d587a0311415e0000060035560646004600354620000b6919062000e65565b620000c2919062000edc565b600455600354600655600160085f6101000a81548160ff0219169083151502179055506040518060c001604052805f60ff168152602001600360ff1681526020015f60ff1681526020015f60ff1681526020015f60ff16815260200160036fffffffffffffffffffffffffffffffff16815250600b5f820151815f015f6101000a81548160ff021916908360ff1602179055506020820151815f0160016101000a81548160ff021916908360ff1602179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151815f0160036101000a81548160ff021916908360ff1602179055506080820151815f0160046101000a81548160ff021916908360ff16021790555060a0820151815f0160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050506040518060c001604052805f60ff168152602001600360ff1681526020015f60ff1681526020015f60ff1681526020015f60ff16815260200160036fffffffffffffffffffffffffffffffff16815250600c5f820151815f015f6101000a81548160ff021916908360ff1602179055506020820151815f0160016101000a81548160ff021916908360ff1602179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151815f0160036101000a81548160ff021916908360ff1602179055506080820151815f0160046101000a81548160ff021916908360ff16021790555060a0820151815f0160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050506001600f60146101000a81548160ff0219169083151502179055506103e8600460035462000374919062000e65565b62000380919062000edc565b6010553480156200038f575f80fd5b50620003b0620003a462000a2860201b60201c565b62000a2f60201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200040f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000435919062000f78565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004af573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004d5919062000f78565b6040518363ffffffff1660e01b8152600401620004f492919062000fb9565b6020604051808303815f875af115801562000511573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000537919062000f78565b90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507332e74d1419b3ce0db4e019f32cda4b0835ef6dbf600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507332e74d1419b3ce0db4e019f32cda4b0835ef6dbf600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507332e74d1419b3ce0db4e019f32cda4b0835ef6dbf600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035460055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000a19919062000ff5565b60405180910390a35062001010565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000b6c57607f821691505b60208210810362000b825762000b8162000b27565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000be67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ba9565b62000bf2868362000ba9565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000c3c62000c3662000c308462000c0a565b62000c13565b62000c0a565b9050919050565b5f819050919050565b62000c578362000c1c565b62000c6f62000c668262000c43565b84845462000bb5565b825550505050565b5f90565b62000c8562000c77565b62000c9281848462000c4c565b505050565b5b8181101562000cb95762000cad5f8262000c7b565b60018101905062000c98565b5050565b601f82111562000d085762000cd28162000b88565b62000cdd8462000b9a565b8101602085101562000ced578190505b62000d0562000cfc8562000b9a565b83018262000c97565b50505b505050565b5f82821c905092915050565b5f62000d2a5f198460080262000d0d565b1980831691505092915050565b5f62000d44838362000d19565b9150826002028217905092915050565b62000d5f8262000af0565b67ffffffffffffffff81111562000d7b5762000d7a62000afa565b5b62000d87825462000b54565b62000d9482828562000cbd565b5f60209050601f83116001811462000dca575f841562000db5578287015190505b62000dc1858262000d37565b86555062000e30565b601f19841662000dda8662000b88565b5f5b8281101562000e035784890151825560018201915060208501945060208101905062000ddc565b8683101562000e23578489015162000e1f601f89168262000d19565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000e718262000c0a565b915062000e7e8362000c0a565b925082820262000e8e8162000c0a565b9150828204841483151762000ea85762000ea762000e38565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000ee88262000c0a565b915062000ef58362000c0a565b92508262000f085762000f0762000eaf565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000f428262000f17565b9050919050565b62000f548162000f36565b811462000f5f575f80fd5b50565b5f8151905062000f728162000f49565b92915050565b5f6020828403121562000f905762000f8f62000f13565b5b5f62000f9f8482850162000f62565b91505092915050565b62000fb38162000f36565b82525050565b5f60408201905062000fce5f83018562000fa8565b62000fdd602083018462000fa8565b9392505050565b62000fef8162000c0a565b82525050565b5f6020820190506200100a5f83018462000fe4565b92915050565b60805161393a620010375f395f818161172e01528181611afa0152611fb7015261393a5ff3fe60806040526004361061021d575f3560e01c8063571ac8b011610122578063b0f7ec38116100aa578063df20fd491161006e578063df20fd49146107e0578063e186ec7414610808578063f2fde38b14610830578063f40acc3d14610858578063f84ba65d1461088257610224565b8063b0f7ec3814610714578063c38a31de1461073e578063d7c0103214610766578063d85a28281461078e578063dd62ed3e146107a457610224565b80637d1db4a5116100f15780637d1db4a5146106305780638da5cb5b1461065a57806395d89b4114610684578063a82ed9ec146106ae578063a9059cbb146106d857610224565b8063571ac8b01461057a578063658d4b7f146105b657806370a08231146105de578063715018a61461061a57610224565b80632b14ca56116101a5578063364333f411610174578063364333f4146104a9578063404e5129146104bf57806341aea9de146104e757806345ce53651461050f578063470624021461054b57610224565b80632b14ca56146103ea5780632d83811914610419578063313ce567146104555780633582ad231461047f57610224565b806316c02129116101ec57806316c02129146102f4578063178002871461033057806318160ddd1461035a57806323b872dd146103845780632b112e49146103c057610224565b80630445b6671461022857806306fdde0314610252578063095ea7b31461027c5780630cfc15f9146102b857610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c6108aa565b6040516102499190612b0d565b60405180910390f35b34801561025d575f80fd5b506102666108b0565b6040516102739190612bb0565b60405180910390f35b348015610287575f80fd5b506102a2600480360381019061029d9190612c58565b610940565b6040516102af9190612cb0565b60405180910390f35b3480156102c3575f80fd5b506102de60048036038101906102d99190612cc9565b610a2d565b6040516102eb9190612b0d565b60405180910390f35b3480156102ff575f80fd5b5061031a60048036038101906103159190612cc9565b610a42565b6040516103279190612cb0565b60405180910390f35b34801561033b575f80fd5b50610344610a5f565b6040516103519190612b0d565b60405180910390f35b348015610365575f80fd5b5061036e610a65565b60405161037b9190612b0d565b60405180910390f35b34801561038f575f80fd5b506103aa60048036038101906103a59190612cf4565b610a6e565b6040516103b79190612cb0565b60405180910390f35b3480156103cb575f80fd5b506103d4610cde565b6040516103e19190612b0d565b60405180910390f35b3480156103f5575f80fd5b506103fe610d0f565b60405161041096959493929190612d89565b60405180910390f35b348015610424575f80fd5b5061043f600480360381019061043a9190612de8565b610d8f565b60405161044c9190612b0d565b60405180910390f35b348015610460575f80fd5b50610469610db2565b6040516104769190612e13565b60405180910390f35b34801561048a575f80fd5b50610493610dba565b6040516104a09190612cb0565b60405180910390f35b3480156104b4575f80fd5b506104bd610dcc565b005b3480156104ca575f80fd5b506104e560048036038101906104e09190612e56565b610e48565b005b3480156104f2575f80fd5b5061050d60048036038101906105089190612e94565b610ea8565b005b34801561051a575f80fd5b5061053560048036038101906105309190612de8565b610ecc565b6040516105429190612b0d565b60405180910390f35b348015610556575f80fd5b5061055f610eef565b60405161057196959493929190612d89565b60405180910390f35b348015610585575f80fd5b506105a0600480360381019061059b9190612cc9565b610f6f565b6040516105ad9190612cb0565b60405180910390f35b3480156105c1575f80fd5b506105dc60048036038101906105d79190612e56565b610fa1565b005b3480156105e9575f80fd5b5061060460048036038101906105ff9190612cc9565b611001565b6040516106119190612b0d565b60405180910390f35b348015610625575f80fd5b5061062e61104f565b005b34801561063b575f80fd5b50610644611062565b6040516106519190612b0d565b60405180910390f35b348015610665575f80fd5b5061066e611068565b60405161067b9190612ece565b60405180910390f35b34801561068f575f80fd5b5061069861108f565b6040516106a59190612bb0565b60405180910390f35b3480156106b9575f80fd5b506106c261111f565b6040516106cf9190612f42565b60405180910390f35b3480156106e3575f80fd5b506106fe60048036038101906106f99190612c58565b611137565b60405161070b9190612cb0565b60405180910390f35b34801561071f575f80fd5b5061072861114b565b6040516107359190612cb0565b60405180910390f35b348015610749575f80fd5b50610764600480360381019061075f9190612f85565b61115e565b005b348015610771575f80fd5b5061078c6004803603810190610787919061305e565b6114e4565b005b348015610799575f80fd5b506107a26115b1565b005b3480156107af575f80fd5b506107ca60048036038101906107c591906130ae565b6115cf565b6040516107d79190612b0d565b60405180910390f35b3480156107eb575f80fd5b50610806600480360381019061080191906130ec565b611651565b005b348015610813575f80fd5b5061082e60048036038101906108299190612de8565b61167e565b005b34801561083b575f80fd5b5061085660048036038101906108519190612cc9565b6116aa565b005b348015610863575f80fd5b5061086c61172c565b6040516108799190612ece565b60405180910390f35b34801561088d575f80fd5b506108a860048036038101906108a39190612e56565b611750565b005b60105481565b6060600180546108bf90613157565b80601f01602080910402602001604051908101604052809291908181526020018280546108eb90613157565b80156109365780601f1061090d57610100808354040283529160200191610936565b820191905f5260205f20905b81548152906001019060200180831161091957829003601f168201915b5050505050905090565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a1b9190612b0d565b60405180910390a36001905092915050565b6005602052805f5260405f205f915090505481565b6012602052805f5260405f205f915054906101000a900460ff1681565b60065481565b5f600354905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610cca578160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc0906131d1565b60405180910390fd5b8160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c4d919061321c565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610cd58484846117b0565b90509392505050565b5f610ce85f611001565b610cf361dead611001565b600354610d00919061321c565b610d0a919061321c565b905090565b600c805f015f9054906101000a900460ff1690805f0160019054906101000a900460ff1690805f0160029054906101000a900460ff1690805f0160039054906101000a900460ff1690805f0160049054906101000a900460ff1690805f0160059054906101000a90046fffffffffffffffffffffffffffffffff16905086565b5f60065460035483610da1919061324f565b610dab91906132bd565b9050919050565b5f6012905090565b60085f9054906101000a900460ff1681565b610dd4611c63565b5f3373ffffffffffffffffffffffffffffffffffffffff1647604051610df99061331a565b5f6040518083038185875af1925050503d805f8114610e33576040519150601f19603f3d011682016040523d82523d5f602084013e610e38565b606091505b5050905080610e45575f80fd5b50565b610e50611c63565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610eb0611c63565b8060085f6101000a81548160ff02191690831515021790555050565b5f60035460065483610ede919061324f565b610ee891906132bd565b9050919050565b600b805f015f9054906101000a900460ff1690805f0160019054906101000a900460ff1690805f0160029054906101000a900460ff1690805f0160039054906101000a900460ff1690805f0160049054906101000a900460ff1690805f0160059054906101000a90046fffffffffffffffffffffffffffffffff16905086565b5f610f9a827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610940565b9050919050565b610fa9611c63565b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f61104860055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d8f565b9050919050565b611057611c63565b6110605f611ce1565b565b60045481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461109e90613157565b80601f01602080910402602001604051908101604052809291908181526020018280546110ca90613157565b80156111155780601f106110ec57610100808354040283529160200191611115565b820191905f5260205f20905b8154815290600101906020018083116110f857829003601f168201915b5050505050905090565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f6111433384846117b0565b905092915050565b600f60149054906101000a900460ff1681565b611166611c63565b5f86888a8c8e611176919061332e565b611180919061332e565b61118a919061332e565b611194919061332e565b60ff1690505f828486888a6111a9919061332e565b6111b3919061332e565b6111bd919061332e565b6111c7919061332e565b60ff169050600a826fffffffffffffffffffffffffffffffff161115611222576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611219906133ac565b60405180910390fd5b600a816fffffffffffffffffffffffffffffffff161115611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90613414565b60405180910390fd5b6040518060c001604052808d60ff1681526020018d60ff1681526020018d60ff1681526020018d60ff1681526020018960ff168152602001836fffffffffffffffffffffffffffffffff16815250600b5f820151815f015f6101000a81548160ff021916908360ff1602179055506020820151815f0160016101000a81548160ff021916908360ff1602179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151815f0160036101000a81548160ff021916908360ff1602179055506080820151815f0160046101000a81548160ff021916908360ff16021790555060a0820151815f0160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506040518060c001604052808860ff1681526020018860ff1681526020018860ff1681526020018860ff1681526020018460ff168152602001826fffffffffffffffffffffffffffffffff16815250600c5f820151815f015f6101000a81548160ff021916908360ff1602179055506020820151815f0160016101000a81548160ff021916908360ff1602179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151815f0160036101000a81548160ff021916908360ff1602179055506080820151815f0160046101000a81548160ff021916908360ff16021790555060a0820151815f0160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050505050505050505050505050565b6114ec611c63565b82600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6115b9611c63565b6115cc30336115c730611001565b6117b0565b50565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611659611c63565b81600f60146101000a81548160ff021916908315150217905550806010819055505050565b611686611c63565b61271081600354611697919061324f565b6116a191906132bd565b60048190555050565b6116b2611c63565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611720576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611717906134a2565b60405180910390fd5b61172981611ce1565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b611758611c63565b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561184f575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61188e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118859061350a565b60405180910390fd5b60115f9054906101000a900460ff16156118b4576118ad848484611da2565b9050611c5c565b60085f9054906101000a900460ff1680156119165750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156119695750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119b4576004548211156119b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119aa90613598565b60405180910390fd5b5b6119bc611fb4565b156119ca576119c9612050565b5b5f6119d483610ecc565b90508060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4d90613600565b60405180910390fd5b8060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a9f919061321c565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611aeb868661261a565b611af55781611b5c565b611b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611b51575f611b54565b60015b87846126c1565b5b90508060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ba7919061361e565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c4084610d8f565b604051611c4d9190612b0d565b60405180910390a36001925050505b9392505050565b611c6b612aee565b73ffffffffffffffffffffffffffffffffffffffff16611c89611068565b73ffffffffffffffffffffffffffffffffffffffff1614611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd69061369b565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80611dad83610ecc565b90508060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2690613600565b60405180910390fd5b8060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e78919061321c565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f02919061361e565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611fa09190612b0d565b60405180910390a360019150509392505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561201d575060115f9054906101000a900460ff16155b80156120355750600f60149054906101000a900460ff165b801561204b575060105461204830611001565b10155b905090565b600160115f6101000a81548160ff0219169083151502179055505f600c6040518060c00160405290815f82015f9054906101000a900460ff1660ff1660ff1681526020015f820160019054906101000a900460ff1660ff1660ff1681526020015f820160029054906101000a900460ff1660ff1660ff1681526020015f820160039054906101000a900460ff1660ff1660ff1681526020015f820160049054906101000a900460ff1660ff1660ff1681526020015f820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090505f60105490505f8260a001516fffffffffffffffffffffffffffffffff16836080015160ff168361217f919061324f565b61218991906132bd565b90505f8183612198919061321c565b90506121b8737a250d5630b4cf539739df2c5dacb4c659f2488d82610940565b506121c63061dead846117b0565b505f600267ffffffffffffffff8111156121e3576121e26136b9565b5b6040519080825280602002602001820160405280156122115781602001602082028036833780820191505090505b50905030815f81518110612228576122276136e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e39190613727565b816001815181106122f7576122f66136e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612386959493929190613842565b5f604051808303815f87803b15801561239d575f80fd5b505af11580156123af573d5f803e3d5ffd5b505050505f4790505f866080015160ff16875f015160ff168860a001516123d6919061389a565b6123e0919061389a565b6fffffffffffffffffffffffffffffffff1690505f81886020015160ff1684612409919061324f565b61241391906132bd565b90505f82896040015160ff168561242a919061324f565b61243491906132bd565b90505f838a6060015160ff168661244b919061324f565b61245591906132bd565b90505f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405161249d9061331a565b5f6040518083038185875af1925050503d805f81146124d7576040519150601f19603f3d011682016040523d82523d5f602084013e6124dc565b606091505b50509050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516125259061331a565b5f6040518083038185875af1925050503d805f811461255f576040519150601f19603f3d011682016040523d82523d5f602084013e612564565b606091505b505080915050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516125af9061331a565b5f6040518083038185875af1925050503d805f81146125e9576040519150601f19603f3d011682016040523d82523d5f602084013e6125ee565b606091505b50508091505050505050505050505050505f60115f6101000a81548160ff021916908315150217905550565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156126b9575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f80600b6040518060c00160405290815f82015f9054906101000a900460ff1660ff1660ff1681526020015f820160019054906101000a900460ff1660ff1660ff1681526020015f820160029054906101000a900460ff1660ff1660ff1681526020015f820160039054906101000a900460ff1660ff1660ff1681526020015f820160049054906101000a900460ff1660ff1660ff1681526020015f820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090505f600c6040518060c00160405290815f82015f9054906101000a900460ff1660ff1660ff1681526020015f820160019054906101000a900460ff1660ff1660ff1681526020015f820160029054906101000a900460ff1660ff1660ff1681526020015f820160039054906101000a900460ff1660ff1660ff1681526020015f820160049054906101000a900460ff1660ff1660ff1681526020015f820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090505f60011515871515146128ca5760648260a001516fffffffffffffffffffffffffffffffff16866128bb919061324f565b6128c591906132bd565b6128f9565b60648360a001516fffffffffffffffffffffffffffffffff16866128ee919061324f565b6128f891906132bd565b5b90505f6001151588151514612940578260a001516fffffffffffffffffffffffffffffffff16835f015160ff1683612931919061324f565b61293b91906132bd565b612974565b8360a001516fffffffffffffffffffffffffffffffff16845f015160ff1683612969919061324f565b61297391906132bd565b5b905080600654612984919061321c565b6006819055505f8183612997919061321c565b90505f811115612a99578060055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129ea919061361e565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612a8384610d8f565b604051612a909190612b0d565b60405180910390a35b7fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac82600654604051612acc9291906138dd565b60405180910390a18287612ae0919061321c565b955050505050509392505050565b5f33905090565b5f819050919050565b612b0781612af5565b82525050565b5f602082019050612b205f830184612afe565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b5d578082015181840152602081019050612b42565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b8282612b26565b612b8c8185612b30565b9350612b9c818560208601612b40565b612ba581612b68565b840191505092915050565b5f6020820190508181035f830152612bc88184612b78565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612bfd82612bd4565b9050919050565b612c0d81612bf3565b8114612c17575f80fd5b50565b5f81359050612c2881612c04565b92915050565b612c3781612af5565b8114612c41575f80fd5b50565b5f81359050612c5281612c2e565b92915050565b5f8060408385031215612c6e57612c6d612bd0565b5b5f612c7b85828601612c1a565b9250506020612c8c85828601612c44565b9150509250929050565b5f8115159050919050565b612caa81612c96565b82525050565b5f602082019050612cc35f830184612ca1565b92915050565b5f60208284031215612cde57612cdd612bd0565b5b5f612ceb84828501612c1a565b91505092915050565b5f805f60608486031215612d0b57612d0a612bd0565b5b5f612d1886828701612c1a565b9350506020612d2986828701612c1a565b9250506040612d3a86828701612c44565b9150509250925092565b5f60ff82169050919050565b612d5981612d44565b82525050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b612d8381612d5f565b82525050565b5f60c082019050612d9c5f830189612d50565b612da96020830188612d50565b612db66040830187612d50565b612dc36060830186612d50565b612dd06080830185612d50565b612ddd60a0830184612d7a565b979650505050505050565b5f60208284031215612dfd57612dfc612bd0565b5b5f612e0a84828501612c44565b91505092915050565b5f602082019050612e265f830184612d50565b92915050565b612e3581612c96565b8114612e3f575f80fd5b50565b5f81359050612e5081612e2c565b92915050565b5f8060408385031215612e6c57612e6b612bd0565b5b5f612e7985828601612c1a565b9250506020612e8a85828601612e42565b9150509250929050565b5f60208284031215612ea957612ea8612bd0565b5b5f612eb684828501612e42565b91505092915050565b612ec881612bf3565b82525050565b5f602082019050612ee15f830184612ebf565b92915050565b5f819050919050565b5f612f0a612f05612f0084612bd4565b612ee7565b612bd4565b9050919050565b5f612f1b82612ef0565b9050919050565b5f612f2c82612f11565b9050919050565b612f3c81612f22565b82525050565b5f602082019050612f555f830184612f33565b92915050565b612f6481612d44565b8114612f6e575f80fd5b50565b5f81359050612f7f81612f5b565b92915050565b5f805f805f805f805f806101408b8d031215612fa457612fa3612bd0565b5b5f612fb18d828e01612f71565b9a50506020612fc28d828e01612f71565b9950506040612fd38d828e01612f71565b9850506060612fe48d828e01612f71565b9750506080612ff58d828e01612f71565b96505060a06130068d828e01612f71565b95505060c06130178d828e01612f71565b94505060e06130288d828e01612f71565b93505061010061303a8d828e01612f71565b92505061012061304c8d828e01612f71565b9150509295989b9194979a5092959850565b5f805f6060848603121561307557613074612bd0565b5b5f61308286828701612c1a565b935050602061309386828701612c1a565b92505060406130a486828701612c1a565b9150509250925092565b5f80604083850312156130c4576130c3612bd0565b5b5f6130d185828601612c1a565b92505060206130e285828601612c1a565b9150509250929050565b5f806040838503121561310257613101612bd0565b5b5f61310f85828601612e42565b925050602061312085828601612c44565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061316e57607f821691505b6020821081036131815761318061312a565b5b50919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6131bb601d83612b30565b91506131c682613187565b602082019050919050565b5f6020820190508181035f8301526131e8816131af565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61322682612af5565b915061323183612af5565b9250828203905081811115613249576132486131ef565b5b92915050565b5f61325982612af5565b915061326483612af5565b925082820261327281612af5565b91508282048414831517613289576132886131ef565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132c782612af5565b91506132d283612af5565b9250826132e2576132e1613290565b5b828204905092915050565b5f81905092915050565b50565b5f6133055f836132ed565b9150613310826132f7565b5f82019050919050565b5f613324826132fa565b9150819050919050565b5f61333882612d44565b915061334383612d44565b9250828201905060ff81111561335c5761335b6131ef565b5b92915050565b7f427579206665657320746f6f20686967680000000000000000000000000000005f82015250565b5f613396601183612b30565b91506133a182613362565b602082019050919050565b5f6020820190508181035f8301526133c38161338a565b9050919050565b7f53656c6c206665657320746f6f206869676800000000000000000000000000005f82015250565b5f6133fe601283612b30565b9150613409826133ca565b602082019050919050565b5f6020820190508181035f83015261342b816133f2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61348c602683612b30565b915061349782613432565b604082019050919050565b5f6020820190508181035f8301526134b981613480565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f6134f4600b83612b30565b91506134ff826134c0565b602082019050919050565b5f6020820190508181035f830152613521816134e8565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178545f8201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b5f613582602883612b30565b915061358d82613528565b604082019050919050565b5f6020820190508181035f8301526135af81613576565b9050919050565b7f496e73756666696369656e742042616c616e63650000000000000000000000005f82015250565b5f6135ea601483612b30565b91506135f5826135b6565b602082019050919050565b5f6020820190508181035f830152613617816135de565b9050919050565b5f61362882612af5565b915061363383612af5565b925082820190508082111561364b5761364a6131ef565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613685602083612b30565b915061369082613651565b602082019050919050565b5f6020820190508181035f8301526136b281613679565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061372181612c04565b92915050565b5f6020828403121561373c5761373b612bd0565b5b5f61374984828501613713565b91505092915050565b5f819050919050565b5f61377561377061376b84613752565b612ee7565b612af5565b9050919050565b6137858161375b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137bd81612bf3565b82525050565b5f6137ce83836137b4565b60208301905092915050565b5f602082019050919050565b5f6137f08261378b565b6137fa8185613795565b9350613805836137a5565b805f5b8381101561383557815161381c88826137c3565b9750613827836137da565b925050600181019050613808565b5085935050505092915050565b5f60a0820190506138555f830188612afe565b613862602083018761377c565b818103604083015261387481866137e6565b90506138836060830185612ebf565b6138906080830184612afe565b9695505050505050565b5f6138a482612d5f565b91506138af83612d5f565b925082820390506fffffffffffffffffffffffffffffffff8111156138d7576138d66131ef565b5b92915050565b5f6040820190506138f05f830185612afe565b6138fd6020830184612afe565b939250505056fea2646970667358221220f3a7f9027b771dfa40dfddd340cf94ce3335c7781a026b2d6f32bce04cca125564736f6c63430008140033

Deployed Bytecode

0x60806040526004361061021d575f3560e01c8063571ac8b011610122578063b0f7ec38116100aa578063df20fd491161006e578063df20fd49146107e0578063e186ec7414610808578063f2fde38b14610830578063f40acc3d14610858578063f84ba65d1461088257610224565b8063b0f7ec3814610714578063c38a31de1461073e578063d7c0103214610766578063d85a28281461078e578063dd62ed3e146107a457610224565b80637d1db4a5116100f15780637d1db4a5146106305780638da5cb5b1461065a57806395d89b4114610684578063a82ed9ec146106ae578063a9059cbb146106d857610224565b8063571ac8b01461057a578063658d4b7f146105b657806370a08231146105de578063715018a61461061a57610224565b80632b14ca56116101a5578063364333f411610174578063364333f4146104a9578063404e5129146104bf57806341aea9de146104e757806345ce53651461050f578063470624021461054b57610224565b80632b14ca56146103ea5780632d83811914610419578063313ce567146104555780633582ad231461047f57610224565b806316c02129116101ec57806316c02129146102f4578063178002871461033057806318160ddd1461035a57806323b872dd146103845780632b112e49146103c057610224565b80630445b6671461022857806306fdde0314610252578063095ea7b31461027c5780630cfc15f9146102b857610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c6108aa565b6040516102499190612b0d565b60405180910390f35b34801561025d575f80fd5b506102666108b0565b6040516102739190612bb0565b60405180910390f35b348015610287575f80fd5b506102a2600480360381019061029d9190612c58565b610940565b6040516102af9190612cb0565b60405180910390f35b3480156102c3575f80fd5b506102de60048036038101906102d99190612cc9565b610a2d565b6040516102eb9190612b0d565b60405180910390f35b3480156102ff575f80fd5b5061031a60048036038101906103159190612cc9565b610a42565b6040516103279190612cb0565b60405180910390f35b34801561033b575f80fd5b50610344610a5f565b6040516103519190612b0d565b60405180910390f35b348015610365575f80fd5b5061036e610a65565b60405161037b9190612b0d565b60405180910390f35b34801561038f575f80fd5b506103aa60048036038101906103a59190612cf4565b610a6e565b6040516103b79190612cb0565b60405180910390f35b3480156103cb575f80fd5b506103d4610cde565b6040516103e19190612b0d565b60405180910390f35b3480156103f5575f80fd5b506103fe610d0f565b60405161041096959493929190612d89565b60405180910390f35b348015610424575f80fd5b5061043f600480360381019061043a9190612de8565b610d8f565b60405161044c9190612b0d565b60405180910390f35b348015610460575f80fd5b50610469610db2565b6040516104769190612e13565b60405180910390f35b34801561048a575f80fd5b50610493610dba565b6040516104a09190612cb0565b60405180910390f35b3480156104b4575f80fd5b506104bd610dcc565b005b3480156104ca575f80fd5b506104e560048036038101906104e09190612e56565b610e48565b005b3480156104f2575f80fd5b5061050d60048036038101906105089190612e94565b610ea8565b005b34801561051a575f80fd5b5061053560048036038101906105309190612de8565b610ecc565b6040516105429190612b0d565b60405180910390f35b348015610556575f80fd5b5061055f610eef565b60405161057196959493929190612d89565b60405180910390f35b348015610585575f80fd5b506105a0600480360381019061059b9190612cc9565b610f6f565b6040516105ad9190612cb0565b60405180910390f35b3480156105c1575f80fd5b506105dc60048036038101906105d79190612e56565b610fa1565b005b3480156105e9575f80fd5b5061060460048036038101906105ff9190612cc9565b611001565b6040516106119190612b0d565b60405180910390f35b348015610625575f80fd5b5061062e61104f565b005b34801561063b575f80fd5b50610644611062565b6040516106519190612b0d565b60405180910390f35b348015610665575f80fd5b5061066e611068565b60405161067b9190612ece565b60405180910390f35b34801561068f575f80fd5b5061069861108f565b6040516106a59190612bb0565b60405180910390f35b3480156106b9575f80fd5b506106c261111f565b6040516106cf9190612f42565b60405180910390f35b3480156106e3575f80fd5b506106fe60048036038101906106f99190612c58565b611137565b60405161070b9190612cb0565b60405180910390f35b34801561071f575f80fd5b5061072861114b565b6040516107359190612cb0565b60405180910390f35b348015610749575f80fd5b50610764600480360381019061075f9190612f85565b61115e565b005b348015610771575f80fd5b5061078c6004803603810190610787919061305e565b6114e4565b005b348015610799575f80fd5b506107a26115b1565b005b3480156107af575f80fd5b506107ca60048036038101906107c591906130ae565b6115cf565b6040516107d79190612b0d565b60405180910390f35b3480156107eb575f80fd5b50610806600480360381019061080191906130ec565b611651565b005b348015610813575f80fd5b5061082e60048036038101906108299190612de8565b61167e565b005b34801561083b575f80fd5b5061085660048036038101906108519190612cc9565b6116aa565b005b348015610863575f80fd5b5061086c61172c565b6040516108799190612ece565b60405180910390f35b34801561088d575f80fd5b506108a860048036038101906108a39190612e56565b611750565b005b60105481565b6060600180546108bf90613157565b80601f01602080910402602001604051908101604052809291908181526020018280546108eb90613157565b80156109365780601f1061090d57610100808354040283529160200191610936565b820191905f5260205f20905b81548152906001019060200180831161091957829003601f168201915b5050505050905090565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a1b9190612b0d565b60405180910390a36001905092915050565b6005602052805f5260405f205f915090505481565b6012602052805f5260405f205f915054906101000a900460ff1681565b60065481565b5f600354905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610cca578160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc0906131d1565b60405180910390fd5b8160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c4d919061321c565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610cd58484846117b0565b90509392505050565b5f610ce85f611001565b610cf361dead611001565b600354610d00919061321c565b610d0a919061321c565b905090565b600c805f015f9054906101000a900460ff1690805f0160019054906101000a900460ff1690805f0160029054906101000a900460ff1690805f0160039054906101000a900460ff1690805f0160049054906101000a900460ff1690805f0160059054906101000a90046fffffffffffffffffffffffffffffffff16905086565b5f60065460035483610da1919061324f565b610dab91906132bd565b9050919050565b5f6012905090565b60085f9054906101000a900460ff1681565b610dd4611c63565b5f3373ffffffffffffffffffffffffffffffffffffffff1647604051610df99061331a565b5f6040518083038185875af1925050503d805f8114610e33576040519150601f19603f3d011682016040523d82523d5f602084013e610e38565b606091505b5050905080610e45575f80fd5b50565b610e50611c63565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610eb0611c63565b8060085f6101000a81548160ff02191690831515021790555050565b5f60035460065483610ede919061324f565b610ee891906132bd565b9050919050565b600b805f015f9054906101000a900460ff1690805f0160019054906101000a900460ff1690805f0160029054906101000a900460ff1690805f0160039054906101000a900460ff1690805f0160049054906101000a900460ff1690805f0160059054906101000a90046fffffffffffffffffffffffffffffffff16905086565b5f610f9a827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610940565b9050919050565b610fa9611c63565b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f61104860055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d8f565b9050919050565b611057611c63565b6110605f611ce1565b565b60045481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461109e90613157565b80601f01602080910402602001604051908101604052809291908181526020018280546110ca90613157565b80156111155780601f106110ec57610100808354040283529160200191611115565b820191905f5260205f20905b8154815290600101906020018083116110f857829003601f168201915b5050505050905090565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f6111433384846117b0565b905092915050565b600f60149054906101000a900460ff1681565b611166611c63565b5f86888a8c8e611176919061332e565b611180919061332e565b61118a919061332e565b611194919061332e565b60ff1690505f828486888a6111a9919061332e565b6111b3919061332e565b6111bd919061332e565b6111c7919061332e565b60ff169050600a826fffffffffffffffffffffffffffffffff161115611222576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611219906133ac565b60405180910390fd5b600a816fffffffffffffffffffffffffffffffff161115611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90613414565b60405180910390fd5b6040518060c001604052808d60ff1681526020018d60ff1681526020018d60ff1681526020018d60ff1681526020018960ff168152602001836fffffffffffffffffffffffffffffffff16815250600b5f820151815f015f6101000a81548160ff021916908360ff1602179055506020820151815f0160016101000a81548160ff021916908360ff1602179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151815f0160036101000a81548160ff021916908360ff1602179055506080820151815f0160046101000a81548160ff021916908360ff16021790555060a0820151815f0160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506040518060c001604052808860ff1681526020018860ff1681526020018860ff1681526020018860ff1681526020018460ff168152602001826fffffffffffffffffffffffffffffffff16815250600c5f820151815f015f6101000a81548160ff021916908360ff1602179055506020820151815f0160016101000a81548160ff021916908360ff1602179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151815f0160036101000a81548160ff021916908360ff1602179055506080820151815f0160046101000a81548160ff021916908360ff16021790555060a0820151815f0160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050505050505050505050505050565b6114ec611c63565b82600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6115b9611c63565b6115cc30336115c730611001565b6117b0565b50565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611659611c63565b81600f60146101000a81548160ff021916908315150217905550806010819055505050565b611686611c63565b61271081600354611697919061324f565b6116a191906132bd565b60048190555050565b6116b2611c63565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611720576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611717906134a2565b60405180910390fd5b61172981611ce1565b50565b7f000000000000000000000000ad060d596c4bbf3d4d9dfe810b4955bc9087535c81565b611758611c63565b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561184f575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61188e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118859061350a565b60405180910390fd5b60115f9054906101000a900460ff16156118b4576118ad848484611da2565b9050611c5c565b60085f9054906101000a900460ff1680156119165750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156119695750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119b4576004548211156119b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119aa90613598565b60405180910390fd5b5b6119bc611fb4565b156119ca576119c9612050565b5b5f6119d483610ecc565b90508060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4d90613600565b60405180910390fd5b8060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a9f919061321c565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611aeb868661261a565b611af55781611b5c565b611b5b7f000000000000000000000000ad060d596c4bbf3d4d9dfe810b4955bc9087535c73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611b51575f611b54565b60015b87846126c1565b5b90508060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ba7919061361e565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c4084610d8f565b604051611c4d9190612b0d565b60405180910390a36001925050505b9392505050565b611c6b612aee565b73ffffffffffffffffffffffffffffffffffffffff16611c89611068565b73ffffffffffffffffffffffffffffffffffffffff1614611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd69061369b565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80611dad83610ecc565b90508060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2690613600565b60405180910390fd5b8060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e78919061321c565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f02919061361e565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611fa09190612b0d565b60405180910390a360019150509392505050565b5f7f000000000000000000000000ad060d596c4bbf3d4d9dfe810b4955bc9087535c73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561201d575060115f9054906101000a900460ff16155b80156120355750600f60149054906101000a900460ff165b801561204b575060105461204830611001565b10155b905090565b600160115f6101000a81548160ff0219169083151502179055505f600c6040518060c00160405290815f82015f9054906101000a900460ff1660ff1660ff1681526020015f820160019054906101000a900460ff1660ff1660ff1681526020015f820160029054906101000a900460ff1660ff1660ff1681526020015f820160039054906101000a900460ff1660ff1660ff1681526020015f820160049054906101000a900460ff1660ff1660ff1681526020015f820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090505f60105490505f8260a001516fffffffffffffffffffffffffffffffff16836080015160ff168361217f919061324f565b61218991906132bd565b90505f8183612198919061321c565b90506121b8737a250d5630b4cf539739df2c5dacb4c659f2488d82610940565b506121c63061dead846117b0565b505f600267ffffffffffffffff8111156121e3576121e26136b9565b5b6040519080825280602002602001820160405280156122115781602001602082028036833780820191505090505b50905030815f81518110612228576122276136e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e39190613727565b816001815181106122f7576122f66136e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612386959493929190613842565b5f604051808303815f87803b15801561239d575f80fd5b505af11580156123af573d5f803e3d5ffd5b505050505f4790505f866080015160ff16875f015160ff168860a001516123d6919061389a565b6123e0919061389a565b6fffffffffffffffffffffffffffffffff1690505f81886020015160ff1684612409919061324f565b61241391906132bd565b90505f82896040015160ff168561242a919061324f565b61243491906132bd565b90505f838a6060015160ff168661244b919061324f565b61245591906132bd565b90505f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405161249d9061331a565b5f6040518083038185875af1925050503d805f81146124d7576040519150601f19603f3d011682016040523d82523d5f602084013e6124dc565b606091505b50509050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516125259061331a565b5f6040518083038185875af1925050503d805f811461255f576040519150601f19603f3d011682016040523d82523d5f602084013e612564565b606091505b505080915050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516125af9061331a565b5f6040518083038185875af1925050503d805f81146125e9576040519150601f19603f3d011682016040523d82523d5f602084013e6125ee565b606091505b50508091505050505050505050505050505f60115f6101000a81548160ff021916908315150217905550565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156126b9575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f80600b6040518060c00160405290815f82015f9054906101000a900460ff1660ff1660ff1681526020015f820160019054906101000a900460ff1660ff1660ff1681526020015f820160029054906101000a900460ff1660ff1660ff1681526020015f820160039054906101000a900460ff1660ff1660ff1681526020015f820160049054906101000a900460ff1660ff1660ff1681526020015f820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090505f600c6040518060c00160405290815f82015f9054906101000a900460ff1660ff1660ff1681526020015f820160019054906101000a900460ff1660ff1660ff1681526020015f820160029054906101000a900460ff1660ff1660ff1681526020015f820160039054906101000a900460ff1660ff1660ff1681526020015f820160049054906101000a900460ff1660ff1660ff1681526020015f820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090505f60011515871515146128ca5760648260a001516fffffffffffffffffffffffffffffffff16866128bb919061324f565b6128c591906132bd565b6128f9565b60648360a001516fffffffffffffffffffffffffffffffff16866128ee919061324f565b6128f891906132bd565b5b90505f6001151588151514612940578260a001516fffffffffffffffffffffffffffffffff16835f015160ff1683612931919061324f565b61293b91906132bd565b612974565b8360a001516fffffffffffffffffffffffffffffffff16845f015160ff1683612969919061324f565b61297391906132bd565b5b905080600654612984919061321c565b6006819055505f8183612997919061321c565b90505f811115612a99578060055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129ea919061361e565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612a8384610d8f565b604051612a909190612b0d565b60405180910390a35b7fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac82600654604051612acc9291906138dd565b60405180910390a18287612ae0919061321c565b955050505050509392505050565b5f33905090565b5f819050919050565b612b0781612af5565b82525050565b5f602082019050612b205f830184612afe565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b5d578082015181840152602081019050612b42565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b8282612b26565b612b8c8185612b30565b9350612b9c818560208601612b40565b612ba581612b68565b840191505092915050565b5f6020820190508181035f830152612bc88184612b78565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612bfd82612bd4565b9050919050565b612c0d81612bf3565b8114612c17575f80fd5b50565b5f81359050612c2881612c04565b92915050565b612c3781612af5565b8114612c41575f80fd5b50565b5f81359050612c5281612c2e565b92915050565b5f8060408385031215612c6e57612c6d612bd0565b5b5f612c7b85828601612c1a565b9250506020612c8c85828601612c44565b9150509250929050565b5f8115159050919050565b612caa81612c96565b82525050565b5f602082019050612cc35f830184612ca1565b92915050565b5f60208284031215612cde57612cdd612bd0565b5b5f612ceb84828501612c1a565b91505092915050565b5f805f60608486031215612d0b57612d0a612bd0565b5b5f612d1886828701612c1a565b9350506020612d2986828701612c1a565b9250506040612d3a86828701612c44565b9150509250925092565b5f60ff82169050919050565b612d5981612d44565b82525050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b612d8381612d5f565b82525050565b5f60c082019050612d9c5f830189612d50565b612da96020830188612d50565b612db66040830187612d50565b612dc36060830186612d50565b612dd06080830185612d50565b612ddd60a0830184612d7a565b979650505050505050565b5f60208284031215612dfd57612dfc612bd0565b5b5f612e0a84828501612c44565b91505092915050565b5f602082019050612e265f830184612d50565b92915050565b612e3581612c96565b8114612e3f575f80fd5b50565b5f81359050612e5081612e2c565b92915050565b5f8060408385031215612e6c57612e6b612bd0565b5b5f612e7985828601612c1a565b9250506020612e8a85828601612e42565b9150509250929050565b5f60208284031215612ea957612ea8612bd0565b5b5f612eb684828501612e42565b91505092915050565b612ec881612bf3565b82525050565b5f602082019050612ee15f830184612ebf565b92915050565b5f819050919050565b5f612f0a612f05612f0084612bd4565b612ee7565b612bd4565b9050919050565b5f612f1b82612ef0565b9050919050565b5f612f2c82612f11565b9050919050565b612f3c81612f22565b82525050565b5f602082019050612f555f830184612f33565b92915050565b612f6481612d44565b8114612f6e575f80fd5b50565b5f81359050612f7f81612f5b565b92915050565b5f805f805f805f805f806101408b8d031215612fa457612fa3612bd0565b5b5f612fb18d828e01612f71565b9a50506020612fc28d828e01612f71565b9950506040612fd38d828e01612f71565b9850506060612fe48d828e01612f71565b9750506080612ff58d828e01612f71565b96505060a06130068d828e01612f71565b95505060c06130178d828e01612f71565b94505060e06130288d828e01612f71565b93505061010061303a8d828e01612f71565b92505061012061304c8d828e01612f71565b9150509295989b9194979a5092959850565b5f805f6060848603121561307557613074612bd0565b5b5f61308286828701612c1a565b935050602061309386828701612c1a565b92505060406130a486828701612c1a565b9150509250925092565b5f80604083850312156130c4576130c3612bd0565b5b5f6130d185828601612c1a565b92505060206130e285828601612c1a565b9150509250929050565b5f806040838503121561310257613101612bd0565b5b5f61310f85828601612e42565b925050602061312085828601612c44565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061316e57607f821691505b6020821081036131815761318061312a565b5b50919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6131bb601d83612b30565b91506131c682613187565b602082019050919050565b5f6020820190508181035f8301526131e8816131af565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61322682612af5565b915061323183612af5565b9250828203905081811115613249576132486131ef565b5b92915050565b5f61325982612af5565b915061326483612af5565b925082820261327281612af5565b91508282048414831517613289576132886131ef565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132c782612af5565b91506132d283612af5565b9250826132e2576132e1613290565b5b828204905092915050565b5f81905092915050565b50565b5f6133055f836132ed565b9150613310826132f7565b5f82019050919050565b5f613324826132fa565b9150819050919050565b5f61333882612d44565b915061334383612d44565b9250828201905060ff81111561335c5761335b6131ef565b5b92915050565b7f427579206665657320746f6f20686967680000000000000000000000000000005f82015250565b5f613396601183612b30565b91506133a182613362565b602082019050919050565b5f6020820190508181035f8301526133c38161338a565b9050919050565b7f53656c6c206665657320746f6f206869676800000000000000000000000000005f82015250565b5f6133fe601283612b30565b9150613409826133ca565b602082019050919050565b5f6020820190508181035f83015261342b816133f2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61348c602683612b30565b915061349782613432565b604082019050919050565b5f6020820190508181035f8301526134b981613480565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f6134f4600b83612b30565b91506134ff826134c0565b602082019050919050565b5f6020820190508181035f830152613521816134e8565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178545f8201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b5f613582602883612b30565b915061358d82613528565b604082019050919050565b5f6020820190508181035f8301526135af81613576565b9050919050565b7f496e73756666696369656e742042616c616e63650000000000000000000000005f82015250565b5f6135ea601483612b30565b91506135f5826135b6565b602082019050919050565b5f6020820190508181035f830152613617816135de565b9050919050565b5f61362882612af5565b915061363383612af5565b925082820190508082111561364b5761364a6131ef565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613685602083612b30565b915061369082613651565b602082019050919050565b5f6020820190508181035f8301526136b281613679565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061372181612c04565b92915050565b5f6020828403121561373c5761373b612bd0565b5b5f61374984828501613713565b91505092915050565b5f819050919050565b5f61377561377061376b84613752565b612ee7565b612af5565b9050919050565b6137858161375b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137bd81612bf3565b82525050565b5f6137ce83836137b4565b60208301905092915050565b5f602082019050919050565b5f6137f08261378b565b6137fa8185613795565b9350613805836137a5565b805f5b8381101561383557815161381c88826137c3565b9750613827836137da565b925050600181019050613808565b5085935050505092915050565b5f60a0820190506138555f830188612afe565b613862602083018761377c565b818103604083015261387481866137e6565b90506138836060830185612ebf565b6138906080830184612afe565b9695505050505050565b5f6138a482612d5f565b91506138af83612d5f565b925082820390506fffffffffffffffffffffffffffffffff8111156138d7576138d66131ef565b5b92915050565b5f6040820190506138f05f830185612afe565b6138fd6020830184612afe565b939250505056fea2646970667358221220f3a7f9027b771dfa40dfddd340cf94ce3335c7781a026b2d6f32bce04cca125564736f6c63430008140033

Deployed Bytecode Sourcemap

7320:14359:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9719:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13153:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11732:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9055:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9800;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9104:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12957:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12250:441;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13949:136;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9457:93;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;13792:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13067:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9227:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14351:170;;;;;;;;;;;;;:::i;:::-;;16770:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16671:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13644:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9358:92;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;11956:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16086:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13343:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5782:103;;;;;;;;;;;;;:::i;:::-;;8874:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5134:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13246:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8397:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12086:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9681:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14832:1246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16348:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14529:131;;;;;;;;;;;;;:::i;:::-;;13489:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14668:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16545:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6040:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8530:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16213:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9719:56;;;;:::o;13153:85::-;13192:13;13225:5;13218:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13153:85;:::o;11732:216::-;11807:4;11859:6;11824:11;:23;11836:10;11824:23;;;;;;;;;;;;;;;:32;11848:7;11824:32;;;;;;;;;;;;;;;:41;;;;11902:7;11881:37;;11890:10;11881:37;;;11911:6;11881:37;;;;;;:::i;:::-;;;;;;;;11936:4;11929:11;;11732:216;;;;:::o;9055:42::-;;;;;;;;;;;;;;;;;:::o;9800:::-;;;;;;;;;;;;;;;;;;;;;;:::o;9104:46::-;;;;:::o;12957:102::-;13012:7;13039:12;;13032:19;;12957:102;:::o;12250:441::-;12350:4;12406:17;12371:11;:19;12383:6;12371:19;;;;;;;;;;;;;;;:31;12391:10;12371:31;;;;;;;;;;;;;;;;:52;12367:257;;12483:6;12448:11;:19;12460:6;12448:19;;;;;;;;;;;;;;;:31;12468:10;12448:31;;;;;;;;;;;;;;;;:41;;12440:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;12606:6;12572:11;:19;12584:6;12572:19;;;;;;;;;;;;;;;:31;12592:10;12572:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;12538:11;:19;12550:6;12538:19;;;;;;;;;;;;;;;:31;12558:10;12538:31;;;;;;;;;;;;;;;:74;;;;12367:257;12643:40;12657:6;12665:9;12676:6;12643:13;:40::i;:::-;12636:47;;12250:441;;;;;:::o;13949:136::-;14002:7;14062:15;8050:42;14062:9;:15::i;:::-;14044;7977:42;14044:9;:15::i;:::-;14029:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;14022:55;;13949:136;:::o;9457:93::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13792:149::-;13862:7;13917:16;;13902:12;;13889:10;:25;;;;:::i;:::-;:44;;;;:::i;:::-;13882:51;;13792:149;;;:::o;13067:78::-;13110:5;13135:2;13128:9;;13067:78;:::o;9227:32::-;;;;;;;;;;;;;:::o;14351:170::-;5020:13;:11;:13::i;:::-;14411:12:::1;14436:10;14428:24;;14460:21;14428:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14410:76;;;14505:7;14497:16;;;::::0;::::1;;14399:122;14351:170::o:0;16770:135::-;5020:13;:11;:13::i;:::-;16882:15:::1;16859:10;:20;16870:8;16859:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;16770:135:::0;;:::o;16671:91::-;5020:13;:11;:13::i;:::-;16752:2:::1;16736:13;;:18;;;;;;;;;;;;;;;;;;16671:91:::0;:::o;13644:140::-;13709:7;13764:12;;13745:16;;13736:6;:25;;;;:::i;:::-;:40;;;;:::i;:::-;13729:47;;13644:140;;;:::o;9358:92::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11956:122::-;12011:4;12035:35;12043:7;12052:17;12035:7;:35::i;:::-;12028:42;;11956:122;;;:::o;16086:119::-;5020:13;:11;:13::i;:::-;16191:6:::1;16169:11;:19;16181:6;16169:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;16086:119:::0;;:::o;13343:138::-;13409:7;13436:37;13456:7;:16;13464:7;13456:16;;;;;;;;;;;;;;;;13436:19;:37::i;:::-;13429:44;;13343:138;;;:::o;5782:103::-;5020:13;:11;:13::i;:::-;5847:30:::1;5874:1;5847:18;:30::i;:::-;5782:103::o:0;8874:52::-;;;;:::o;5134:87::-;5180:7;5207:6;;;;;;;;;;;5200:13;;5134:87;:::o;13246:89::-;13287:13;13320:7;13313:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13246:89;:::o;8397:126::-;8480:42;8397:126;:::o;12086:156::-;12166:4;12190:44;12204:10;12216:9;12227:6;12190:13;:44::i;:::-;12183:51;;12086:156;;;;:::o;9681:31::-;;;;;;;;;;;;;:::o;14832:1246::-;5020:13;:11;:13::i;:::-;15188:21:::1;15276:10;15260:13;15249:8;15231:15;15212:16;:34;;;;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;:74;;;;:::i;:::-;15188:98;;;;15297:22;15390:11;15373:14;15361:9;15342:16;15322:17;:36;;;;:::i;:::-;:48;;;;:::i;:::-;:65;;;;:::i;:::-;:79;;;;:::i;:::-;15297:104;;;;8128:2;15422:13;:24;;;;15414:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;8128:2;15487:14;:25;;;;15479:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;15557:242;;;;;;;;15588:16;15557:242;;;;;;15630:16;15557:242;;;;;;15665:16;15557:242;;;;;;15705:16;15557:242;;;;;;15742:10;15557:242;;;;;;15774:13;15557:242;;;;::::0;15548:6:::1;:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15822:248;;;;;;;;15853:17;15822:248;;;;;;15896:17;15822:248;;;;;;15932:17;15822:248;;;;;;15973:17;15822:248;;;;;;16011:11;15822:248;;;;;;16044:14;15822:248;;;;::::0;15812:7:::1;:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15177:901;;14832:1246:::0;;;;;;;;;;:::o;16348:189::-;5020:13;:11;:13::i;:::-;16463:2:::1;16440:20;;:25;;;;;;;;;;;;;;;;;;16492:3;16476:13;;:19;;;;;;;;;;;;;;;;;;16527:2;16506:18;;:23;;;;;;;;;;;;;;;;;;16348:189:::0;;;:::o;14529:131::-;5020:13;:11;:13::i;:::-;14586:66:::1;14608:4;14615:10;14627:24;14645:4;14627:9;:24::i;:::-;14586:13;:66::i;:::-;;14529:131::o:0;13489:147::-;13573:7;13600:11;:19;13612:6;13600:19;;;;;;;;;;;;;;;:28;13620:7;13600:28;;;;;;;;;;;;;;;;13593:35;;13489:147;;;;:::o;14668:156::-;5020:13;:11;:13::i;:::-;14774:8:::1;14759:12;;:23;;;;;;;;;;;;;;;;;;14809:7;14793:13;:23;;;;14668:156:::0;;:::o;16545:118::-;5020:13;:11;:13::i;:::-;16650:5:::1;16645:2;16630:12;;:17;;;;:::i;:::-;:25;;;;:::i;:::-;16615:12;:40;;;;16545:118:::0;:::o;6040:201::-;5020:13;:11;:13::i;:::-;6149:1:::1;6129:22;;:8;:22;;::::0;6121:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6205:28;6224:8;6205:18;:28::i;:::-;6040:201:::0;:::o;8530:40::-;;;:::o;16213:127::-;5020:13;:11;:13::i;:::-;16326:6:::1;16300:15;:23;16316:6;16300:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16213:127:::0;;:::o;17171:1149::-;17263:4;17289:10;:21;17300:9;17289:21;;;;;;;;;;;;;;;;;;;;;;;;;17288:22;:45;;;;;17315:10;:18;17326:6;17315:18;;;;;;;;;;;;;;;;;;;;;;;;;17314:19;17288:45;17280:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;17366:6;;;;;;;;;;;17362:87;;;17396:41;17411:6;17419:9;17430:6;17396:14;:41::i;:::-;17389:48;;;;17362:87;17465:13;;;;;;;;;;;:41;;;;;17483:15;:23;17499:6;17483:23;;;;;;;;;;;;;;;;;;;;;;;;;17482:24;17465:41;:72;;;;;17511:15;:26;17527:9;17511:26;;;;;;;;;;;;;;;;;;;;;;;;;17510:27;17465:72;17461:180;;;17572:12;;17562:6;:22;;17554:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;17461:180;17657:17;:15;:17::i;:::-;17653:61;;;17691:11;:9;:11::i;:::-;17653:61;17726:24;17753:26;17772:6;17753:18;:26::i;:::-;17726:53;;17817:16;17798:7;:15;17806:6;17798:15;;;;;;;;;;;;;;;;:35;;17790:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17905:16;17887:7;:15;17895:6;17887:15;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;17869:7;:15;17877:6;17869:15;;;;;;;;;;;;;;;:52;;;;17934:26;17963:33;17978:6;17986:9;17963:14;:33::i;:::-;:170;;18117:16;17963:170;;;18012:89;18044:15;18034:25;;:6;:25;;;:40;;18069:5;18034:40;;;18062:4;18034:40;18076:6;18084:16;18012:21;:89::i;:::-;17963:170;17934:199;;18186:18;18165:7;:18;18173:9;18165:18;;;;;;;;;;;;;;;;:39;;;;:::i;:::-;18144:7;:18;18152:9;18144:18;;;;;;;;;;;;;;;:60;;;;18239:9;18222:68;;18231:6;18222:68;;;18250:39;18270:18;18250:19;:39::i;:::-;18222:68;;;;;;:::i;:::-;;;;;;;;18308:4;18301:11;;;;17171:1149;;;;;;:::o;5299:132::-;5374:12;:10;:12::i;:::-;5363:23;;:7;:5;:7::i;:::-;:23;;;5355:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5299:132::o;6401:191::-;6475:16;6494:6;;;;;;;;;;;6475:25;;6520:8;6511:6;;:17;;;;;;;;;;;;;;;;;;6575:8;6544:40;;6565:8;6544:40;;;;;;;;;;;;6464:128;6401:191;:::o;18328:455::-;18421:4;18438:24;18465:26;18484:6;18465:18;:26::i;:::-;18438:53;;18529:16;18510:7;:15;18518:6;18510:15;;;;;;;;;;;;;;;;:35;;18502:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18617:16;18599:7;:15;18607:6;18599:15;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;18581:7;:15;18589:6;18581:15;;;;;;;;;;;;;;;:52;;;;18686:16;18665:7;:18;18673:9;18665:18;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;18644:7;:18;18652:9;18644:18;;;;;;;;;;;;;;;:58;;;;18735:9;18718:35;;18727:6;18718:35;;;18746:6;18718:35;;;;;;:::i;:::-;;;;;;;;18771:4;18764:11;;;18328:455;;;;;:::o;19914:183::-;19964:4;20002:15;19988:29;;:10;:29;;;;:40;;;;;20022:6;;;;;;;;;;;20021:7;19988:40;:56;;;;;20032:12;;;;;;;;;;;19988:56;:101;;;;;20076:13;;20048:24;20066:4;20048:9;:24::i;:::-;:41;;19988:101;19981:108;;19914:183;:::o;20105:1402::-;10149:4;10140:6;;:13;;;;;;;;;;;;;;;;;;20155:20:::1;20178:7;20155:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;20198:23;20224:13;;20198:39;;20248:20;20306:9;:15;;;20271:50;;20289:9;:14;;;20271:32;;:15;:32;;;;:::i;:::-;:50;;;;:::i;:::-;20248:73;;20332:20;20373:12;20355:15;:30;;;;:::i;:::-;20332:53;;20396:49;8480:42;20432:12;20396:7;:49::i;:::-;;20475:48;20497:4;7977:42;20510:12;20475:13;:48::i;:::-;;20553:21;20591:1;20577:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20553:40;;20622:4;20604;20609:1;20604:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;8480:42;20648:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20638:4;20643:1;20638:7;;;;;;;;:::i;:::-;;;;;;;:34;;;;;;;;;::::0;::::1;8480:42;20685:68;;;20768:12;20782:1;20785:4;20799;20806:15;20685:147;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20845:17;20865:21;20845:41;;20899:20;20963:9;:14;;;20922:55;;20940:9;:20;;;20922:38;;:9;:15;;;:38;;;;:::i;:::-;:55;;;;:::i;:::-;20899:78;;;;20988:26;21051:12;21029:9;:19;;;21017:31;;:9;:31;;;;:::i;:::-;:46;;;;:::i;:::-;20988:75;;21074:19;21123:12;21108:9;:12;;;21096:24;;:9;:24;;;;:::i;:::-;:39;;;;:::i;:::-;21074:61;;21146:24;21205:12;21185:9;:17;;;21173:29;;:9;:29;;;;:::i;:::-;:44;;;;:::i;:::-;21146:71;;21248:15;21276:20;;;;;;;;;;;21268:34;;21310:18;21268:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21247:86;;;21368:13;;;;;;;;;;;21360:27;;21395:11;21360:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21344:67;;;;;21446:18;;;;;;;;;;;21438:32;;21478:16;21438:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21422:77;;;;;20144:1363;;;;;;;;;;;10185:5:::0;10176:6;;:14;;;;;;;;;;;;;;;;;;20105:1402::o;21515:161::-;21597:4;21622:11;:19;21634:6;21622:19;;;;;;;;;;;;;;;;;;;;;;;;;21621:20;:47;;;;;21646:11;:22;21658:9;21646:22;;;;;;;;;;;;;;;;;;;;;;;;;21645:23;21621:47;21614:54;;21515:161;;;;:::o;18791:1115::-;18895:7;18915:19;18937:6;18915:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18954:20;18977:7;18954:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18997:27;19050:4;19040:14;;:6;:14;;;:99;;19136:3;19118:9;:15;;;19099:34;;:16;:34;;;;:::i;:::-;:40;;;;:::i;:::-;19040:99;;;19093:3;19076:8;:14;;;19057:33;;:16;:33;;;;:::i;:::-;:39;;;;:::i;:::-;19040:99;18997:142;;19172:27;19212:4;19202:14;;:6;:14;;;:164;;19351:9;:15;;;19306:60;;19328:9;:20;;;19306:42;;:19;:42;;;;:::i;:::-;:60;;;;:::i;:::-;19202:164;;;19276:8;:14;;;19232:58;;19254:8;:19;;;19232:41;;:19;:41;;;;:::i;:::-;:58;;;;:::i;:::-;19202:164;19172:194;;19417:19;19398:16;;:38;;;;:::i;:::-;19379:16;:57;;;;19471:29;19525:19;19503;:41;;;;:::i;:::-;19471:73;;19583:1;19559:21;:25;19555:226;;;19651:21;19626:7;:22;19642:4;19626:22;;;;;;;;;;;;;;;;:46;;;;:::i;:::-;19601:7;:22;19617:4;19601:22;;;;;;;;;;;;;;;:71;;;;19719:4;19694:75;;19703:6;19694:75;;;19726:42;19746:21;19726:19;:42::i;:::-;19694:75;;;;;;:::i;:::-;;;;;;;;19555:226;19796:46;19804:19;19825:16;;19796:46;;;;;;;:::i;:::-;;;;;;;;19879:19;19860:16;:38;;;;:::i;:::-;19853:45;;;;;;;18791:1115;;;;;:::o;3685:98::-;3738:7;3765:10;3758:17;;3685:98;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:118::-;5005:7;5045:34;5038:5;5034:46;5023:57;;4968:118;;;:::o;5092:::-;5179:24;5197:5;5179:24;:::i;:::-;5174:3;5167:37;5092:118;;:::o;5216:735::-;5429:4;5467:3;5456:9;5452:19;5444:27;;5481:67;5545:1;5534:9;5530:17;5521:6;5481:67;:::i;:::-;5558:68;5622:2;5611:9;5607:18;5598:6;5558:68;:::i;:::-;5636;5700:2;5689:9;5685:18;5676:6;5636:68;:::i;:::-;5714;5778:2;5767:9;5763:18;5754:6;5714:68;:::i;:::-;5792:69;5856:3;5845:9;5841:19;5832:6;5792:69;:::i;:::-;5871:73;5939:3;5928:9;5924:19;5915:6;5871:73;:::i;:::-;5216:735;;;;;;;;;:::o;5957:329::-;6016:6;6065:2;6053:9;6044:7;6040:23;6036:32;6033:119;;;6071:79;;:::i;:::-;6033:119;6191:1;6216:53;6261:7;6252:6;6241:9;6237:22;6216:53;:::i;:::-;6206:63;;6162:117;5957:329;;;;:::o;6292:214::-;6381:4;6419:2;6408:9;6404:18;6396:26;;6432:67;6496:1;6485:9;6481:17;6472:6;6432:67;:::i;:::-;6292:214;;;;:::o;6512:116::-;6582:21;6597:5;6582:21;:::i;:::-;6575:5;6572:32;6562:60;;6618:1;6615;6608:12;6562:60;6512:116;:::o;6634:133::-;6677:5;6715:6;6702:20;6693:29;;6731:30;6755:5;6731:30;:::i;:::-;6634:133;;;;:::o;6773:468::-;6838:6;6846;6895:2;6883:9;6874:7;6870:23;6866:32;6863:119;;;6901:79;;:::i;:::-;6863:119;7021:1;7046:53;7091:7;7082:6;7071:9;7067:22;7046:53;:::i;:::-;7036:63;;6992:117;7148:2;7174:50;7216:7;7207:6;7196:9;7192:22;7174:50;:::i;:::-;7164:60;;7119:115;6773:468;;;;;:::o;7247:323::-;7303:6;7352:2;7340:9;7331:7;7327:23;7323:32;7320:119;;;7358:79;;:::i;:::-;7320:119;7478:1;7503:50;7545:7;7536:6;7525:9;7521:22;7503:50;:::i;:::-;7493:60;;7449:114;7247:323;;;;:::o;7576:118::-;7663:24;7681:5;7663:24;:::i;:::-;7658:3;7651:37;7576:118;;:::o;7700:222::-;7793:4;7831:2;7820:9;7816:18;7808:26;;7844:71;7912:1;7901:9;7897:17;7888:6;7844:71;:::i;:::-;7700:222;;;;:::o;7928:60::-;7956:3;7977:5;7970:12;;7928:60;;;:::o;7994:142::-;8044:9;8077:53;8095:34;8104:24;8122:5;8104:24;:::i;:::-;8095:34;:::i;:::-;8077:53;:::i;:::-;8064:66;;7994:142;;;:::o;8142:126::-;8192:9;8225:37;8256:5;8225:37;:::i;:::-;8212:50;;8142:126;;;:::o;8274:152::-;8350:9;8383:37;8414:5;8383:37;:::i;:::-;8370:50;;8274:152;;;:::o;8432:183::-;8545:63;8602:5;8545:63;:::i;:::-;8540:3;8533:76;8432:183;;:::o;8621:274::-;8740:4;8778:2;8767:9;8763:18;8755:26;;8791:97;8885:1;8874:9;8870:17;8861:6;8791:97;:::i;:::-;8621:274;;;;:::o;8901:118::-;8972:22;8988:5;8972:22;:::i;:::-;8965:5;8962:33;8952:61;;9009:1;9006;8999:12;8952:61;8901:118;:::o;9025:135::-;9069:5;9107:6;9094:20;9085:29;;9123:31;9148:5;9123:31;:::i;:::-;9025:135;;;;:::o;9166:1601::-;9286:6;9294;9302;9310;9318;9326;9334;9342;9350;9358;9407:3;9395:9;9386:7;9382:23;9378:33;9375:120;;;9414:79;;:::i;:::-;9375:120;9534:1;9559:51;9602:7;9593:6;9582:9;9578:22;9559:51;:::i;:::-;9549:61;;9505:115;9659:2;9685:51;9728:7;9719:6;9708:9;9704:22;9685:51;:::i;:::-;9675:61;;9630:116;9785:2;9811:51;9854:7;9845:6;9834:9;9830:22;9811:51;:::i;:::-;9801:61;;9756:116;9911:2;9937:51;9980:7;9971:6;9960:9;9956:22;9937:51;:::i;:::-;9927:61;;9882:116;10037:3;10064:51;10107:7;10098:6;10087:9;10083:22;10064:51;:::i;:::-;10054:61;;10008:117;10164:3;10191:51;10234:7;10225:6;10214:9;10210:22;10191:51;:::i;:::-;10181:61;;10135:117;10291:3;10318:51;10361:7;10352:6;10341:9;10337:22;10318:51;:::i;:::-;10308:61;;10262:117;10418:3;10445:51;10488:7;10479:6;10468:9;10464:22;10445:51;:::i;:::-;10435:61;;10389:117;10545:3;10572:51;10615:7;10606:6;10595:9;10591:22;10572:51;:::i;:::-;10562:61;;10516:117;10672:3;10699:51;10742:7;10733:6;10722:9;10718:22;10699:51;:::i;:::-;10689:61;;10643:117;9166:1601;;;;;;;;;;;;;:::o;10773:619::-;10850:6;10858;10866;10915:2;10903:9;10894:7;10890:23;10886:32;10883:119;;;10921:79;;:::i;:::-;10883:119;11041:1;11066:53;11111:7;11102:6;11091:9;11087:22;11066:53;:::i;:::-;11056:63;;11012:117;11168:2;11194:53;11239:7;11230:6;11219:9;11215:22;11194:53;:::i;:::-;11184:63;;11139:118;11296:2;11322:53;11367:7;11358:6;11347:9;11343:22;11322:53;:::i;:::-;11312:63;;11267:118;10773:619;;;;;:::o;11398:474::-;11466:6;11474;11523:2;11511:9;11502:7;11498:23;11494:32;11491:119;;;11529:79;;:::i;:::-;11491:119;11649:1;11674:53;11719:7;11710:6;11699:9;11695:22;11674:53;:::i;:::-;11664:63;;11620:117;11776:2;11802:53;11847:7;11838:6;11827:9;11823:22;11802:53;:::i;:::-;11792:63;;11747:118;11398:474;;;;;:::o;11878:468::-;11943:6;11951;12000:2;11988:9;11979:7;11975:23;11971:32;11968:119;;;12006:79;;:::i;:::-;11968:119;12126:1;12151:50;12193:7;12184:6;12173:9;12169:22;12151:50;:::i;:::-;12141:60;;12097:114;12250:2;12276:53;12321:7;12312:6;12301:9;12297:22;12276:53;:::i;:::-;12266:63;;12221:118;11878:468;;;;;:::o;12352:180::-;12400:77;12397:1;12390:88;12497:4;12494:1;12487:15;12521:4;12518:1;12511:15;12538:320;12582:6;12619:1;12613:4;12609:12;12599:22;;12666:1;12660:4;12656:12;12687:18;12677:81;;12743:4;12735:6;12731:17;12721:27;;12677:81;12805:2;12797:6;12794:14;12774:18;12771:38;12768:84;;12824:18;;:::i;:::-;12768:84;12589:269;12538:320;;;:::o;12864:179::-;13004:31;13000:1;12992:6;12988:14;12981:55;12864:179;:::o;13049:366::-;13191:3;13212:67;13276:2;13271:3;13212:67;:::i;:::-;13205:74;;13288:93;13377:3;13288:93;:::i;:::-;13406:2;13401:3;13397:12;13390:19;;13049:366;;;:::o;13421:419::-;13587:4;13625:2;13614:9;13610:18;13602:26;;13674:9;13668:4;13664:20;13660:1;13649:9;13645:17;13638:47;13702:131;13828:4;13702:131;:::i;:::-;13694:139;;13421:419;;;:::o;13846:180::-;13894:77;13891:1;13884:88;13991:4;13988:1;13981:15;14015:4;14012:1;14005:15;14032:194;14072:4;14092:20;14110:1;14092:20;:::i;:::-;14087:25;;14126:20;14144:1;14126:20;:::i;:::-;14121:25;;14170:1;14167;14163:9;14155:17;;14194:1;14188:4;14185:11;14182:37;;;14199:18;;:::i;:::-;14182:37;14032:194;;;;:::o;14232:410::-;14272:7;14295:20;14313:1;14295:20;:::i;:::-;14290:25;;14329:20;14347:1;14329:20;:::i;:::-;14324:25;;14384:1;14381;14377:9;14406:30;14424:11;14406:30;:::i;:::-;14395:41;;14585:1;14576:7;14572:15;14569:1;14566:22;14546:1;14539:9;14519:83;14496:139;;14615:18;;:::i;:::-;14496:139;14280:362;14232:410;;;;:::o;14648:180::-;14696:77;14693:1;14686:88;14793:4;14790:1;14783:15;14817:4;14814:1;14807:15;14834:185;14874:1;14891:20;14909:1;14891:20;:::i;:::-;14886:25;;14925:20;14943:1;14925:20;:::i;:::-;14920:25;;14964:1;14954:35;;14969:18;;:::i;:::-;14954:35;15011:1;15008;15004:9;14999:14;;14834:185;;;;:::o;15025:147::-;15126:11;15163:3;15148:18;;15025:147;;;;:::o;15178:114::-;;:::o;15298:398::-;15457:3;15478:83;15559:1;15554:3;15478:83;:::i;:::-;15471:90;;15570:93;15659:3;15570:93;:::i;:::-;15688:1;15683:3;15679:11;15672:18;;15298:398;;;:::o;15702:379::-;15886:3;15908:147;16051:3;15908:147;:::i;:::-;15901:154;;16072:3;16065:10;;15702:379;;;:::o;16087:188::-;16125:3;16144:18;16160:1;16144:18;:::i;:::-;16139:23;;16176:18;16192:1;16176:18;:::i;:::-;16171:23;;16217:1;16214;16210:9;16203:16;;16240:4;16235:3;16232:13;16229:39;;;16248:18;;:::i;:::-;16229:39;16087:188;;;;:::o;16281:167::-;16421:19;16417:1;16409:6;16405:14;16398:43;16281:167;:::o;16454:366::-;16596:3;16617:67;16681:2;16676:3;16617:67;:::i;:::-;16610:74;;16693:93;16782:3;16693:93;:::i;:::-;16811:2;16806:3;16802:12;16795:19;;16454:366;;;:::o;16826:419::-;16992:4;17030:2;17019:9;17015:18;17007:26;;17079:9;17073:4;17069:20;17065:1;17054:9;17050:17;17043:47;17107:131;17233:4;17107:131;:::i;:::-;17099:139;;16826:419;;;:::o;17251:168::-;17391:20;17387:1;17379:6;17375:14;17368:44;17251:168;:::o;17425:366::-;17567:3;17588:67;17652:2;17647:3;17588:67;:::i;:::-;17581:74;;17664:93;17753:3;17664:93;:::i;:::-;17782:2;17777:3;17773:12;17766:19;;17425:366;;;:::o;17797:419::-;17963:4;18001:2;17990:9;17986:18;17978:26;;18050:9;18044:4;18040:20;18036:1;18025:9;18021:17;18014:47;18078:131;18204:4;18078:131;:::i;:::-;18070:139;;17797:419;;;:::o;18222:225::-;18362:34;18358:1;18350:6;18346:14;18339:58;18431:8;18426:2;18418:6;18414:15;18407:33;18222:225;:::o;18453:366::-;18595:3;18616:67;18680:2;18675:3;18616:67;:::i;:::-;18609:74;;18692:93;18781:3;18692:93;:::i;:::-;18810:2;18805:3;18801:12;18794:19;;18453:366;;;:::o;18825:419::-;18991:4;19029:2;19018:9;19014:18;19006:26;;19078:9;19072:4;19068:20;19064:1;19053:9;19049:17;19042:47;19106:131;19232:4;19106:131;:::i;:::-;19098:139;;18825:419;;;:::o;19250:161::-;19390:13;19386:1;19378:6;19374:14;19367:37;19250:161;:::o;19417:366::-;19559:3;19580:67;19644:2;19639:3;19580:67;:::i;:::-;19573:74;;19656:93;19745:3;19656:93;:::i;:::-;19774:2;19769:3;19765:12;19758:19;;19417:366;;;:::o;19789:419::-;19955:4;19993:2;19982:9;19978:18;19970:26;;20042:9;20036:4;20032:20;20028:1;20017:9;20013:17;20006:47;20070:131;20196:4;20070:131;:::i;:::-;20062:139;;19789:419;;;:::o;20214:227::-;20354:34;20350:1;20342:6;20338:14;20331:58;20423:10;20418:2;20410:6;20406:15;20399:35;20214:227;:::o;20447:366::-;20589:3;20610:67;20674:2;20669:3;20610:67;:::i;:::-;20603:74;;20686:93;20775:3;20686:93;:::i;:::-;20804:2;20799:3;20795:12;20788:19;;20447:366;;;:::o;20819:419::-;20985:4;21023:2;21012:9;21008:18;21000:26;;21072:9;21066:4;21062:20;21058:1;21047:9;21043:17;21036:47;21100:131;21226:4;21100:131;:::i;:::-;21092:139;;20819:419;;;:::o;21244:170::-;21384:22;21380:1;21372:6;21368:14;21361:46;21244:170;:::o;21420:366::-;21562:3;21583:67;21647:2;21642:3;21583:67;:::i;:::-;21576:74;;21659:93;21748:3;21659:93;:::i;:::-;21777:2;21772:3;21768:12;21761:19;;21420:366;;;:::o;21792:419::-;21958:4;21996:2;21985:9;21981:18;21973:26;;22045:9;22039:4;22035:20;22031:1;22020:9;22016:17;22009:47;22073:131;22199:4;22073:131;:::i;:::-;22065:139;;21792:419;;;:::o;22217:191::-;22257:3;22276:20;22294:1;22276:20;:::i;:::-;22271:25;;22310:20;22328:1;22310:20;:::i;:::-;22305:25;;22353:1;22350;22346:9;22339:16;;22374:3;22371:1;22368:10;22365:36;;;22381:18;;:::i;:::-;22365:36;22217:191;;;;:::o;22414:182::-;22554:34;22550:1;22542:6;22538:14;22531:58;22414:182;:::o;22602:366::-;22744:3;22765:67;22829:2;22824:3;22765:67;:::i;:::-;22758:74;;22841:93;22930:3;22841:93;:::i;:::-;22959:2;22954:3;22950:12;22943:19;;22602:366;;;:::o;22974:419::-;23140:4;23178:2;23167:9;23163:18;23155:26;;23227:9;23221:4;23217:20;23213:1;23202:9;23198:17;23191:47;23255:131;23381:4;23255:131;:::i;:::-;23247:139;;22974:419;;;:::o;23399:180::-;23447:77;23444:1;23437:88;23544:4;23541:1;23534:15;23568:4;23565:1;23558:15;23585:180;23633:77;23630:1;23623:88;23730:4;23727:1;23720:15;23754:4;23751:1;23744:15;23771:143;23828:5;23859:6;23853:13;23844:22;;23875:33;23902:5;23875:33;:::i;:::-;23771:143;;;;:::o;23920:351::-;23990:6;24039:2;24027:9;24018:7;24014:23;24010:32;24007:119;;;24045:79;;:::i;:::-;24007:119;24165:1;24190:64;24246:7;24237:6;24226:9;24222:22;24190:64;:::i;:::-;24180:74;;24136:128;23920:351;;;;:::o;24277:85::-;24322:7;24351:5;24340:16;;24277:85;;;:::o;24368:158::-;24426:9;24459:61;24477:42;24486:32;24512:5;24486:32;:::i;:::-;24477:42;:::i;:::-;24459:61;:::i;:::-;24446:74;;24368:158;;;:::o;24532:147::-;24627:45;24666:5;24627:45;:::i;:::-;24622:3;24615:58;24532:147;;:::o;24685:114::-;24752:6;24786:5;24780:12;24770:22;;24685:114;;;:::o;24805:184::-;24904:11;24938:6;24933:3;24926:19;24978:4;24973:3;24969:14;24954:29;;24805:184;;;;:::o;24995:132::-;25062:4;25085:3;25077:11;;25115:4;25110:3;25106:14;25098:22;;24995:132;;;:::o;25133:108::-;25210:24;25228:5;25210:24;:::i;:::-;25205:3;25198:37;25133:108;;:::o;25247:179::-;25316:10;25337:46;25379:3;25371:6;25337:46;:::i;:::-;25415:4;25410:3;25406:14;25392:28;;25247:179;;;;:::o;25432:113::-;25502:4;25534;25529:3;25525:14;25517:22;;25432:113;;;:::o;25581:732::-;25700:3;25729:54;25777:5;25729:54;:::i;:::-;25799:86;25878:6;25873:3;25799:86;:::i;:::-;25792:93;;25909:56;25959:5;25909:56;:::i;:::-;25988:7;26019:1;26004:284;26029:6;26026:1;26023:13;26004:284;;;26105:6;26099:13;26132:63;26191:3;26176:13;26132:63;:::i;:::-;26125:70;;26218:60;26271:6;26218:60;:::i;:::-;26208:70;;26064:224;26051:1;26048;26044:9;26039:14;;26004:284;;;26008:14;26304:3;26297:10;;25705:608;;;25581:732;;;;:::o;26319:831::-;26582:4;26620:3;26609:9;26605:19;26597:27;;26634:71;26702:1;26691:9;26687:17;26678:6;26634:71;:::i;:::-;26715:80;26791:2;26780:9;26776:18;26767:6;26715:80;:::i;:::-;26842:9;26836:4;26832:20;26827:2;26816:9;26812:18;26805:48;26870:108;26973:4;26964:6;26870:108;:::i;:::-;26862:116;;26988:72;27056:2;27045:9;27041:18;27032:6;26988:72;:::i;:::-;27070:73;27138:3;27127:9;27123:19;27114:6;27070:73;:::i;:::-;26319:831;;;;;;;;:::o;27156:227::-;27196:4;27216:20;27234:1;27216:20;:::i;:::-;27211:25;;27250:20;27268:1;27250:20;:::i;:::-;27245:25;;27294:1;27291;27287:9;27279:17;;27318:34;27312:4;27309:44;27306:70;;;27356:18;;:::i;:::-;27306:70;27156:227;;;;:::o;27389:332::-;27510:4;27548:2;27537:9;27533:18;27525:26;;27561:71;27629:1;27618:9;27614:17;27605:6;27561:71;:::i;:::-;27642:72;27710:2;27699:9;27695:18;27686:6;27642:72;:::i;:::-;27389:332;;;;;:::o

Swarm Source

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