ETH Price: $3,887.24 (-0.66%)
Gas: 7.03 Gwei

Token

Nerdy Inu (NERDY)
 

Overview

Max Total Supply

100,000,000 NERDY

Holders

241

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
12,017.591901105 NERDY

Value
$0.00
0xa6f55d3dbadc42c3bed53d8d26ae0219603357e1
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Nerdy Inu ($NERDY) is a community-driven ERC20 token, a fully decentralized cryptocurrency with instant rewards for holders. Focused on helping the nerdiest of nerds all across the globe.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
NerdyInu

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, OSL-3.0 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-08-15
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.6.12;

interface IERC20 {

    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 Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */

library SafeMath {
    /**
     * @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) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @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 sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

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

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts 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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts 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 mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

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


/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

/**
 * @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.
 */
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view 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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function geUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    //Locks the contract for owner for the amount of time provided
    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = now + time;
        emit OwnershipTransferred(_owner, address(0));
    }

    //Unlocks the contract for owner when _lockTime is exceeds
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(now > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

// pragma solidity >=0.5.0;

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

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

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

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

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


// pragma solidity >=0.5.0;

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

// pragma solidity >=0.6.2;

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

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

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



// pragma solidity >=0.6.2;

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

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


contract NerdyInu is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address payable;

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

    mapping (address => bool) private _isExcludedFromFee;

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    address payable public nerdy_1;
    address payable public nerdy_2;
    address payable public nerdy_3;
    address payable public treasury;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 100 * 10**6 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "Nerdy Inu";
    string private _symbol = "NERDY";
    uint8 private _decimals = 9;

    //redistributed to holders
    uint256 public _taxFee = 2; 
    uint256 private _previousTaxFee = _taxFee;

    //goes to Uniswap liquidity pool
    uint256 public _liquidityFee = 200;
    uint256 private _previousLiquidityFee = _liquidityFee;

    //Budget for sponsorships, promotions, partnerships / development grants
    uint256 public _treasuryFee = 599; //Treasury fee (actual fee is 5.99%; 599 is for floating precision purposes)
    uint256 private _previousTreasuryFee = _treasuryFee;

    //Operational costs (salaries, HR, networking)
    uint256 public _nerdyPartOfTreasury = 16; 

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    uint256 public _maxTxAmount = 15 * 10**6 * 10**9;
    uint256 private numTokensSellToAddToLiquidity = 100 * 10**3 * 10**9;

    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor (address payable _nerdy1Wallet, address payable _nerdy2Wallet, address payable _nerdy3Wallet, address payable _treasuryWallet) public {
      nerdy_1 = _nerdy1Wallet;
      nerdy_2 = _nerdy2Wallet;
      nerdy_3 = _nerdy3Wallet;
      treasury = _treasuryWallet;
      _rOwned[_msgSender()] = _rTotal;
      IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
      uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
      uniswapV2Router = _uniswapV2Router;
      //exclude owner and this contract from fee
      _isExcludedFromFee[owner()] = true;
      _isExcludedFromFee[address(this)] = true;
      emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    //this can be called externally by deployer to immediately process accumulated fees accordingly (distribute to treasury & liquidity)
    function manualSwapAndLiquify() public onlyOwner() {
        uint256 contractTokenBalance = balanceOf(address(this));
        swapAndLiquify(contractTokenBalance);
    }

    function excludeFromReward(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tTreasury) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _takeTreasury(tTreasury);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
        _taxFee = taxFee;
    }

    function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() {
        _liquidityFee = liquidityFee;
    }
    
    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(
            10**2
        );
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

     //to receive ETH from uniswapV2Router when swaping
    receive() external payable {}

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
        uint256[4] memory tValues = _getTValuesArray(tAmount);
        uint256[3] memory rValues = _getRValuesArray(tAmount, tValues[1], tValues[2], tValues[3]);
        return (rValues[0], rValues[1], rValues[2], tValues[0], tValues[1], tValues[2], tValues[3]);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTreasury = calculateTreasuryFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(tTreasury);
        return (tTransferAmount, tFee, tLiquidity, tTreasury);
    }

