ETH Price: $2,603.81 (-0.67%)

Token

No Clue (NOCLUE)
 

Overview

Max Total Supply

1,000,000,000 NOCLUE

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
7,150,065.09163112145319974 NOCLUE

Value
$0.00
0x6c2287e4ada266d24bee17ee807a94453d289193
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:
NoClue

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-06-28
*/

/**
https://t.me/NoClueToken

https://twitter.com/NoClueToken

https://www.NoClue.info
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.7;

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

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

    function WETH() external pure returns (address);

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

interface IUniswapV2Pair {
    function sync() external;
}

/**
 * @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;
    }
}

/**
 * @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 Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        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);
    }
}

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

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

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

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

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

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

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

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

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

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

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

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

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

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

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

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

    bool private swapping;

    address public devWallet;

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

    uint256 public percentForLPBurn = 20; // 20 = .20%
    bool public lpBurnEnabled = true;
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;

    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;

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

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

    uint256 public  buyTotalFees;
    uint256 public  buyBurnFee = 0;
    uint256 public  buyLiquidityFee = 3;
    uint256 public  buyDevFee = 3;

    uint256 public  sellTotalFees;
    uint256 public  sellBurnFee = 0;
    uint256 public  sellLiquidityFee = 3;
    uint256 public  sellDevFee = 3;

    uint256 public tokensForBurn;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;

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

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

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

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

    event AutoNukeLP();

    event ManualNukeLP();

    event BoughtEarly(address indexed sniper);

    constructor() ERC20("No Clue", "NOCLUE") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

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

        uint256 totalSupply = 1_000_000_000 * 1e18; // 1 billion total supply

        maxTransactionAmount = 10_000_000 * 1e18; // 1% from total supply
        maxWallet = 10_000_000 * 1e18; // 1% from total supply maxWallet
        swapTokensAtAmount = (totalSupply * 3) / 10000; // 0.03% swap wallet

        buyTotalFees = buyBurnFee + buyLiquidityFee + buyDevFee;
        sellTotalFees = sellBurnFee + sellLiquidityFee + sellDevFee;

        devWallet = address(0x0117240677dC00c38Ac3bF133B9bae49Dbd6d156); // set as dev wallet

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

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

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

    receive() external payable {}

    // once enabled, can never be turned off
    function startTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }

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

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

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

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

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

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

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

    function updateBuyFees(
        uint256 _burnFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        buyBurnFee = _burnFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyBurnFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 5, "Must keep fees at 5% or less");
    }

    function updateSellFees(
        uint256 _burnFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        sellBurnFee = _burnFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellBurnFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 5, "Must keep fees at  5% or less");
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

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

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

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

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapV2Router) &&
                        to != address(uniswapV2Pair)
                    ) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        if (
            !swapping &&
            automatedMarketMakerPairs[to] &&
            lpBurnEnabled &&
            block.timestamp >= lastLpBurnTime + lpBurnFrequency &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }

        bool takeFee = !swapping;

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

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

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

            amount -= fees;
        }

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

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

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

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

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

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

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

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

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

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

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

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

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

        uint256 ethForLiquidity = ethBalance - ethForDev;
        if (tokensForBurn > 0) {
        super._transfer(address(this), address(0xdead), tokensForBurn); 
        }

        tokensForLiquidity = 0;
        tokensForBurn = 0;
        tokensForDev = 0;


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

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

    function setAutoLPBurnSettings(
        uint256 _frequencyInSeconds,
        uint256 _percent,
        bool _Enabled
    ) external onlyOwner {
        require(
            _frequencyInSeconds >= 600,
            "cannot set buyback more often than every 10 minutes"
        );
        require(
            _percent <= 1000 && _percent >= 0,
            "Must set auto LP burn percent between 0% and 10%"
        );
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }

    function autoBurnLiquidityPairTokens() internal returns (bool) {
        lastLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(
            10000
        );

        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }

    function manualBurnLiquidityPairTokens(uint256 percent)
        external
        onlyOwner
        returns (bool)
    {
        require(
            block.timestamp > lastManualLpBurnTime + manualBurnFrequency,
            "Must wait for cooldown to finish"
        );
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);

        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit ManualNukeLP();
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526014600b556001600c60006101000a81548160ff021916908315150217905550610e10600d55610708600f556001601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff0219169083151502179055506000601160026101000a81548160ff0219169083151502179055506001601360006101000a81548160ff02191690831515021790555060006015556003601655600360175560006019556003601a556003601b55348015620000c757600080fd5b506040518060400160405280600781526020017f4e6f20436c7565000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4e4f434c5545000000000000000000000000000000000000000000000000000081525081600390805190602001906200014c92919062000b14565b5080600490805190602001906200016592919062000b14565b505050620001886200017c620005d460201b60201c565b620005dc60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001b4816001620006a260201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200023257600080fd5b505afa15801562000247573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026d919062000bdb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002d057600080fd5b505afa158015620002e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030b919062000bdb565b6040518363ffffffff1660e01b81526004016200032a92919062000c8e565b602060405180830381600087803b1580156200034557600080fd5b505af11580156200035a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000380919062000bdb565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003f5600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006a260201b60201c565b6200042a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200078c60201b60201c565b60006b033b2e3c9fd0803ce800000090506a084595161401484a0000006008819055506a084595161401484a000000600a8190555061271060038262000471919062000ddf565b6200047d919062000da7565b60098190555060175460165460155462000498919062000d4a565b620004a4919062000d4a565b601481905550601b54601a54601954620004bf919062000d4a565b620004cb919062000d4a565b601881905550730117240677dc00c38ac3bf133b9bae49dbd6d156600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005486200053a6200082d60201b60201c565b60016200085760201b60201c565b6200055b3060016200085760201b60201c565b6200057061dead60016200085760201b60201c565b62000592620005846200082d60201b60201c565b6001620006a260201b60201c565b620005a5306001620006a260201b60201c565b620005ba61dead6001620006a260201b60201c565b620005cc33826200099160201b60201c565b505062000fbe565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006b2620005d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006d86200082d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000731576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007289062000cd8565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000867620005d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200088d6200082d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008dd9062000cd8565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000985919062000cbb565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009fb9062000cfa565b60405180910390fd5b62000a186000838362000b0a60201b60201c565b806002600082825462000a2c919062000d4a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a83919062000d4a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000aea919062000d1c565b60405180910390a362000b066000838362000b0f60201b60201c565b5050565b505050565b505050565b82805462000b229062000e8a565b90600052602060002090601f01602090048101928262000b46576000855562000b92565b82601f1062000b6157805160ff191683800117855562000b92565b8280016001018555821562000b92579182015b8281111562000b9157825182559160200191906001019062000b74565b5b50905062000ba1919062000ba5565b5090565b5b8082111562000bc057600081600090555060010162000ba6565b5090565b60008151905062000bd58162000fa4565b92915050565b60006020828403121562000bf45762000bf362000f4d565b5b600062000c048482850162000bc4565b91505092915050565b62000c188162000e40565b82525050565b62000c298162000e54565b82525050565b600062000c3e60208362000d39565b915062000c4b8262000f52565b602082019050919050565b600062000c65601f8362000d39565b915062000c728262000f7b565b602082019050919050565b62000c888162000e80565b82525050565b600060408201905062000ca5600083018562000c0d565b62000cb4602083018462000c0d565b9392505050565b600060208201905062000cd2600083018462000c1e565b92915050565b6000602082019050818103600083015262000cf38162000c2f565b9050919050565b6000602082019050818103600083015262000d158162000c56565b9050919050565b600060208201905062000d33600083018462000c7d565b92915050565b600082825260208201905092915050565b600062000d578262000e80565b915062000d648362000e80565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d9c5762000d9b62000ec0565b5b828201905092915050565b600062000db48262000e80565b915062000dc18362000e80565b92508262000dd45762000dd362000eef565b5b828204905092915050565b600062000dec8262000e80565b915062000df98362000e80565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e355762000e3462000ec0565b5b828202905092915050565b600062000e4d8262000e60565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000ea357607f821691505b6020821081141562000eba5762000eb962000f1e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b62000faf8162000e40565b811462000fbb57600080fd5b50565b60805160601c6159e36200100760003960008181610f2601528181612c6401528181613f9001528181614080015281816140a701528181614143015261416a01526159e36000f3fe60806040526004361061039b5760003560e01c80638ea5220f116101dc578063c17b5b8c11610102578063e2f45605116100a0578063f2fde38b1161006f578063f2fde38b14610d99578063f637434214610dc2578063f8b45b0514610ded578063fe72b27a14610e18576103a2565b8063e2f4560514610ced578063e71dc3f514610d18578063e884f26014610d43578063f11a24d314610d6e576103a2565b8063c8c8ebe4116100dc578063c8c8ebe414610c1d578063d257b34f14610c48578063d85ba06314610c85578063dd62ed3e14610cb0576103a2565b8063c17b5b8c14610ba0578063c18bc19514610bc9578063c876d0b914610bf2576103a2565b8063a0d82dc51161017a578063adb873bd11610149578063adb873bd14610ae4578063b62496f514610b0f578063bbc0c74214610b4c578063c024666814610b77576103a2565b8063a0d82dc514610a14578063a457c2d714610a3f578063a4c82a0014610a7c578063a9059cbb14610aa7576103a2565b80639a7a23d6116101b65780639a7a23d61461096a5780639c3b4fdc146109935780639ec22c0e146109be5780639fccce32146109e9576103a2565b80638ea5220f146108eb578063924de9b71461091657806395d89b411461093f576103a2565b80632e82f1a0116102c15780636ddd17131161025f578063751039fc1161022e578063751039fc146108435780637571336a1461086e5780638095d564146108975780638da5cb5b146108c0576103a2565b80636ddd17131461079b57806370a08231146107c6578063715018a614610803578063730c18881461081a576103a2565b806349bd5a5e1161029b57806349bd5a5e146106dd5780634a62bb65146107085780634fbee193146107335780636a486a8e14610770576103a2565b80632e82f1a01461064a578063313ce5671461067557806339509351146106a0576103a2565b8063199ffc721161033957806323b872dd1161030857806323b872dd146105a057806327c8f835146105dd578063293230b8146106085780632c3e486c1461061f576103a2565b8063199ffc72146104f65780631a8145bb146105215780631d7778561461054c578063203e727e14610577576103a2565b80631694505e116103755780631694505e1461044c57806318160ddd146104775780631816467f146104a2578063184c16c5146104cb576103a2565b806306fdde03146103a7578063095ea7b3146103d257806310d5de531461040f576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610e55565b6040516103c99190614aeb565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f491906143be565b610ee7565b6040516104069190614ab5565b60405180910390f35b34801561041b57600080fd5b5061043660048036038101906104319190614291565b610f05565b6040516104439190614ab5565b60405180910390f35b34801561045857600080fd5b50610461610f24565b60405161046e9190614ad0565b60405180910390f35b34801561048357600080fd5b5061048c610f48565b6040516104999190614e2d565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190614291565b610f52565b005b3480156104d757600080fd5b506104e061108e565b6040516104ed9190614e2d565b60405180910390f35b34801561050257600080fd5b5061050b611094565b6040516105189190614e2d565b60405180910390f35b34801561052d57600080fd5b5061053661109a565b6040516105439190614e2d565b60405180910390f35b34801561055857600080fd5b506105616110a0565b60405161056e9190614e2d565b60405180910390f35b34801561058357600080fd5b5061059e6004803603810190610599919061442b565b6110a6565b005b3480156105ac57600080fd5b506105c760048036038101906105c2919061432b565b6111b5565b6040516105d49190614ab5565b60405180910390f35b3480156105e957600080fd5b506105f26112ad565b6040516105ff9190614a39565b60405180910390f35b34801561061457600080fd5b5061061d6112b3565b005b34801561062b57600080fd5b5061063461136e565b6040516106419190614e2d565b60405180910390f35b34801561065657600080fd5b5061065f611374565b60405161066c9190614ab5565b60405180910390f35b34801561068157600080fd5b5061068a611387565b6040516106979190614ed9565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c291906143be565b611390565b6040516106d49190614ab5565b60405180910390f35b3480156106e957600080fd5b506106f261143c565b6040516106ff9190614a39565b60405180910390f35b34801561071457600080fd5b5061071d611462565b60405161072a9190614ab5565b60405180910390f35b34801561073f57600080fd5b5061075a60048036038101906107559190614291565b611475565b6040516107679190614ab5565b60405180910390f35b34801561077c57600080fd5b506107856114cb565b6040516107929190614e2d565b60405180910390f35b3480156107a757600080fd5b506107b06114d1565b6040516107bd9190614ab5565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190614291565b6114e4565b6040516107fa9190614e2d565b60405180910390f35b34801561080f57600080fd5b5061081861152c565b005b34801561082657600080fd5b50610841600480360381019061083c9190614485565b6115b4565b005b34801561084f57600080fd5b506108586116f4565b6040516108659190614ab5565b60405180910390f35b34801561087a57600080fd5b506108956004803603810190610890919061437e565b611794565b005b3480156108a357600080fd5b506108be60048036038101906108b991906144d8565b61186b565b005b3480156108cc57600080fd5b506108d561196a565b6040516108e29190614a39565b60405180910390f35b3480156108f757600080fd5b50610900611994565b60405161090d9190614a39565b60405180910390f35b34801561092257600080fd5b5061093d600480360381019061093891906143fe565b6119ba565b005b34801561094b57600080fd5b50610954611a53565b6040516109619190614aeb565b60405180910390f35b34801561097657600080fd5b50610991600480360381019061098c919061437e565b611ae5565b005b34801561099f57600080fd5b506109a8611c00565b6040516109b59190614e2d565b60405180910390f35b3480156109ca57600080fd5b506109d3611c06565b6040516109e09190614e2d565b60405180910390f35b3480156109f557600080fd5b506109fe611c0c565b604051610a0b9190614e2d565b60405180910390f35b348015610a2057600080fd5b50610a29611c12565b604051610a369190614e2d565b60405180910390f35b348015610a4b57600080fd5b50610a666004803603810190610a6191906143be565b611c18565b604051610a739190614ab5565b60405180910390f35b348015610a8857600080fd5b50610a91611d03565b604051610a9e9190614e2d565b60405180910390f35b348015610ab357600080fd5b50610ace6004803603810190610ac991906143be565b611d09565b604051610adb9190614ab5565b60405180910390f35b348015610af057600080fd5b50610af9611d27565b604051610b069190614e2d565b60405180910390f35b348015610b1b57600080fd5b50610b366004803603810190610b319190614291565b611d2d565b604051610b439190614ab5565b60405180910390f35b348015610b5857600080fd5b50610b61611d4d565b604051610b6e9190614ab5565b60405180910390f35b348015610b8357600080fd5b50610b9e6004803603810190610b99919061437e565b611d60565b005b348015610bac57600080fd5b50610bc76004803603810190610bc291906144d8565b611e85565b005b348015610bd557600080fd5b50610bf06004803603810190610beb919061442b565b611f84565b005b348015610bfe57600080fd5b50610c07612093565b604051610c149190614ab5565b60405180910390f35b348015610c2957600080fd5b50610c326120a6565b604051610c3f9190614e2d565b60405180910390f35b348015610c5457600080fd5b50610c6f6004803603810190610c6a919061442b565b6120ac565b604051610c7c9190614ab5565b60405180910390f35b348015610c9157600080fd5b50610c9a612201565b604051610ca79190614e2d565b60405180910390f35b348015610cbc57600080fd5b50610cd76004803603810190610cd291906142eb565b612207565b604051610ce49190614e2d565b60405180910390f35b348015610cf957600080fd5b50610d0261228e565b604051610d0f9190614e2d565b60405180910390f35b348015610d2457600080fd5b50610d2d612294565b604051610d3a9190614e2d565b60405180910390f35b348015610d4f57600080fd5b50610d5861229a565b604051610d659190614ab5565b60405180910390f35b348015610d7a57600080fd5b50610d8361233a565b604051610d909190614e2d565b60405180910390f35b348015610da557600080fd5b50610dc06004803603810190610dbb9190614291565b612340565b005b348015610dce57600080fd5b50610dd7612438565b604051610de49190614e2d565b60405180910390f35b348015610df957600080fd5b50610e0261243e565b604051610e0f9190614e2d565b60405180910390f35b348015610e2457600080fd5b50610e3f6004803603810190610e3a919061442b565b612444565b604051610e4c9190614ab5565b60405180910390f35b606060038054610e6490615139565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9090615139565b8015610edd5780601f10610eb257610100808354040283529160200191610edd565b820191906000526020600020905b815481529060010190602001808311610ec057829003601f168201915b5050505050905090565b6000610efb610ef4612731565b8484612739565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610f5a612731565b73ffffffffffffffffffffffffffffffffffffffff16610f7861196a565b73ffffffffffffffffffffffffffffffffffffffff1614610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc590614ced565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b5481565b601d5481565b601c5481565b6110ae612731565b73ffffffffffffffffffffffffffffffffffffffff166110cc61196a565b73ffffffffffffffffffffffffffffffffffffffff1614611122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111990614ced565b60405180910390fd5b670de0b6b3a76400006103e86001611138610f48565b6111429190614fdb565b61114c9190614faa565b6111569190614faa565b811015611198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118f90614e0d565b60405180910390fd5b670de0b6b3a7640000816111ac9190614fdb565b60088190555050565b60006111c2848484612904565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061120d612731565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561128d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128490614ccd565b60405180910390fd5b6112a185611299612731565b858403612739565b60019150509392505050565b61dead81565b6112bb612731565b73ffffffffffffffffffffffffffffffffffffffff166112d961196a565b73ffffffffffffffffffffffffffffffffffffffff161461132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132690614ced565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b600d5481565b600c60009054906101000a900460ff1681565b60006012905090565b600061143261139d612731565b8484600160006113ab612731565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461142d9190614f54565b612739565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160009054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611534612731565b73ffffffffffffffffffffffffffffffffffffffff1661155261196a565b73ffffffffffffffffffffffffffffffffffffffff16146115a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159f90614ced565b60405180910390fd5b6115b2600061369e565b565b6115bc612731565b73ffffffffffffffffffffffffffffffffffffffff166115da61196a565b73ffffffffffffffffffffffffffffffffffffffff1614611630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162790614ced565b60405180910390fd5b610258831015611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c90614b8d565b60405180910390fd5b6103e88211158015611688575060008210155b6116c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116be90614c2d565b60405180910390fd5b82600d8190555081600b8190555080600c60006101000a81548160ff021916908315150217905550505050565b60006116fe612731565b73ffffffffffffffffffffffffffffffffffffffff1661171c61196a565b73ffffffffffffffffffffffffffffffffffffffff1614611772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176990614ced565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b61179c612731565b73ffffffffffffffffffffffffffffffffffffffff166117ba61196a565b73ffffffffffffffffffffffffffffffffffffffff1614611810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180790614ced565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611873612731565b73ffffffffffffffffffffffffffffffffffffffff1661189161196a565b73ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de90614ced565b60405180910390fd5b82601581905550816016819055508060178190555060175460165460155461190f9190614f54565b6119199190614f54565b60148190555060056014541115611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c90614d0d565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119c2612731565b73ffffffffffffffffffffffffffffffffffffffff166119e061196a565b73ffffffffffffffffffffffffffffffffffffffff1614611a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2d90614ced565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b606060048054611a6290615139565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8e90615139565b8015611adb5780601f10611ab057610100808354040283529160200191611adb565b820191906000526020600020905b815481529060010190602001808311611abe57829003601f168201915b5050505050905090565b611aed612731565b73ffffffffffffffffffffffffffffffffffffffff16611b0b61196a565b73ffffffffffffffffffffffffffffffffffffffff1614611b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5890614ced565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be990614bcd565b60405180910390fd5b611bfc8282613764565b5050565b60175481565b60105481565b601e5481565b601b5481565b60008060016000611c27612731565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdb90614ded565b60405180910390fd5b611cf8611cef612731565b85858403612739565b600191505092915050565b600e5481565b6000611d1d611d16612731565b8484612904565b6001905092915050565b60195481565b60216020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611d68612731565b73ffffffffffffffffffffffffffffffffffffffff16611d8661196a565b73ffffffffffffffffffffffffffffffffffffffff1614611ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd390614ced565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e799190614ab5565b60405180910390a25050565b611e8d612731565b73ffffffffffffffffffffffffffffffffffffffff16611eab61196a565b73ffffffffffffffffffffffffffffffffffffffff1614611f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef890614ced565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a54601954611f299190614f54565b611f339190614f54565b60188190555060056018541115611f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7690614d2d565b60405180910390fd5b505050565b611f8c612731565b73ffffffffffffffffffffffffffffffffffffffff16611faa61196a565b73ffffffffffffffffffffffffffffffffffffffff1614612000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff790614ced565b60405180910390fd5b670de0b6b3a76400006103e86005612016610f48565b6120209190614fdb565b61202a9190614faa565b6120349190614faa565b811015612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90614bad565b60405180910390fd5b670de0b6b3a76400008161208a9190614fdb565b600a8190555050565b601360009054906101000a900460ff1681565b60085481565b60006120b6612731565b73ffffffffffffffffffffffffffffffffffffffff166120d461196a565b73ffffffffffffffffffffffffffffffffffffffff161461212a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212190614ced565b60405180910390fd5b620186a06001612138610f48565b6121429190614fdb565b61214c9190614faa565b82101561218e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218590614c4d565b60405180910390fd5b6103e8600561219b610f48565b6121a59190614fdb565b6121af9190614faa565b8211156121f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e890614c6d565b60405180910390fd5b8160098190555060019050919050565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60155481565b60006122a4612731565b73ffffffffffffffffffffffffffffffffffffffff166122c261196a565b73ffffffffffffffffffffffffffffffffffffffff1614612318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230f90614ced565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b60165481565b612348612731565b73ffffffffffffffffffffffffffffffffffffffff1661236661196a565b73ffffffffffffffffffffffffffffffffffffffff16146123bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b390614ced565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561242c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242390614b4d565b60405180910390fd5b6124358161369e565b50565b601a5481565b600a5481565b600061244e612731565b73ffffffffffffffffffffffffffffffffffffffff1661246c61196a565b73ffffffffffffffffffffffffffffffffffffffff16146124c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b990614ced565b60405180910390fd5b600f546010546124d29190614f54565b4211612513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250a90614d8d565b60405180910390fd5b6103e8821115612558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254f90614d4d565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016125bc9190614a39565b60206040518083038186803b1580156125d457600080fd5b505afa1580156125e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260c9190614458565b90506000612637612710612629868561380590919063ffffffff16565b61381b90919063ffffffff16565b9050600081111561267257612671600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83613831565b5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156126e157600080fd5b505af11580156126f5573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a090614dad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612819576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281090614b6d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128f79190614e2d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296b90614d6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129db90614b0d565b60405180910390fd5b60008114156129fe576129f983836000613831565b613699565b601160009054906101000a900460ff16156130c357612a1b61196a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a895750612a5961196a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ac25750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612afc575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b155750600660149054906101000a900460ff16155b156130c257601160019054906101000a900460ff16612c0f57601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bcf5750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0590614b2d565b60405180910390fd5b5b601360009054906101000a900460ff1615612dd957612c2c61196a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612cb357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d0d5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612dd85743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8a90614cad565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e7c5750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f2357600854811115612ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebd90614c8d565b60405180910390fd5b600a54612ed2836114e4565b82612edd9190614f54565b1115612f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1590614dcd565b60405180910390fd5b6130c1565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fc65750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561301557600854811115613010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300790614c0d565b60405180910390fd5b6130c0565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130bf57600a54613072836114e4565b8261307d9190614f54565b11156130be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b590614dcd565b60405180910390fd5b5b5b5b5b5b60006130ce306114e4565b9050600060095482101590508080156130f35750601160029054906101000a900460ff165b801561310c5750600660149054906101000a900460ff16155b80156131625750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131b85750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561320e5750601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613252576001600660146101000a81548160ff021916908315150217905550613236613ab2565b6000600660146101000a81548160ff0219169083151502179055505b600660149054906101000a900460ff161580156132b85750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156132d05750600c60009054906101000a900460ff165b80156132eb5750600d54600e546132e79190614f54565b4210155b80156133415750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133505761334e613cf6565b505b6000600660149054906101000a900460ff16159050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134065750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561341057600090505b6000811561368957602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561347357506000601854115b15613540576134a060646134926018548861380590919063ffffffff16565b61381b90919063ffffffff16565b9050601854601a54826134b39190614fdb565b6134bd9190614faa565b601d60008282546134ce9190614f54565b92505081905550601854601b54826134e69190614fdb565b6134f09190614faa565b601e60008282546135019190614f54565b92505081905550601854601954826135199190614fdb565b6135239190614faa565b601c60008282546135349190614f54565b92505081905550613665565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561359b57506000601454115b15613664576135c860646135ba6014548861380590919063ffffffff16565b61381b90919063ffffffff16565b9050601454601654826135db9190614fdb565b6135e59190614faa565b601d60008282546135f69190614f54565b925050819055506014546017548261360e9190614fdb565b6136189190614faa565b601e60008282546136299190614f54565b92505081905550601454601554826136419190614fdb565b61364b9190614faa565b601c600082825461365c9190614f54565b925050819055505b5b600081111561367a57613679873083613831565b5b80856136869190615035565b94505b613694878787613831565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600081836138139190614fdb565b905092915050565b600081836138299190614faa565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156138a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389890614d6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161390890614b0d565b60405180910390fd5b61391c838383613ed1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156139a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161399990614bed565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613a359190614f54565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a999190614e2d565b60405180910390a3613aac848484613ed6565b50505050565b6000613abd306114e4565b90506000601e54601d54613ad19190614f54565b9050600080831480613ae35750600082145b15613af057505050613cf4565b6014600954613aff9190614fdb565b831115613b18576014600954613b159190614fdb565b92505b6000600283601d5486613b2b9190614fdb565b613b359190614faa565b613b3f9190614faa565b90506000613b6a601c54613b5c8488613edb90919063ffffffff16565b613edb90919063ffffffff16565b90506000479050613b7a82613ef1565b6000613b8f8247613edb90919063ffffffff16565b90506000613bba87613bac601e548561380590919063ffffffff16565b61381b90919063ffffffff16565b905060008183613bca9190615035565b90506000601c541115613be757613be63061dead601c54613831565b5b6000601d819055506000601c819055506000601e81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613c4590614a24565b60006040518083038185875af1925050503d8060008114613c82576040519150601f19603f3d011682016040523d82523d6000602084013e613c87565b606091505b505080975050600086118015613c9d5750600081115b15613cea57613cac868261413d565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601d54604051613ce193929190614ea2565b60405180910390a15b5050505050505050505b565b600042600e8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613d5c9190614a39565b60206040518083038186803b158015613d7457600080fd5b505afa158015613d88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dac9190614458565b90506000613dd9612710613dcb600b548561380590919063ffffffff16565b61381b90919063ffffffff16565b90506000811115613e1457613e13600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83613831565b5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613e8357600080fd5b505af1158015613e97573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b60008183613ee99190615035565b905092915050565b6000600267ffffffffffffffff811115613f0e57613f0d615227565b5b604051908082528060200260200182016040528015613f3c5781602001602082028036833780820191505090505b5090503081600081518110613f5457613f536151f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613ff457600080fd5b505afa158015614008573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061402c91906142be565b816001815181106140405761403f6151f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140a5307f000000000000000000000000000000000000000000000000000000000000000084612739565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614107959493929190614e48565b600060405180830381600087803b15801561412157600080fd5b505af1158015614135573d6000803e3d6000fd5b505050505050565b614168307f000000000000000000000000000000000000000000000000000000000000000084612739565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016141cf96959493929190614a54565b6060604051808303818588803b1580156141e857600080fd5b505af11580156141fc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614221919061452b565b5050505050565b60008135905061423781615968565b92915050565b60008151905061424c81615968565b92915050565b6000813590506142618161597f565b92915050565b60008135905061427681615996565b92915050565b60008151905061428b81615996565b92915050565b6000602082840312156142a7576142a6615256565b5b60006142b584828501614228565b91505092915050565b6000602082840312156142d4576142d3615256565b5b60006142e28482850161423d565b91505092915050565b6000806040838503121561430257614301615256565b5b600061431085828601614228565b925050602061432185828601614228565b9150509250929050565b60008060006060848603121561434457614343615256565b5b600061435286828701614228565b935050602061436386828701614228565b925050604061437486828701614267565b9150509250925092565b6000806040838503121561439557614394615256565b5b60006143a385828601614228565b92505060206143b485828601614252565b9150509250929050565b600080604083850312156143d5576143d4615256565b5b60006143e385828601614228565b92505060206143f485828601614267565b9150509250929050565b60006020828403121561441457614413615256565b5b600061442284828501614252565b91505092915050565b60006020828403121561444157614440615256565b5b600061444f84828501614267565b91505092915050565b60006020828403121561446e5761446d615256565b5b600061447c8482850161427c565b91505092915050565b60008060006060848603121561449e5761449d615256565b5b60006144ac86828701614267565b93505060206144bd86828701614267565b92505060406144ce86828701614252565b9150509250925092565b6000806000606084860312156144f1576144f0615256565b5b60006144ff86828701614267565b935050602061451086828701614267565b925050604061452186828701614267565b9150509250925092565b60008060006060848603121561454457614543615256565b5b60006145528682870161427c565b93505060206145638682870161427c565b92505060406145748682870161427c565b9150509250925092565b600061458a8383614596565b60208301905092915050565b61459f81615069565b82525050565b6145ae81615069565b82525050565b60006145bf82614f04565b6145c98185614f27565b93506145d483614ef4565b8060005b838110156146055781516145ec888261457e565b97506145f783614f1a565b9250506001810190506145d8565b5085935050505092915050565b61461b8161507b565b82525050565b61462a816150be565b82525050565b614639816150d0565b82525050565b600061464a82614f0f565b6146548185614f43565b9350614664818560208601615106565b61466d8161525b565b840191505092915050565b6000614685602383614f43565b91506146908261526c565b604082019050919050565b60006146a8601683614f43565b91506146b3826152bb565b602082019050919050565b60006146cb602683614f43565b91506146d6826152e4565b604082019050919050565b60006146ee602283614f43565b91506146f982615333565b604082019050919050565b6000614711603383614f43565b915061471c82615382565b604082019050919050565b6000614734602483614f43565b915061473f826153d1565b604082019050919050565b6000614757603983614f43565b915061476282615420565b604082019050919050565b600061477a602683614f43565b91506147858261546f565b604082019050919050565b600061479d603683614f43565b91506147a8826154be565b604082019050919050565b60006147c0603083614f43565b91506147cb8261550d565b604082019050919050565b60006147e3603583614f43565b91506147ee8261555c565b604082019050919050565b6000614806603483614f43565b9150614811826155ab565b604082019050919050565b6000614829603583614f43565b9150614834826155fa565b604082019050919050565b600061484c604983614f43565b915061485782615649565b606082019050919050565b600061486f602883614f43565b915061487a826156be565b604082019050919050565b6000614892602083614f43565b915061489d8261570d565b602082019050919050565b60006148b5601c83614f43565b91506148c082615736565b602082019050919050565b60006148d8601d83614f43565b91506148e38261575f565b602082019050919050565b60006148fb602a83614f43565b915061490682615788565b604082019050919050565b600061491e602583614f43565b9150614929826157d7565b604082019050919050565b6000614941602083614f43565b915061494c82615826565b602082019050919050565b6000614964600083614f38565b915061496f8261584f565b600082019050919050565b6000614987602483614f43565b915061499282615852565b604082019050919050565b60006149aa601383614f43565b91506149b5826158a1565b602082019050919050565b60006149cd602583614f43565b91506149d8826158ca565b604082019050919050565b60006149f0602f83614f43565b91506149fb82615919565b604082019050919050565b614a0f816150a7565b82525050565b614a1e816150b1565b82525050565b6000614a2f82614957565b9150819050919050565b6000602082019050614a4e60008301846145a5565b92915050565b600060c082019050614a6960008301896145a5565b614a766020830188614a06565b614a836040830187614630565b614a906060830186614630565b614a9d60808301856145a5565b614aaa60a0830184614a06565b979650505050505050565b6000602082019050614aca6000830184614612565b92915050565b6000602082019050614ae56000830184614621565b92915050565b60006020820190508181036000830152614b05818461463f565b905092915050565b60006020820190508181036000830152614b2681614678565b9050919050565b60006020820190508181036000830152614b468161469b565b9050919050565b60006020820190508181036000830152614b66816146be565b9050919050565b60006020820190508181036000830152614b86816146e1565b9050919050565b60006020820190508181036000830152614ba681614704565b9050919050565b60006020820190508181036000830152614bc681614727565b9050919050565b60006020820190508181036000830152614be68161474a565b9050919050565b60006020820190508181036000830152614c068161476d565b9050919050565b60006020820190508181036000830152614c2681614790565b9050919050565b60006020820190508181036000830152614c46816147b3565b9050919050565b60006020820190508181036000830152614c66816147d6565b9050919050565b60006020820190508181036000830152614c86816147f9565b9050919050565b60006020820190508181036000830152614ca68161481c565b9050919050565b60006020820190508181036000830152614cc68161483f565b9050919050565b60006020820190508181036000830152614ce681614862565b9050919050565b60006020820190508181036000830152614d0681614885565b9050919050565b60006020820190508181036000830152614d26816148a8565b9050919050565b60006020820190508181036000830152614d46816148cb565b9050919050565b60006020820190508181036000830152614d66816148ee565b9050919050565b60006020820190508181036000830152614d8681614911565b9050919050565b60006020820190508181036000830152614da681614934565b9050919050565b60006020820190508181036000830152614dc68161497a565b9050919050565b60006020820190508181036000830152614de68161499d565b9050919050565b60006020820190508181036000830152614e06816149c0565b9050919050565b60006020820190508181036000830152614e26816149e3565b9050919050565b6000602082019050614e426000830184614a06565b92915050565b600060a082019050614e5d6000830188614a06565b614e6a6020830187614630565b8181036040830152614e7c81866145b4565b9050614e8b60608301856145a5565b614e986080830184614a06565b9695505050505050565b6000606082019050614eb76000830186614a06565b614ec46020830185614a06565b614ed16040830184614a06565b949350505050565b6000602082019050614eee6000830184614a15565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614f5f826150a7565b9150614f6a836150a7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f9f57614f9e61516b565b5b828201905092915050565b6000614fb5826150a7565b9150614fc0836150a7565b925082614fd057614fcf61519a565b5b828204905092915050565b6000614fe6826150a7565b9150614ff1836150a7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561502a5761502961516b565b5b828202905092915050565b6000615040826150a7565b915061504b836150a7565b92508282101561505e5761505d61516b565b5b828203905092915050565b600061507482615087565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006150c9826150e2565b9050919050565b60006150db826150a7565b9050919050565b60006150ed826150f4565b9050919050565b60006150ff82615087565b9050919050565b60005b83811015615124578082015181840152602081019050615109565b83811115615133576000848401525b50505050565b6000600282049050600182168061515157607f821691505b60208210811415615165576151646151c9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b7f4d757374206b656570206665657320617420203525206f72206c657373000000600082015250565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b61597181615069565b811461597c57600080fd5b50565b6159888161507b565b811461599357600080fd5b50565b61599f816150a7565b81146159aa57600080fd5b5056fea2646970667358221220bcc084e42be7fc19361ab09529edb04bc11b4af57169ed60393ce67f8447ed7364736f6c63430008070033

Deployed Bytecode

0x60806040526004361061039b5760003560e01c80638ea5220f116101dc578063c17b5b8c11610102578063e2f45605116100a0578063f2fde38b1161006f578063f2fde38b14610d99578063f637434214610dc2578063f8b45b0514610ded578063fe72b27a14610e18576103a2565b8063e2f4560514610ced578063e71dc3f514610d18578063e884f26014610d43578063f11a24d314610d6e576103a2565b8063c8c8ebe4116100dc578063c8c8ebe414610c1d578063d257b34f14610c48578063d85ba06314610c85578063dd62ed3e14610cb0576103a2565b8063c17b5b8c14610ba0578063c18bc19514610bc9578063c876d0b914610bf2576103a2565b8063a0d82dc51161017a578063adb873bd11610149578063adb873bd14610ae4578063b62496f514610b0f578063bbc0c74214610b4c578063c024666814610b77576103a2565b8063a0d82dc514610a14578063a457c2d714610a3f578063a4c82a0014610a7c578063a9059cbb14610aa7576103a2565b80639a7a23d6116101b65780639a7a23d61461096a5780639c3b4fdc146109935780639ec22c0e146109be5780639fccce32146109e9576103a2565b80638ea5220f146108eb578063924de9b71461091657806395d89b411461093f576103a2565b80632e82f1a0116102c15780636ddd17131161025f578063751039fc1161022e578063751039fc146108435780637571336a1461086e5780638095d564146108975780638da5cb5b146108c0576103a2565b80636ddd17131461079b57806370a08231146107c6578063715018a614610803578063730c18881461081a576103a2565b806349bd5a5e1161029b57806349bd5a5e146106dd5780634a62bb65146107085780634fbee193146107335780636a486a8e14610770576103a2565b80632e82f1a01461064a578063313ce5671461067557806339509351146106a0576103a2565b8063199ffc721161033957806323b872dd1161030857806323b872dd146105a057806327c8f835146105dd578063293230b8146106085780632c3e486c1461061f576103a2565b8063199ffc72146104f65780631a8145bb146105215780631d7778561461054c578063203e727e14610577576103a2565b80631694505e116103755780631694505e1461044c57806318160ddd146104775780631816467f146104a2578063184c16c5146104cb576103a2565b806306fdde03146103a7578063095ea7b3146103d257806310d5de531461040f576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610e55565b6040516103c99190614aeb565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f491906143be565b610ee7565b6040516104069190614ab5565b60405180910390f35b34801561041b57600080fd5b5061043660048036038101906104319190614291565b610f05565b6040516104439190614ab5565b60405180910390f35b34801561045857600080fd5b50610461610f24565b60405161046e9190614ad0565b60405180910390f35b34801561048357600080fd5b5061048c610f48565b6040516104999190614e2d565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190614291565b610f52565b005b3480156104d757600080fd5b506104e061108e565b6040516104ed9190614e2d565b60405180910390f35b34801561050257600080fd5b5061050b611094565b6040516105189190614e2d565b60405180910390f35b34801561052d57600080fd5b5061053661109a565b6040516105439190614e2d565b60405180910390f35b34801561055857600080fd5b506105616110a0565b60405161056e9190614e2d565b60405180910390f35b34801561058357600080fd5b5061059e6004803603810190610599919061442b565b6110a6565b005b3480156105ac57600080fd5b506105c760048036038101906105c2919061432b565b6111b5565b6040516105d49190614ab5565b60405180910390f35b3480156105e957600080fd5b506105f26112ad565b6040516105ff9190614a39565b60405180910390f35b34801561061457600080fd5b5061061d6112b3565b005b34801561062b57600080fd5b5061063461136e565b6040516106419190614e2d565b60405180910390f35b34801561065657600080fd5b5061065f611374565b60405161066c9190614ab5565b60405180910390f35b34801561068157600080fd5b5061068a611387565b6040516106979190614ed9565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c291906143be565b611390565b6040516106d49190614ab5565b60405180910390f35b3480156106e957600080fd5b506106f261143c565b6040516106ff9190614a39565b60405180910390f35b34801561071457600080fd5b5061071d611462565b60405161072a9190614ab5565b60405180910390f35b34801561073f57600080fd5b5061075a60048036038101906107559190614291565b611475565b6040516107679190614ab5565b60405180910390f35b34801561077c57600080fd5b506107856114cb565b6040516107929190614e2d565b60405180910390f35b3480156107a757600080fd5b506107b06114d1565b6040516107bd9190614ab5565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190614291565b6114e4565b6040516107fa9190614e2d565b60405180910390f35b34801561080f57600080fd5b5061081861152c565b005b34801561082657600080fd5b50610841600480360381019061083c9190614485565b6115b4565b005b34801561084f57600080fd5b506108586116f4565b6040516108659190614ab5565b60405180910390f35b34801561087a57600080fd5b506108956004803603810190610890919061437e565b611794565b005b3480156108a357600080fd5b506108be60048036038101906108b991906144d8565b61186b565b005b3480156108cc57600080fd5b506108d561196a565b6040516108e29190614a39565b60405180910390f35b3480156108f757600080fd5b50610900611994565b60405161090d9190614a39565b60405180910390f35b34801561092257600080fd5b5061093d600480360381019061093891906143fe565b6119ba565b005b34801561094b57600080fd5b50610954611a53565b6040516109619190614aeb565b60405180910390f35b34801561097657600080fd5b50610991600480360381019061098c919061437e565b611ae5565b005b34801561099f57600080fd5b506109a8611c00565b6040516109b59190614e2d565b60405180910390f35b3480156109ca57600080fd5b506109d3611c06565b6040516109e09190614e2d565b60405180910390f35b3480156109f557600080fd5b506109fe611c0c565b604051610a0b9190614e2d565b60405180910390f35b348015610a2057600080fd5b50610a29611c12565b604051610a369190614e2d565b60405180910390f35b348015610a4b57600080fd5b50610a666004803603810190610a6191906143be565b611c18565b604051610a739190614ab5565b60405180910390f35b348015610a8857600080fd5b50610a91611d03565b604051610a9e9190614e2d565b60405180910390f35b348015610ab357600080fd5b50610ace6004803603810190610ac991906143be565b611d09565b604051610adb9190614ab5565b60405180910390f35b348015610af057600080fd5b50610af9611d27565b604051610b069190614e2d565b60405180910390f35b348015610b1b57600080fd5b50610b366004803603810190610b319190614291565b611d2d565b604051610b439190614ab5565b60405180910390f35b348015610b5857600080fd5b50610b61611d4d565b604051610b6e9190614ab5565b60405180910390f35b348015610b8357600080fd5b50610b9e6004803603810190610b99919061437e565b611d60565b005b348015610bac57600080fd5b50610bc76004803603810190610bc291906144d8565b611e85565b005b348015610bd557600080fd5b50610bf06004803603810190610beb919061442b565b611f84565b005b348015610bfe57600080fd5b50610c07612093565b604051610c149190614ab5565b60405180910390f35b348015610c2957600080fd5b50610c326120a6565b604051610c3f9190614e2d565b60405180910390f35b348015610c5457600080fd5b50610c6f6004803603810190610c6a919061442b565b6120ac565b604051610c7c9190614ab5565b60405180910390f35b348015610c9157600080fd5b50610c9a612201565b604051610ca79190614e2d565b60405180910390f35b348015610cbc57600080fd5b50610cd76004803603810190610cd291906142eb565b612207565b604051610ce49190614e2d565b60405180910390f35b348015610cf957600080fd5b50610d0261228e565b604051610d0f9190614e2d565b60405180910390f35b348015610d2457600080fd5b50610d2d612294565b604051610d3a9190614e2d565b60405180910390f35b348015610d4f57600080fd5b50610d5861229a565b604051610d659190614ab5565b60405180910390f35b348015610d7a57600080fd5b50610d8361233a565b604051610d909190614e2d565b60405180910390f35b348015610da557600080fd5b50610dc06004803603810190610dbb9190614291565b612340565b005b348015610dce57600080fd5b50610dd7612438565b604051610de49190614e2d565b60405180910390f35b348015610df957600080fd5b50610e0261243e565b604051610e0f9190614e2d565b60405180910390f35b348015610e2457600080fd5b50610e3f6004803603810190610e3a919061442b565b612444565b604051610e4c9190614ab5565b60405180910390f35b606060038054610e6490615139565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9090615139565b8015610edd5780601f10610eb257610100808354040283529160200191610edd565b820191906000526020600020905b815481529060010190602001808311610ec057829003601f168201915b5050505050905090565b6000610efb610ef4612731565b8484612739565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610f5a612731565b73ffffffffffffffffffffffffffffffffffffffff16610f7861196a565b73ffffffffffffffffffffffffffffffffffffffff1614610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc590614ced565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b5481565b601d5481565b601c5481565b6110ae612731565b73ffffffffffffffffffffffffffffffffffffffff166110cc61196a565b73ffffffffffffffffffffffffffffffffffffffff1614611122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111990614ced565b60405180910390fd5b670de0b6b3a76400006103e86001611138610f48565b6111429190614fdb565b61114c9190614faa565b6111569190614faa565b811015611198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118f90614e0d565b60405180910390fd5b670de0b6b3a7640000816111ac9190614fdb565b60088190555050565b60006111c2848484612904565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061120d612731565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561128d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128490614ccd565b60405180910390fd5b6112a185611299612731565b858403612739565b60019150509392505050565b61dead81565b6112bb612731565b73ffffffffffffffffffffffffffffffffffffffff166112d961196a565b73ffffffffffffffffffffffffffffffffffffffff161461132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132690614ced565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b600d5481565b600c60009054906101000a900460ff1681565b60006012905090565b600061143261139d612731565b8484600160006113ab612731565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461142d9190614f54565b612739565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160009054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611534612731565b73ffffffffffffffffffffffffffffffffffffffff1661155261196a565b73ffffffffffffffffffffffffffffffffffffffff16146115a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159f90614ced565b60405180910390fd5b6115b2600061369e565b565b6115bc612731565b73ffffffffffffffffffffffffffffffffffffffff166115da61196a565b73ffffffffffffffffffffffffffffffffffffffff1614611630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162790614ced565b60405180910390fd5b610258831015611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c90614b8d565b60405180910390fd5b6103e88211158015611688575060008210155b6116c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116be90614c2d565b60405180910390fd5b82600d8190555081600b8190555080600c60006101000a81548160ff021916908315150217905550505050565b60006116fe612731565b73ffffffffffffffffffffffffffffffffffffffff1661171c61196a565b73ffffffffffffffffffffffffffffffffffffffff1614611772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176990614ced565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b61179c612731565b73ffffffffffffffffffffffffffffffffffffffff166117ba61196a565b73ffffffffffffffffffffffffffffffffffffffff1614611810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180790614ced565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611873612731565b73ffffffffffffffffffffffffffffffffffffffff1661189161196a565b73ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de90614ced565b60405180910390fd5b82601581905550816016819055508060178190555060175460165460155461190f9190614f54565b6119199190614f54565b60148190555060056014541115611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c90614d0d565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119c2612731565b73ffffffffffffffffffffffffffffffffffffffff166119e061196a565b73ffffffffffffffffffffffffffffffffffffffff1614611a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2d90614ced565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b606060048054611a6290615139565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8e90615139565b8015611adb5780601f10611ab057610100808354040283529160200191611adb565b820191906000526020600020905b815481529060010190602001808311611abe57829003601f168201915b5050505050905090565b611aed612731565b73ffffffffffffffffffffffffffffffffffffffff16611b0b61196a565b73ffffffffffffffffffffffffffffffffffffffff1614611b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5890614ced565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be990614bcd565b60405180910390fd5b611bfc8282613764565b5050565b60175481565b60105481565b601e5481565b601b5481565b60008060016000611c27612731565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdb90614ded565b60405180910390fd5b611cf8611cef612731565b85858403612739565b600191505092915050565b600e5481565b6000611d1d611d16612731565b8484612904565b6001905092915050565b60195481565b60216020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611d68612731565b73ffffffffffffffffffffffffffffffffffffffff16611d8661196a565b73ffffffffffffffffffffffffffffffffffffffff1614611ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd390614ced565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e799190614ab5565b60405180910390a25050565b611e8d612731565b73ffffffffffffffffffffffffffffffffffffffff16611eab61196a565b73ffffffffffffffffffffffffffffffffffffffff1614611f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef890614ced565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a54601954611f299190614f54565b611f339190614f54565b60188190555060056018541115611f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7690614d2d565b60405180910390fd5b505050565b611f8c612731565b73ffffffffffffffffffffffffffffffffffffffff16611faa61196a565b73ffffffffffffffffffffffffffffffffffffffff1614612000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff790614ced565b60405180910390fd5b670de0b6b3a76400006103e86005612016610f48565b6120209190614fdb565b61202a9190614faa565b6120349190614faa565b811015612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90614bad565b60405180910390fd5b670de0b6b3a76400008161208a9190614fdb565b600a8190555050565b601360009054906101000a900460ff1681565b60085481565b60006120b6612731565b73ffffffffffffffffffffffffffffffffffffffff166120d461196a565b73ffffffffffffffffffffffffffffffffffffffff161461212a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212190614ced565b60405180910390fd5b620186a06001612138610f48565b6121429190614fdb565b61214c9190614faa565b82101561218e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218590614c4d565b60405180910390fd5b6103e8600561219b610f48565b6121a59190614fdb565b6121af9190614faa565b8211156121f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e890614c6d565b60405180910390fd5b8160098190555060019050919050565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60155481565b60006122a4612731565b73ffffffffffffffffffffffffffffffffffffffff166122c261196a565b73ffffffffffffffffffffffffffffffffffffffff1614612318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230f90614ced565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b60165481565b612348612731565b73ffffffffffffffffffffffffffffffffffffffff1661236661196a565b73ffffffffffffffffffffffffffffffffffffffff16146123bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b390614ced565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561242c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242390614b4d565b60405180910390fd5b6124358161369e565b50565b601a5481565b600a5481565b600061244e612731565b73ffffffffffffffffffffffffffffffffffffffff1661246c61196a565b73ffffffffffffffffffffffffffffffffffffffff16146124c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b990614ced565b60405180910390fd5b600f546010546124d29190614f54565b4211612513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250a90614d8d565b60405180910390fd5b6103e8821115612558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254f90614d4d565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016125bc9190614a39565b60206040518083038186803b1580156125d457600080fd5b505afa1580156125e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260c9190614458565b90506000612637612710612629868561380590919063ffffffff16565b61381b90919063ffffffff16565b9050600081111561267257612671600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83613831565b5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156126e157600080fd5b505af11580156126f5573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a090614dad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612819576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281090614b6d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128f79190614e2d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296b90614d6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129db90614b0d565b60405180910390fd5b60008114156129fe576129f983836000613831565b613699565b601160009054906101000a900460ff16156130c357612a1b61196a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a895750612a5961196a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ac25750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612afc575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b155750600660149054906101000a900460ff16155b156130c257601160019054906101000a900460ff16612c0f57601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bcf5750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0590614b2d565b60405180910390fd5b5b601360009054906101000a900460ff1615612dd957612c2c61196a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612cb357507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d0d5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612dd85743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8a90614cad565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e7c5750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f2357600854811115612ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebd90614c8d565b60405180910390fd5b600a54612ed2836114e4565b82612edd9190614f54565b1115612f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1590614dcd565b60405180910390fd5b6130c1565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fc65750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561301557600854811115613010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300790614c0d565b60405180910390fd5b6130c0565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130bf57600a54613072836114e4565b8261307d9190614f54565b11156130be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b590614dcd565b60405180910390fd5b5b5b5b5b5b60006130ce306114e4565b9050600060095482101590508080156130f35750601160029054906101000a900460ff165b801561310c5750600660149054906101000a900460ff16155b80156131625750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131b85750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561320e5750601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613252576001600660146101000a81548160ff021916908315150217905550613236613ab2565b6000600660146101000a81548160ff0219169083151502179055505b600660149054906101000a900460ff161580156132b85750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156132d05750600c60009054906101000a900460ff165b80156132eb5750600d54600e546132e79190614f54565b4210155b80156133415750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133505761334e613cf6565b505b6000600660149054906101000a900460ff16159050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134065750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561341057600090505b6000811561368957602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561347357506000601854115b15613540576134a060646134926018548861380590919063ffffffff16565b61381b90919063ffffffff16565b9050601854601a54826134b39190614fdb565b6134bd9190614faa565b601d60008282546134ce9190614f54565b92505081905550601854601b54826134e69190614fdb565b6134f09190614faa565b601e60008282546135019190614f54565b92505081905550601854601954826135199190614fdb565b6135239190614faa565b601c60008282546135349190614f54565b92505081905550613665565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561359b57506000601454115b15613664576135c860646135ba6014548861380590919063ffffffff16565b61381b90919063ffffffff16565b9050601454601654826135db9190614fdb565b6135e59190614faa565b601d60008282546135f69190614f54565b925050819055506014546017548261360e9190614fdb565b6136189190614faa565b601e60008282546136299190614f54565b92505081905550601454601554826136419190614fdb565b61364b9190614faa565b601c600082825461365c9190614f54565b925050819055505b5b600081111561367a57613679873083613831565b5b80856136869190615035565b94505b613694878787613831565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600081836138139190614fdb565b905092915050565b600081836138299190614faa565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156138a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389890614d6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161390890614b0d565b60405180910390fd5b61391c838383613ed1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156139a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161399990614bed565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613a359190614f54565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a999190614e2d565b60405180910390a3613aac848484613ed6565b50505050565b6000613abd306114e4565b90506000601e54601d54613ad19190614f54565b9050600080831480613ae35750600082145b15613af057505050613cf4565b6014600954613aff9190614fdb565b831115613b18576014600954613b159190614fdb565b92505b6000600283601d5486613b2b9190614fdb565b613b359190614faa565b613b3f9190614faa565b90506000613b6a601c54613b5c8488613edb90919063ffffffff16565b613edb90919063ffffffff16565b90506000479050613b7a82613ef1565b6000613b8f8247613edb90919063ffffffff16565b90506000613bba87613bac601e548561380590919063ffffffff16565b61381b90919063ffffffff16565b905060008183613bca9190615035565b90506000601c541115613be757613be63061dead601c54613831565b5b6000601d819055506000601c819055506000601e81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613c4590614a24565b60006040518083038185875af1925050503d8060008114613c82576040519150601f19603f3d011682016040523d82523d6000602084013e613c87565b606091505b505080975050600086118015613c9d5750600081115b15613cea57613cac868261413d565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601d54604051613ce193929190614ea2565b60405180910390a15b5050505050505050505b565b600042600e8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613d5c9190614a39565b60206040518083038186803b158015613d7457600080fd5b505afa158015613d88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dac9190614458565b90506000613dd9612710613dcb600b548561380590919063ffffffff16565b61381b90919063ffffffff16565b90506000811115613e1457613e13600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83613831565b5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613e8357600080fd5b505af1158015613e97573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b60008183613ee99190615035565b905092915050565b6000600267ffffffffffffffff811115613f0e57613f0d615227565b5b604051908082528060200260200182016040528015613f3c5781602001602082028036833780820191505090505b5090503081600081518110613f5457613f536151f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613ff457600080fd5b505afa158015614008573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061402c91906142be565b816001815181106140405761403f6151f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140a5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612739565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614107959493929190614e48565b600060405180830381600087803b15801561412157600080fd5b505af1158015614135573d6000803e3d6000fd5b505050505050565b614168307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612739565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016141cf96959493929190614a54565b6060604051808303818588803b1580156141e857600080fd5b505af11580156141fc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614221919061452b565b5050505050565b60008135905061423781615968565b92915050565b60008151905061424c81615968565b92915050565b6000813590506142618161597f565b92915050565b60008135905061427681615996565b92915050565b60008151905061428b81615996565b92915050565b6000602082840312156142a7576142a6615256565b5b60006142b584828501614228565b91505092915050565b6000602082840312156142d4576142d3615256565b5b60006142e28482850161423d565b91505092915050565b6000806040838503121561430257614301615256565b5b600061431085828601614228565b925050602061432185828601614228565b9150509250929050565b60008060006060848603121561434457614343615256565b5b600061435286828701614228565b935050602061436386828701614228565b925050604061437486828701614267565b9150509250925092565b6000806040838503121561439557614394615256565b5b60006143a385828601614228565b92505060206143b485828601614252565b9150509250929050565b600080604083850312156143d5576143d4615256565b5b60006143e385828601614228565b92505060206143f485828601614267565b9150509250929050565b60006020828403121561441457614413615256565b5b600061442284828501614252565b91505092915050565b60006020828403121561444157614440615256565b5b600061444f84828501614267565b91505092915050565b60006020828403121561446e5761446d615256565b5b600061447c8482850161427c565b91505092915050565b60008060006060848603121561449e5761449d615256565b5b60006144ac86828701614267565b93505060206144bd86828701614267565b92505060406144ce86828701614252565b9150509250925092565b6000806000606084860312156144f1576144f0615256565b5b60006144ff86828701614267565b935050602061451086828701614267565b925050604061452186828701614267565b9150509250925092565b60008060006060848603121561454457614543615256565b5b60006145528682870161427c565b93505060206145638682870161427c565b92505060406145748682870161427c565b9150509250925092565b600061458a8383614596565b60208301905092915050565b61459f81615069565b82525050565b6145ae81615069565b82525050565b60006145bf82614f04565b6145c98185614f27565b93506145d483614ef4565b8060005b838110156146055781516145ec888261457e565b97506145f783614f1a565b9250506001810190506145d8565b5085935050505092915050565b61461b8161507b565b82525050565b61462a816150be565b82525050565b614639816150d0565b82525050565b600061464a82614f0f565b6146548185614f43565b9350614664818560208601615106565b61466d8161525b565b840191505092915050565b6000614685602383614f43565b91506146908261526c565b604082019050919050565b60006146a8601683614f43565b91506146b3826152bb565b602082019050919050565b60006146cb602683614f43565b91506146d6826152e4565b604082019050919050565b60006146ee602283614f43565b91506146f982615333565b604082019050919050565b6000614711603383614f43565b915061471c82615382565b604082019050919050565b6000614734602483614f43565b915061473f826153d1565b604082019050919050565b6000614757603983614f43565b915061476282615420565b604082019050919050565b600061477a602683614f43565b91506147858261546f565b604082019050919050565b600061479d603683614f43565b91506147a8826154be565b604082019050919050565b60006147c0603083614f43565b91506147cb8261550d565b604082019050919050565b60006147e3603583614f43565b91506147ee8261555c565b604082019050919050565b6000614806603483614f43565b9150614811826155ab565b604082019050919050565b6000614829603583614f43565b9150614834826155fa565b604082019050919050565b600061484c604983614f43565b915061485782615649565b606082019050919050565b600061486f602883614f43565b915061487a826156be565b604082019050919050565b6000614892602083614f43565b915061489d8261570d565b602082019050919050565b60006148b5601c83614f43565b91506148c082615736565b602082019050919050565b60006148d8601d83614f43565b91506148e38261575f565b602082019050919050565b60006148fb602a83614f43565b915061490682615788565b604082019050919050565b600061491e602583614f43565b9150614929826157d7565b604082019050919050565b6000614941602083614f43565b915061494c82615826565b602082019050919050565b6000614964600083614f38565b915061496f8261584f565b600082019050919050565b6000614987602483614f43565b915061499282615852565b604082019050919050565b60006149aa601383614f43565b91506149b5826158a1565b602082019050919050565b60006149cd602583614f43565b91506149d8826158ca565b604082019050919050565b60006149f0602f83614f43565b91506149fb82615919565b604082019050919050565b614a0f816150a7565b82525050565b614a1e816150b1565b82525050565b6000614a2f82614957565b9150819050919050565b6000602082019050614a4e60008301846145a5565b92915050565b600060c082019050614a6960008301896145a5565b614a766020830188614a06565b614a836040830187614630565b614a906060830186614630565b614a9d60808301856145a5565b614aaa60a0830184614a06565b979650505050505050565b6000602082019050614aca6000830184614612565b92915050565b6000602082019050614ae56000830184614621565b92915050565b60006020820190508181036000830152614b05818461463f565b905092915050565b60006020820190508181036000830152614b2681614678565b9050919050565b60006020820190508181036000830152614b468161469b565b9050919050565b60006020820190508181036000830152614b66816146be565b9050919050565b60006020820190508181036000830152614b86816146e1565b9050919050565b60006020820190508181036000830152614ba681614704565b9050919050565b60006020820190508181036000830152614bc681614727565b9050919050565b60006020820190508181036000830152614be68161474a565b9050919050565b60006020820190508181036000830152614c068161476d565b9050919050565b60006020820190508181036000830152614c2681614790565b9050919050565b60006020820190508181036000830152614c46816147b3565b9050919050565b60006020820190508181036000830152614c66816147d6565b9050919050565b60006020820190508181036000830152614c86816147f9565b9050919050565b60006020820190508181036000830152614ca68161481c565b9050919050565b60006020820190508181036000830152614cc68161483f565b9050919050565b60006020820190508181036000830152614ce681614862565b9050919050565b60006020820190508181036000830152614d0681614885565b9050919050565b60006020820190508181036000830152614d26816148a8565b9050919050565b60006020820190508181036000830152614d46816148cb565b9050919050565b60006020820190508181036000830152614d66816148ee565b9050919050565b60006020820190508181036000830152614d8681614911565b9050919050565b60006020820190508181036000830152614da681614934565b9050919050565b60006020820190508181036000830152614dc68161497a565b9050919050565b60006020820190508181036000830152614de68161499d565b9050919050565b60006020820190508181036000830152614e06816149c0565b9050919050565b60006020820190508181036000830152614e26816149e3565b9050919050565b6000602082019050614e426000830184614a06565b92915050565b600060a082019050614e5d6000830188614a06565b614e6a6020830187614630565b8181036040830152614e7c81866145b4565b9050614e8b60608301856145a5565b614e986080830184614a06565b9695505050505050565b6000606082019050614eb76000830186614a06565b614ec46020830185614a06565b614ed16040830184614a06565b949350505050565b6000602082019050614eee6000830184614a15565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614f5f826150a7565b9150614f6a836150a7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f9f57614f9e61516b565b5b828201905092915050565b6000614fb5826150a7565b9150614fc0836150a7565b925082614fd057614fcf61519a565b5b828204905092915050565b6000614fe6826150a7565b9150614ff1836150a7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561502a5761502961516b565b5b828202905092915050565b6000615040826150a7565b915061504b836150a7565b92508282101561505e5761505d61516b565b5b828203905092915050565b600061507482615087565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006150c9826150e2565b9050919050565b60006150db826150a7565b9050919050565b60006150ed826150f4565b9050919050565b60006150ff82615087565b9050919050565b60005b83811015615124578082015181840152602081019050615109565b83811115615133576000848401525b50505050565b6000600282049050600182168061515157607f821691505b60208210811415615165576151646151c9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b7f4d757374206b656570206665657320617420203525206f72206c657373000000600082015250565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b61597181615069565b811461597c57600080fd5b50565b6159888161507b565b811461599357600080fd5b50565b61599f816150a7565b81146159aa57600080fd5b5056fea2646970667358221220bcc084e42be7fc19361ab09529edb04bc11b4af57169ed60393ce67f8447ed7364736f6c63430008070033

Deployed Bytecode Sourcemap

27132:18246:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9728:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12036:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28729:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27208:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10848:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34925:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27726:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27541:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28513:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28478:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32521:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12728:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27301:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31423:154;;;;;;;;;;;;;:::i;:::-;;27636:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27597:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10690:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13666:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27266:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27824:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35090:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28322:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27904:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11019:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3524:103;;;;;;;;;;;;;:::i;:::-;;42960:555;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31629:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33068:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33439:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2873:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27393:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33331:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9947:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34417:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28284:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27780:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28553:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28439:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14466:482;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27688:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11409:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28358:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28950:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27864:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34227:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33828:391;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32804:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28122:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27426:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32016:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28170:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11688:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27468:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28205:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31811:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28242:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3782:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28396:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27508:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44319:1056;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9728:100;9782:13;9815:5;9808:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9728:100;:::o;12036:210::-;12155:4;12177:39;12186:12;:10;:12::i;:::-;12200:7;12209:6;12177:8;:39::i;:::-;12234:4;12227:11;;12036:210;;;;:::o;28729:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;27208:51::-;;;:::o;10848:108::-;10909:7;10936:12;;10929:19;;10848:108;:::o;34925:157::-;3104:12;:10;:12::i;:::-;3093:23;;:7;:5;:7::i;:::-;:23;;;3085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35032:9:::1;;;;;;;;;;;35004:38;;35021:9;35004:38;;;;;;;;;;;;35065:9;35053;;:21;;;;;;;;;;;;;;;;;;34925:157:::0;:::o;27726:47::-;;;;:::o;27541:36::-;;;;:::o;28513:33::-;;;;:::o;28478:28::-;;;;:::o;32521:275::-;3104:12;:10;:12::i;:::-;3093:23;;:7;:5;:7::i;:::-;:23;;;3085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32658:4:::1;32650;32645:1;32629:13;:11;:13::i;:::-;:17;;;;:::i;:::-;32628:26;;;;:::i;:::-;32627:35;;;;:::i;:::-;32617:6;:45;;32595:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;32781:6;32771;:17;;;;:::i;:::-;32748:20;:40;;;;32521:275:::0;:::o;12728:529::-;12868:4;12885:36;12895:6;12903:9;12914:6;12885:9;:36::i;:::-;12934:24;12961:11;:19;12973:6;12961:19;;;;;;;;;;;;;;;:33;12981:12;:10;:12::i;:::-;12961:33;;;;;;;;;;;;;;;;12934:60;;13047:6;13027:16;:26;;13005:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;13157:57;13166:6;13174:12;:10;:12::i;:::-;13207:6;13188:16;:25;13157:8;:57::i;:::-;13245:4;13238:11;;;12728:529;;;;;:::o;27301:53::-;27347:6;27301:53;:::o;31423:154::-;3104:12;:10;:12::i;:::-;3093:23;;:7;:5;:7::i;:::-;:23;;;3085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31493:4:::1;31477:13;;:20;;;;;;;;;;;;;;;;;;31522:4;31508:11;;:18;;;;;;;;;;;;;;;;;;31554:15;31537:14;:32;;;;31423:154::o:0;27636:45::-;;;;:::o;27597:32::-;;;;;;;;;;;;;:::o;10690:93::-;10748:5;10773:2;10766:9;;10690:93;:::o;13666:297::-;13781:4;13803:130;13826:12;:10;:12::i;:::-;13853:7;13912:10;13875:11;:25;13887:12;:10;:12::i;:::-;13875:25;;;;;;;;;;;;;;;:34;13901:7;13875:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13803:8;:130::i;:::-;13951:4;13944:11;;13666:297;;;;:::o;27266:28::-;;;;;;;;;;;;;:::o;27824:33::-;;;;;;;;;;;;;:::o;35090:126::-;35156:4;35180:19;:28;35200:7;35180:28;;;;;;;;;;;;;;;;;;;;;;;;;35173:35;;35090:126;;;:::o;28322:29::-;;;;:::o;27904:31::-;;;;;;;;;;;;;:::o;11019:177::-;11138:7;11170:9;:18;11180:7;11170:18;;;;;;;;;;;;;;;;11163:25;;11019:177;;;:::o;3524:103::-;3104:12;:10;:12::i;:::-;3093:23;;:7;:5;:7::i;:::-;:23;;;3085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3589:30:::1;3616:1;3589:18;:30::i;:::-;3524:103::o:0;42960:555::-;3104:12;:10;:12::i;:::-;3093:23;;:7;:5;:7::i;:::-;:23;;;3085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43162:3:::1;43139:19;:26;;43117:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;43289:4;43277:8;:16;;:33;;;;;43309:1;43297:8;:13;;43277:33;43255:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;43415:19;43397:15;:37;;;;43464:8;43445:16;:27;;;;43499:8;43483:13;;:24;;;;;;;;;;;;;;;;;;42960:555:::0;;;:::o;31629:121::-;31681:4;3104:12;:10;:12::i;:::-;3093:23;;:7;:5;:7::i;:::-;:23;;;3085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31715:5:::1;31698:14;;:22;;;;;;;;;;;;;;;;;;31738:4;31731:11;;31629:121:::0;:::o;33068:167::-;3104:12;:10;:12::i;:::-;3093:23;;:7;:5;:7::i;:::-;:23;;;3085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33223:4:::1;33181:31;:39;33213:6;33181:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;33068:167:::0;;:::o;33439:381::-;3104:12;:10;:12::i;:::-;3093:23;;:7;:5;:7::i;:::-;:23;;;3085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33597:8:::1;33584:10;:21;;;;33634:13;33616:15;:31;;;;33670:7;33658:9;:19;;;;33734:9;;33716:15;;33703:10;;:28;;;;:::i;:::-;:40;;;;:::i;:::-;33688:12;:55;;;;33778:1;33762:12;;:17;;33754:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;33439:381:::0;;;:::o;2873:87::-;2919:7;2946:6;;;;;;;;;;;2939:13;;2873:87;:::o;27393:24::-;;;;;;;;;;;;;:::o;33331:100::-;3104:12;:10;:12::i;:::-;3093:23;;:7;:5;:7::i;:::-;:23;;;3085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33416:7:::1;33402:11;;:21;;;;;;;;;;;;;;;;;;33331:100:::0;:::o;9947:104::-;10003:13;10036:7;10029:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9947:104;:::o;34417:304::-;3104:12;:10;:12::i;:::-;3093:23;;:7;:5;:7::i;:::-;:23;;;3085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34561:13:::1;;;;;;;;;;;34553:21;;:4;:21;;;;34531:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;34672:41;34701:4;34707:5;34672:28;:41::i;:::-;34417:304:::0;;:::o;28284:29::-;;;;:::o;27780:35::-;;;;:::o;28553:27::-;;;;:::o;28439:30::-;;;;:::o;14466:482::-;14586:4;14608:24;14635:11;:25;14647:12;:10;:12::i;:::-;14635:25;;;;;;;;;;;;;;;:34;14661:7;14635:34;;;;;;;;;;;;;;;;14608:61;;14722:15;14702:16;:35;;14680:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;14838:67;14847:12;:10;:12::i;:::-;14861:7;14889:15;14870:16;:34;14838:8;:67::i;:::-;14936:4;14929:11;;;14466:482;;;;:::o;27688:29::-;;;;:::o;11409:216::-;11531:4;11553:42;11563:12;:10;:12::i;:::-;11577:9;11588:6;11553:9;:42::i;:::-;11613:4;11606:11;;11409:216;;;;:::o;28358:31::-;;;;:::o;28950:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;27864:33::-;;;;;;;;;;;;;:::o;34227:182::-;3104:12;:10;:12::i;:::-;3093:23;;:7;:5;:7::i;:::-;:23;;;3085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34343:8:::1;34312:19;:28;34332:7;34312:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;34383:7;34367:34;;;34392:8;34367:34;;;;;;:::i;:::-;;;;;;;;34227:182:::0;;:::o;33828:391::-;3104:12;:10;:12::i;:::-;3093:23;;:7;:5;:7::i;:::-;:23;;;3085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33988:8:::1;33974:11;:22;;;;34026:13;34007:16;:32;;;;34063:7;34050:10;:20;;;;34130:10;;34111:16;;34097:11;;:30;;;;:::i;:::-;:43;;;;:::i;:::-;34081:13;:59;;;;34176:1;34159:13;;:18;;34151:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;33828:391:::0;;;:::o;32804:256::-;3104:12;:10;:12::i;:::-;3093:23;;:7;:5;:7::i;:::-;:23;;;3085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32944:4:::1;32936;32931:1;32915:13;:11;:13::i;:::-;:17;;;;:::i;:::-;32914:26;;;;:::i;:::-;32913:35;;;;:::i;:::-;32903:6;:45;;32881:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;33045:6;33035;:17;;;;:::i;:::-;33023:9;:29;;;;32804:256:::0;:::o;28122:39::-;;;;;;;;;;;;;:::o;27426:35::-;;;;:::o;32016:497::-;32124:4;3104:12;:10;:12::i;:::-;3093:23;;:7;:5;:7::i;:::-;:23;;;3085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32203:6:::1;32198:1;32182:13;:11;:13::i;:::-;:17;;;;:::i;:::-;32181:28;;;;:::i;:::-;32168:9;:41;;32146:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;32358:4;32353:1;32337:13;:11;:13::i;:::-;:17;;;;:::i;:::-;32336:26;;;;:::i;:::-;32323:9;:39;;32301:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;32474:9;32453:18;:30;;;;32501:4;32494:11;;32016:497:::0;;;:::o;28170:28::-;;;;:::o;11688:201::-;11822:7;11854:11;:18;11866:5;11854:18;;;;;;;;;;;;;;;:27;11873:7;11854:27;;;;;;;;;;;;;;;;11847:34;;11688:201;;;;:::o;27468:33::-;;;;:::o;28205:30::-;;;;:::o;31811:135::-;31871:4;3104:12;:10;:12::i;:::-;3093:23;;:7;:5;:7::i;:::-;:23;;;3085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31911:5:::1;31888:20;;:28;;;;;;;;;;;;;;;;;;31934:4;31927:11;;31811:135:::0;:::o;28242:35::-;;;;:::o;3782:238::-;3104:12;:10;:12::i;:::-;3093:23;;:7;:5;:7::i;:::-;:23;;;3085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3905:1:::1;3885:22;;:8;:22;;;;3863:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;3984:28;4003:8;3984:18;:28::i;:::-;3782:238:::0;:::o;28396:36::-;;;;:::o;27508:24::-;;;;:::o;44319:1056::-;44430:4;3104:12;:10;:12::i;:::-;3093:23;;:7;:5;:7::i;:::-;:23;;;3085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44515:19:::1;;44492:20;;:42;;;;:::i;:::-;44474:15;:60;44452:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;44624:4;44613:7;:15;;44605:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;44709:15;44686:20;:38;;;;44779:28;44810:4;:14;;;44825:13;;;;;;;;;;;44810:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44779:60;;44889:20;44912:44;44950:5;44912:33;44937:7;44912:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;44889:67;;45076:1;45061:12;:16;45057:110;;;45094:61;45110:13;;;;;;;;;;;45133:6;45142:12;45094:15;:61::i;:::-;45057:110;45242:19;45279:13;;;;;;;;;;;45242:51;;45304:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;45331:14;;;;;;;;;;45363:4;45356:11;;;;;44319:1056:::0;;;:::o;1715:98::-;1768:7;1795:10;1788:17;;1715:98;:::o;18256:380::-;18409:1;18392:19;;:5;:19;;;;18384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18490:1;18471:21;;:7;:21;;;;18463:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18574:6;18544:11;:18;18556:5;18544:18;;;;;;;;;;;;;;;:27;18563:7;18544:27;;;;;;;;;;;;;;;:36;;;;18612:7;18596:32;;18605:5;18596:32;;;18621:6;18596:32;;;;;;:::i;:::-;;;;;;;;18256:380;;;:::o;35224:4991::-;35372:1;35356:18;;:4;:18;;;;35348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35449:1;35435:16;;:2;:16;;;;35427:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;35518:1;35508:6;:11;35504:93;;;35536:28;35552:4;35558:2;35562:1;35536:15;:28::i;:::-;35579:7;;35504:93;35613:14;;;;;;;;;;;35609:2487;;;35674:7;:5;:7::i;:::-;35666:15;;:4;:15;;;;:49;;;;;35708:7;:5;:7::i;:::-;35702:13;;:2;:13;;;;35666:49;:86;;;;;35750:1;35736:16;;:2;:16;;;;35666:86;:128;;;;;35787:6;35773:21;;:2;:21;;;;35666:128;:158;;;;;35816:8;;;;;;;;;;;35815:9;35666:158;35644:2441;;;35864:13;;;;;;;;;;;35859:223;;35936:19;:25;35956:4;35936:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;35965:19;:23;35985:2;35965:23;;;;;;;;;;;;;;;;;;;;;;;;;35936:52;35902:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;35859:223;36238:20;;;;;;;;;;;36234:641;;;36319:7;:5;:7::i;:::-;36313:13;;:2;:13;;;;:72;;;;;36369:15;36355:30;;:2;:30;;;;36313:72;:129;;;;;36428:13;;;;;;;;;;;36414:28;;:2;:28;;;;36313:129;36283:573;;;36606:12;36531:28;:39;36560:9;36531:39;;;;;;;;;;;;;;;;:87;36493:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;36820:12;36778:28;:39;36807:9;36778:39;;;;;;;;;;;;;;;:54;;;;36283:573;36234:641;36949:25;:31;36975:4;36949:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;37006:31;:35;37038:2;37006:35;;;;;;;;;;;;;;;;;;;;;;;;;37005:36;36949:92;36923:1147;;;37128:20;;37118:6;:30;;37084:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;37336:9;;37319:13;37329:2;37319:9;:13::i;:::-;37310:6;:22;;;;:::i;:::-;:35;;37276:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;36923:1147;;;37514:25;:29;37540:2;37514:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;37569:31;:37;37601:4;37569:37;;;;;;;;;;;;;;;;;;;;;;;;;37568:38;37514:92;37488:582;;;37693:20;;37683:6;:30;;37649:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;37488:582;;;37850:31;:35;37882:2;37850:35;;;;;;;;;;;;;;;;;;;;;;;;;37845:225;;37970:9;;37953:13;37963:2;37953:9;:13::i;:::-;37944:6;:22;;;;:::i;:::-;:35;;37910:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;37845:225;37488:582;36923:1147;35644:2441;35609:2487;38108:28;38139:24;38157:4;38139:9;:24::i;:::-;38108:55;;38176:12;38215:18;;38191:20;:42;;38176:57;;38264:7;:35;;;;;38288:11;;;;;;;;;;;38264:35;:61;;;;;38317:8;;;;;;;;;;;38316:9;38264:61;:110;;;;;38343:25;:31;38369:4;38343:31;;;;;;;;;;;;;;;;;;;;;;;;;38342:32;38264:110;:153;;;;;38392:19;:25;38412:4;38392:25;;;;;;;;;;;;;;;;;;;;;;;;;38391:26;38264:153;:194;;;;;38435:19;:23;38455:2;38435:23;;;;;;;;;;;;;;;;;;;;;;;;;38434:24;38264:194;38246:326;;;38496:4;38485:8;;:15;;;;;;;;;;;;;;;;;;38517:10;:8;:10::i;:::-;38555:5;38544:8;;:16;;;;;;;;;;;;;;;;;;38246:326;38603:8;;;;;;;;;;;38602:9;:55;;;;;38628:25;:29;38654:2;38628:29;;;;;;;;;;;;;;;;;;;;;;;;;38602:55;:85;;;;;38674:13;;;;;;;;;;;38602:85;:153;;;;;38740:15;;38723:14;;:32;;;;:::i;:::-;38704:15;:51;;38602:153;:196;;;;;38773:19;:25;38793:4;38773:25;;;;;;;;;;;;;;;;;;;;;;;;;38772:26;38602:196;38584:282;;;38825:29;:27;:29::i;:::-;;38584:282;38878:12;38894:8;;;;;;;;;;;38893:9;38878:24;;39004:19;:25;39024:4;39004:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;39033:19;:23;39053:2;39033:23;;;;;;;;;;;;;;;;;;;;;;;;;39004:52;39000:100;;;39083:5;39073:15;;39000:100;39112:12;39217:7;39213:949;;;39269:25;:29;39295:2;39269:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;39318:1;39302:13;;:17;39269:50;39265:748;;;39347:34;39377:3;39347:25;39358:13;;39347:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;39340:41;;39450:13;;39430:16;;39423:4;:23;;;;:::i;:::-;39422:41;;;;:::i;:::-;39400:18;;:63;;;;;;;:::i;:::-;;;;;;;;39520:13;;39506:10;;39499:4;:17;;;;:::i;:::-;39498:35;;;;:::i;:::-;39482:12;;:51;;;;;;;:::i;:::-;;;;;;;;39592:13;;39577:11;;39570:4;:18;;;;:::i;:::-;39569:36;;;;:::i;:::-;39552:13;;:53;;;;;;;:::i;:::-;;;;;;;;39265:748;;;39667:25;:31;39693:4;39667:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;39717:1;39702:12;;:16;39667:51;39663:350;;;39746:33;39775:3;39746:24;39757:12;;39746:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;39739:40;;39847:12;;39828:15;;39821:4;:22;;;;:::i;:::-;39820:39;;;;:::i;:::-;39798:18;;:61;;;;;;;:::i;:::-;;;;;;;;39915:12;;39902:9;;39895:4;:16;;;;:::i;:::-;39894:33;;;;:::i;:::-;39878:12;;:49;;;;;;;:::i;:::-;;;;;;;;39985:12;;39971:10;;39964:4;:17;;;;:::i;:::-;39963:34;;;;:::i;:::-;39946:13;;:51;;;;;;;:::i;:::-;;;;;;;;39663:350;39265:748;40040:1;40033:4;:8;40029:91;;;40062:42;40078:4;40092;40099;40062:15;:42::i;:::-;40029:91;40146:4;40136:14;;;;;:::i;:::-;;;39213:949;40174:33;40190:4;40196:2;40200:6;40174:15;:33::i;:::-;35337:4878;;;;35224:4991;;;;:::o;4180:191::-;4254:16;4273:6;;;;;;;;;;;4254:25;;4299:8;4290:6;;:17;;;;;;;;;;;;;;;;;;4354:8;4323:40;;4344:8;4323:40;;;;;;;;;;;;4243:128;4180:191;:::o;34729:188::-;34846:5;34812:25;:31;34838:4;34812:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;34903:5;34869:40;;34897:4;34869:40;;;;;;;;;;;;34729:188;;:::o;23705:98::-;23763:7;23794:1;23790;:5;;;;:::i;:::-;23783:12;;23705:98;;;;:::o;24104:::-;24162:7;24193:1;24189;:5;;;;:::i;:::-;24182:12;;24104:98;;;;:::o;15438:770::-;15596:1;15578:20;;:6;:20;;;;15570:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15680:1;15659:23;;:9;:23;;;;15651:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15735:47;15756:6;15764:9;15775:6;15735:20;:47::i;:::-;15795:21;15819:9;:17;15829:6;15819:17;;;;;;;;;;;;;;;;15795:41;;15886:6;15869:13;:23;;15847:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;16030:6;16014:13;:22;15994:9;:17;16004:6;15994:17;;;;;;;;;;;;;;;:42;;;;16082:6;16058:9;:20;16068:9;16058:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;16123:9;16106:35;;16115:6;16106:35;;;16134:6;16106:35;;;;;;:::i;:::-;;;;;;;;16154:46;16174:6;16182:9;16193:6;16154:19;:46::i;:::-;15559:649;15438:770;;;:::o;41345:1607::-;41384:23;41410:24;41428:4;41410:9;:24::i;:::-;41384:50;;41445:25;41507:12;;41473:18;;:46;;;;:::i;:::-;41445:74;;41530:12;41578:1;41559:15;:20;:46;;;;41604:1;41583:17;:22;41559:46;41555:85;;;41622:7;;;;;41555:85;41695:2;41674:18;;:23;;;;:::i;:::-;41656:15;:41;41652:115;;;41753:2;41732:18;;:23;;;;:::i;:::-;41714:41;;41652:115;41828:23;41941:1;41908:17;41873:18;;41855:15;:36;;;;:::i;:::-;41854:71;;;;:::i;:::-;:88;;;;:::i;:::-;41828:114;;41953:26;41982:55;42023:13;;41982:36;42002:15;41982;:19;;:36;;;;:::i;:::-;:40;;:55;;;;:::i;:::-;41953:84;;42050:25;42078:21;42050:49;;42112:36;42129:18;42112:16;:36::i;:::-;42161:18;42182:44;42208:17;42182:21;:25;;:44;;;;:::i;:::-;42161:65;;42239:17;42259:51;42292:17;42259:28;42274:12;;42259:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;42239:71;;42323:23;42362:9;42349:10;:22;;;;:::i;:::-;42323:48;;42402:1;42386:13;;:17;42382:109;;;42416:62;42440:4;42455:6;42464:13;;42416:15;:62::i;:::-;42382:109;42524:1;42503:18;:22;;;;42552:1;42536:13;:17;;;;42579:1;42564:12;:16;;;;42617:9;;;;;;;;;;;42609:23;;42640:9;42609:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42595:59;;;;;42689:1;42671:15;:19;:42;;;;;42712:1;42694:15;:19;42671:42;42667:278;;;42730:46;42743:15;42760;42730:12;:46::i;:::-;42796:137;42829:18;42866:15;42900:18;;42796:137;;;;;;;;:::i;:::-;;;;;;;;42667:278;41373:1579;;;;;;;;;41345:1607;:::o;43523:788::-;43580:4;43614:15;43597:14;:32;;;;43684:28;43715:4;:14;;;43730:13;;;;;;;;;;;43715:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43684:60;;43794:20;43817:77;43878:5;43817:42;43842:16;;43817:20;:24;;:42;;;;:::i;:::-;:46;;:77;;;;:::i;:::-;43794:100;;44014:1;43999:12;:16;43995:110;;;44032:61;44048:13;;;;;;;;;;;44071:6;44080:12;44032:15;:61::i;:::-;43995:110;44180:19;44217:13;;;;;;;;;;;44180:51;;44242:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44269:12;;;;;;;;;;44299:4;44292:11;;;;;43523:788;:::o;19236:125::-;;;;:::o;19965:124::-;;;;:::o;23348:98::-;23406:7;23437:1;23433;:5;;;;:::i;:::-;23426:12;;23348:98;;;;:::o;40223:589::-;40349:21;40387:1;40373:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40349:40;;40418:4;40400;40405:1;40400:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;40444:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40434:4;40439:1;40434:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;40479:62;40496:4;40511:15;40529:11;40479:8;:62::i;:::-;40580:15;:66;;;40661:11;40687:1;40731:4;40758;40778:15;40580:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40278:534;40223:589;:::o;40820:517::-;40968:62;40985:4;41000:15;41018:11;40968:8;:62::i;:::-;41073:15;:31;;;41112:9;41145:4;41165:11;41191:1;41234;27347:6;41303:15;41073:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;40820:517;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;440:139;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;585:143;;;;:::o;734:329::-;793:6;842:2;830:9;821:7;817:23;813:32;810:119;;;848:79;;:::i;:::-;810:119;968:1;993:53;1038:7;1029:6;1018:9;1014:22;993:53;:::i;:::-;983:63;;939:117;734:329;;;;:::o;1069:351::-;1139:6;1188:2;1176:9;1167:7;1163:23;1159:32;1156:119;;;1194:79;;:::i;:::-;1156:119;1314:1;1339:64;1395:7;1386:6;1375:9;1371:22;1339:64;:::i;:::-;1329:74;;1285:128;1069:351;;;;:::o;1426:474::-;1494:6;1502;1551:2;1539:9;1530:7;1526:23;1522:32;1519:119;;;1557:79;;:::i;:::-;1519:119;1677:1;1702:53;1747:7;1738:6;1727:9;1723:22;1702:53;:::i;:::-;1692:63;;1648:117;1804:2;1830:53;1875:7;1866:6;1855:9;1851:22;1830:53;:::i;:::-;1820:63;;1775:118;1426:474;;;;;:::o;1906:619::-;1983:6;1991;1999;2048:2;2036:9;2027:7;2023:23;2019:32;2016:119;;;2054:79;;:::i;:::-;2016:119;2174:1;2199:53;2244:7;2235:6;2224:9;2220:22;2199:53;:::i;:::-;2189:63;;2145:117;2301:2;2327:53;2372:7;2363:6;2352:9;2348:22;2327:53;:::i;:::-;2317:63;;2272:118;2429:2;2455:53;2500:7;2491:6;2480:9;2476:22;2455:53;:::i;:::-;2445:63;;2400:118;1906:619;;;;;:::o;2531:468::-;2596:6;2604;2653:2;2641:9;2632:7;2628:23;2624:32;2621:119;;;2659:79;;:::i;:::-;2621:119;2779:1;2804:53;2849:7;2840:6;2829:9;2825:22;2804:53;:::i;:::-;2794:63;;2750:117;2906:2;2932:50;2974:7;2965:6;2954:9;2950:22;2932:50;:::i;:::-;2922:60;;2877:115;2531:468;;;;;:::o;3005:474::-;3073:6;3081;3130:2;3118:9;3109:7;3105:23;3101:32;3098:119;;;3136:79;;:::i;:::-;3098:119;3256:1;3281:53;3326:7;3317:6;3306:9;3302:22;3281:53;:::i;:::-;3271:63;;3227:117;3383:2;3409:53;3454:7;3445:6;3434:9;3430:22;3409:53;:::i;:::-;3399:63;;3354:118;3005:474;;;;;:::o;3485:323::-;3541:6;3590:2;3578:9;3569:7;3565:23;3561:32;3558:119;;;3596:79;;:::i;:::-;3558:119;3716:1;3741:50;3783:7;3774:6;3763:9;3759:22;3741:50;:::i;:::-;3731:60;;3687:114;3485:323;;;;:::o;3814:329::-;3873:6;3922:2;3910:9;3901:7;3897:23;3893:32;3890:119;;;3928:79;;:::i;:::-;3890:119;4048:1;4073:53;4118:7;4109:6;4098:9;4094:22;4073:53;:::i;:::-;4063:63;;4019:117;3814:329;;;;:::o;4149:351::-;4219:6;4268:2;4256:9;4247:7;4243:23;4239:32;4236:119;;;4274:79;;:::i;:::-;4236:119;4394:1;4419:64;4475:7;4466:6;4455:9;4451:22;4419:64;:::i;:::-;4409:74;;4365:128;4149:351;;;;:::o;4506:613::-;4580:6;4588;4596;4645:2;4633:9;4624:7;4620:23;4616:32;4613:119;;;4651:79;;:::i;:::-;4613:119;4771:1;4796:53;4841:7;4832:6;4821:9;4817:22;4796:53;:::i;:::-;4786:63;;4742:117;4898:2;4924:53;4969:7;4960:6;4949:9;4945:22;4924:53;:::i;:::-;4914:63;;4869:118;5026:2;5052:50;5094:7;5085:6;5074:9;5070:22;5052:50;:::i;:::-;5042:60;;4997:115;4506:613;;;;;:::o;5125:619::-;5202:6;5210;5218;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5520:2;5546:53;5591:7;5582:6;5571:9;5567:22;5546:53;:::i;:::-;5536:63;;5491:118;5648:2;5674:53;5719:7;5710:6;5699:9;5695:22;5674:53;:::i;:::-;5664:63;;5619:118;5125:619;;;;;:::o;5750:663::-;5838:6;5846;5854;5903:2;5891:9;5882:7;5878:23;5874:32;5871:119;;;5909:79;;:::i;:::-;5871:119;6029:1;6054:64;6110:7;6101:6;6090:9;6086:22;6054:64;:::i;:::-;6044:74;;6000:128;6167:2;6193:64;6249:7;6240:6;6229:9;6225:22;6193:64;:::i;:::-;6183:74;;6138:129;6306:2;6332:64;6388:7;6379:6;6368:9;6364:22;6332:64;:::i;:::-;6322:74;;6277:129;5750:663;;;;;:::o;6419:179::-;6488:10;6509:46;6551:3;6543:6;6509:46;:::i;:::-;6587:4;6582:3;6578:14;6564:28;;6419:179;;;;:::o;6604:108::-;6681:24;6699:5;6681:24;:::i;:::-;6676:3;6669:37;6604:108;;:::o;6718:118::-;6805:24;6823:5;6805:24;:::i;:::-;6800:3;6793:37;6718:118;;:::o;6872:732::-;6991:3;7020:54;7068:5;7020:54;:::i;:::-;7090:86;7169:6;7164:3;7090:86;:::i;:::-;7083:93;;7200:56;7250:5;7200:56;:::i;:::-;7279:7;7310:1;7295:284;7320:6;7317:1;7314:13;7295:284;;;7396:6;7390:13;7423:63;7482:3;7467:13;7423:63;:::i;:::-;7416:70;;7509:60;7562:6;7509:60;:::i;:::-;7499:70;;7355:224;7342:1;7339;7335:9;7330:14;;7295:284;;;7299:14;7595:3;7588:10;;6996:608;;;6872:732;;;;:::o;7610:109::-;7691:21;7706:5;7691:21;:::i;:::-;7686:3;7679:34;7610:109;;:::o;7725:181::-;7837:62;7893:5;7837:62;:::i;:::-;7832:3;7825:75;7725:181;;:::o;7912:147::-;8007:45;8046:5;8007:45;:::i;:::-;8002:3;7995:58;7912:147;;:::o;8065:364::-;8153:3;8181:39;8214:5;8181:39;:::i;:::-;8236:71;8300:6;8295:3;8236:71;:::i;:::-;8229:78;;8316:52;8361:6;8356:3;8349:4;8342:5;8338:16;8316:52;:::i;:::-;8393:29;8415:6;8393:29;:::i;:::-;8388:3;8384:39;8377:46;;8157:272;8065:364;;;;:::o;8435:366::-;8577:3;8598:67;8662:2;8657:3;8598:67;:::i;:::-;8591:74;;8674:93;8763:3;8674:93;:::i;:::-;8792:2;8787:3;8783:12;8776:19;;8435:366;;;:::o;8807:::-;8949:3;8970:67;9034:2;9029:3;8970:67;:::i;:::-;8963:74;;9046:93;9135:3;9046:93;:::i;:::-;9164:2;9159:3;9155:12;9148:19;;8807:366;;;:::o;9179:::-;9321:3;9342:67;9406:2;9401:3;9342:67;:::i;:::-;9335:74;;9418:93;9507:3;9418:93;:::i;:::-;9536:2;9531:3;9527:12;9520:19;;9179:366;;;:::o;9551:::-;9693:3;9714:67;9778:2;9773:3;9714:67;:::i;:::-;9707:74;;9790:93;9879:3;9790:93;:::i;:::-;9908:2;9903:3;9899:12;9892:19;;9551:366;;;:::o;9923:::-;10065:3;10086:67;10150:2;10145:3;10086:67;:::i;:::-;10079:74;;10162:93;10251:3;10162:93;:::i;:::-;10280:2;10275:3;10271:12;10264:19;;9923:366;;;:::o;10295:::-;10437:3;10458:67;10522:2;10517:3;10458:67;:::i;:::-;10451:74;;10534:93;10623:3;10534:93;:::i;:::-;10652:2;10647:3;10643:12;10636:19;;10295:366;;;:::o;10667:::-;10809:3;10830:67;10894:2;10889:3;10830:67;:::i;:::-;10823:74;;10906:93;10995:3;10906:93;:::i;:::-;11024:2;11019:3;11015:12;11008:19;;10667:366;;;:::o;11039:::-;11181:3;11202:67;11266:2;11261:3;11202:67;:::i;:::-;11195:74;;11278:93;11367:3;11278:93;:::i;:::-;11396:2;11391:3;11387:12;11380:19;;11039:366;;;:::o;11411:::-;11553:3;11574:67;11638:2;11633:3;11574:67;:::i;:::-;11567:74;;11650:93;11739:3;11650:93;:::i;:::-;11768:2;11763:3;11759:12;11752:19;;11411:366;;;:::o;11783:::-;11925:3;11946:67;12010:2;12005:3;11946:67;:::i;:::-;11939:74;;12022:93;12111:3;12022:93;:::i;:::-;12140:2;12135:3;12131:12;12124:19;;11783:366;;;:::o;12155:::-;12297:3;12318:67;12382:2;12377:3;12318:67;:::i;:::-;12311:74;;12394:93;12483:3;12394:93;:::i;:::-;12512:2;12507:3;12503:12;12496:19;;12155:366;;;:::o;12527:::-;12669:3;12690:67;12754:2;12749:3;12690:67;:::i;:::-;12683:74;;12766:93;12855:3;12766:93;:::i;:::-;12884:2;12879:3;12875:12;12868:19;;12527:366;;;:::o;12899:::-;13041:3;13062:67;13126:2;13121:3;13062:67;:::i;:::-;13055:74;;13138:93;13227:3;13138:93;:::i;:::-;13256:2;13251:3;13247:12;13240:19;;12899:366;;;:::o;13271:::-;13413:3;13434:67;13498:2;13493:3;13434:67;:::i;:::-;13427:74;;13510:93;13599:3;13510:93;:::i;:::-;13628:2;13623:3;13619:12;13612:19;;13271:366;;;:::o;13643:::-;13785:3;13806:67;13870:2;13865:3;13806:67;:::i;:::-;13799:74;;13882:93;13971:3;13882:93;:::i;:::-;14000:2;13995:3;13991:12;13984:19;;13643:366;;;:::o;14015:::-;14157:3;14178:67;14242:2;14237:3;14178:67;:::i;:::-;14171:74;;14254:93;14343:3;14254:93;:::i;:::-;14372:2;14367:3;14363:12;14356:19;;14015:366;;;:::o;14387:::-;14529:3;14550:67;14614:2;14609:3;14550:67;:::i;:::-;14543:74;;14626:93;14715:3;14626:93;:::i;:::-;14744:2;14739:3;14735:12;14728:19;;14387:366;;;:::o;14759:::-;14901:3;14922:67;14986:2;14981:3;14922:67;:::i;:::-;14915:74;;14998:93;15087:3;14998:93;:::i;:::-;15116:2;15111:3;15107:12;15100:19;;14759:366;;;:::o;15131:::-;15273:3;15294:67;15358:2;15353:3;15294:67;:::i;:::-;15287:74;;15370:93;15459:3;15370:93;:::i;:::-;15488:2;15483:3;15479:12;15472:19;;15131:366;;;:::o;15503:::-;15645:3;15666:67;15730:2;15725:3;15666:67;:::i;:::-;15659:74;;15742:93;15831:3;15742:93;:::i;:::-;15860:2;15855:3;15851:12;15844:19;;15503:366;;;:::o;15875:::-;16017:3;16038:67;16102:2;16097:3;16038:67;:::i;:::-;16031:74;;16114:93;16203:3;16114:93;:::i;:::-;16232:2;16227:3;16223:12;16216:19;;15875:366;;;:::o;16247:398::-;16406:3;16427:83;16508:1;16503:3;16427:83;:::i;:::-;16420:90;;16519:93;16608:3;16519:93;:::i;:::-;16637:1;16632:3;16628:11;16621:18;;16247:398;;;:::o;16651:366::-;16793:3;16814:67;16878:2;16873:3;16814:67;:::i;:::-;16807:74;;16890:93;16979:3;16890:93;:::i;:::-;17008:2;17003:3;16999:12;16992:19;;16651:366;;;:::o;17023:::-;17165:3;17186:67;17250:2;17245:3;17186:67;:::i;:::-;17179:74;;17262:93;17351:3;17262:93;:::i;:::-;17380:2;17375:3;17371:12;17364:19;;17023:366;;;:::o;17395:::-;17537:3;17558:67;17622:2;17617:3;17558:67;:::i;:::-;17551:74;;17634:93;17723:3;17634:93;:::i;:::-;17752:2;17747:3;17743:12;17736:19;;17395:366;;;:::o;17767:::-;17909:3;17930:67;17994:2;17989:3;17930:67;:::i;:::-;17923:74;;18006:93;18095:3;18006:93;:::i;:::-;18124:2;18119:3;18115:12;18108:19;;17767:366;;;:::o;18139:118::-;18226:24;18244:5;18226:24;:::i;:::-;18221:3;18214:37;18139:118;;:::o;18263:112::-;18346:22;18362:5;18346:22;:::i;:::-;18341:3;18334:35;18263:112;;:::o;18381:379::-;18565:3;18587:147;18730:3;18587:147;:::i;:::-;18580:154;;18751:3;18744:10;;18381:379;;;:::o;18766:222::-;18859:4;18897:2;18886:9;18882:18;18874:26;;18910:71;18978:1;18967:9;18963:17;18954:6;18910:71;:::i;:::-;18766:222;;;;:::o;18994:807::-;19243:4;19281:3;19270:9;19266:19;19258:27;;19295:71;19363:1;19352:9;19348:17;19339:6;19295:71;:::i;:::-;19376:72;19444:2;19433:9;19429:18;19420:6;19376:72;:::i;:::-;19458:80;19534:2;19523:9;19519:18;19510:6;19458:80;:::i;:::-;19548;19624:2;19613:9;19609:18;19600:6;19548:80;:::i;:::-;19638:73;19706:3;19695:9;19691:19;19682:6;19638:73;:::i;:::-;19721;19789:3;19778:9;19774:19;19765:6;19721:73;:::i;:::-;18994:807;;;;;;;;;:::o;19807:210::-;19894:4;19932:2;19921:9;19917:18;19909:26;;19945:65;20007:1;19996:9;19992:17;19983:6;19945:65;:::i;:::-;19807:210;;;;:::o;20023:272::-;20141:4;20179:2;20168:9;20164:18;20156:26;;20192:96;20285:1;20274:9;20270:17;20261:6;20192:96;:::i;:::-;20023:272;;;;:::o;20301:313::-;20414:4;20452:2;20441:9;20437:18;20429:26;;20501:9;20495:4;20491:20;20487:1;20476:9;20472:17;20465:47;20529:78;20602:4;20593:6;20529:78;:::i;:::-;20521:86;;20301:313;;;;:::o;20620:419::-;20786:4;20824:2;20813:9;20809:18;20801:26;;20873:9;20867:4;20863:20;20859:1;20848:9;20844:17;20837:47;20901:131;21027:4;20901:131;:::i;:::-;20893:139;;20620:419;;;:::o;21045:::-;21211:4;21249:2;21238:9;21234:18;21226:26;;21298:9;21292:4;21288:20;21284:1;21273:9;21269:17;21262:47;21326:131;21452:4;21326:131;:::i;:::-;21318:139;;21045:419;;;:::o;21470:::-;21636:4;21674:2;21663:9;21659:18;21651:26;;21723:9;21717:4;21713:20;21709:1;21698:9;21694:17;21687:47;21751:131;21877:4;21751:131;:::i;:::-;21743:139;;21470:419;;;:::o;21895:::-;22061:4;22099:2;22088:9;22084:18;22076:26;;22148:9;22142:4;22138:20;22134:1;22123:9;22119:17;22112:47;22176:131;22302:4;22176:131;:::i;:::-;22168:139;;21895:419;;;:::o;22320:::-;22486:4;22524:2;22513:9;22509:18;22501:26;;22573:9;22567:4;22563:20;22559:1;22548:9;22544:17;22537:47;22601:131;22727:4;22601:131;:::i;:::-;22593:139;;22320:419;;;:::o;22745:::-;22911:4;22949:2;22938:9;22934:18;22926:26;;22998:9;22992:4;22988:20;22984:1;22973:9;22969:17;22962:47;23026:131;23152:4;23026:131;:::i;:::-;23018:139;;22745:419;;;:::o;23170:::-;23336:4;23374:2;23363:9;23359:18;23351:26;;23423:9;23417:4;23413:20;23409:1;23398:9;23394:17;23387:47;23451:131;23577:4;23451:131;:::i;:::-;23443:139;;23170:419;;;:::o;23595:::-;23761:4;23799:2;23788:9;23784:18;23776:26;;23848:9;23842:4;23838:20;23834:1;23823:9;23819:17;23812:47;23876:131;24002:4;23876:131;:::i;:::-;23868:139;;23595:419;;;:::o;24020:::-;24186:4;24224:2;24213:9;24209:18;24201:26;;24273:9;24267:4;24263:20;24259:1;24248:9;24244:17;24237:47;24301:131;24427:4;24301:131;:::i;:::-;24293:139;;24020:419;;;:::o;24445:::-;24611:4;24649:2;24638:9;24634:18;24626:26;;24698:9;24692:4;24688:20;24684:1;24673:9;24669:17;24662:47;24726:131;24852:4;24726:131;:::i;:::-;24718:139;;24445:419;;;:::o;24870:::-;25036:4;25074:2;25063:9;25059:18;25051:26;;25123:9;25117:4;25113:20;25109:1;25098:9;25094:17;25087:47;25151:131;25277:4;25151:131;:::i;:::-;25143:139;;24870:419;;;:::o;25295:::-;25461:4;25499:2;25488:9;25484:18;25476:26;;25548:9;25542:4;25538:20;25534:1;25523:9;25519:17;25512:47;25576:131;25702:4;25576:131;:::i;:::-;25568:139;;25295:419;;;:::o;25720:::-;25886:4;25924:2;25913:9;25909:18;25901:26;;25973:9;25967:4;25963:20;25959:1;25948:9;25944:17;25937:47;26001:131;26127:4;26001:131;:::i;:::-;25993:139;;25720:419;;;:::o;26145:::-;26311:4;26349:2;26338:9;26334:18;26326:26;;26398:9;26392:4;26388:20;26384:1;26373:9;26369:17;26362:47;26426:131;26552:4;26426:131;:::i;:::-;26418:139;;26145:419;;;:::o;26570:::-;26736:4;26774:2;26763:9;26759:18;26751:26;;26823:9;26817:4;26813:20;26809:1;26798:9;26794:17;26787:47;26851:131;26977:4;26851:131;:::i;:::-;26843:139;;26570:419;;;:::o;26995:::-;27161:4;27199:2;27188:9;27184:18;27176:26;;27248:9;27242:4;27238:20;27234:1;27223:9;27219:17;27212:47;27276:131;27402:4;27276:131;:::i;:::-;27268:139;;26995:419;;;:::o;27420:::-;27586:4;27624:2;27613:9;27609:18;27601:26;;27673:9;27667:4;27663:20;27659:1;27648:9;27644:17;27637:47;27701:131;27827:4;27701:131;:::i;:::-;27693:139;;27420:419;;;:::o;27845:::-;28011:4;28049:2;28038:9;28034:18;28026:26;;28098:9;28092:4;28088:20;28084:1;28073:9;28069:17;28062:47;28126:131;28252:4;28126:131;:::i;:::-;28118:139;;27845:419;;;:::o;28270:::-;28436:4;28474:2;28463:9;28459:18;28451:26;;28523:9;28517:4;28513:20;28509:1;28498:9;28494:17;28487:47;28551:131;28677:4;28551:131;:::i;:::-;28543:139;;28270:419;;;:::o;28695:::-;28861:4;28899:2;28888:9;28884:18;28876:26;;28948:9;28942:4;28938:20;28934:1;28923:9;28919:17;28912:47;28976:131;29102:4;28976:131;:::i;:::-;28968:139;;28695:419;;;:::o;29120:::-;29286:4;29324:2;29313:9;29309:18;29301:26;;29373:9;29367:4;29363:20;29359:1;29348:9;29344:17;29337:47;29401:131;29527:4;29401:131;:::i;:::-;29393:139;;29120:419;;;:::o;29545:::-;29711:4;29749:2;29738:9;29734:18;29726:26;;29798:9;29792:4;29788:20;29784:1;29773:9;29769:17;29762:47;29826:131;29952:4;29826:131;:::i;:::-;29818:139;;29545:419;;;:::o;29970:::-;30136:4;30174:2;30163:9;30159:18;30151:26;;30223:9;30217:4;30213:20;30209:1;30198:9;30194:17;30187:47;30251:131;30377:4;30251:131;:::i;:::-;30243:139;;29970:419;;;:::o;30395:::-;30561:4;30599:2;30588:9;30584:18;30576:26;;30648:9;30642:4;30638:20;30634:1;30623:9;30619:17;30612:47;30676:131;30802:4;30676:131;:::i;:::-;30668:139;;30395:419;;;:::o;30820:::-;30986:4;31024:2;31013:9;31009:18;31001:26;;31073:9;31067:4;31063:20;31059:1;31048:9;31044:17;31037:47;31101:131;31227:4;31101:131;:::i;:::-;31093:139;;30820:419;;;:::o;31245:222::-;31338:4;31376:2;31365:9;31361:18;31353:26;;31389:71;31457:1;31446:9;31442:17;31433:6;31389:71;:::i;:::-;31245:222;;;;:::o;31473:831::-;31736:4;31774:3;31763:9;31759:19;31751:27;;31788:71;31856:1;31845:9;31841:17;31832:6;31788:71;:::i;:::-;31869:80;31945:2;31934:9;31930:18;31921:6;31869:80;:::i;:::-;31996:9;31990:4;31986:20;31981:2;31970:9;31966:18;31959:48;32024:108;32127:4;32118:6;32024:108;:::i;:::-;32016:116;;32142:72;32210:2;32199:9;32195:18;32186:6;32142:72;:::i;:::-;32224:73;32292:3;32281:9;32277:19;32268:6;32224:73;:::i;:::-;31473:831;;;;;;;;:::o;32310:442::-;32459:4;32497:2;32486:9;32482:18;32474:26;;32510:71;32578:1;32567:9;32563:17;32554:6;32510:71;:::i;:::-;32591:72;32659:2;32648:9;32644:18;32635:6;32591:72;:::i;:::-;32673;32741:2;32730:9;32726:18;32717:6;32673:72;:::i;:::-;32310:442;;;;;;:::o;32758:214::-;32847:4;32885:2;32874:9;32870:18;32862:26;;32898:67;32962:1;32951:9;32947:17;32938:6;32898:67;:::i;:::-;32758:214;;;;:::o;33059:132::-;33126:4;33149:3;33141:11;;33179:4;33174:3;33170:14;33162:22;;33059:132;;;:::o;33197:114::-;33264:6;33298:5;33292:12;33282:22;;33197:114;;;:::o;33317:99::-;33369:6;33403:5;33397:12;33387:22;;33317:99;;;:::o;33422:113::-;33492:4;33524;33519:3;33515:14;33507:22;;33422:113;;;:::o;33541:184::-;33640:11;33674:6;33669:3;33662:19;33714:4;33709:3;33705:14;33690:29;;33541:184;;;;:::o;33731:147::-;33832:11;33869:3;33854:18;;33731:147;;;;:::o;33884:169::-;33968:11;34002:6;33997:3;33990:19;34042:4;34037:3;34033:14;34018:29;;33884:169;;;;:::o;34059:305::-;34099:3;34118:20;34136:1;34118:20;:::i;:::-;34113:25;;34152:20;34170:1;34152:20;:::i;:::-;34147:25;;34306:1;34238:66;34234:74;34231:1;34228:81;34225:107;;;34312:18;;:::i;:::-;34225:107;34356:1;34353;34349:9;34342:16;;34059:305;;;;:::o;34370:185::-;34410:1;34427:20;34445:1;34427:20;:::i;:::-;34422:25;;34461:20;34479:1;34461:20;:::i;:::-;34456:25;;34500:1;34490:35;;34505:18;;:::i;:::-;34490:35;34547:1;34544;34540:9;34535:14;;34370:185;;;;:::o;34561:348::-;34601:7;34624:20;34642:1;34624:20;:::i;:::-;34619:25;;34658:20;34676:1;34658:20;:::i;:::-;34653:25;;34846:1;34778:66;34774:74;34771:1;34768:81;34763:1;34756:9;34749:17;34745:105;34742:131;;;34853:18;;:::i;:::-;34742:131;34901:1;34898;34894:9;34883:20;;34561:348;;;;:::o;34915:191::-;34955:4;34975:20;34993:1;34975:20;:::i;:::-;34970:25;;35009:20;35027:1;35009:20;:::i;:::-;35004:25;;35048:1;35045;35042:8;35039:34;;;35053:18;;:::i;:::-;35039:34;35098:1;35095;35091:9;35083:17;;34915:191;;;;:::o;35112:96::-;35149:7;35178:24;35196:5;35178:24;:::i;:::-;35167:35;;35112:96;;;:::o;35214:90::-;35248:7;35291:5;35284:13;35277:21;35266:32;;35214:90;;;:::o;35310:126::-;35347:7;35387:42;35380:5;35376:54;35365:65;;35310:126;;;:::o;35442:77::-;35479:7;35508:5;35497:16;;35442:77;;;:::o;35525:86::-;35560:7;35600:4;35593:5;35589:16;35578:27;;35525:86;;;:::o;35617:151::-;35692:9;35725:37;35756:5;35725:37;:::i;:::-;35712:50;;35617:151;;;:::o;35774:121::-;35832:9;35865:24;35883:5;35865:24;:::i;:::-;35852:37;;35774:121;;;:::o;35901:126::-;35951:9;35984:37;36015:5;35984:37;:::i;:::-;35971:50;;35901:126;;;:::o;36033:113::-;36083:9;36116:24;36134:5;36116:24;:::i;:::-;36103:37;;36033:113;;;:::o;36152:307::-;36220:1;36230:113;36244:6;36241:1;36238:13;36230:113;;;36329:1;36324:3;36320:11;36314:18;36310:1;36305:3;36301:11;36294:39;36266:2;36263:1;36259:10;36254:15;;36230:113;;;36361:6;36358:1;36355:13;36352:101;;;36441:1;36432:6;36427:3;36423:16;36416:27;36352:101;36201:258;36152:307;;;:::o;36465:320::-;36509:6;36546:1;36540:4;36536:12;36526:22;;36593:1;36587:4;36583:12;36614:18;36604:81;;36670:4;36662:6;36658:17;36648:27;;36604:81;36732:2;36724:6;36721:14;36701:18;36698:38;36695:84;;;36751:18;;:::i;:::-;36695:84;36516:269;36465:320;;;:::o;36791:180::-;36839:77;36836:1;36829:88;36936:4;36933:1;36926:15;36960:4;36957:1;36950:15;36977:180;37025:77;37022:1;37015:88;37122:4;37119:1;37112:15;37146:4;37143:1;37136:15;37163:180;37211:77;37208:1;37201:88;37308:4;37305:1;37298:15;37332:4;37329:1;37322:15;37349:180;37397:77;37394:1;37387:88;37494:4;37491:1;37484:15;37518:4;37515:1;37508:15;37535:180;37583:77;37580:1;37573:88;37680:4;37677:1;37670:15;37704:4;37701:1;37694:15;37844:117;37953:1;37950;37943:12;37967:102;38008:6;38059:2;38055:7;38050:2;38043:5;38039:14;38035:28;38025:38;;37967:102;;;:::o;38075:222::-;38215:34;38211:1;38203:6;38199:14;38192:58;38284:5;38279:2;38271:6;38267:15;38260:30;38075:222;:::o;38303:172::-;38443:24;38439:1;38431:6;38427:14;38420:48;38303:172;:::o;38481:225::-;38621:34;38617:1;38609:6;38605:14;38598:58;38690:8;38685:2;38677:6;38673:15;38666:33;38481:225;:::o;38712:221::-;38852:34;38848:1;38840:6;38836:14;38829:58;38921:4;38916:2;38908:6;38904:15;38897:29;38712:221;:::o;38939:238::-;39079:34;39075:1;39067:6;39063:14;39056:58;39148:21;39143:2;39135:6;39131:15;39124:46;38939:238;:::o;39183:223::-;39323:34;39319:1;39311:6;39307:14;39300:58;39392:6;39387:2;39379:6;39375:15;39368:31;39183:223;:::o;39412:244::-;39552:34;39548:1;39540:6;39536:14;39529:58;39621:27;39616:2;39608:6;39604:15;39597:52;39412:244;:::o;39662:225::-;39802:34;39798:1;39790:6;39786:14;39779:58;39871:8;39866:2;39858:6;39854:15;39847:33;39662:225;:::o;39893:241::-;40033:34;40029:1;40021:6;40017:14;40010:58;40102:24;40097:2;40089:6;40085:15;40078:49;39893:241;:::o;40140:235::-;40280:34;40276:1;40268:6;40264:14;40257:58;40349:18;40344:2;40336:6;40332:15;40325:43;40140:235;:::o;40381:240::-;40521:34;40517:1;40509:6;40505:14;40498:58;40590:23;40585:2;40577:6;40573:15;40566:48;40381:240;:::o;40627:239::-;40767:34;40763:1;40755:6;40751:14;40744:58;40836:22;40831:2;40823:6;40819:15;40812:47;40627:239;:::o;40872:240::-;41012:34;41008:1;41000:6;40996:14;40989:58;41081:23;41076:2;41068:6;41064:15;41057:48;40872:240;:::o;41118:297::-;41258:34;41254:1;41246:6;41242:14;41235:58;41327:34;41322:2;41314:6;41310:15;41303:59;41396:11;41391:2;41383:6;41379:15;41372:36;41118:297;:::o;41421:227::-;41561:34;41557:1;41549:6;41545:14;41538:58;41630:10;41625:2;41617:6;41613:15;41606:35;41421:227;:::o;41654:182::-;41794:34;41790:1;41782:6;41778:14;41771:58;41654:182;:::o;41842:178::-;41982:30;41978:1;41970:6;41966:14;41959:54;41842:178;:::o;42026:179::-;42166:31;42162:1;42154:6;42150:14;42143:55;42026:179;:::o;42211:229::-;42351:34;42347:1;42339:6;42335:14;42328:58;42420:12;42415:2;42407:6;42403:15;42396:37;42211:229;:::o;42446:224::-;42586:34;42582:1;42574:6;42570:14;42563:58;42655:7;42650:2;42642:6;42638:15;42631:32;42446:224;:::o;42676:182::-;42816:34;42812:1;42804:6;42800:14;42793:58;42676:182;:::o;42864:114::-;;:::o;42984:223::-;43124:34;43120:1;43112:6;43108:14;43101:58;43193:6;43188:2;43180:6;43176:15;43169:31;42984:223;:::o;43213:169::-;43353:21;43349:1;43341:6;43337:14;43330:45;43213:169;:::o;43388:224::-;43528:34;43524:1;43516:6;43512:14;43505:58;43597:7;43592:2;43584:6;43580:15;43573:32;43388:224;:::o;43618:234::-;43758:34;43754:1;43746:6;43742:14;43735:58;43827:17;43822:2;43814:6;43810:15;43803:42;43618:234;:::o;43858:122::-;43931:24;43949:5;43931:24;:::i;:::-;43924:5;43921:35;43911:63;;43970:1;43967;43960:12;43911:63;43858:122;:::o;43986:116::-;44056:21;44071:5;44056:21;:::i;:::-;44049:5;44046:32;44036:60;;44092:1;44089;44082:12;44036:60;43986:116;:::o;44108:122::-;44181:24;44199:5;44181:24;:::i;:::-;44174:5;44171:35;44161:63;;44220:1;44217;44210:12;44161:63;44108:122;:::o

Swarm Source

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