    function _getTValuesArray(uint256 tAmount) private view returns (uint256[4] memory val) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTreasury = calculateTreasuryFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(tTreasury);
        return [tTransferAmount, tFee, tLiquidity, tTreasury];
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tTreasury) private view returns (uint256, uint256, uint256) {
        uint256 currentRate = _getRate();
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(tLiquidity.mul(currentRate)).sub(tTreasury.mul(currentRate));
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRValuesArray(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tTreasury) private view returns (uint256[3] memory val) {
        uint256 currentRate = _getRate();
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(tLiquidity.mul(currentRate)).sub(tTreasury.mul(currentRate));
        return [rAmount, rTransferAmount, rFee];
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }

    function _takeTreasury(uint256 tTreasury) private {
        uint256 currentRate =  _getRate();
        uint256 rTreasury = tTreasury.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTreasury);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tTreasury);
    }

    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(
            10**2
        );
    }

    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(
            10**4
        );
    }

    function calculateTreasuryFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_treasuryFee).div(
            10**4
        );
    }

    function removeAllFee() private {
        if(_taxFee == 0 && _liquidityFee == 0 && _treasuryFee == 0) return;

        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;
        _previousTreasuryFee = _treasuryFee;

        _taxFee = 0;
        _liquidityFee = 0;
        _treasuryFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
        _treasuryFee = _previousTreasuryFee;
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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);
    }

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

        uint256 contractTokenBalance = balanceOf(address(this));

        if(contractTokenBalance >= _maxTxAmount)
        {
            contractTokenBalance = _maxTxAmount;
        }

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            swapAndLiquify(contractTokenBalance);
        }

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

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

        //transfer amount, it will take tax, liquidity & treasury fees
        _tokenTransfer(from,to,amount,takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        //split contract balance into two parts — one for liquidity addition, another for treasury fill up
        uint256 totalContractBalanceFees = _liquidityFee.add(_treasuryFee);

        uint256 liquidityPart = contractTokenBalance.mul(_liquidityFee).div(totalContractBalanceFees);
        uint256 treasuryPart = contractTokenBalance.sub(liquidityPart);

        uint256 liquidityHalfPart = liquidityPart.div(2);

        //now swapping half of the liquidity part + all of the treasury part into ETH
        uint256 totalETHSwap = liquidityHalfPart.add(treasuryPart);

        uint256 liquidityHalfTokenPart = liquidityPart.sub(liquidityHalfPart);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(totalETHSwap);

        uint256 newBalance = address(this).balance.sub(initialBalance);

        uint256 liquidityPartETHSwap = _liquidityFee.div(2);
        uint256 totalETHSwapPart = totalContractBalanceFees.sub(liquidityPartETHSwap);
        uint256 liquidityBalance = liquidityPartETHSwap.mul(newBalance).div(totalETHSwapPart);

        // add liquidity to uniswap
        addLiquidity(liquidityHalfTokenPart, liquidityBalance);
        emit SwapAndLiquify(liquidityHalfPart, liquidityBalance, liquidityHalfPart);

        newBalance = address(this).balance;
        payTreasury(newBalance);
    }

    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
            address(this),
            block.timestamp
        );
    }

    function payTreasury(uint256 ethAmount) private {
      uint256 nerdyFee = ethAmount.mul(_nerdyPartOfTreasury).div(100);
      uint256 treasuryWalletFee = ethAmount.sub(nerdyFee).sub(nerdyFee).sub(nerdyFee);

      treasury.sendValue(treasuryWalletFee);

      nerdy_1.sendValue(nerdyFee);
      nerdy_2.sendValue(nerdyFee);
      nerdy_3.sendValue(nerdyFee);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        if(!takeFee)
            removeAllFee();

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tTreasury) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _takeTreasury(tTreasury);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tTreasury) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _takeTreasury(tTreasury);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tTreasury) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _takeTreasury(tTreasury);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"_nerdy1Wallet","type":"address"},{"internalType":"address payable","name":"_nerdy2Wallet","type":"address"},{"internalType":"address payable","name":"_nerdy3Wallet","type":"address"},{"internalType":"address payable","name":"_treasuryWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_nerdyPartOfTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nerdy_1","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nerdy_2","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nerdy_3","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405267016345785d8a0000600d55600d54600019816200001e57fe5b0660001903600e556040518060400160405280600981526020017f4e6572647920496e750000000000000000000000000000000000000000000000815250601090805190602001906200007392919062000763565b506040518060400160405280600581526020017f4e4552445900000000000000000000000000000000000000000000000000000081525060119080519060200190620000c192919062000763565b506009601260006101000a81548160ff021916908360ff160217905550600260135560135460145560c860155560155460165561025760175560175460185560106019556001601a60016101000a81548160ff02191690831515021790555066354a6ba7a18000601b55655af3107a4000601c553480156200014257600080fd5b5060405162005e3f38038062005e3f833981810160405260808110156200016857600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050506000620001a96200073260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35083600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e5460036000620003626200073260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200040057600080fd5b505afa15801562000415573d6000803e3d6000fd5b505050506040513d60208110156200042c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004a057600080fd5b505afa158015620004b5573d6000803e3d6000fd5b505050506040513d6020811015620004cc57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200054757600080fd5b505af11580156200055c573d6000803e3d6000fd5b505050506040513d60208110156200057357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160066000620006076200073a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006c06200073260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d546040518082815260200191505060405180910390a3505050505062000809565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620007a657805160ff1916838001178555620007d7565b82800160010185558215620007d7579182015b82811115620007d6578251825591602001919060010190620007b9565b5b509050620007e69190620007ea565b5090565b5b8082111562000805576000816000905550600101620007eb565b5090565b60805160601c60a05160601c6155ee620008516000398061184b528061303552508061105e5280613f1e528061400a5280614031528061413c528061416352506155ee6000f3fe6080604052600436106102605760003560e01c806368b186eb11610144578063a457c2d7116100b6578063c49b9a801161007a578063c49b9a8014610ce6578063d543dbeb14610d23578063dd46706414610d5e578063dd62ed3e14610d99578063ea2f0b3714610e1e578063f2fde38b14610e6f57610267565b8063a457c2d714610b81578063a5f7e40814610bf2578063a69df4b514610c33578063a9059cbb14610c4a578063b6c5232414610cbb57610267565b80637d1db4a5116101085780637d1db4a5146109b857806388f82020146109e35780638da5cb5b14610a4a5780638ee88c5314610a8b57806395d89b4114610ac6578063a34dd1ce14610b5657610267565b806368b186eb146108b95780636bc87c3a146108fa57806370a0823114610925578063715018a61461098a578063733b864f146109a157610267565b8063313ce567116101dd5780634549b039116101a15780634549b039146106f757806349bd5a5e146107525780634a74bb021461079357806352390c02146107c05780635342acb41461081157806361d027b31461087857610267565b8063313ce5671461058b5780633685d419146105b9578063395093511461060a5780633b124fe71461067b578063437823ec146106a657610267565b806318160ddd1161022457806318160ddd146104145780631a9b184b1461043f57806323b872dd1461048057806328f0b257146105115780632d8381191461053c57610267565b8063061c82d01461026c57806306fdde03146102a7578063095ea7b31461033757806313114a9d146103a85780631694505e146103d357610267565b3661026757005b600080fd5b34801561027857600080fd5b506102a56004803603602081101561028f57600080fd5b8101908080359060200190929190505050610ec0565b005b3480156102b357600080fd5b506102bc610f92565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102fc5780820151818401526020810190506102e1565b50505050905090810190601f1680156103295780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034357600080fd5b506103906004803603604081101561035a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611034565b60405180821515815260200191505060405180910390f35b3480156103b457600080fd5b506103bd611052565b6040518082815260200191505060405180910390f35b3480156103df57600080fd5b506103e861105c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042057600080fd5b50610429611080565b6040518082815260200191505060405180910390f35b34801561044b57600080fd5b5061045461108a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561048c57600080fd5b506104f9600480360360608110156104a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110b0565b60405180821515815260200191505060405180910390f35b34801561051d57600080fd5b50610526611189565b6040518082815260200191505060405180910390f35b34801561054857600080fd5b506105756004803603602081101561055f57600080fd5b810190808035906020019092919050505061118f565b6040518082815260200191505060405180910390f35b34801561059757600080fd5b506105a0611213565b604051808260ff16815260200191505060405180910390f35b3480156105c557600080fd5b50610608600480360360208110156105dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061122a565b005b34801561061657600080fd5b506106636004803603604081101561062d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115b4565b60405180821515815260200191505060405180910390f35b34801561068757600080fd5b50610690611667565b6040518082815260200191505060405180910390f35b3480156106b257600080fd5b506106f5600480360360208110156106c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061166d565b005b34801561070357600080fd5b5061073c6004803603604081101561071a57600080fd5b8101908080359060200190929190803515159060200190929190505050611790565b6040518082815260200191505060405180910390f35b34801561075e57600080fd5b50610767611849565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561079f57600080fd5b506107a861186d565b60405180821515815260200191505060405180910390f35b3480156107cc57600080fd5b5061080f600480360360208110156107e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611880565b005b34801561081d57600080fd5b506108606004803603602081101561083457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b9a565b60405180821515815260200191505060405180910390f35b34801561088457600080fd5b5061088d611bf0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108c557600080fd5b506108ce611c16565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561090657600080fd5b5061090f611c3c565b6040518082815260200191505060405180910390f35b34801561093157600080fd5b506109746004803603602081101561094857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c42565b6040518082815260200191505060405180910390f35b34801561099657600080fd5b5061099f611d2d565b005b3480156109ad57600080fd5b506109b6611eb3565b005b3480156109c457600080fd5b506109cd611f94565b6040518082815260200191505060405180910390f35b3480156109ef57600080fd5b50610a3260048036036020811015610a0657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f9a565b60405180821515815260200191505060405180910390f35b348015610a5657600080fd5b50610a5f611ff0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a9757600080fd5b50610ac460048036036020811015610aae57600080fd5b8101908080359060200190929190505050612019565b005b348015610ad257600080fd5b50610adb6120eb565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b1b578082015181840152602081019050610b00565b50505050905090810190601f168015610b485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b6257600080fd5b50610b6b61218d565b6040518082815260200191505060405180910390f35b348015610b8d57600080fd5b50610bda60048036036040811015610ba457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612193565b60405180821515815260200191505060405180910390f35b348015610bfe57600080fd5b50610c07612260565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c3f57600080fd5b50610c48612286565b005b348015610c5657600080fd5b50610ca360048036036040811015610c6d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506124a3565b60405180821515815260200191505060405180910390f35b348015610cc757600080fd5b50610cd06124c1565b6040518082815260200191505060405180910390f35b348015610cf257600080fd5b50610d2160048036036020811015610d0957600080fd5b810190808035151590602001909291905050506124cb565b005b348015610d2f57600080fd5b50610d5c60048036036020811015610d4657600080fd5b81019080803590602001909291905050506125e9565b005b348015610d6a57600080fd5b50610d9760048036036020811015610d8157600080fd5b81019080803590602001909291905050506126e2565b005b348015610da557600080fd5b50610e0860048036036040811015610dbc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128d3565b6040518082815260200191505060405180910390f35b348015610e2a57600080fd5b50610e6d60048036036020811015610e4157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061295a565b005b348015610e7b57600080fd5b50610ebe60048036036020811015610e9257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a7d565b005b610ec8612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060138190555050565b606060108054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561102a5780601f10610fff5761010080835404028352916020019161102a565b820191906000526020600020905b81548152906001019060200180831161100d57829003601f168201915b5050505050905090565b6000611048611041612c88565b8484612c90565b6001905092915050565b6000600f54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600d54905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006110bd848484612e87565b61117e846110c9612c88565b611179856040518060600160405280602881526020016154d760289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061112f612c88565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131709092919063ffffffff16565b612c90565b600190509392505050565b60175481565b6000600e548211156111ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061540a602a913960400191505060405180910390fd5b60006111f6613230565b905061120b818461325b90919063ffffffff16565b915050919050565b6000601260009054906101000a900460ff16905090565b611232612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166113b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4163636f756e74206973206e6f74206578636c7564656400000000000000000081525060200191505060405180910390fd5b60005b6008805490508110156115b0578173ffffffffffffffffffffffffffffffffffffffff16600882815481106113e557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115a35760086001600880549050038154811061144157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061147957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061156957fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556115b0565b80806001019150506113b4565b5050565b600061165d6115c1612c88565b8461165885600560006115d2612c88565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b612c90565b6001905092915050565b60135481565b611675612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611735576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600d5483111561180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161182b57600061181a8461332d565b505050505050905080915050611843565b60006118368461332d565b5050505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601a60019054906101000a900460ff1681565b611888612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611948576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611adc57611a98600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461118f565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611cdd57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611d28565b611d25600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461118f565b90505b919050565b611d35612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611df5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611ebb612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000611f8630611c42565b9050611f918161342d565b50565b601b5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612021612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b606060118054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121835780601f1061215857610100808354040283529160200191612183565b820191906000526020600020905b81548152906001019060200180831161216657829003601f168201915b5050505050905090565b60195481565b60006122566121a0612c88565b846122518560405180606001604052806025815260200161559460259139600560006121ca612c88565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131709092919063ffffffff16565b612c90565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806155716023913960400191505060405180910390fd5b60025442116123a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006124b76124b0612c88565b8484612e87565b6001905092915050565b6000600254905090565b6124d3612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612593576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601a60016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b6125f1612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6126d960646126cb83600d546135f090919063ffffffff16565b61325b90919063ffffffff16565b601b8190555050565b6126ea612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612962612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612a85612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612bcb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154346026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061554d6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061545a6022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806155286025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806153e76023913960400191505060405180910390fd5b60008111612fec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806154ff6029913960400191505060405180910390fd5b6000612ff730611c42565b9050601b54811061300857601b5490505b6000601c54821015905080801561302c5750601a60009054906101000a900460ff16155b801561308457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561309c5750601a60019054906101000a900460ff165b156130ab576130aa8261342d565b5b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131525750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561315c57600090505b61316886868684613676565b505050505050565b600083831115829061321d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156131e25780820151818401526020810190506131c7565b50505050905090810190601f16801561320f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080600061323d613987565b91509150613254818361325b90919063ffffffff16565b9250505090565b600061329d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c18565b905092915050565b600080828401905083811015613323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060006133406153a2565b61334989613cde565b90506133536153c4565b6133928a8360016004811061336457fe5b60200201518460026004811061337657fe5b60200201518560036004811061338857fe5b6020020151613d74565b9050806000600381106133a157fe5b6020020151816001600381106133b357fe5b6020020151826002600381106133c557fe5b6020020151846000600481106133d757fe5b6020020151856001600481106133e957fe5b6020020151866002600481106133fb57fe5b60200201518760036004811061340d57fe5b602002015198509850985098509850985098505050919395979092949650565b6001601a60006101000a81548160ff02191690831515021790555060006134616017546015546132a590919063ffffffff16565b9050600061348c8261347e601554866135f090919063ffffffff16565b61325b90919063ffffffff16565b905060006134a38285613e3e90919063ffffffff16565b905060006134bb60028461325b90919063ffffffff16565b905060006134d283836132a590919063ffffffff16565b905060006134e98386613e3e90919063ffffffff16565b905060004790506134f983613e88565b600061350e8247613e3e90919063ffffffff16565b90506000613528600260155461325b90919063ffffffff16565b9050600061353f828b613e3e90919063ffffffff16565b905060006135688261355a86866135f090919063ffffffff16565b61325b90919063ffffffff16565b90506135748682614136565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56188828a60405180848152602001838152602001828152602001935050505060405180910390a14793506135c784614280565b50505050505050505050506000601a60006101000a81548160ff02191690831515021790555050565b6000808314156136035760009050613670565b600082840290508284828161361457fe5b041461366b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806154b66021913960400191505060405180910390fd5b809150505b92915050565b8061368457613683614418565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137275750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561373c5761373784848461447a565b613973565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137df5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137f4576137ef8484846146e8565b613972565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138985750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138ad576138a8848484614956565b613971565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561394f5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139645761395f848484614b2f565b613970565b61396f848484614956565b5b5b5b5b8061398157613980614e32565b5b50505050565b6000806000600e5490506000600d54905060005b600880549050811015613bdb578260036000600884815481106139ba57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613aa15750816004600060088481548110613a3957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613ab857600e54600d5494509450505050613c14565b613b416003600060088481548110613acc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613e3e90919063ffffffff16565b9250613bcc6004600060088481548110613b5757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613e3e90919063ffffffff16565b9150808060010191505061399b565b50613bf3600d54600e5461325b90919063ffffffff16565b821015613c0b57600e54600d54935093505050613c14565b81819350935050505b9091565b60008083118290613cc4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613c89578082015181840152602081019050613c6e565b50505050905090810190601f168015613cb65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613cd057fe5b049050809150509392505050565b613ce66153a2565b6000613cf183614e4f565b90506000613cfe84614e80565b90506000613d0b85614eb2565b90506000613d4682613d3885613d2a888b613e3e90919063ffffffff16565b613e3e90919063ffffffff16565b613e3e90919063ffffffff16565b9050604051806080016040528082815260200185815260200184815260200183815250945050505050919050565b613d7c6153c4565b6000613d86613230565b90506000613d9d82886135f090919063ffffffff16565b90506000613db483886135f090919063ffffffff16565b90506000613e13613dce85886135f090919063ffffffff16565b613e05613de4878b6135f090919063ffffffff16565b613df78688613e3e90919063ffffffff16565b613e3e90919063ffffffff16565b613e3e90919063ffffffff16565b9050604051806060016040528084815260200182815260200183815250945050505050949350505050565b6000613e8083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613170565b905092915050565b6060600267ffffffffffffffff81118015613ea257600080fd5b50604051908082528060200260200182016040528015613ed15781602001602082028036833780820191505090505b5090503081600081518110613ee257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613f8257600080fd5b505afa158015613f96573d6000803e3d6000fd5b505050506040513d6020811015613fac57600080fd5b810190808051906020019092919050505081600181518110613fca57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061402f307f000000000000000000000000000000000000000000000000000000000000000084612c90565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156140f15780820151818401526020810190506140d6565b505050509050019650505050505050600060405180830381600087803b15801561411a57600080fd5b505af115801561412e573d6000803e3d6000fd5b505050505050565b614161307f000000000000000000000000000000000000000000000000000000000000000084612c90565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561422957600080fd5b505af115801561423d573d6000803e3d6000fd5b50505050506040513d606081101561425457600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b60006142aa606461429c601954856135f090919063ffffffff16565b61325b90919063ffffffff16565b905060006142e5826142d7846142c98688613e3e90919063ffffffff16565b613e3e90919063ffffffff16565b613e3e90919063ffffffff16565b905061433281600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614ee490919063ffffffff16565b61437d82600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614ee490919063ffffffff16565b6143c882600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614ee490919063ffffffff16565b61441382600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614ee490919063ffffffff16565b505050565b600060135414801561442c57506000601554145b801561443a57506000601754145b1561444457614478565b6013546014819055506015546016819055506017546018819055506000601381905550600060158190555060006017819055505b565b600080600080600080600061448e8861332d565b96509650965096509650965096506144ee88600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e3e90919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061458387600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e3e90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061461886600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146648261501e565b61466d816151c3565b6146778584615368565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b60008060008060008060006146fc8861332d565b965096509650965096509650965061475c87600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e3e90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147f184600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061488686600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148d28261501e565b6148db816151c3565b6148e58584615368565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b600080600080600080600061496a8861332d565b96509650965096509650965096506149ca87600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e3e90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a5f86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614aab8261501e565b614ab4816151c3565b614abe8584615368565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000806000806000614b438861332d565b9650965096509650965096509650614ba388600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e3e90919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c3887600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e3e90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ccd84600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d6286600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614dae8261501e565b614db7816151c3565b614dc18584615368565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b601454601381905550601654601581905550601854601781905550565b6000614e796064614e6b601354856135f090919063ffffffff16565b61325b90919063ffffffff16565b9050919050565b6000614eab612710614e9d601554856135f090919063ffffffff16565b61325b90919063ffffffff16565b9050919050565b6000614edd612710614ecf601754856135f090919063ffffffff16565b61325b90919063ffffffff16565b9050919050565b80471015614f5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a20696e73756666696369656e742062616c616e636500000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d8060008114614fba576040519150601f19603f3d011682016040523d82523d6000602084013e614fbf565b606091505b5050905080615019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a81526020018061547c603a913960400191505060405180910390fd5b505050565b6000615028613230565b9050600061503f82846135f090919063ffffffff16565b905061509381600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156151be5761517a83600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b60006151cd613230565b905060006151e482846135f090919063ffffffff16565b905061523881600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156153635761531f83600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61537d82600e54613e3e90919063ffffffff16565b600e8190555061539881600f546132a590919063ffffffff16565b600f819055505050565b6040518060800160405280600490602082028036833780820191505090505090565b604051806060016040528060039060208202803683378082019150509050509056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208de4364221d8c543dbb0c587186867ef3782925071de26dbd5bea67f40b7f53664736f6c634300060c003300000000000000000000000050f0688f90069d9c9c2b1b6336320fb687e4f85d0000000000000000000000004a4aa8e1f7fb10054b749f830c1b994c94c5bbe000000000000000000000000050e98d5e1dcdf1f783e08413db6a4e0b380a543f000000000000000000000000874c91ed9ec20fe56816a098f178fca9189856d6

Deployed Bytecode

0x6080604052600436106102605760003560e01c806368b186eb11610144578063a457c2d7116100b6578063c49b9a801161007a578063c49b9a8014610ce6578063d543dbeb14610d23578063dd46706414610d5e578063dd62ed3e14610d99578063ea2f0b3714610e1e578063f2fde38b14610e6f57610267565b8063a457c2d714610b81578063a5f7e40814610bf2578063a69df4b514610c33578063a9059cbb14610c4a578063b6c5232414610cbb57610267565b80637d1db4a5116101085780637d1db4a5146109b857806388f82020146109e35780638da5cb5b14610a4a5780638ee88c5314610a8b57806395d89b4114610ac6578063a34dd1ce14610b5657610267565b806368b186eb146108b95780636bc87c3a146108fa57806370a0823114610925578063715018a61461098a578063733b864f146109a157610267565b8063313ce567116101dd5780634549b039116101a15780634549b039146106f757806349bd5a5e146107525780634a74bb021461079357806352390c02146107c05780635342acb41461081157806361d027b31461087857610267565b8063313ce5671461058b5780633685d419146105b9578063395093511461060a5780633b124fe71461067b578063437823ec146106a657610267565b806318160ddd1161022457806318160ddd146104145780631a9b184b1461043f57806323b872dd1461048057806328f0b257146105115780632d8381191461053c57610267565b8063061c82d01461026c57806306fdde03146102a7578063095ea7b31461033757806313114a9d146103a85780631694505e146103d357610267565b3661026757005b600080fd5b34801561027857600080fd5b506102a56004803603602081101561028f57600080fd5b8101908080359060200190929190505050610ec0565b005b3480156102b357600080fd5b506102bc610f92565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102fc5780820151818401526020810190506102e1565b50505050905090810190601f1680156103295780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034357600080fd5b506103906004803603604081101561035a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611034565b60405180821515815260200191505060405180910390f35b3480156103b457600080fd5b506103bd611052565b6040518082815260200191505060405180910390f35b3480156103df57600080fd5b506103e861105c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042057600080fd5b50610429611080565b6040518082815260200191505060405180910390f35b34801561044b57600080fd5b5061045461108a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561048c57600080fd5b506104f9600480360360608110156104a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110b0565b60405180821515815260200191505060405180910390f35b34801561051d57600080fd5b50610526611189565b6040518082815260200191505060405180910390f35b34801561054857600080fd5b506105756004803603602081101561055f57600080fd5b810190808035906020019092919050505061118f565b6040518082815260200191505060405180910390f35b34801561059757600080fd5b506105a0611213565b604051808260ff16815260200191505060405180910390f35b3480156105c557600080fd5b50610608600480360360208110156105dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061122a565b005b34801561061657600080fd5b506106636004803603604081101561062d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115b4565b60405180821515815260200191505060405180910390f35b34801561068757600080fd5b50610690611667565b6040518082815260200191505060405180910390f35b3480156106b257600080fd5b506106f5600480360360208110156106c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061166d565b005b34801561070357600080fd5b5061073c6004803603604081101561071a57600080fd5b8101908080359060200190929190803515159060200190929190505050611790565b6040518082815260200191505060405180910390f35b34801561075e57600080fd5b50610767611849565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561079f57600080fd5b506107a861186d565b60405180821515815260200191505060405180910390f35b3480156107cc57600080fd5b5061080f600480360360208110156107e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611880565b005b34801561081d57600080fd5b506108606004803603602081101561083457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b9a565b60405180821515815260200191505060405180910390f35b34801561088457600080fd5b5061088d611bf0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108c557600080fd5b506108ce611c16565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561090657600080fd5b5061090f611c3c565b6040518082815260200191505060405180910390f35b34801561093157600080fd5b506109746004803603602081101561094857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c42565b6040518082815260200191505060405180910390f35b34801561099657600080fd5b5061099f611d2d565b005b3480156109ad57600080fd5b506109b6611eb3565b005b3480156109c457600080fd5b506109cd611f94565b6040518082815260200191505060405180910390f35b3480156109ef57600080fd5b50610a3260048036036020811015610a0657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f9a565b60405180821515815260200191505060405180910390f35b348015610a5657600080fd5b50610a5f611ff0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a9757600080fd5b50610ac460048036036020811015610aae57600080fd5b8101908080359060200190929190505050612019565b005b348015610ad257600080fd5b50610adb6120eb565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b1b578082015181840152602081019050610b00565b50505050905090810190601f168015610b485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b6257600080fd5b50610b6b61218d565b6040518082815260200191505060405180910390f35b348015610b8d57600080fd5b50610bda60048036036040811015610ba457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612193565b60405180821515815260200191505060405180910390f35b348015610bfe57600080fd5b50610c07612260565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c3f57600080fd5b50610c48612286565b005b348015610c5657600080fd5b50610ca360048036036040811015610c6d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506124a3565b60405180821515815260200191505060405180910390f35b348015610cc757600080fd5b50610cd06124c1565b6040518082815260200191505060405180910390f35b348015610cf257600080fd5b50610d2160048036036020811015610d0957600080fd5b810190808035151590602001909291905050506124cb565b005b348015610d2f57600080fd5b50610d5c60048036036020811015610d4657600080fd5b81019080803590602001909291905050506125e9565b005b348015610d6a57600080fd5b50610d9760048036036020811015610d8157600080fd5b81019080803590602001909291905050506126e2565b005b348015610da557600080fd5b50610e0860048036036040811015610dbc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128d3565b6040518082815260200191505060405180910390f35b348015610e2a57600080fd5b50610e6d60048036036020811015610e4157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061295a565b005b348015610e7b57600080fd5b50610ebe60048036036020811015610e9257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a7d565b005b610ec8612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060138190555050565b606060108054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561102a5780601f10610fff5761010080835404028352916020019161102a565b820191906000526020600020905b81548152906001019060200180831161100d57829003601f168201915b5050505050905090565b6000611048611041612c88565b8484612c90565b6001905092915050565b6000600f54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600d54905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006110bd848484612e87565b61117e846110c9612c88565b611179856040518060600160405280602881526020016154d760289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061112f612c88565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131709092919063ffffffff16565b612c90565b600190509392505050565b60175481565b6000600e548211156111ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061540a602a913960400191505060405180910390fd5b60006111f6613230565b905061120b818461325b90919063ffffffff16565b915050919050565b6000601260009054906101000a900460ff16905090565b611232612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166113b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4163636f756e74206973206e6f74206578636c7564656400000000000000000081525060200191505060405180910390fd5b60005b6008805490508110156115b0578173ffffffffffffffffffffffffffffffffffffffff16600882815481106113e557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115a35760086001600880549050038154811061144157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061147957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061156957fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556115b0565b80806001019150506113b4565b5050565b600061165d6115c1612c88565b8461165885600560006115d2612c88565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b612c90565b6001905092915050565b60135481565b611675612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611735576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600d5483111561180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161182b57600061181a8461332d565b505050505050905080915050611843565b60006118368461332d565b5050505050915050809150505b92915050565b7f0000000000000000000000007be79082248f14999a6cc8048ba6406b349c7d5281565b601a60019054906101000a900460ff1681565b611888612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611948576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611adc57611a98600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461118f565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611cdd57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611d28565b611d25600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461118f565b90505b919050565b611d35612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611df5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611ebb612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000611f8630611c42565b9050611f918161342d565b50565b601b5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612021612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b606060118054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121835780601f1061215857610100808354040283529160200191612183565b820191906000526020600020905b81548152906001019060200180831161216657829003601f168201915b5050505050905090565b60195481565b60006122566121a0612c88565b846122518560405180606001604052806025815260200161559460259139600560006121ca612c88565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131709092919063ffffffff16565b612c90565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806155716023913960400191505060405180910390fd5b60025442116123a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006124b76124b0612c88565b8484612e87565b6001905092915050565b6000600254905090565b6124d3612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612593576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601a60016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b6125f1612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6126d960646126cb83600d546135f090919063ffffffff16565b61325b90919063ffffffff16565b601b8190555050565b6126ea612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612962612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612a85612c88565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612bcb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154346026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061554d6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061545a6022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806155286025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806153e76023913960400191505060405180910390fd5b60008111612fec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806154ff6029913960400191505060405180910390fd5b6000612ff730611c42565b9050601b54811061300857601b5490505b6000601c54821015905080801561302c5750601a60009054906101000a900460ff16155b801561308457507f0000000000000000000000007be79082248f14999a6cc8048ba6406b349c7d5273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561309c5750601a60019054906101000a900460ff165b156130ab576130aa8261342d565b5b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131525750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561315c57600090505b61316886868684613676565b505050505050565b600083831115829061321d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156131e25780820151818401526020810190506131c7565b50505050905090810190601f16801561320f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080600061323d613987565b91509150613254818361325b90919063ffffffff16565b9250505090565b600061329d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c18565b905092915050565b600080828401905083811015613323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060006133406153a2565b61334989613cde565b90506133536153c4565b6133928a8360016004811061336457fe5b60200201518460026004811061337657fe5b60200201518560036004811061338857fe5b6020020151613d74565b9050806000600381106133a157fe5b6020020151816001600381106133b357fe5b6020020151826002600381106133c557fe5b6020020151846000600481106133d757fe5b6020020151856001600481106133e957fe5b6020020151866002600481106133fb57fe5b60200201518760036004811061340d57fe5b602002015198509850985098509850985098505050919395979092949650565b6001601a60006101000a81548160ff02191690831515021790555060006134616017546015546132a590919063ffffffff16565b9050600061348c8261347e601554866135f090919063ffffffff16565b61325b90919063ffffffff16565b905060006134a38285613e3e90919063ffffffff16565b905060006134bb60028461325b90919063ffffffff16565b905060006134d283836132a590919063ffffffff16565b905060006134e98386613e3e90919063ffffffff16565b905060004790506134f983613e88565b600061350e8247613e3e90919063ffffffff16565b90506000613528600260155461325b90919063ffffffff16565b9050600061353f828b613e3e90919063ffffffff16565b905060006135688261355a86866135f090919063ffffffff16565b61325b90919063ffffffff16565b90506135748682614136565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56188828a60405180848152602001838152602001828152602001935050505060405180910390a14793506135c784614280565b50505050505050505050506000601a60006101000a81548160ff02191690831515021790555050565b6000808314156136035760009050613670565b600082840290508284828161361457fe5b041461366b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806154b66021913960400191505060405180910390fd5b809150505b92915050565b8061368457613683614418565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137275750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561373c5761373784848461447a565b613973565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137df5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137f4576137ef8484846146e8565b613972565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138985750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138ad576138a8848484614956565b613971565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561394f5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139645761395f848484614b2f565b613970565b61396f848484614956565b5b5b5b5b8061398157613980614e32565b5b50505050565b6000806000600e5490506000600d54905060005b600880549050811015613bdb578260036000600884815481106139ba57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613aa15750816004600060088481548110613a3957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613ab857600e54600d5494509450505050613c14565b613b416003600060088481548110613acc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613e3e90919063ffffffff16565b9250613bcc6004600060088481548110613b5757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613e3e90919063ffffffff16565b9150808060010191505061399b565b50613bf3600d54600e5461325b90919063ffffffff16565b821015613c0b57600e54600d54935093505050613c14565b81819350935050505b9091565b60008083118290613cc4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613c89578082015181840152602081019050613c6e565b50505050905090810190601f168015613cb65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613cd057fe5b049050809150509392505050565b613ce66153a2565b6000613cf183614e4f565b90506000613cfe84614e80565b90506000613d0b85614eb2565b90506000613d4682613d3885613d2a888b613e3e90919063ffffffff16565b613e3e90919063ffffffff16565b613e3e90919063ffffffff16565b9050604051806080016040528082815260200185815260200184815260200183815250945050505050919050565b613d7c6153c4565b6000613d86613230565b90506000613d9d82886135f090919063ffffffff16565b90506000613db483886135f090919063ffffffff16565b90506000613e13613dce85886135f090919063ffffffff16565b613e05613de4878b6135f090919063ffffffff16565b613df78688613e3e90919063ffffffff16565b613e3e90919063ffffffff16565b613e3e90919063ffffffff16565b9050604051806060016040528084815260200182815260200183815250945050505050949350505050565b6000613e8083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613170565b905092915050565b6060600267ffffffffffffffff81118015613ea257600080fd5b50604051908082528060200260200182016040528015613ed15781602001602082028036833780820191505090505b5090503081600081518110613ee257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613f8257600080fd5b505afa158015613f96573d6000803e3d6000fd5b505050506040513d6020811015613fac57600080fd5b810190808051906020019092919050505081600181518110613fca57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061402f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612c90565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156140f15780820151818401526020810190506140d6565b505050509050019650505050505050600060405180830381600087803b15801561411a57600080fd5b505af115801561412e573d6000803e3d6000fd5b505050505050565b614161307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612c90565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561422957600080fd5b505af115801561423d573d6000803e3d6000fd5b50505050506040513d606081101561425457600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b60006142aa606461429c601954856135f090919063ffffffff16565b61325b90919063ffffffff16565b905060006142e5826142d7846142c98688613e3e90919063ffffffff16565b613e3e90919063ffffffff16565b613e3e90919063ffffffff16565b905061433281600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614ee490919063ffffffff16565b61437d82600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614ee490919063ffffffff16565b6143c882600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614ee490919063ffffffff16565b61441382600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614ee490919063ffffffff16565b505050565b600060135414801561442c57506000601554145b801561443a57506000601754145b1561444457614478565b6013546014819055506015546016819055506017546018819055506000601381905550600060158190555060006017819055505b565b600080600080600080600061448e8861332d565b96509650965096509650965096506144ee88600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e3e90919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061458387600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e3e90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061461886600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146648261501e565b61466d816151c3565b6146778584615368565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b60008060008060008060006146fc8861332d565b965096509650965096509650965061475c87600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e3e90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147f184600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061488686600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148d28261501e565b6148db816151c3565b6148e58584615368565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b600080600080600080600061496a8861332d565b96509650965096509650965096506149ca87600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e3e90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a5f86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614aab8261501e565b614ab4816151c3565b614abe8584615368565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000806000806000614b438861332d565b9650965096509650965096509650614ba388600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e3e90919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c3887600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e3e90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ccd84600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d6286600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614dae8261501e565b614db7816151c3565b614dc18584615368565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b601454601381905550601654601581905550601854601781905550565b6000614e796064614e6b601354856135f090919063ffffffff16565b61325b90919063ffffffff16565b9050919050565b6000614eab612710614e9d601554856135f090919063ffffffff16565b61325b90919063ffffffff16565b9050919050565b6000614edd612710614ecf601754856135f090919063ffffffff16565b61325b90919063ffffffff16565b9050919050565b80471015614f5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a20696e73756666696369656e742062616c616e636500000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d8060008114614fba576040519150601f19603f3d011682016040523d82523d6000602084013e614fbf565b606091505b5050905080615019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a81526020018061547c603a913960400191505060405180910390fd5b505050565b6000615028613230565b9050600061503f82846135f090919063ffffffff16565b905061509381600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156151be5761517a83600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b60006151cd613230565b905060006151e482846135f090919063ffffffff16565b905061523881600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156153635761531f83600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a590919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61537d82600e54613e3e90919063ffffffff16565b600e8190555061539881600f546132a590919063ffffffff16565b600f819055505050565b6040518060800160405280600490602082028036833780820191505090505090565b604051806060016040528060039060208202803683378082019150509050509056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208de4364221d8c543dbb0c587186867ef3782925071de26dbd5bea67f40b7f53664736f6c634300060c0033

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

00000000000000000000000050f0688f90069d9c9c2b1b6336320fb687e4f85d0000000000000000000000004a4aa8e1f7fb10054b749f830c1b994c94c5bbe000000000000000000000000050e98d5e1dcdf1f783e08413db6a4e0b380a543f000000000000000000000000874c91ed9ec20fe56816a098f178fca9189856d6

-----Decoded View---------------
Arg [0] : _nerdy1Wallet (address): 0x50f0688f90069d9c9c2b1b6336320FB687E4F85d
Arg [1] : _nerdy2Wallet (address): 0x4a4Aa8E1F7fB10054B749F830C1b994c94c5bBe0
Arg [2] : _nerdy3Wallet (address): 0x50E98D5e1dcdf1f783E08413DB6A4e0b380a543f
Arg [3] : _treasuryWallet (address): 0x874C91Ed9Ec20FE56816a098F178Fca9189856d6

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000050f0688f90069d9c9c2b1b6336320fb687e4f85d
Arg [1] : 0000000000000000000000004a4aa8e1f7fb10054b749f830c1b994c94c5bbe0
Arg [2] : 00000000000000000000000050e98d5e1dcdf1f783e08413db6a4e0b380a543f
Arg [3] : 000000000000000000000000874c91ed9ec20fe56816a098f178fca9189856d6


Deployed Bytecode Sourcemap

25610:21188:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33559:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28649:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29561:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30682:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27140:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28926:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26067:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29730:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26861:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31223:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28835:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32143:475;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30051:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26558:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33322:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30777:438;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27198:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27273:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31802:333;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;39073:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26178:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26141:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26680:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29029:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16209:148;;;;;;;;;;;;;:::i;:::-;;31622:172;;;;;;;;;;;;;:::i;:::-;;27322:48;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30554:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15566:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33665:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28740:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27090:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30277:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26104:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17215:293;;;;;;;;;;;;;:::i;:::-;;29235:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16764:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33969:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33799:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16929:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29410:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33441:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16512:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33559:98;15788:12;:10;:12::i;:::-;15778:22;;:6;;;;;;;;;;:22;;;15770:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33643:6:::1;33633:7;:16;;;;33559:98:::0;:::o;28649:83::-;28686:13;28719:5;28712:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28649:83;:::o;29561:161::-;29636:4;29653:39;29662:12;:10;:12::i;:::-;29676:7;29685:6;29653:8;:39::i;:::-;29710:4;29703:11;;29561:161;;;;:::o;30682:87::-;30724:7;30751:10;;30744:17;;30682:87;:::o;27140:51::-;;;:::o;28926:95::-;28979:7;29006;;28999:14;;28926:95;:::o;26067:30::-;;;;;;;;;;;;;:::o;29730:313::-;29828:4;29845:36;29855:6;29863:9;29874:6;29845:9;:36::i;:::-;29892:121;29901:6;29909:12;:10;:12::i;:::-;29923:89;29961:6;29923:89;;;;;;;;;;;;;;;;;:11;:19;29935:6;29923:19;;;;;;;;;;;;;;;:33;29943:12;:10;:12::i;:::-;29923:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;29892:8;:121::i;:::-;30031:4;30024:11;;29730:313;;;;;:::o;26861:33::-;;;;:::o;31223:253::-;31289:7;31328;;31317;:18;;31309:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31393:19;31416:10;:8;:10::i;:::-;31393:33;;31444:24;31456:11;31444:7;:11;;:24;;;;:::i;:::-;31437:31;;;31223:253;;;:::o;28835:83::-;28876:5;28901:9;;;;;;;;;;;28894:16;;28835:83;:::o;32143:475::-;15788:12;:10;:12::i;:::-;15778:22;;:6;;;;;;;;;;:22;;;15770:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32225:11:::1;:20;32237:7;32225:20;;;;;;;;;;;;;;;;;;;;;;;;;32217:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;32289:9;32284:327;32308:9;:16;;;;32304:1;:20;32284:327;;;32366:7;32350:23;;:9;32360:1;32350:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;32346:254;;;32409:9;32438:1;32419:9;:16;;;;:20;32409:31;;;;;;;;;;;;;;;;;;;;;;;;;32394:9;32404:1;32394:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;32478:1;32459:7;:16;32467:7;32459:16;;;;;;;;;;;;;;;:20;;;;32521:5;32498:11;:20;32510:7;32498:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;32545:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32579:5;;32346:254;32326:3;;;;;;;32284:327;;;;32143:475:::0;:::o;30051:218::-;30139:4;30156:83;30165:12;:10;:12::i;:::-;30179:7;30188:50;30227:10;30188:11;:25;30200:12;:10;:12::i;:::-;30188:25;;;;;;;;;;;;;;;:34;30214:7;30188:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;30156:8;:83::i;:::-;30257:4;30250:11;;30051:218;;;;:::o;26558:26::-;;;;:::o;33322:111::-;15788:12;:10;:12::i;:::-;15778:22;;:6;;;;;;;;;;:22;;;15770:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33421:4:::1;33391:18;:27;33410:7;33391:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;33322:111:::0;:::o;30777:438::-;30867:7;30906;;30895;:18;;30887:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30965:17;30960:248;;31000:15;31025:19;31036:7;31025:10;:19::i;:::-;30999:45;;;;;;;;31066:7;31059:14;;;;;30960:248;31108:23;31140:19;31151:7;31140:10;:19::i;:::-;31106:53;;;;;;;;31181:15;31174:22;;;30777:438;;;;;:::o;27198:38::-;;;:::o;27273:40::-;;;;;;;;;;;;;:::o;31802:333::-;15788:12;:10;:12::i;:::-;15778:22;;:6;;;;;;;;;;:22;;;15770:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31885:11:::1;:20;31897:7;31885:20;;;;;;;;;;;;;;;;;;;;;;;;;31884:21;31876:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;31970:1;31951:7;:16;31959:7;31951:16;;;;;;;;;;;;;;;;:20;31948:108;;;32007:37;32027:7;:16;32035:7;32027:16;;;;;;;;;;;;;;;;32007:19;:37::i;:::-;31988:7;:16;31996:7;31988:16;;;;;;;;;;;;;;;:56;;;;31948:108;32089:4;32066:11;:20;32078:7;32066:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;32104:9;32119:7;32104:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31802:333:::0;:::o;39073:123::-;39137:4;39161:18;:27;39180:7;39161:27;;;;;;;;;;;;;;;;;;;;;;;;;39154:34;;39073:123;;;:::o;26178:31::-;;;;;;;;;;;;;:::o;26141:30::-;;;;;;;;;;;;;:::o;26680:34::-;;;;:::o;29029:198::-;29095:7;29119:11;:20;29131:7;29119:20;;;;;;;;;;;;;;;;;;;;;;;;;29115:49;;;29148:7;:16;29156:7;29148:16;;;;;;;;;;;;;;;;29141:23;;;;29115:49;29182:37;29202:7;:16;29210:7;29202:16;;;;;;;;;;;;;;;;29182:19;:37::i;:::-;29175:44;;29029:198;;;;:::o;16209:148::-;15788:12;:10;:12::i;:::-;15778:22;;:6;;;;;;;;;;:22;;;15770:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16316:1:::1;16279:40;;16300:6;::::0;::::1;;;;;;;;16279:40;;;;;;;;;;;;16347:1;16330:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16209:148::o:0;31622:172::-;15788:12;:10;:12::i;:::-;15778:22;;:6;;;;;;;;;;:22;;;15770:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31684:28:::1;31715:24;31733:4;31715:9;:24::i;:::-;31684:55;;31750:36;31765:20;31750:14;:36::i;:::-;15848:1;31622:172::o:0;27322:48::-;;;;:::o;30554:120::-;30622:4;30646:11;:20;30658:7;30646:20;;;;;;;;;;;;;;;;;;;;;;;;;30639:27;;30554:120;;;:::o;15566:79::-;15604:7;15631:6;;;;;;;;;;;15624:13;;15566:79;:::o;33665:122::-;15788:12;:10;:12::i;:::-;15778:22;;:6;;;;;;;;;;:22;;;15770:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33767:12:::1;33751:13;:28;;;;33665:122:::0;:::o;28740:87::-;28779:13;28812:7;28805:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28740:87;:::o;27090:40::-;;;;:::o;30277:269::-;30370:4;30387:129;30396:12;:10;:12::i;:::-;30410:7;30419:96;30458:15;30419:96;;;;;;;;;;;;;;;;;:11;:25;30431:12;:10;:12::i;:::-;30419:25;;;;;;;;;;;;;;;:34;30445:7;30419:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;30387:8;:129::i;:::-;30534:4;30527:11;;30277:269;;;;:::o;26104:30::-;;;;;;;;;;;;;:::o;17215:293::-;17285:10;17267:28;;:14;;;;;;;;;;;:28;;;17259:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17360:9;;17354:3;:15;17346:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17451:14;;;;;;;;;;;17422:44;;17443:6;;;;;;;;;;17422:44;;;;;;;;;;;;17486:14;;;;;;;;;;;17477:6;;:23;;;;;;;;;;;;;;;;;;17215:293::o;29235:167::-;29313:4;29330:42;29340:12;:10;:12::i;:::-;29354:9;29365:6;29330:9;:42::i;:::-;29390:4;29383:11;;29235:167;;;;:::o;16764:89::-;16809:7;16836:9;;16829:16;;16764:89;:::o;33969:171::-;15788:12;:10;:12::i;:::-;15778:22;;:6;;;;;;;;;;:22;;;15770:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34070:8:::1;34046:21;;:32;;;;;;;;;;;;;;;;;;34094:38;34123:8;34094:38;;;;;;;;;;;;;;;;;;;;33969:171:::0;:::o;33799:162::-;15788:12;:10;:12::i;:::-;15778:22;;:6;;;;;;;;;;:22;;;15770:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33893:60:::1;33937:5;33893:25;33905:12;33893:7;;:11;;:25;;;;:::i;:::-;:29;;:60;;;;:::i;:::-;33878:12;:75;;;;33799:162:::0;:::o;16929:214::-;15788:12;:10;:12::i;:::-;15778:22;;:6;;;;;;;;;;:22;;;15770:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17010:6:::1;::::0;::::1;;;;;;;;16993:14;;:23;;;;;;;;;;;;;;;;;;17044:1;17027:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;17075:4;17069:3;:10;17057:9;:22;;;;17132:1;17095:40;;17116:6;::::0;::::1;;;;;;;;17095:40;;;;;;;;;;;;16929:214:::0;:::o;29410:143::-;29491:7;29518:11;:18;29530:5;29518:18;;;;;;;;;;;;;;;:27;29537:7;29518:27;;;;;;;;;;;;;;;;29511:34;;29410:143;;;;:::o;33441:110::-;15788:12;:10;:12::i;:::-;15778:22;;:6;;;;;;;;;;:22;;;15770:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33538:5:::1;33508:18;:27;33527:7;33508:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;33441:110:::0;:::o;16512:244::-;15788:12;:10;:12::i;:::-;15778:22;;:6;;;;;;;;;;:22;;;15770:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16621:1:::1;16601:22;;:8;:22;;;;16593:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16711:8;16682:38;;16703:6;::::0;::::1;;;;;;;;16682:38;;;;;;;;;;;;16740:8;16731:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16512:244:::0;:::o;7974:106::-;8027:15;8062:10;8055:17;;7974:106;:::o;39204:337::-;39314:1;39297:19;;:5;:19;;;;39289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39395:1;39376:21;;:7;:21;;;;39368:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39479:6;39449:11;:18;39461:5;39449:18;;;;;;;;;;;;;;;:27;39468:7;39449:27;;;;;;;;;;;;;;;:36;;;;39517:7;39501:32;;39510:5;39501:32;;;39526:6;39501:32;;;;;;;;;;;;;;;;;;39204:337;;;:::o;39549:1265::-;39687:1;39671:18;;:4;:18;;;;39663:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39764:1;39750:16;;:2;:16;;;;39742:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39834:1;39825:6;:10;39817:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39894:28;39925:24;39943:4;39925:9;:24::i;:::-;39894:55;;39989:12;;39965:20;:36;39962:112;;40050:12;;40027:35;;39962:112;40086:24;40137:29;;40113:20;:53;;40086:80;;40195:19;:53;;;;;40232:16;;;;;;;;;;;40231:17;40195:53;:91;;;;;40273:13;40265:21;;:4;:21;;;;40195:91;:129;;;;;40303:21;;;;;;;;;;;40195:129;40177:222;;;40351:36;40366:20;40351:14;:36::i;:::-;40177:222;40472:12;40487:4;40472:19;;40591:18;:24;40610:4;40591:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;40619:18;:22;40638:2;40619:22;;;;;;;;;;;;;;;;;;;;;;;;;40591:50;40588:96;;;40667:5;40657:15;;40588:96;40768:38;40783:4;40788:2;40791:6;40798:7;40768:14;:38::i;:::-;39549:1265;;;;;;:::o;4384:192::-;4470:7;4503:1;4498;:6;;4506:12;4490:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4530:9;4546:1;4542;:5;4530:17;;4567:1;4560:8;;;4384:192;;;;;:::o;36596:163::-;36637:7;36658:15;36675;36694:19;:17;:19::i;:::-;36657:56;;;;36731:20;36743:7;36731;:11;;:20;;;;:::i;:::-;36724:27;;;;36596:163;:::o;5782:132::-;5840:7;5867:39;5871:1;5874;5867:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5860:46;;5782:132;;;;:::o;3481:181::-;3539:7;3559:9;3575:1;3571;:5;3559:17;;3600:1;3595;:6;;3587:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3653:1;3646:8;;;3481:181;;;;:::o;34397:396::-;34456:7;34465;34474;34483;34492;34501;34510;34530:25;;:::i;:::-;34558;34575:7;34558:16;:25::i;:::-;34530:53;;34594:25;;:::i;:::-;34622:61;34639:7;34648;34656:1;34648:10;;;;;;;;;;;34660:7;34668:1;34660:10;;;;;;;;;;;34672:7;34680:1;34672:10;;;;;;;;;;;34622:16;:61::i;:::-;34594:89;;34702:7;34710:1;34702:10;;;;;;;;;;;34714:7;34722:1;34714:10;;;;;;;;;;;34726:7;34734:1;34726:10;;;;;;;;;;;34738:7;34746:1;34738:10;;;;;;;;;;;34750:7;34758:1;34750:10;;;;;;;;;;;34762:7;34770:1;34762:10;;;;;;;;;;;34774:7;34782:1;34774:10;;;;;;;;;;;34694:91;;;;;;;;;;;;;;;;34397:396;;;;;;;;;:::o;40822:1742::-;27763:4;27744:16;;:23;;;;;;;;;;;;;;;;;;41017:32:::1;41052:31;41070:12;;41052:13;;:17;;:31;;;;:::i;:::-;41017:66;;41096:21;41120:69;41164:24;41120:39;41145:13;;41120:20;:24;;:39;;;;:::i;:::-;:43;;:69;;;;:::i;:::-;41096:93;;41200:20;41223:39;41248:13;41223:20;:24;;:39;;;;:::i;:::-;41200:62;;41275:25;41303:20;41321:1;41303:13;:17;;:20;;;;:::i;:::-;41275:48;;41423:20;41446:35;41468:12;41446:17;:21;;:35;;;;:::i;:::-;41423:58;;41494:30;41527:36;41545:17;41527:13;:17;;:36;;;;:::i;:::-;41494:69;;41841:22;41866:21;41841:46;;41932:30;41949:12;41932:16;:30::i;:::-;41975:18;41996:41;42022:14;41996:21;:25;;:41;;;;:::i;:::-;41975:62;;42050:28;42081:20;42099:1;42081:13;;:17;;:20;;;;:::i;:::-;42050:51;;42112:24;42139:50;42168:20;42139:24;:28;;:50;;;;:::i;:::-;42112:77;;42200:24;42227:58;42268:16;42227:36;42252:10;42227:20;:24;;:36;;;;:::i;:::-;:40;;:58;;;;:::i;:::-;42200:85;;42335:54;42348:22;42372:16;42335:12;:54::i;:::-;42405:70;42420:17;42439:16;42457:17;42405:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42501:21;42488:34;;42533:23;42545:10;42533:11;:23::i;:::-;27778:1;;;;;;;;;;;27809:5:::0;27790:16;;:24;;;;;;;;;;;;;;;;;;40822:1742;:::o;4835:471::-;4893:7;5143:1;5138;:6;5134:47;;;5168:1;5161:8;;;;5134:47;5193:9;5209:1;5205;:5;5193:17;;5238:1;5233;5229;:5;;;;;;:10;5221:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5297:1;5290:8;;;4835:471;;;;;:::o;44151:818::-;44262:7;44258:40;;44284:14;:12;:14::i;:::-;44258:40;44315:11;:19;44327:6;44315:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;44339:11;:22;44351:9;44339:22;;;;;;;;;;;;;;;;;;;;;;;;;44338:23;44315:46;44311:597;;;44378:48;44400:6;44408:9;44419:6;44378:21;:48::i;:::-;44311:597;;;44449:11;:19;44461:6;44449:19;;;;;;;;;;;;;;;;;;;;;;;;;44448:20;:46;;;;;44472:11;:22;44484:9;44472:22;;;;;;;;;;;;;;;;;;;;;;;;;44448:46;44444:464;;;44511:46;44531:6;44539:9;44550:6;44511:19;:46::i;:::-;44444:464;;;44580:11;:19;44592:6;44580:19;;;;;;;;;;;;;;;;;;;;;;;;;44579:20;:47;;;;;44604:11;:22;44616:9;44604:22;;;;;;;;;;;;;;;;;;;;;;;;;44603:23;44579:47;44575:333;;;44643:44;44661:6;44669:9;44680:6;44643:17;:44::i;:::-;44575:333;;;44709:11;:19;44721:6;44709:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;44732:11;:22;44744:9;44732:22;;;;;;;;;;;;;;;;;;;;;;;;;44709:45;44705:203;;;44771:48;44793:6;44801:9;44812:6;44771:21;:48::i;:::-;44705:203;;;44852:44;44870:6;44878:9;44889:6;44852:17;:44::i;:::-;44705:203;44575:333;44444:464;44311:597;44924:7;44920:41;;44946:15;:13;:15::i;:::-;44920:41;44151:818;;;;:::o;36767:555::-;36817:7;36826;36846:15;36864:7;;36846:25;;36882:15;36900:7;;36882:25;;36923:9;36918:289;36942:9;:16;;;;36938:1;:20;36918:289;;;37008:7;36984;:21;36992:9;37002:1;36992:12;;;;;;;;;;;;;;;;;;;;;;;;;36984:21;;;;;;;;;;;;;;;;:31;:66;;;;37043:7;37019;:21;37027:9;37037:1;37027:12;;;;;;;;;;;;;;;;;;;;;;;;;37019:21;;;;;;;;;;;;;;;;:31;36984:66;36980:97;;;37060:7;;37069;;37052:25;;;;;;;;;36980:97;37102:34;37114:7;:21;37122:9;37132:1;37122:12;;;;;;;;;;;;;;;;;;;;;;;;;37114:21;;;;;;;;;;;;;;;;37102:7;:11;;:34;;;;:::i;:::-;37092:44;;37161:34;37173:7;:21;37181:9;37191:1;37181:12;;;;;;;;;;;;;;;;;;;;;;;;;37173:21;;;;;;;;;;;;;;;;37161:7;:11;;:34;;;;:::i;:::-;37151:44;;36960:3;;;;;;;36918:289;;;;37231:20;37243:7;;37231;;:11;;:20;;;;:::i;:::-;37221:7;:30;37217:61;;;37261:7;;37270;;37253:25;;;;;;;;37217:61;37297:7;37306;37289:25;;;;;;36767:555;;;:::o;6410:278::-;6496:7;6528:1;6524;:5;6531:12;6516:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6555:9;6571:1;6567;:5;;;;;;6555:17;;6679:1;6672:8;;;6410:278;;;;;:::o;35234:417::-;35299:21;;:::i;:::-;35333:12;35348:24;35364:7;35348:15;:24::i;:::-;35333:39;;35383:18;35404:30;35426:7;35404:21;:30::i;:::-;35383:51;;35445:17;35465:29;35486:7;35465:20;:29::i;:::-;35445:49;;35505:23;35531:48;35569:9;35531:33;35553:10;35531:17;35543:4;35531:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:48;;;;:::i;:::-;35505:74;;35590:53;;;;;;;;35598:15;35590:53;;;;35615:4;35590:53;;;;35621:10;35590:53;;;;35633:9;35590:53;;;;;;;;;35234:417;;;:::o;36127:461::-;36245:21;;:::i;:::-;36279:19;36301:10;:8;:10::i;:::-;36279:32;;36322:15;36340:24;36352:11;36340:7;:11;;:24;;;;:::i;:::-;36322:42;;36375:12;36390:21;36399:11;36390:4;:8;;:21;;;;:::i;:::-;36375:36;;36422:23;36448:82;36503:26;36517:11;36503:9;:13;;:26;;;;:::i;:::-;36448:50;36470:27;36485:11;36470:10;:14;;:27;;;;:::i;:::-;36448:17;36460:4;36448:7;:11;;:17;;;;:::i;:::-;:21;;:50;;;;:::i;:::-;:54;;:82;;;;:::i;:::-;36422:108;;36541:39;;;;;;;;36549:7;36541:39;;;;36558:15;36541:39;;;;36575:4;36541:39;;;;;;;;;36127:461;;;;;;:::o;3945:136::-;4003:7;4030:43;4034:1;4037;4030:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4023:50;;3945:136;;;;:::o;42572:589::-;42698:21;42736:1;42722:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42698:40;;42767:4;42749;42754:1;42749:7;;;;;;;;;;;;;:23;;;;;;;;;;;42793:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42783:4;42788:1;42783:7;;;;;;;;;;;;;:32;;;;;;;;;;;42828:62;42845:4;42860:15;42878:11;42828:8;:62::i;:::-;42929:15;:66;;;43010:11;43036:1;43080:4;43107;43127:15;42929:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42572:589;;:::o;43169:519::-;43317:62;43334:4;43349:15;43367:11;43317:8;:62::i;:::-;43422:15;:31;;;43461:9;43494:4;43514:11;43540:1;43583;43634:4;43654:15;43422:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43169:519;;:::o;43696:374::-;43753:16;43772:44;43812:3;43772:35;43786:20;;43772:9;:13;;:35;;;;:::i;:::-;:39;;:44;;;;:::i;:::-;43753:63;;43825:25;43853:51;43895:8;43853:37;43881:8;43853:23;43867:8;43853:9;:13;;:23;;;;:::i;:::-;:27;;:37;;;;:::i;:::-;:41;;:51;;;;:::i;:::-;43825:79;;43915:37;43934:17;43915:8;;;;;;;;;;;:18;;;;:37;;;;:::i;:::-;43963:27;43981:8;43963:7;;;;;;;;;;;:17;;;;:27;;;;:::i;:::-;43999;44017:8;43999:7;;;;;;;;;;;:17;;;;:27;;;;:::i;:::-;44035;44053:8;44035:7;;;;;;;;;;;:17;;;;:27;;;;:::i;:::-;43696:374;;;:::o;38558:328::-;38615:1;38604:7;;:12;:34;;;;;38637:1;38620:13;;:18;38604:34;:55;;;;;38658:1;38642:12;;:17;38604:55;38601:67;;;38661:7;;38601:67;38698:7;;38680:15;:25;;;;38740:13;;38716:21;:37;;;;38787:12;;38764:20;:35;;;;38822:1;38812:7;:11;;;;38850:1;38834:13;:17;;;;38877:1;38862:12;:16;;;;38558:328;:::o;46178:617::-;46281:15;46298:23;46323:12;46337:23;46362:12;46376:18;46396:17;46417:19;46428:7;46417:10;:19::i;:::-;46280:156;;;;;;;;;;;;;;46465:28;46485:7;46465;:15;46473:6;46465:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;46447:7;:15;46455:6;46447:15;;;;;;;;;;;;;;;:46;;;;46522:28;46542:7;46522;:15;46530:6;46522:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;46504:7;:15;46512:6;46504:15;;;;;;;;;;;;;;;:46;;;;46582:39;46605:15;46582:7;:18;46590:9;46582:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;46561:7;:18;46569:9;46561:18;;;;;;;;;;;;;;;:60;;;;46632:26;46647:10;46632:14;:26::i;:::-;46669:24;46683:9;46669:13;:24::i;:::-;46704:23;46716:4;46722;46704:11;:23::i;:::-;46760:9;46743:44;;46752:6;46743:44;;;46771:15;46743:44;;;;;;;;;;;;;;;;;;46178:617;;;;;;;;;;:::o;45541:629::-;45642:15;45659:23;45684:12;45698:23;45723:12;45737:18;45757:17;45778:19;45789:7;45778:10;:19::i;:::-;45641:156;;;;;;;;;;;;;;45826:28;45846:7;45826;:15;45834:6;45826:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45808:7;:15;45816:6;45808:15;;;;;;;;;;;;;;;:46;;;;45886:39;45909:15;45886:7;:18;45894:9;45886:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45865:7;:18;45873:9;45865:18;;;;;;;;;;;;;;;:60;;;;45957:39;45980:15;45957:7;:18;45965:9;45957:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45936:7;:18;45944:9;45936:18;;;;;;;;;;;;;;;:60;;;;46007:26;46022:10;46007:14;:26::i;:::-;46044:24;46058:9;46044:13;:24::i;:::-;46079:23;46091:4;46097;46079:11;:23::i;:::-;46135:9;46118:44;;46127:6;46118:44;;;46146:15;46118:44;;;;;;;;;;;;;;;;;;45541:629;;;;;;;;;;:::o;44977:556::-;45076:15;45093:23;45118:12;45132:23;45157:12;45171:18;45191:17;45212:19;45223:7;45212:10;:19::i;:::-;45075:156;;;;;;;;;;;;;;45260:28;45280:7;45260;:15;45268:6;45260:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45242:7;:15;45250:6;45242:15;;;;;;;;;;;;;;;:46;;;;45320:39;45343:15;45320:7;:18;45328:9;45320:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45299:7;:18;45307:9;45299:18;;;;;;;;;;;;;;;:60;;;;45370:26;45385:10;45370:14;:26::i;:::-;45407:24;45421:9;45407:13;:24::i;:::-;45442:23;45454:4;45460;45442:11;:23::i;:::-;45498:9;45481:44;;45490:6;45481:44;;;45509:15;45481:44;;;;;;;;;;;;;;;;;;44977:556;;;;;;;;;;:::o;32626:688::-;32729:15;32746:23;32771:12;32785:23;32810:12;32824:18;32844:17;32865:19;32876:7;32865:10;:19::i;:::-;32728:156;;;;;;;;;;;;;;32913:28;32933:7;32913;:15;32921:6;32913:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32895:7;:15;32903:6;32895:15;;;;;;;;;;;;;;;:46;;;;32970:28;32990:7;32970;:15;32978:6;32970:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32952:7;:15;32960:6;32952:15;;;;;;;;;;;;;;;:46;;;;33030:39;33053:15;33030:7;:18;33038:9;33030:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33009:7;:18;33017:9;33009:18;;;;;;;;;;;;;;;:60;;;;33101:39;33124:15;33101:7;:18;33109:9;33101:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33080:7;:18;33088:9;33080:18;;;;;;;;;;;;;;;:60;;;;33151:26;33166:10;33151:14;:26::i;:::-;33188:24;33202:9;33188:13;:24::i;:::-;33223:23;33235:4;33241;33223:11;:23::i;:::-;33279:9;33262:44;;33271:6;33262:44;;;33290:15;33262:44;;;;;;;;;;;;;;;;;;32626:688;;;;;;;;;;:::o;38894:171::-;38948:15;;38938:7;:25;;;;38990:21;;38974:13;:37;;;;39037:20;;39022:12;:35;;;;38894:171::o;38050:154::-;38114:7;38141:55;38180:5;38141:20;38153:7;;38141;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;38134:62;;38050:154;;;:::o;38212:166::-;38282:7;38309:61;38354:5;38309:26;38321:13;;38309:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;38302:68;;38212:166;;;:::o;38386:164::-;38455:7;38482:60;38526:5;38482:25;38494:12;;38482:7;:11;;:25;;;;:::i;:::-;:29;;:60;;;;:::i;:::-;38475:67;;38386:164;;;:::o;10565:397::-;10680:6;10655:21;:31;;10647:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10812:12;10830:9;:14;;10853:6;10830:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10811:54;;;10884:7;10876:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10565:397;;;:::o;37330:355::-;37393:19;37416:10;:8;:10::i;:::-;37393:33;;37437:18;37458:27;37473:11;37458:10;:14;;:27;;;;:::i;:::-;37437:48;;37521:38;37548:10;37521:7;:22;37537:4;37521:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;37496:7;:22;37512:4;37496:22;;;;;;;;;;;;;;;:63;;;;37573:11;:26;37593:4;37573:26;;;;;;;;;;;;;;;;;;;;;;;;;37570:107;;;37639:38;37666:10;37639:7;:22;37655:4;37639:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;37614:7;:22;37630:4;37614:22;;;;;;;;;;;;;;;:63;;;;37570:107;37330:355;;;:::o;37693:349::-;37754:19;37777:10;:8;:10::i;:::-;37754:33;;37798:17;37818:26;37832:11;37818:9;:13;;:26;;;;:::i;:::-;37798:46;;37880:37;37907:9;37880:7;:22;37896:4;37880:22;;;;;;;;;;;;;;;;:26;;:37;;;;:::i;:::-;37855:7;:22;37871:4;37855:22;;;;;;;;;;;;;;;:62;;;;37931:11;:26;37951:4;37931:26;;;;;;;;;;;;;;;;;;;;;;;;;37928:106;;;37997:37;38024:9;37997:7;:22;38013:4;37997:22;;;;;;;;;;;;;;;;:26;;:37;;;;:::i;:::-;37972:7;:22;37988:4;37972:22;;;;;;;;;;;;;;;:62;;;;37928:106;37693:349;;;:::o;34242:147::-;34320:17;34332:4;34320:7;;:11;;:17;;;;:::i;:::-;34310:7;:27;;;;34361:20;34376:4;34361:10;;:14;;:20;;;;:::i;:::-;34348:10;:33;;;;34242:147;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

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