ETH Price: $2,337.51 (-0.46%)

Token

BitSAFE (SAFE)
 

Overview

Max Total Supply

10,000,000,000 SAFE

Holders

80

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 5 Decimals)

Balance
242,126.17792 SAFE

Value
$0.00
0xc42a8e6d1dc1a0094a8f6eeb02d74645c0cddcec
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
BitSAFE

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-06-11
*/

// SPDX-License-Identifier: MIT
// @dev Telegram: defi_guru
pragma solidity ^0.6.0;

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

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

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

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

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

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

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

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

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

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

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

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

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


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

interface IUniswapV2Pair {
    function sync() external;
}

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
      address token,
      uint liquidity,
      uint amountTokenMin,
      uint amountETHMin,
      address to,
      uint deadline
    ) external returns (uint amountETH);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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;
}

library SafeCast {

    function toUint128(uint256 value) internal pure returns (uint128) {
        require(value < 2**128, "SafeCast: value doesn\'t fit in 128 bits");
        return uint128(value);
    }

    function toUint64(uint256 value) internal pure returns (uint64) {
        require(value < 2**64, "SafeCast: value doesn\'t fit in 64 bits");
        return uint64(value);
    }

    function toUint32(uint256 value) internal pure returns (uint32) {
        require(value < 2**32, "SafeCast: value doesn\'t fit in 32 bits");
        return uint32(value);
    }

    function toUint16(uint256 value) internal pure returns (uint16) {
        require(value < 2**16, "SafeCast: value doesn\'t fit in 16 bits");
        return uint16(value);
    }

    function toUint8(uint256 value) internal pure returns (uint8) {
        require(value < 2**8, "SafeCast: value doesn\'t fit in 8 bits");
        return uint8(value);
    }
    
    function toUint256(int256 value) internal pure returns (uint256) {
        require(value >= 0, "SafeCast: value must be positive");
        return uint256(value);
    }

    function toInt256(uint256 value) internal pure returns (int256) {
        require(value < 2**255, "SafeCast: value doesn't fit in an int256");
        return int256(value);
    }
}

contract BitSAFE is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    using SafeCast for int256;
  
    string private _name = "BitSAFE";
    string private _symbol = "SAFE";
    uint8 private _decimals = 5;

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

    uint256 private constant MAX = ~uint256(0);
    uint256 internal _tokenTotal = 10_000_000_000e5;
    uint256 internal _reflectionTotal = (MAX - (MAX % _tokenTotal));

    mapping(address => bool) isTaxless;
    mapping(address => bool) internal _isExcluded;
    address[] internal _excluded;
        
    //all fees
    uint256 public feeDecimal = 2;
    uint256 public teamFee = 250;
    uint256 public liquidityFee = 250;
   
    uint256 public feeTotal;

    address public teamWallet;
    address public interestWallet;
    IERC20 public v1Token;
    
    mapping(address => uint256) public claimCount;
    mapping(address => uint256) public lastClaimed;
    mapping(address => uint256) public amountPerClaim;
    bool public claimEnabled = true;

    bool private inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public isFeeActive = true; // should be true
    
    uint256 public maxTxAmount = _tokenTotal.div(1000);// 0.1%
    uint256 public maxPriceImpact = 200; // 2%
    uint256 public minTokensBeforeSwap = 100_000e5;
    
    bool public cooldownEnabled = true;
    
    mapping(address => uint256) public sellCooldown;
    mapping(address => uint256) public buyCooldown;
    mapping(address => uint256) public sellCount;
    mapping(address => uint256) public sellCooldownStart;

    uint256 public buyCooldownTime = 2 minutes;
    uint256[] public sellCooldownTimes;
    uint256 public sellCooldownPeriod = 1 days;
    
    uint256 public lastRewardAt = block.timestamp;

    bool public p2pTaxEnabled = false;

    IUniswapV2Router02 public  uniswapV2Router;
    address public  uniswapV2Pair;
    
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(uint256 tokensSwapped,uint256 ethReceived, uint256 tokensIntoLiqudity);

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

    constructor() public {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Uniswap Router For Ethereum

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
            
        uniswapV2Router = _uniswapV2Router;
        
        address _owner = 0xe6d8Ee28600AD59999028009Fc2055789152d882;
        teamWallet = 0x72C8E1588F1B96a0A8495cC2035A6eDaaDBB1726;
        interestWallet = 0xC3AecD2a92e12A0F7597A7e4d4EdC2fC7fa53Bf7;
        address teamWalletCoin = 0xaF40c8123c9149878bcef9A9Fb0B0b4AebF37981;
        v1Token = IERC20(0xDD63603BFb128f184242B5A8541E9fDf3EB4B20b);

        isTaxless[_owner] = true;
        isTaxless[address(this)] = true;
        isTaxless[teamWallet] = true;
        isTaxless[teamWalletCoin] = true;
        isTaxless[interestWallet] = true;

        sellCooldownTimes.push(1 hours);
        sellCooldownTimes.push(2 hours);
        sellCooldownTimes.push(6 hours);
        sellCooldownTimes.push(sellCooldownPeriod);

        _isExcluded[uniswapV2Pair] = true;
        _excluded.push(uniswapV2Pair);
       
        _isExcluded[interestWallet] = true;
        _excluded.push(interestWallet);
        
         _isExcluded[teamWalletCoin] = true;
        _excluded.push(teamWalletCoin);
        
        _isExcluded[_owner] = true;
        _excluded.push(_owner);

        uint256 interestBalance = reflectionFromToken(300_000_000e5);
        _reflectionBalance[interestWallet] = interestBalance;
        _tokenBalance[interestWallet] = _tokenBalance[interestWallet].add(300_000_000e5);
        emit Transfer(address(0), interestWallet, 300_000_000e5);
        
        uint256 teamCoinsBal = reflectionFromToken(500_000_000e5);
        _reflectionBalance[teamWalletCoin] = teamCoinsBal;
        _tokenBalance[teamWalletCoin] = _tokenBalance[teamWalletCoin].add(500_000_000e5);
        emit Transfer(address(0), teamWalletCoin, 500_000_000e5);
        
        _reflectionBalance[_owner] = _reflectionTotal.sub(interestBalance).sub(teamCoinsBal);
        _tokenBalance[_owner] = _tokenBalance[_owner].add(_tokenTotal.sub(800_000_000e5));
        emit Transfer(address(0), _owner, _tokenTotal.sub(800_000_000e5));
        
        transferOwnership(_owner);
    }

    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 override view returns (uint256) {
        return _tokenTotal;
    }

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

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

    function allowance(address owner, address spender)
        public
        override
        view
        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 virtual 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 isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tokenAmount)
        public
        view
        returns (uint256)
    {
        require(tokenAmount <= _tokenTotal, "Amount must be less than supply");
        return tokenAmount.mul(_getReflectionRate());
    }

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

    function excludeAccount(address account) external onlyOwner() {
        require(
            account != address(uniswapV2Router),
            "TOKEN: We can not exclude Uniswap router."
        );
        
        require(!_isExcluded[account], "TOKEN: Account is already excluded");
        if (_reflectionBalance[account] > 0) {
            _tokenBalance[account] = tokenFromReflection(
                _reflectionBalance[account]
            );
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "TOKEN: Account is already included");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tokenBalance[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    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 sender,
        address recipient,
        uint256 amount
    ) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        require(
            isTaxless[sender] || isTaxless[recipient] || 
            (amount <= maxTxAmount && amount <= balanceOf(uniswapV2Pair).mul(maxPriceImpact).div(10**(feeDecimal + 2))),
            "Max Transfer Limit Exceeds!");
        
        uint256 transferAmount = amount;
        uint256 rate = _getReflectionRate();
        
        //swapAndLiquify
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 teamBal = balanceOf(teamWallet);
        if (!inSwapAndLiquify && sender != uniswapV2Pair && swapAndLiquifyEnabled) {
            if(contractTokenBalance >= minTokensBeforeSwap)
                swapAndLiquify(contractTokenBalance);
            else if(teamBal >= minTokensBeforeSwap) {
                _reflectionBalance[teamWallet] = _reflectionBalance[teamWallet].sub(teamBal.mul(rate));
                _reflectionBalance[address(this)] = _reflectionBalance[address(this)].add(teamBal.mul(rate));
                distributeTeam(teamBal);
            }
        }
        
        if(isFeeActive && !isTaxless[sender] && !isTaxless[recipient] && !inSwapAndLiquify) {
            transferAmount = collectFee(sender,recipient,amount,rate);
        }

        //transfer reflection
        _reflectionBalance[sender] = _reflectionBalance[sender].sub(amount.mul(rate));
        _reflectionBalance[recipient] = _reflectionBalance[recipient].add(transferAmount.mul(rate));

        //if any account belongs to the excludedAccount transfer token
        if (_isExcluded[sender]) {
            _tokenBalance[sender] = _tokenBalance[sender].sub(amount);
        }
        if (_isExcluded[recipient]) {
            _tokenBalance[recipient] = _tokenBalance[recipient].add(transferAmount);
        }

        emit Transfer(sender, recipient, transferAmount);
    }
    
    function validateTradeAndGetFee(address from, address to) private returns(uint256, uint256) {
        // only use Cooldown when buying/selling on exchange
        if(!cooldownEnabled || (from != uniswapV2Pair && to != uniswapV2Pair)) 
            return p2pTaxEnabled ? (teamFee, liquidityFee) : (0,0);
        
        if(to != uniswapV2Pair && !isTaxless[to]) {
            require(buyCooldown[to] <= block.timestamp, "Err: Buy Cooldown");
            buyCooldown[to] = block.timestamp + buyCooldownTime;
        }

        uint256 _teamFee = teamFee;
        uint256 _liquidityFee = liquidityFee;

        if(from != uniswapV2Pair && !isTaxless[from]) {
            require(sellCooldown[from] <= block.timestamp, "Err: Sell Cooldown");
            
            if(sellCooldownStart[from] + sellCooldownPeriod < block.timestamp) {
                sellCount[from] = 0;
                sellCooldownStart[from] = block.timestamp;
            }
          
            for(uint256 i = 0; i < sellCooldownTimes.length; i++) {
                if(sellCount[from] == i) {
                    sellCount[from]++;
                    sellCooldown[from] = block.timestamp + sellCooldownTimes[i];
                    _teamFee = teamFee.mul(i == 0 ? 1 : i + 3);
                    _liquidityFee = liquidityFee.mul(i == 0 ? 1 : i + 3);
                    if(sellCooldownTimes.length == i + 1) sellCooldown[from] = sellCooldownStart[from] + sellCooldownPeriod;
                    break;
                }
            }
        }
        return (_teamFee, _liquidityFee);
    }
    
    function collectFee(address account, address to, uint256 amount, uint256 rate) private returns (uint256) {
        uint256 transferAmount = amount;
        
        (uint256 __teamFee , uint256 __liquidityFee) = validateTradeAndGetFee(account, to);
  
        //take liquidity fee
        if(__liquidityFee != 0){
            uint256 _liquidityFee = amount.mul(__liquidityFee).div(10**(feeDecimal + 2));
            transferAmount = transferAmount.sub(_liquidityFee);
            _reflectionBalance[address(this)] = _reflectionBalance[address(this)].add(_liquidityFee.mul(rate));
            if (_isExcluded[address(this)]) {
                _tokenBalance[address(this)] = _tokenBalance[address(this)].add(_liquidityFee);
            }
            feeTotal = feeTotal.add(_liquidityFee);
            emit Transfer(account,address(this),_liquidityFee);
        }
        
        //take team fee
        if(__teamFee != 0){
            uint256 _teamFee = amount.mul(__teamFee).div(10**(feeDecimal + 2));
            transferAmount = transferAmount.sub(_teamFee);
            _reflectionBalance[teamWallet] = _reflectionBalance[teamWallet].add(_teamFee.mul(rate));
            if (_isExcluded[teamWallet]) {
                _tokenBalance[teamWallet] = _tokenBalance[teamWallet].add(_teamFee);
            }
            feeTotal = feeTotal.add(_teamFee);
            emit Transfer(account,teamWallet,_teamFee);
        }

        return transferAmount;
    }

    function _getReflectionRate() private view returns (uint256) {
        uint256 reflectionSupply = _reflectionTotal;
        uint256 tokenSupply = _tokenTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _reflectionBalance[_excluded[i]] > reflectionSupply ||
                _tokenBalance[_excluded[i]] > tokenSupply
            ) return _reflectionTotal.div(_tokenTotal);
            reflectionSupply = reflectionSupply.sub(
                _reflectionBalance[_excluded[i]]
            );
            tokenSupply = tokenSupply.sub(_tokenBalance[_excluded[i]]);
        }
        if (reflectionSupply < _reflectionTotal.div(_tokenTotal))
            return _reflectionTotal.div(_tokenTotal);
        return reflectionSupply.div(tokenSupply);
    }
    
     function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
         if(contractTokenBalance > maxTxAmount)
            contractTokenBalance = maxTxAmount;
            
        // split the contract balance into halves
        uint256 half = contractTokenBalance.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        // 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(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = address(this).balance.sub(initialBalance);

        // add liquidity to uniswap
        addLiquidity(otherHalf, newBalance);
        
        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    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 distributeTeam(uint256 amount) private lockTheSwap {
        swapTokensForEth(amount);
        payable(teamWallet).transfer(address(this).balance);
    }
   
    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
            owner(),
            block.timestamp
        );
    }
    
    function claimTokens() external {
        require(claimEnabled, "Claimed Period Ended!");
        address sender = interestWallet;
        address recipient = msg.sender;
        if(claimCount[msg.sender] == 0) {
            uint256 bal = v1Token.balanceOf(recipient);
            require(bal > 0, "No claim available!");
            amountPerClaim[msg.sender] = bal.mul(20).div(100);
            v1Token.transferFrom(msg.sender,address(0x000000000000000000000000000000000000dEaD),bal);
        }
        require(claimCount[msg.sender] < 5, "Already claimed!");
        require(lastClaimed[msg.sender] + 7 days < block.timestamp ,"Claim too soon!");
        uint256 amount = amountPerClaim[msg.sender];
        uint256 rate = _getReflectionRate();
        //transfer reflection
        _reflectionBalance[sender] = _reflectionBalance[sender].sub(amount.mul(rate));
        _reflectionBalance[recipient] = _reflectionBalance[recipient].add(amount.mul(rate));

        //if any account belongs to the excludedAccount transfer token
        if (_isExcluded[sender]) {
            _tokenBalance[sender] = _tokenBalance[sender].sub(amount);
        }
        if (_isExcluded[recipient]) {
            _tokenBalance[recipient] = _tokenBalance[recipient].add(amount);
        }
        emit Transfer(sender,recipient,amount);
        claimCount[msg.sender]++;
        lastClaimed[msg.sender] = block.timestamp;
    }
    
    function rewardHolders(uint256 amount) external onlyOwner {
        uint256 reward = 25_000_000e5;
        if(amount != 0) reward = amount;
        if (_isExcluded[interestWallet]) {
            _tokenBalance[interestWallet] = _tokenBalance[interestWallet].sub(reward);
        }
        uint256 rate = _getReflectionRate();
        _reflectionBalance[interestWallet] = _reflectionBalance[interestWallet].sub(reward.mul(rate));
        _reflectionTotal = _reflectionTotal.sub(reward.mul(rate));
        feeTotal = feeTotal.add(reward);
        emit Transfer(interestWallet,address(this),reward);
        lastRewardAt = block.timestamp;
    }
    
    function deliver(uint256 amount) external {
        require(!_isExcluded[msg.sender],'Excluded cannot call this!');
        uint256 rate = _getReflectionRate();
        _reflectionBalance[msg.sender] = _reflectionBalance[msg.sender].sub(amount.mul(rate));
        _reflectionTotal = _reflectionTotal.sub(amount.mul(rate));
        feeTotal = feeTotal.add(amount);
        emit Transfer(msg.sender,address(this),amount);
    }
    
    function setClaimEnabled(bool value) external onlyOwner {
        claimEnabled = value;
    }

    function setTaxless(address account, bool value) external onlyOwner {
        isTaxless[account] = value;
    }
    
    function setSwapAndLiquifyEnabled(bool enabled) external onlyOwner {
        swapAndLiquifyEnabled = enabled;
        SwapAndLiquifyEnabledUpdated(enabled);
    }
    
    function setFeeActive(bool value) external onlyOwner {
        isFeeActive = value;
    }
    
    function setTeamFee(uint256 fee) external onlyOwner {
        teamFee = fee;
    }
    
    function setLiquidityFee(uint256 fee) external onlyOwner {
        liquidityFee = fee;
    }
    
    function setTeamWallet(address wallet) external onlyOwner {
        teamWallet = wallet;
    }
    
    function setInterestWallet(address wallet) external onlyOwner {
        interestWallet = wallet;
    }
    
    function setMaxTransferAndPriceImpact(uint256 maxAmount, uint256 maxImpact) external onlyOwner {
        maxTxAmount = maxAmount;
        maxPriceImpact = maxImpact;
    }
    
    function setMinTokensBeforeSwap(uint256 amount) external onlyOwner {
        minTokensBeforeSwap = amount;
    }
    
    function setCooldonwEnabled(bool value) external onlyOwner {
        cooldownEnabled = value;
    }
    
    function setBuyCooldown(uint256 cooldown) external onlyOwner {
        minTokensBeforeSwap = cooldown;
    }
    
    function setSellCooldown(uint256 cooldownPeriod, uint256[] memory sellTimes) external onlyOwner {
        sellCooldownPeriod = cooldownPeriod;
        sellCooldownTimes = sellTimes;
    }
    
    function setP2pTaxEnabled(bool value) external onlyOwner {
        p2pTaxEnabled = value;
    }
   
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","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":[{"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":"","type":"address"}],"name":"amountPerClaim","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":[{"internalType":"address","name":"","type":"address"}],"name":"buyCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uint256","name":"amount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDecimal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","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":[],"name":"interestWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isFeeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRewardAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPriceImpact","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":"minTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"p2pTaxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rewardHolders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"sellCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellCooldownPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"sellCooldownStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"sellCooldownTimes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"sellCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"cooldown","type":"uint256"}],"name":"setBuyCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setClaimEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setCooldonwEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setFeeActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setInterestWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"maxImpact","type":"uint256"}],"name":"setMaxTransferAndPriceImpact","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMinTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setP2pTaxEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"cooldownPeriod","type":"uint256"},{"internalType":"uint256[]","name":"sellTimes","type":"uint256[]"}],"name":"setSellCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setTaxless","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setTeamWallet","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":[],"name":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflectionAmount","type":"uint256"}],"name":"tokenFromReflection","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":"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":"v1Token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405260076080819052664269745341464560c81b60a09081526200002a916001919062000db0565b50604080518082019091526004808252635341464560e01b6020909201918252620000589160029162000db0565b5060038054600560ff199182161790915566038d7ea4c6800060078190556507326b47ffff196008556002600c5560fa600d819055600e55601680546301000000620100009190941660011762ff000019161763ff000000191692909217909155620000d3906103e8620007fb602090811b6200254b17901c565b60175560c86018556402540be400601955601a805460ff199081166001179091556078601f5562015180602155426022556023805490911690553480156200011a57600080fd5b506000620001276200084e565b600080546001600160a01b0319166001600160a01b03831690811782556040519293509160008051602062004901833981519152908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001b357600080fd5b505afa158015620001c8573d6000803e3d6000fd5b505050506040513d6020811015620001df57600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b1580156200023057600080fd5b505afa15801562000245573d6000803e3d6000fd5b505050506040513d60208110156200025c57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b158015620002af57600080fd5b505af1158015620002c4573d6000803e3d6000fd5b505050506040513d6020811015620002db57600080fd5b5051602480546001600160a01b039283166001600160a01b03199182161782556023805485851661010002610100600160a81b03199091161790556010805482167372c8e1588f1b96a0a8495cc2035a6edaadbb172617815560118054831673c3aecd2a92e12a0f7597a7e4d4edc2fc7fa53bf717815560128054841673dd63603bfb128f184242b5a8541e9fdf3eb4b20b179055600960209081527fc959c7bdd0722c77da0bb40610017aa2ffd19369079ced749cef1f9c042f9dc2805460ff1990811660019081179092553060009081526040808220805484168517905595548916815285812080548316841790557f1630d560929c3e27b203d376551d4f4c6191b3f4b611ee7913cdbb9f430a425d8054831684179055845489168152858120805483168417905583548084018555610e107fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb9182015584548085018655611c209082015584548085018655615460908201556021548554808601875590910155875489168152600a90935284832080548216831790559554600b805480840182557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990810180548916938b1693909317909255845489168452948320805488168317905592548454808301865584018054871691909816179096557f915c9de9fc55b153a23df24c0e0e47bac33958655041c7f9f5260a4a8bd2b72380548616871790558254808701845582018054851673af40c8123c9149878bcef9a9fb0b0b4aebf379819081179091557f3498be77c0793138ccfec749d3ccd3eb265b186515f6034475d5bb443ec8fa3f805490961687179095558254958601835591825293909301805490911673e6d8ee28600ad59999028009fc2055789152d8829081179091559162000596651b48eb57e00062000853565b601180546001600160a01b03908116600090815260046020908152604080832086905593549092168152600582529190912054919250620005e99190651b48eb57e000906200258d620008d0821b17901c565b601180546001600160a01b0390811660009081526005602090815260408083209590955592548451651b48eb57e0008152945192169390926000805160206200492183398151915292918290030190a360006200064c652d79883d200062000853565b6001600160a01b03841660009081526004602090815260408083208490556005825290912054919250620006929190652d79883d2000906200258d620008d0821b17901c565b6001600160a01b0384166000818152600560209081526040808320949094558351652d79883d20008152935192939192600080516020620049218339815191529281900390910190a36200071081620006fc846008546200092b60201b620025e71790919060201c565b6200092b60201b620025e71790919060201c565b6001600160a01b03851660009081526004602090815260409091209190915560075462000781916200075491906548c27395000090620025e76200092b821b17901c565b6001600160a01b03861660009081526005602090815260409091205491906200258d620008d0821b17901c565b6001600160a01b0385166000818152600560209081526040822093909355600754919290916000805160206200492183398151915291620007d491906548c27395000090620025e76200092b821b17901c565b60408051918252519081900360200190a3620007f08462000975565b505050505062000e4c565b60006200084583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000a7360201b60201c565b90505b92915050565b335b90565b6000600754821115620008ad576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b62000848620008bb62000b1a565b8362000cf560201b620026291790919060201c565b60008282018381101562000845576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006200084583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000d5360201b60201c565b6200097f6200084e565b6000546001600160a01b03908116911614620009e2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811662000a295760405162461bcd60e51b8152600401808060200182810382526026815260200180620048ba6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216916000805160206200490183398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818362000b035760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000ac757818101518382015260200162000aad565b50505050905090810190601f16801562000af55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162000b1057fe5b0495945050505050565b60085460075460009190825b600b5481101562000c85578260046000600b848154811062000b4457fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118062000bab57508160056000600b848154811062000b8457fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1562000bda5762000bcf600754600854620007fb60201b6200254b1790919060201c565b935050505062000850565b62000c2960046000600b848154811062000bf057fe5b60009182526020808320909101546001600160a01b031683528281019390935260409091019020548591620025e76200092b821b17901c565b925062000c7a60056000600b848154811062000c4157fe5b60009182526020808320909101546001600160a01b031683528281019390935260409091019020548491620025e76200092b821b17901c565b915060010162000b26565b5062000ca4600754600854620007fb60201b6200254b1790919060201c565b82101562000cd45762000cca600754600854620007fb60201b6200254b1790919060201c565b9250505062000850565b62000cee8183620007fb60201b6200254b1790919060201c565b9250505090565b60008262000d065750600062000848565b8282028284828162000d1457fe5b0414620008455760405162461bcd60e51b8152600401808060200182810382526021815260200180620048e06021913960400191505060405180910390fd5b6000818484111562000da85760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831562000ac757818101518382015260200162000aad565b505050900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000df357805160ff191683800117855562000e23565b8280016001018555821562000e23579182015b8281111562000e2357825182559160200191906001019062000e06565b5062000e3192915062000e35565b5090565b5b8082111562000e31576000815560010162000e36565b613a5e8062000e5c6000396000f3fe6080604052600436106103c75760003560e01c80637e11b31f116101f2578063c0ee14e61161010d578063e5d41c6b116100a0578063f2cc0c181161006f578063f2cc0c1814610da5578063f2e1562814610dd8578063f2fde38b14610ded578063f84354f114610e20576103ce565b8063e5d41c6b14610d09578063e6bd7ed114610d1e578063e6ec64ec14610d48578063f1a5160114610d72576103ce565b8063d7c94efd116100dc578063d7c94efd14610c74578063d93bbee614610c89578063dd62ed3e14610cb9578063e43504da14610cf4576103ce565b8063c0ee14e614610beb578063c29632bd146107ae578063c49b9a8014610c15578063cba0e99614610c41576103ce565b8063a9059cbb11610185578063b7bfff6511610154578063b7bfff6514610b62578063b92499ff14610b8e578063b9301de814610ba3578063b99584e414610bd6576103ce565b8063a9059cbb14610aea578063a985ceef14610b23578063af456cf814610b38578063b3d3673514610b4d576103ce565b806395d89b41116101c157806395d89b4114610a5b57806398118cb414610a705780639bc38ac014610a85578063a457c2d714610ab1576103ce565b80637e11b31f146109f05780638c0b5e2214610a055780638da5cb5b14610a1a57806392929a0914610a2f576103ce565b806339509351116102e257806352d35668116102755780636e961f71116102445780636e961f711461094957806370a0823114610975578063715018a6146109a857806371d40dae146109bd576103ce565b806352d356681461081757806359927044146108ce5780636236547a146108e357806369c12cb714610916576103ce565b806348a46473116102b157806348a46473146107ae57806348c54b9d146107d857806349bd5a5e146107ed5780634a74bb0214610802576103ce565b806339509351146106fb5780633bd5d1731461073457806347f2dc5b1461075e578063485431c214610799576103ce565b806318160ddd1161035a578063313ce56711610329578063313ce5671461065e578063342e5b0314610689578063357bf15c146106bc57806337bfc1ef146106e6576103ce565b806318160ddd146105c757806323b872dd146105dc5780632866ed211461061f5780632d83811914610634576103ce565b80631392c086116103965780631392c086146105245780631525ff7d1461054e5780631694505e1461058157806316c8357f146105b2576103ce565b8063013eba92146103d357806304d18dac1461041857806306fdde031461044d578063095ea7b3146104d7576103ce565b366103ce57005b600080fd5b3480156103df57600080fd5b50610406600480360360208110156103f657600080fd5b50356001600160a01b0316610e53565b60408051918252519081900360200190f35b34801561042457600080fd5b5061044b6004803603602081101561043b57600080fd5b50356001600160a01b0316610e65565b005b34801561045957600080fd5b50610462610edf565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561049c578181015183820152602001610484565b50505050905090810190601f1680156104c95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104e357600080fd5b50610510600480360360408110156104fa57600080fd5b506001600160a01b038135169060200135610f75565b604080519115158252519081900360200190f35b34801561053057600080fd5b506104066004803603602081101561054757600080fd5b5035610f93565b34801561055a57600080fd5b5061044b6004803603602081101561057157600080fd5b50356001600160a01b0316611006565b34801561058d57600080fd5b50610596611080565b604080516001600160a01b039092168252519081900360200190f35b3480156105be57600080fd5b50610406611094565b3480156105d357600080fd5b5061040661109a565b3480156105e857600080fd5b50610510600480360360608110156105ff57600080fd5b506001600160a01b038135811691602081013590911690604001356110a0565b34801561062b57600080fd5b50610510611127565b34801561064057600080fd5b506104066004803603602081101561065757600080fd5b5035611130565b34801561066a57600080fd5b50610673611190565b6040805160ff9092168252519081900360200190f35b34801561069557600080fd5b50610406600480360360208110156106ac57600080fd5b50356001600160a01b0316611199565b3480156106c857600080fd5b5061044b600480360360208110156106df57600080fd5b50356111ab565b3480156106f257600080fd5b50610406611208565b34801561070757600080fd5b506105106004803603604081101561071e57600080fd5b506001600160a01b03813516906020013561120e565b34801561074057600080fd5b5061044b6004803603602081101561075757600080fd5b503561125c565b34801561076a57600080fd5b5061044b6004803603604081101561078157600080fd5b506001600160a01b0381351690602001351515611352565b3480156107a557600080fd5b506104066113d5565b3480156107ba57600080fd5b5061044b600480360360208110156107d157600080fd5b50356113db565b3480156107e457600080fd5b5061044b611438565b3480156107f957600080fd5b50610596611892565b34801561080e57600080fd5b506105106118a1565b34801561082357600080fd5b5061044b6004803603604081101561083a57600080fd5b8135919081019060408101602082013564010000000081111561085c57600080fd5b82018360208201111561086e57600080fd5b8035906020019184602083028401116401000000008311171561089057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506118b0945050505050565b3480156108da57600080fd5b50610596611924565b3480156108ef57600080fd5b506104066004803603602081101561090657600080fd5b50356001600160a01b0316611933565b34801561092257600080fd5b506104066004803603602081101561093957600080fd5b50356001600160a01b0316611945565b34801561095557600080fd5b5061044b6004803603602081101561096c57600080fd5b50351515611957565b34801561098157600080fd5b506104066004803603602081101561099857600080fd5b50356001600160a01b03166119c2565b3480156109b457600080fd5b5061044b611a24565b3480156109c957600080fd5b50610406600480360360208110156109e057600080fd5b50356001600160a01b0316611ac6565b3480156109fc57600080fd5b50610406611ad8565b348015610a1157600080fd5b50610406611ade565b348015610a2657600080fd5b50610596611ae4565b348015610a3b57600080fd5b5061044b60048036036020811015610a5257600080fd5b50351515611af3565b348015610a6757600080fd5b50610462611b5e565b348015610a7c57600080fd5b50610406611bbc565b348015610a9157600080fd5b5061044b60048036036020811015610aa857600080fd5b50351515611bc2565b348015610abd57600080fd5b5061051060048036036040811015610ad457600080fd5b506001600160a01b038135169060200135611c2d565b348015610af657600080fd5b5061051060048036036040811015610b0d57600080fd5b506001600160a01b038135169060200135611c95565b348015610b2f57600080fd5b50610510611ca9565b348015610b4457600080fd5b50610596611cb2565b348015610b5957600080fd5b50610406611cc1565b348015610b6e57600080fd5b5061044b60048036036020811015610b8557600080fd5b50351515611cc7565b348015610b9a57600080fd5b50610510611d3d565b348015610baf57600080fd5b5061040660048036036020811015610bc657600080fd5b50356001600160a01b0316611d46565b348015610be257600080fd5b50610596611d58565b348015610bf757600080fd5b5061040660048036036020811015610c0e57600080fd5b5035611d67565b348015610c2157600080fd5b5061044b60048036036020811015610c3857600080fd5b50351515611d85565b348015610c4d57600080fd5b5061051060048036036020811015610c6457600080fd5b50356001600160a01b0316611e2e565b348015610c8057600080fd5b50610406611e4c565b348015610c9557600080fd5b5061044b60048036036040811015610cac57600080fd5b5080359060200135611e52565b348015610cc557600080fd5b5061040660048036036040811015610cdc57600080fd5b506001600160a01b0381358116916020013516611eb5565b348015610d0057600080fd5b50610510611ee0565b348015610d1557600080fd5b50610406611ef0565b348015610d2a57600080fd5b5061044b60048036036020811015610d4157600080fd5b5035611ef6565b348015610d5457600080fd5b5061044b60048036036020811015610d6b57600080fd5b5035612071565b348015610d7e57600080fd5b5061040660048036036020811015610d9557600080fd5b50356001600160a01b03166120ce565b348015610db157600080fd5b5061044b60048036036020811015610dc857600080fd5b50356001600160a01b03166120e0565b348015610de457600080fd5b506104066122a2565b348015610df957600080fd5b5061044b60048036036020811015610e1057600080fd5b50356001600160a01b03166122a8565b348015610e2c57600080fd5b5061044b60048036036020811015610e4357600080fd5b50356001600160a01b03166123a0565b60146020526000908152604090205481565b610e6d612682565b6000546001600160a01b03908116911614610ebd576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610f6a5780601f10610f3f57610100808354040283529160200191610f6a565b820191906000526020600020905b815481529060010190602001808311610f4d57829003601f168201915b505050505090505b90565b6000610f89610f82612682565b8484612686565b5060015b92915050565b6000600754821115610fec576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b610ffe610ff7612772565b8390612629565b90505b919050565b61100e612682565b6000546001600160a01b0390811691161461105e576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b60235461010090046001600160a01b031681565b60185481565b60075490565b60006110ad8484846128e9565b61111d846110b9612682565b6111188560405180606001604052806028815260200161392a602891396001600160a01b038a166000908152600660205260408120906110f7612682565b6001600160a01b031681526020810191909152604001600020549190612da4565b612686565b5060019392505050565b60165460ff1681565b60006008548211156111735760405162461bcd60e51b815260040180806020018281038252602a81526020018061382a602a913960400191505060405180910390fd5b600061117d612772565b9050611189838261254b565b9392505050565b60035460ff1690565b601c6020526000908152604090205481565b6111b3612682565b6000546001600160a01b03908116911614611203576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b600e55565b600f5481565b6000610f8961121b612682565b84611118856006600061122c612682565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061258d565b336000908152600a602052604090205460ff16156112c1576040805162461bcd60e51b815260206004820152601a60248201527f4578636c756465642063616e6e6f742063616c6c207468697321000000000000604482015290519081900360640190fd5b60006112cb612772565b90506112f06112da8383612629565b33600090815260046020526040902054906125e7565b3360009081526004602052604090205561131661130d8383612629565b600854906125e7565b600855600f54611326908361258d565b600f556040805183815290513091339160008051602061399b8339815191529181900360200190a35050565b61135a612682565b6000546001600160a01b039081169116146113aa576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b60215481565b6113e3612682565b6000546001600160a01b03908116911614611433576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b601955565b60165460ff16611487576040805162461bcd60e51b8152602060048201526015602482015274436c61696d656420506572696f6420456e6465642160581b604482015290519081900360640190fd5b601154336000818152601360205260409020546001600160a01b039092169161162257601254604080516370a0823160e01b81526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b1580156114fb57600080fd5b505afa15801561150f573d6000803e3d6000fd5b505050506040513d602081101561152557600080fd5b5051905080611571576040805162461bcd60e51b81526020600482015260136024820152724e6f20636c61696d20617661696c61626c652160681b604482015290519081900360640190fd5b6115876064611581836014612629565b9061254b565b3360008181526015602090815260408083209490945560125484516323b872dd60e01b8152600481019490945261dead60248501526044840186905293516001600160a01b03909416936323b872dd93606480820194918390030190829087803b1580156115f457600080fd5b505af1158015611608573d6000803e3d6000fd5b505050506040513d602081101561161e57600080fd5b5050505b33600090815260136020526040902054600511611679576040805162461bcd60e51b815260206004820152601060248201526f416c726561647920636c61696d65642160801b604482015290519081900360640190fd5b336000908152601460205260409020544262093a80909101106116d5576040805162461bcd60e51b815260206004820152600f60248201526e436c61696d20746f6f20736f6f6e2160881b604482015290519081900360640190fd5b33600090815260156020526040812054906116ee612772565b905061171c6116fd8383612629565b6001600160a01b038616600090815260046020526040902054906125e7565b6001600160a01b0385166000908152600460205260409020556117616117428383612629565b6001600160a01b0385166000908152600460205260409020549061258d565b6001600160a01b038085166000908152600460209081526040808320949094559187168152600a909152205460ff16156117d2576001600160a01b0384166000908152600560205260409020546117b890836125e7565b6001600160a01b0385166000908152600560205260409020555b6001600160a01b0383166000908152600a602052604090205460ff1615611830576001600160a01b038316600090815260056020526040902054611816908361258d565b6001600160a01b0384166000908152600560205260409020555b826001600160a01b0316846001600160a01b031660008051602061399b833981519152846040518082815260200191505060405180910390a3505033600090815260136020908152604080832080546001019055601490915290204290555050565b6024546001600160a01b031681565b60165462010000900460ff1681565b6118b8612682565b6000546001600160a01b03908116911614611908576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6021829055805161191f90602090818401906137a6565b505050565b6010546001600160a01b031681565b60156020526000908152604090205481565b60136020526000908152604090205481565b61195f612682565b6000546001600160a01b039081169116146119af576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b601a805460ff1916911515919091179055565b6001600160a01b0381166000908152600a602052604081205460ff1615611a0257506001600160a01b038116600090815260056020526040902054611001565b6001600160a01b038216600090815260046020526040902054610ffe90611130565b611a2c612682565b6000546001600160a01b03908116911614611a7c576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b601b6020526000908152604090205481565b600c5481565b60175481565b6000546001600160a01b031690565b611afb612682565b6000546001600160a01b03908116911614611b4b576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6016805460ff1916911515919091179055565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610f6a5780601f10610f3f57610100808354040283529160200191610f6a565b600e5481565b611bca612682565b6000546001600160a01b03908116911614611c1a576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6023805460ff1916911515919091179055565b6000610f89611c3a612682565b8461111885604051806060016040528060258152602001613a046025913960066000611c64612682565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612da4565b6000610f89611ca2612682565b84846128e9565b601a5460ff1681565b6012546001600160a01b031681565b601f5481565b611ccf612682565b6000546001600160a01b03908116911614611d1f576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6016805491151563010000000263ff00000019909216919091179055565b60235460ff1681565b601e6020526000908152604090205481565b6011546001600160a01b031681565b60208181548110611d7457fe5b600091825260209091200154905081565b611d8d612682565b6000546001600160a01b03908116911614611ddd576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6016805482151562010000810262ff0000199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b6001600160a01b03166000908152600a602052604090205460ff1690565b600d5481565b611e5a612682565b6000546001600160a01b03908116911614611eaa576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b601791909155601855565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6016546301000000900460ff1681565b60195481565b611efe612682565b6000546001600160a01b03908116911614611f4e576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b650246139ca8008115611f5e5750805b6011546001600160a01b03166000908152600a602052604090205460ff1615611fc2576011546001600160a01b0316600090815260056020526040902054611fa690826125e7565b6011546001600160a01b03166000908152600560205260409020555b6000611fcc612772565b9050611ffc611fdb8383612629565b6011546001600160a01b0316600090815260046020526040902054906125e7565b6011546001600160a01b031660009081526004602052604090205561202461130d8383612629565b600855600f54612034908361258d565b600f5560115460408051848152905130926001600160a01b03169160008051602061399b833981519152919081900360200190a350504260225550565b612079612682565b6000546001600160a01b039081169116146120c9576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b600d55565b601d6020526000908152604090205481565b6120e8612682565b6000546001600160a01b03908116911614612138576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6023546001600160a01b0382811661010090920416141561218a5760405162461bcd60e51b81526004018080602001828103825260298152602001806138e06029913960400191505060405180910390fd5b6001600160a01b0381166000908152600a602052604090205460ff16156121e25760405162461bcd60e51b81526004018080602001828103825260228152602001806138be6022913960400191505060405180910390fd5b6001600160a01b0381166000908152600460205260409020541561223c576001600160a01b03811660009081526004602052604090205461222290611130565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b60225481565b6122b0612682565b6000546001600160a01b03908116911614612300576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6001600160a01b0381166123455760405162461bcd60e51b81526004018080602001828103825260268152602001806138546026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6123a8612682565b6000546001600160a01b039081169116146123f8576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600a602052604090205460ff1661244f5760405162461bcd60e51b815260040180806020018281038252602281526020018061389c6022913960400191505060405180910390fd5b60005b600b5481101561254757816001600160a01b0316600b828154811061247357fe5b6000918252602090912001546001600160a01b0316141561253f57600b805460001981019081106124a057fe5b600091825260209091200154600b80546001600160a01b0390921691839081106124c657fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600a90925220805460ff19169055600b80548061251857fe5b600082815260209020810160001990810180546001600160a01b0319169055019055612547565b600101612452565b5050565b600061118983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e3b565b600082820183811015611189576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061118983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612da4565b60008261263857506000610f8d565b8282028284828161264557fe5b04146111895760405162461bcd60e51b81526004018080602001828103825260218152602001806139096021913960400191505060405180910390fd5b3390565b6001600160a01b0383166126cb5760405162461bcd60e51b81526004018080602001828103825260248152602001806139e06024913960400191505060405180910390fd5b6001600160a01b0382166127105760405162461bcd60e51b815260040180806020018281038252602281526020018061387a6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60085460075460009190825b600b548110156128a9578260046000600b848154811061279a57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806127ff57508160056000600b84815481106127d857fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561281d576007546008546128139161254b565b9350505050610f72565b61285d60046000600b848154811061283157fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906125e7565b925061289f60056000600b848154811061287357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906125e7565b915060010161277e565b506007546008546128b99161254b565b8210156128d8576007546008546128cf9161254b565b92505050610f72565b6128e2828261254b565b9250505090565b6001600160a01b03831661292e5760405162461bcd60e51b81526004018080602001828103825260258152602001806139bb6025913960400191505060405180910390fd5b6001600160a01b0382166129735760405162461bcd60e51b81526004018080602001828103825260238152602001806138076023913960400191505060405180910390fd5b600081116129b25760405162461bcd60e51b81526004018080602001828103825260298152602001806139726029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff16806129f157506001600160a01b03821660009081526009602052604090205460ff165b80612a3857506017548111158015612a385750600c54601854602454612a3492600201600a0a9161158191612a2e906001600160a01b03166119c2565b90612629565b8111155b612a89576040805162461bcd60e51b815260206004820152601b60248201527f4d6178205472616e73666572204c696d69742045786365656473210000000000604482015290519081900360640190fd5b806000612a94612772565b90506000612aa1306119c2565b601054909150600090612abc906001600160a01b03166119c2565b601654909150610100900460ff16158015612ae557506024546001600160a01b03888116911614155b8015612af9575060165462010000900460ff165b15612ba3576019548210612b1557612b1082612ea0565b612ba3565b6019548110612ba357612b4c612b2b8285612629565b6010546001600160a01b0316600090815260046020526040902054906125e7565b6010546001600160a01b0316600090815260046020526040902055612b8a612b748285612629565b306000908152600460205260409020549061258d565b30600090815260046020526040902055612ba381612f4f565b6016546301000000900460ff168015612bd557506001600160a01b03871660009081526009602052604090205460ff16155b8015612bfa57506001600160a01b03861660009081526009602052604090205460ff16155b8015612c0e5750601654610100900460ff16155b15612c2257612c1f87878786612faf565b93505b612c4e612c2f8685612629565b6001600160a01b038916600090815260046020526040902054906125e7565b6001600160a01b038816600090815260046020526040902055612c93612c748585612629565b6001600160a01b0388166000908152600460205260409020549061258d565b6001600160a01b03808816600090815260046020908152604080832094909455918a168152600a909152205460ff1615612d04576001600160a01b038716600090815260056020526040902054612cea90866125e7565b6001600160a01b0388166000908152600560205260409020555b6001600160a01b0386166000908152600a602052604090205460ff1615612d62576001600160a01b038616600090815260056020526040902054612d48908561258d565b6001600160a01b0387166000908152600560205260409020555b856001600160a01b0316876001600160a01b031660008051602061399b833981519152866040518082815260200191505060405180910390a350505050505050565b60008184841115612e335760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612df8578181015183820152602001612de0565b50505050905090810190601f168015612e255780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183612e8a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612df8578181015183820152602001612de0565b506000838581612e9657fe5b0495945050505050565b6016805461ff001916610100179055601754811115612ebe57506017545b6000612ecb82600261254b565b90506000612ed983836125e7565b905047612ee5836131b7565b6000612ef147836125e7565b9050612efd8382613398565b604080518581526020810183905280820185905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a150506016805461ff0019169055505050565b6016805461ff001916610100179055612f67816131b7565b6010546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612fa0573d6000803e3d6000fd5b50506016805461ff0019169055565b6000828180612fbe8888613475565b915091508060001461308e57600c54600090612fe490600201600a0a6115818985612629565b9050612ff084826125e7565b9350612fff612b748288612629565b30600090815260046020908152604080832093909355600a9052205460ff161561304e573060009081526005602052604090205461303d908261258d565b306000908152600560205260409020555b600f5461305b908261258d565b600f5560408051828152905130916001600160a01b038c169160008051602061399b8339815191529181900360200190a3505b81156131ab57600c546000906130ae90600201600a0a6115818986612629565b90506130ba84826125e7565b93506130ea6130c98288612629565b6010546001600160a01b03166000908152600460205260409020549061258d565b601080546001600160a01b0390811660009081526004602090815260408083209590955592549091168152600a909152205460ff1615613165576010546001600160a01b0316600090815260056020526040902054613149908261258d565b6010546001600160a01b03166000908152600560205260409020555b600f54613172908261258d565b600f556010546040805183815290516001600160a01b03928316928c169160008051602061399b833981519152919081900360200190a3505b50909695505050505050565b604080516002808252606080830184529260208301908036833701905050905030816000815181106131e557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050602360019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561325357600080fd5b505afa158015613267573d6000803e3d6000fd5b505050506040513d602081101561327d57600080fd5b505181518290600190811061328e57fe5b6001600160a01b0392831660209182029290920101526023546132b991309161010090041684612686565b602360019054906101000a90046001600160a01b03166001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561335357818101518382015260200161333b565b505050509050019650505050505050600060405180830381600087803b15801561337c57600080fd5b505af1158015613390573d6000803e3d6000fd5b505050505050565b6023546133b590309061010090046001600160a01b031684612686565b60235461010090046001600160a01b031663f305d7198230856000806133d9611ae4565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b15801561344457600080fd5b505af1158015613458573d6000803e3d6000fd5b50505050506040513d606081101561346f57600080fd5b50505050565b601a54600090819060ff1615806134b357506024546001600160a01b038581169116148015906134b357506024546001600160a01b03848116911614155b156134da5760235460ff166134ca576000806134d1565b600d54600e545b9150915061379f565b6024546001600160a01b0384811691161480159061351157506001600160a01b03831660009081526009602052604090205460ff16155b15613599576001600160a01b0383166000908152601c6020526040902054421015613577576040805162461bcd60e51b815260206004820152601160248201527022b9391d10213abc9021b7b7b63237bbb760791b604482015290519081900360640190fd5b601f546001600160a01b0384166000908152601c602052604090204290910190555b600d54600e546024546001600160a01b038781169116148015906135d657506001600160a01b03861660009081526009602052604090205460ff16155b15613799576001600160a01b0386166000908152601b602052604090205442101561363d576040805162461bcd60e51b815260206004820152601260248201527122b9391d1029b2b6361021b7b7b63237bbb760711b604482015290519081900360640190fd5b6021546001600160a01b0387166000908152601e6020526040902054429101101561368b576001600160a01b0386166000908152601d60209081526040808320839055601e90915290204290555b60005b602054811015613797576001600160a01b0387166000908152601d602052604090205481141561378f576001600160a01b0387166000908152601d60209081526040909120805460010190558054829081106136e657fe5b60009182526020808320909101546001600160a01b038a168352601b909152604090912042909101905561372e81156137225781600301613725565b60015b600d5490612629565b925061374e81156137425781600301613745565b60015b600e5490612629565b60205490925060018201141561378a576021546001600160a01b0388166000908152601e6020908152604080832054601b909252909120910190555b613797565b60010161368e565b505b90925090505b9250929050565b8280548282559060005260206000209081019282156137e1579160200282015b828111156137e15782518255916020019190600101906137c6565b506137ed9291506137f1565b5090565b5b808211156137ed57600081556001016137f256fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373544f4b454e3a204163636f756e7420697320616c726561647920696e636c75646564544f4b454e3a204163636f756e7420697320616c7265616479206578636c75646564544f4b454e3a2057652063616e206e6f74206578636c75646520556e697377617020726f757465722e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122064ad7077f81c43364b3fd0ae66f8c256d4d0206201ce30e7ff9f2f2a100def7064736f6c634300060c00334f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f778be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106103c75760003560e01c80637e11b31f116101f2578063c0ee14e61161010d578063e5d41c6b116100a0578063f2cc0c181161006f578063f2cc0c1814610da5578063f2e1562814610dd8578063f2fde38b14610ded578063f84354f114610e20576103ce565b8063e5d41c6b14610d09578063e6bd7ed114610d1e578063e6ec64ec14610d48578063f1a5160114610d72576103ce565b8063d7c94efd116100dc578063d7c94efd14610c74578063d93bbee614610c89578063dd62ed3e14610cb9578063e43504da14610cf4576103ce565b8063c0ee14e614610beb578063c29632bd146107ae578063c49b9a8014610c15578063cba0e99614610c41576103ce565b8063a9059cbb11610185578063b7bfff6511610154578063b7bfff6514610b62578063b92499ff14610b8e578063b9301de814610ba3578063b99584e414610bd6576103ce565b8063a9059cbb14610aea578063a985ceef14610b23578063af456cf814610b38578063b3d3673514610b4d576103ce565b806395d89b41116101c157806395d89b4114610a5b57806398118cb414610a705780639bc38ac014610a85578063a457c2d714610ab1576103ce565b80637e11b31f146109f05780638c0b5e2214610a055780638da5cb5b14610a1a57806392929a0914610a2f576103ce565b806339509351116102e257806352d35668116102755780636e961f71116102445780636e961f711461094957806370a0823114610975578063715018a6146109a857806371d40dae146109bd576103ce565b806352d356681461081757806359927044146108ce5780636236547a146108e357806369c12cb714610916576103ce565b806348a46473116102b157806348a46473146107ae57806348c54b9d146107d857806349bd5a5e146107ed5780634a74bb0214610802576103ce565b806339509351146106fb5780633bd5d1731461073457806347f2dc5b1461075e578063485431c214610799576103ce565b806318160ddd1161035a578063313ce56711610329578063313ce5671461065e578063342e5b0314610689578063357bf15c146106bc57806337bfc1ef146106e6576103ce565b806318160ddd146105c757806323b872dd146105dc5780632866ed211461061f5780632d83811914610634576103ce565b80631392c086116103965780631392c086146105245780631525ff7d1461054e5780631694505e1461058157806316c8357f146105b2576103ce565b8063013eba92146103d357806304d18dac1461041857806306fdde031461044d578063095ea7b3146104d7576103ce565b366103ce57005b600080fd5b3480156103df57600080fd5b50610406600480360360208110156103f657600080fd5b50356001600160a01b0316610e53565b60408051918252519081900360200190f35b34801561042457600080fd5b5061044b6004803603602081101561043b57600080fd5b50356001600160a01b0316610e65565b005b34801561045957600080fd5b50610462610edf565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561049c578181015183820152602001610484565b50505050905090810190601f1680156104c95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104e357600080fd5b50610510600480360360408110156104fa57600080fd5b506001600160a01b038135169060200135610f75565b604080519115158252519081900360200190f35b34801561053057600080fd5b506104066004803603602081101561054757600080fd5b5035610f93565b34801561055a57600080fd5b5061044b6004803603602081101561057157600080fd5b50356001600160a01b0316611006565b34801561058d57600080fd5b50610596611080565b604080516001600160a01b039092168252519081900360200190f35b3480156105be57600080fd5b50610406611094565b3480156105d357600080fd5b5061040661109a565b3480156105e857600080fd5b50610510600480360360608110156105ff57600080fd5b506001600160a01b038135811691602081013590911690604001356110a0565b34801561062b57600080fd5b50610510611127565b34801561064057600080fd5b506104066004803603602081101561065757600080fd5b5035611130565b34801561066a57600080fd5b50610673611190565b6040805160ff9092168252519081900360200190f35b34801561069557600080fd5b50610406600480360360208110156106ac57600080fd5b50356001600160a01b0316611199565b3480156106c857600080fd5b5061044b600480360360208110156106df57600080fd5b50356111ab565b3480156106f257600080fd5b50610406611208565b34801561070757600080fd5b506105106004803603604081101561071e57600080fd5b506001600160a01b03813516906020013561120e565b34801561074057600080fd5b5061044b6004803603602081101561075757600080fd5b503561125c565b34801561076a57600080fd5b5061044b6004803603604081101561078157600080fd5b506001600160a01b0381351690602001351515611352565b3480156107a557600080fd5b506104066113d5565b3480156107ba57600080fd5b5061044b600480360360208110156107d157600080fd5b50356113db565b3480156107e457600080fd5b5061044b611438565b3480156107f957600080fd5b50610596611892565b34801561080e57600080fd5b506105106118a1565b34801561082357600080fd5b5061044b6004803603604081101561083a57600080fd5b8135919081019060408101602082013564010000000081111561085c57600080fd5b82018360208201111561086e57600080fd5b8035906020019184602083028401116401000000008311171561089057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506118b0945050505050565b3480156108da57600080fd5b50610596611924565b3480156108ef57600080fd5b506104066004803603602081101561090657600080fd5b50356001600160a01b0316611933565b34801561092257600080fd5b506104066004803603602081101561093957600080fd5b50356001600160a01b0316611945565b34801561095557600080fd5b5061044b6004803603602081101561096c57600080fd5b50351515611957565b34801561098157600080fd5b506104066004803603602081101561099857600080fd5b50356001600160a01b03166119c2565b3480156109b457600080fd5b5061044b611a24565b3480156109c957600080fd5b50610406600480360360208110156109e057600080fd5b50356001600160a01b0316611ac6565b3480156109fc57600080fd5b50610406611ad8565b348015610a1157600080fd5b50610406611ade565b348015610a2657600080fd5b50610596611ae4565b348015610a3b57600080fd5b5061044b60048036036020811015610a5257600080fd5b50351515611af3565b348015610a6757600080fd5b50610462611b5e565b348015610a7c57600080fd5b50610406611bbc565b348015610a9157600080fd5b5061044b60048036036020811015610aa857600080fd5b50351515611bc2565b348015610abd57600080fd5b5061051060048036036040811015610ad457600080fd5b506001600160a01b038135169060200135611c2d565b348015610af657600080fd5b5061051060048036036040811015610b0d57600080fd5b506001600160a01b038135169060200135611c95565b348015610b2f57600080fd5b50610510611ca9565b348015610b4457600080fd5b50610596611cb2565b348015610b5957600080fd5b50610406611cc1565b348015610b6e57600080fd5b5061044b60048036036020811015610b8557600080fd5b50351515611cc7565b348015610b9a57600080fd5b50610510611d3d565b348015610baf57600080fd5b5061040660048036036020811015610bc657600080fd5b50356001600160a01b0316611d46565b348015610be257600080fd5b50610596611d58565b348015610bf757600080fd5b5061040660048036036020811015610c0e57600080fd5b5035611d67565b348015610c2157600080fd5b5061044b60048036036020811015610c3857600080fd5b50351515611d85565b348015610c4d57600080fd5b5061051060048036036020811015610c6457600080fd5b50356001600160a01b0316611e2e565b348015610c8057600080fd5b50610406611e4c565b348015610c9557600080fd5b5061044b60048036036040811015610cac57600080fd5b5080359060200135611e52565b348015610cc557600080fd5b5061040660048036036040811015610cdc57600080fd5b506001600160a01b0381358116916020013516611eb5565b348015610d0057600080fd5b50610510611ee0565b348015610d1557600080fd5b50610406611ef0565b348015610d2a57600080fd5b5061044b60048036036020811015610d4157600080fd5b5035611ef6565b348015610d5457600080fd5b5061044b60048036036020811015610d6b57600080fd5b5035612071565b348015610d7e57600080fd5b5061040660048036036020811015610d9557600080fd5b50356001600160a01b03166120ce565b348015610db157600080fd5b5061044b60048036036020811015610dc857600080fd5b50356001600160a01b03166120e0565b348015610de457600080fd5b506104066122a2565b348015610df957600080fd5b5061044b60048036036020811015610e1057600080fd5b50356001600160a01b03166122a8565b348015610e2c57600080fd5b5061044b60048036036020811015610e4357600080fd5b50356001600160a01b03166123a0565b60146020526000908152604090205481565b610e6d612682565b6000546001600160a01b03908116911614610ebd576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610f6a5780601f10610f3f57610100808354040283529160200191610f6a565b820191906000526020600020905b815481529060010190602001808311610f4d57829003601f168201915b505050505090505b90565b6000610f89610f82612682565b8484612686565b5060015b92915050565b6000600754821115610fec576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b610ffe610ff7612772565b8390612629565b90505b919050565b61100e612682565b6000546001600160a01b0390811691161461105e576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b60235461010090046001600160a01b031681565b60185481565b60075490565b60006110ad8484846128e9565b61111d846110b9612682565b6111188560405180606001604052806028815260200161392a602891396001600160a01b038a166000908152600660205260408120906110f7612682565b6001600160a01b031681526020810191909152604001600020549190612da4565b612686565b5060019392505050565b60165460ff1681565b60006008548211156111735760405162461bcd60e51b815260040180806020018281038252602a81526020018061382a602a913960400191505060405180910390fd5b600061117d612772565b9050611189838261254b565b9392505050565b60035460ff1690565b601c6020526000908152604090205481565b6111b3612682565b6000546001600160a01b03908116911614611203576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b600e55565b600f5481565b6000610f8961121b612682565b84611118856006600061122c612682565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061258d565b336000908152600a602052604090205460ff16156112c1576040805162461bcd60e51b815260206004820152601a60248201527f4578636c756465642063616e6e6f742063616c6c207468697321000000000000604482015290519081900360640190fd5b60006112cb612772565b90506112f06112da8383612629565b33600090815260046020526040902054906125e7565b3360009081526004602052604090205561131661130d8383612629565b600854906125e7565b600855600f54611326908361258d565b600f556040805183815290513091339160008051602061399b8339815191529181900360200190a35050565b61135a612682565b6000546001600160a01b039081169116146113aa576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b60215481565b6113e3612682565b6000546001600160a01b03908116911614611433576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b601955565b60165460ff16611487576040805162461bcd60e51b8152602060048201526015602482015274436c61696d656420506572696f6420456e6465642160581b604482015290519081900360640190fd5b601154336000818152601360205260409020546001600160a01b039092169161162257601254604080516370a0823160e01b81526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b1580156114fb57600080fd5b505afa15801561150f573d6000803e3d6000fd5b505050506040513d602081101561152557600080fd5b5051905080611571576040805162461bcd60e51b81526020600482015260136024820152724e6f20636c61696d20617661696c61626c652160681b604482015290519081900360640190fd5b6115876064611581836014612629565b9061254b565b3360008181526015602090815260408083209490945560125484516323b872dd60e01b8152600481019490945261dead60248501526044840186905293516001600160a01b03909416936323b872dd93606480820194918390030190829087803b1580156115f457600080fd5b505af1158015611608573d6000803e3d6000fd5b505050506040513d602081101561161e57600080fd5b5050505b33600090815260136020526040902054600511611679576040805162461bcd60e51b815260206004820152601060248201526f416c726561647920636c61696d65642160801b604482015290519081900360640190fd5b336000908152601460205260409020544262093a80909101106116d5576040805162461bcd60e51b815260206004820152600f60248201526e436c61696d20746f6f20736f6f6e2160881b604482015290519081900360640190fd5b33600090815260156020526040812054906116ee612772565b905061171c6116fd8383612629565b6001600160a01b038616600090815260046020526040902054906125e7565b6001600160a01b0385166000908152600460205260409020556117616117428383612629565b6001600160a01b0385166000908152600460205260409020549061258d565b6001600160a01b038085166000908152600460209081526040808320949094559187168152600a909152205460ff16156117d2576001600160a01b0384166000908152600560205260409020546117b890836125e7565b6001600160a01b0385166000908152600560205260409020555b6001600160a01b0383166000908152600a602052604090205460ff1615611830576001600160a01b038316600090815260056020526040902054611816908361258d565b6001600160a01b0384166000908152600560205260409020555b826001600160a01b0316846001600160a01b031660008051602061399b833981519152846040518082815260200191505060405180910390a3505033600090815260136020908152604080832080546001019055601490915290204290555050565b6024546001600160a01b031681565b60165462010000900460ff1681565b6118b8612682565b6000546001600160a01b03908116911614611908576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6021829055805161191f90602090818401906137a6565b505050565b6010546001600160a01b031681565b60156020526000908152604090205481565b60136020526000908152604090205481565b61195f612682565b6000546001600160a01b039081169116146119af576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b601a805460ff1916911515919091179055565b6001600160a01b0381166000908152600a602052604081205460ff1615611a0257506001600160a01b038116600090815260056020526040902054611001565b6001600160a01b038216600090815260046020526040902054610ffe90611130565b611a2c612682565b6000546001600160a01b03908116911614611a7c576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b601b6020526000908152604090205481565b600c5481565b60175481565b6000546001600160a01b031690565b611afb612682565b6000546001600160a01b03908116911614611b4b576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6016805460ff1916911515919091179055565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610f6a5780601f10610f3f57610100808354040283529160200191610f6a565b600e5481565b611bca612682565b6000546001600160a01b03908116911614611c1a576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6023805460ff1916911515919091179055565b6000610f89611c3a612682565b8461111885604051806060016040528060258152602001613a046025913960066000611c64612682565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612da4565b6000610f89611ca2612682565b84846128e9565b601a5460ff1681565b6012546001600160a01b031681565b601f5481565b611ccf612682565b6000546001600160a01b03908116911614611d1f576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6016805491151563010000000263ff00000019909216919091179055565b60235460ff1681565b601e6020526000908152604090205481565b6011546001600160a01b031681565b60208181548110611d7457fe5b600091825260209091200154905081565b611d8d612682565b6000546001600160a01b03908116911614611ddd576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6016805482151562010000810262ff0000199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b6001600160a01b03166000908152600a602052604090205460ff1690565b600d5481565b611e5a612682565b6000546001600160a01b03908116911614611eaa576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b601791909155601855565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6016546301000000900460ff1681565b60195481565b611efe612682565b6000546001600160a01b03908116911614611f4e576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b650246139ca8008115611f5e5750805b6011546001600160a01b03166000908152600a602052604090205460ff1615611fc2576011546001600160a01b0316600090815260056020526040902054611fa690826125e7565b6011546001600160a01b03166000908152600560205260409020555b6000611fcc612772565b9050611ffc611fdb8383612629565b6011546001600160a01b0316600090815260046020526040902054906125e7565b6011546001600160a01b031660009081526004602052604090205561202461130d8383612629565b600855600f54612034908361258d565b600f5560115460408051848152905130926001600160a01b03169160008051602061399b833981519152919081900360200190a350504260225550565b612079612682565b6000546001600160a01b039081169116146120c9576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b600d55565b601d6020526000908152604090205481565b6120e8612682565b6000546001600160a01b03908116911614612138576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6023546001600160a01b0382811661010090920416141561218a5760405162461bcd60e51b81526004018080602001828103825260298152602001806138e06029913960400191505060405180910390fd5b6001600160a01b0381166000908152600a602052604090205460ff16156121e25760405162461bcd60e51b81526004018080602001828103825260228152602001806138be6022913960400191505060405180910390fd5b6001600160a01b0381166000908152600460205260409020541561223c576001600160a01b03811660009081526004602052604090205461222290611130565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b60225481565b6122b0612682565b6000546001600160a01b03908116911614612300576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6001600160a01b0381166123455760405162461bcd60e51b81526004018080602001828103825260268152602001806138546026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6123a8612682565b6000546001600160a01b039081169116146123f8576040805162461bcd60e51b81526020600482018190526024820152600080516020613952833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600a602052604090205460ff1661244f5760405162461bcd60e51b815260040180806020018281038252602281526020018061389c6022913960400191505060405180910390fd5b60005b600b5481101561254757816001600160a01b0316600b828154811061247357fe5b6000918252602090912001546001600160a01b0316141561253f57600b805460001981019081106124a057fe5b600091825260209091200154600b80546001600160a01b0390921691839081106124c657fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600a90925220805460ff19169055600b80548061251857fe5b600082815260209020810160001990810180546001600160a01b0319169055019055612547565b600101612452565b5050565b600061118983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e3b565b600082820183811015611189576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061118983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612da4565b60008261263857506000610f8d565b8282028284828161264557fe5b04146111895760405162461bcd60e51b81526004018080602001828103825260218152602001806139096021913960400191505060405180910390fd5b3390565b6001600160a01b0383166126cb5760405162461bcd60e51b81526004018080602001828103825260248152602001806139e06024913960400191505060405180910390fd5b6001600160a01b0382166127105760405162461bcd60e51b815260040180806020018281038252602281526020018061387a6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60085460075460009190825b600b548110156128a9578260046000600b848154811061279a57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806127ff57508160056000600b84815481106127d857fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561281d576007546008546128139161254b565b9350505050610f72565b61285d60046000600b848154811061283157fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906125e7565b925061289f60056000600b848154811061287357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906125e7565b915060010161277e565b506007546008546128b99161254b565b8210156128d8576007546008546128cf9161254b565b92505050610f72565b6128e2828261254b565b9250505090565b6001600160a01b03831661292e5760405162461bcd60e51b81526004018080602001828103825260258152602001806139bb6025913960400191505060405180910390fd5b6001600160a01b0382166129735760405162461bcd60e51b81526004018080602001828103825260238152602001806138076023913960400191505060405180910390fd5b600081116129b25760405162461bcd60e51b81526004018080602001828103825260298152602001806139726029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff16806129f157506001600160a01b03821660009081526009602052604090205460ff165b80612a3857506017548111158015612a385750600c54601854602454612a3492600201600a0a9161158191612a2e906001600160a01b03166119c2565b90612629565b8111155b612a89576040805162461bcd60e51b815260206004820152601b60248201527f4d6178205472616e73666572204c696d69742045786365656473210000000000604482015290519081900360640190fd5b806000612a94612772565b90506000612aa1306119c2565b601054909150600090612abc906001600160a01b03166119c2565b601654909150610100900460ff16158015612ae557506024546001600160a01b03888116911614155b8015612af9575060165462010000900460ff165b15612ba3576019548210612b1557612b1082612ea0565b612ba3565b6019548110612ba357612b4c612b2b8285612629565b6010546001600160a01b0316600090815260046020526040902054906125e7565b6010546001600160a01b0316600090815260046020526040902055612b8a612b748285612629565b306000908152600460205260409020549061258d565b30600090815260046020526040902055612ba381612f4f565b6016546301000000900460ff168015612bd557506001600160a01b03871660009081526009602052604090205460ff16155b8015612bfa57506001600160a01b03861660009081526009602052604090205460ff16155b8015612c0e5750601654610100900460ff16155b15612c2257612c1f87878786612faf565b93505b612c4e612c2f8685612629565b6001600160a01b038916600090815260046020526040902054906125e7565b6001600160a01b038816600090815260046020526040902055612c93612c748585612629565b6001600160a01b0388166000908152600460205260409020549061258d565b6001600160a01b03808816600090815260046020908152604080832094909455918a168152600a909152205460ff1615612d04576001600160a01b038716600090815260056020526040902054612cea90866125e7565b6001600160a01b0388166000908152600560205260409020555b6001600160a01b0386166000908152600a602052604090205460ff1615612d62576001600160a01b038616600090815260056020526040902054612d48908561258d565b6001600160a01b0387166000908152600560205260409020555b856001600160a01b0316876001600160a01b031660008051602061399b833981519152866040518082815260200191505060405180910390a350505050505050565b60008184841115612e335760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612df8578181015183820152602001612de0565b50505050905090810190601f168015612e255780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183612e8a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612df8578181015183820152602001612de0565b506000838581612e9657fe5b0495945050505050565b6016805461ff001916610100179055601754811115612ebe57506017545b6000612ecb82600261254b565b90506000612ed983836125e7565b905047612ee5836131b7565b6000612ef147836125e7565b9050612efd8382613398565b604080518581526020810183905280820185905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a150506016805461ff0019169055505050565b6016805461ff001916610100179055612f67816131b7565b6010546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612fa0573d6000803e3d6000fd5b50506016805461ff0019169055565b6000828180612fbe8888613475565b915091508060001461308e57600c54600090612fe490600201600a0a6115818985612629565b9050612ff084826125e7565b9350612fff612b748288612629565b30600090815260046020908152604080832093909355600a9052205460ff161561304e573060009081526005602052604090205461303d908261258d565b306000908152600560205260409020555b600f5461305b908261258d565b600f5560408051828152905130916001600160a01b038c169160008051602061399b8339815191529181900360200190a3505b81156131ab57600c546000906130ae90600201600a0a6115818986612629565b90506130ba84826125e7565b93506130ea6130c98288612629565b6010546001600160a01b03166000908152600460205260409020549061258d565b601080546001600160a01b0390811660009081526004602090815260408083209590955592549091168152600a909152205460ff1615613165576010546001600160a01b0316600090815260056020526040902054613149908261258d565b6010546001600160a01b03166000908152600560205260409020555b600f54613172908261258d565b600f556010546040805183815290516001600160a01b03928316928c169160008051602061399b833981519152919081900360200190a3505b50909695505050505050565b604080516002808252606080830184529260208301908036833701905050905030816000815181106131e557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050602360019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561325357600080fd5b505afa158015613267573d6000803e3d6000fd5b505050506040513d602081101561327d57600080fd5b505181518290600190811061328e57fe5b6001600160a01b0392831660209182029290920101526023546132b991309161010090041684612686565b602360019054906101000a90046001600160a01b03166001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561335357818101518382015260200161333b565b505050509050019650505050505050600060405180830381600087803b15801561337c57600080fd5b505af1158015613390573d6000803e3d6000fd5b505050505050565b6023546133b590309061010090046001600160a01b031684612686565b60235461010090046001600160a01b031663f305d7198230856000806133d9611ae4565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b15801561344457600080fd5b505af1158015613458573d6000803e3d6000fd5b50505050506040513d606081101561346f57600080fd5b50505050565b601a54600090819060ff1615806134b357506024546001600160a01b038581169116148015906134b357506024546001600160a01b03848116911614155b156134da5760235460ff166134ca576000806134d1565b600d54600e545b9150915061379f565b6024546001600160a01b0384811691161480159061351157506001600160a01b03831660009081526009602052604090205460ff16155b15613599576001600160a01b0383166000908152601c6020526040902054421015613577576040805162461bcd60e51b815260206004820152601160248201527022b9391d10213abc9021b7b7b63237bbb760791b604482015290519081900360640190fd5b601f546001600160a01b0384166000908152601c602052604090204290910190555b600d54600e546024546001600160a01b038781169116148015906135d657506001600160a01b03861660009081526009602052604090205460ff16155b15613799576001600160a01b0386166000908152601b602052604090205442101561363d576040805162461bcd60e51b815260206004820152601260248201527122b9391d1029b2b6361021b7b7b63237bbb760711b604482015290519081900360640190fd5b6021546001600160a01b0387166000908152601e6020526040902054429101101561368b576001600160a01b0386166000908152601d60209081526040808320839055601e90915290204290555b60005b602054811015613797576001600160a01b0387166000908152601d602052604090205481141561378f576001600160a01b0387166000908152601d60209081526040909120805460010190558054829081106136e657fe5b60009182526020808320909101546001600160a01b038a168352601b909152604090912042909101905561372e81156137225781600301613725565b60015b600d5490612629565b925061374e81156137425781600301613745565b60015b600e5490612629565b60205490925060018201141561378a576021546001600160a01b0388166000908152601e6020908152604080832054601b909252909120910190555b613797565b60010161368e565b505b90925090505b9250929050565b8280548282559060005260206000209081019282156137e1579160200282015b828111156137e15782518255916020019190600101906137c6565b506137ed9291506137f1565b5090565b5b808211156137ed57600081556001016137f256fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373544f4b454e3a204163636f756e7420697320616c726561647920696e636c75646564544f4b454e3a204163636f756e7420697320616c7265616479206578636c75646564544f4b454e3a2057652063616e206e6f74206578636c75646520556e697377617020726f757465722e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122064ad7077f81c43364b3fd0ae66f8c256d4d0206201ce30e7ff9f2f2a100def7064736f6c634300060c0033

Deployed Bytecode Sourcemap

21264:22238:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22357:46;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22357:46:0;-1:-1:-1;;;;;22357:46:0;;:::i;:::-;;;;;;;;;;;;;;;;42497:104;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42497:104:0;-1:-1:-1;;;;;42497:104:0;;:::i;:::-;;26072:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27092:193;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27092:193:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;28503:256;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28503:256:0;;:::i;42389:96::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42389:96:0;-1:-1:-1;;;;;42389:96:0;;:::i;23328:42::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;23328:42:0;;;;;;;;;;;;;;22714:35;;;;;;;;;;;;;:::i;26349:99::-;;;;;;;;;;;;;:::i;27293:368::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27293:368:0;;;;;;;;;;;;;;;;;:::i;22466:31::-;;;;;;;;;;;;;:::i;28767:368::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28767:368:0;;:::i;26258:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22922:46;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22922:46:0;-1:-1:-1;;;;;22922:46:0;;:::i;42283:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42283:94:0;;:::i;22171:23::-;;;;;;;;;;;;;:::i;27669:300::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27669:300:0;;;;;;;;:::i;41235:432::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41235:432:0;;:::i;41782:113::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;41782:113:0;;;;;;;;;;:::i;23177:42::-;;;;;;;;;;;;;:::i;42799:114::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42799:114:0;;:::i;39121:1437::-;;;;;;;;;;;;;:::i;23377:29::-;;;;;;;;;;;;;:::i;22542:40::-;;;;;;;;;;;;;:::i;43160:190::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43160:190:0;;-1:-1:-1;43160:190:0;;-1:-1:-1;;;;;43160:190:0:i;22203:25::-;;;;;;;;;;;;;:::i;22410:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22410:49:0;-1:-1:-1;;;;;22410:49:0;;:::i;22305:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22305:45:0;-1:-1:-1;;;;;22305:45:0;;:::i;42925:101::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42925:101:0;;;;:::i;26456:215::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26456:215:0;-1:-1:-1;;;;;26456:215:0;;:::i;17493:148::-;;;;;;;;;;;;;:::i;22868:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22868:47:0;-1:-1:-1;;;;;22868:47:0;;:::i;22055:29::-;;;;;;;;;;;;;:::i;22650:50::-;;;;;;;;;;;;;:::i;16851:79::-;;;;;;;;;;;;;:::i;41679:95::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41679:95:0;;;;:::i;26163:87::-;;;;;;;;;;;;;:::i;22126:33::-;;;;;;;;;;;;;:::i;43362:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43362:97:0;;;;:::i;27977:400::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27977:400:0;;;;;;;;:::i;26679:213::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26679:213:0;;;;;;;;:::i;22821:34::-;;;;;;;;;;;;;:::i;22271:21::-;;;;;;;;;;;;;:::i;23087:42::-;;;;;;;;;;;;;:::i;42084:91::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42084:91:0;;;;:::i;23286:33::-;;;;;;;;;;;;;:::i;23026:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23026:52:0;-1:-1:-1;;;;;23026:52:0;;:::i;22235:29::-;;;;;;;;;;;;;:::i;23136:34::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23136:34:0;;:::i;41907:165::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41907:165:0;;;;:::i;28385:110::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28385:110:0;-1:-1:-1;;;;;28385:110:0;;:::i;22091:28::-;;;;;;;;;;;;;:::i;42613:174::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42613:174:0;;;;;;;:::i;26900:184::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26900:184:0;;;;;;;;;;:::i;22589:30::-;;;;;;;;;;;;;:::i;22762:46::-;;;;;;;;;;;;;:::i;40570:653::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40570:653:0;;:::i;42187:84::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42187:84:0;;:::i;22975:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22975:44:0;-1:-1:-1;;;;;22975:44:0;;:::i;29143:547::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29143:547:0;-1:-1:-1;;;;;29143:547:0;;:::i;23232:45::-;;;;;;;;;;;;;:::i;17796:281::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17796:281:0;-1:-1:-1;;;;;17796:281:0;;:::i;29698:491::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29698:491:0;-1:-1:-1;;;;;29698:491:0;;:::i;22357:46::-;;;;;;;;;;;;;:::o;42497:104::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;42570:14:::1;:23:::0;;-1:-1:-1;;;;;;42570:23:0::1;-1:-1:-1::0;;;;;42570:23:0;;;::::1;::::0;;;::::1;::::0;;42497:104::o;26072:83::-;26142:5;26135:12;;;;;;;;-1:-1:-1;;26135:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26109:13;;26135:12;;26142:5;;26135:12;;26142:5;26135:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26072:83;;:::o;27092:193::-;27194:4;27216:39;27225:12;:10;:12::i;:::-;27239:7;27248:6;27216:8;:39::i;:::-;-1:-1:-1;27273:4:0;27092:193;;;;;:::o;28503:256::-;28601:7;28649:11;;28634;:26;;28626:70;;;;;-1:-1:-1;;;28626:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;28714:37;28730:20;:18;:20::i;:::-;28714:11;;:15;:37::i;:::-;28707:44;;28503:256;;;;:::o;42389:96::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;42458:10:::1;:19:::0;;-1:-1:-1;;;;;;42458:19:0::1;-1:-1:-1::0;;;;;42458:19:0;;;::::1;::::0;;;::::1;::::0;;42389:96::o;23328:42::-;;;;;;-1:-1:-1;;;;;23328:42:0;;:::o;22714:35::-;;;;:::o;26349:99::-;26429:11;;26349:99;:::o;27293:368::-;27433:4;27450:34;27460:6;27467:9;27477:6;27450:9;:34::i;:::-;27512:119;27521:6;27528:12;:10;:12::i;:::-;27541:89;27580:6;27541:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27541:19:0;;;;;;:11;:19;;;;;;27561:12;:10;:12::i;:::-;-1:-1:-1;;;;;27541:33:0;;;;;;;;;;;;-1:-1:-1;27541:33:0;;;:89;:37;:89::i;:::-;27512:8;:119::i;:::-;-1:-1:-1;27649:4:0;27293:368;;;;;:::o;22466:31::-;;;;;;:::o;28767:368::-;28870:7;28937:16;;28917;:36;;28895:128;;;;-1:-1:-1;;;28895:128:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29034:19;29056:20;:18;:20::i;:::-;29034:42;-1:-1:-1;29094:33:0;:16;29034:42;29094:20;:33::i;:::-;29087:40;28767:368;-1:-1:-1;;;28767:368:0:o;26258:83::-;26324:9;;;;26258:83;:::o;22922:46::-;;;;;;;;;;;;;:::o;42283:94::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;42351:12:::1;:18:::0;42283:94::o;22171:23::-;;;;:::o;27669:300::-;27784:4;27806:133;27829:12;:10;:12::i;:::-;27856:7;27878:50;27917:10;27878:11;:25;27890:12;:10;:12::i;:::-;-1:-1:-1;;;;;27878:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;27878:25:0;;;:34;;;;;;;;;;;:38;:50::i;41235:432::-;41309:10;41297:23;;;;:11;:23;;;;;;;;41296:24;41288:62;;;;;-1:-1:-1;;;41288:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;41361:12;41376:20;:18;:20::i;:::-;41361:35;-1:-1:-1;41440:52:0;41475:16;:6;41361:35;41475:10;:16::i;:::-;41459:10;41440:30;;;;:18;:30;;;;;;;:34;:52::i;:::-;41426:10;41407:30;;;;:18;:30;;;;;:85;41522:38;41543:16;:6;41554:4;41543:10;:16::i;:::-;41522;;;:20;:38::i;:::-;41503:16;:57;41582:8;;:20;;41595:6;41582:12;:20::i;:::-;41571:8;:31;41618:41;;;;;;;;41646:4;;41627:10;;-1:-1:-1;;;;;;;;;;;41618:41:0;;;;;;;;41235:432;;:::o;41782:113::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;41861:18:0;;;::::1;;::::0;;;:9:::1;:18;::::0;;;;:26;;-1:-1:-1;;41861:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;41782:113::o;23177:42::-;;;;:::o;42799:114::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;42877:19:::1;:28:::0;42799:114::o;39121:1437::-;39172:12;;;;39164:46;;;;;-1:-1:-1;;;39164:46:0;;;;;;;;;;;;-1:-1:-1;;;39164:46:0;;;;;;;;;;;;;;;39238:14;;39283:10;39221:14;39307:22;;;:10;:22;;;;;;-1:-1:-1;;;;;39238:14:0;;;;39304:322;;39365:7;;:28;;;-1:-1:-1;;;39365:28:0;;-1:-1:-1;;;;;39365:28:0;;;;;;;;;39351:11;;39365:7;;;;;:17;;:28;;;;;;;;;;;;;;;:7;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39365:28:0;;-1:-1:-1;39416:7:0;39408:39;;;;;-1:-1:-1;;;39408:39:0;;;;;;;;;;;;-1:-1:-1;;;39408:39:0;;;;;;;;;;;;;;;39491:20;39507:3;39491:11;:3;39499:2;39491:7;:11::i;:::-;:15;;:20::i;:::-;39477:10;39462:26;;;;:14;:26;;;;;;;;:49;;;;39526:7;;:88;;-1:-1:-1;;;39526:88:0;;;;;;;;;39566:42;39526:88;;;;;;;;;;;;-1:-1:-1;;;;;39526:7:0;;;;:20;;:88;;;;;;;;;;;;;:7;:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;39304:322:0;39655:10;39644:22;;;;:10;:22;;;;;;39669:1;-1:-1:-1;39636:55:0;;;;;-1:-1:-1;;;39636:55:0;;;;;;;;;;;;-1:-1:-1;;;39636:55:0;;;;;;;;;;;;;;;39722:10;39710:23;;;;:11;:23;;;;;;39745:15;39736:6;39710:32;;;:50;39702:78;;;;;-1:-1:-1;;;39702:78:0;;;;;;;;;;;;-1:-1:-1;;;39702:78:0;;;;;;;;;;;;;;;39823:10;39791:14;39808:26;;;:14;:26;;;;;;;39860:20;:18;:20::i;:::-;39845:35;-1:-1:-1;39951:48:0;39982:16;:6;39845:35;39982:10;:16::i;:::-;-1:-1:-1;;;;;39951:26:0;;;;;;:18;:26;;;;;;;:30;:48::i;:::-;-1:-1:-1;;;;;39922:26:0;;;;;;:18;:26;;;;;:77;40042:51;40076:16;:6;40087:4;40076:10;:16::i;:::-;-1:-1:-1;;;;;40042:29:0;;;;;;:18;:29;;;;;;;:33;:51::i;:::-;-1:-1:-1;;;;;40010:29:0;;;;;;;:18;:29;;;;;;;;:83;;;;40182:19;;;;;:11;:19;;;;;;;40178:109;;;-1:-1:-1;;;;;40242:21:0;;;;;;:13;:21;;;;;;:33;;40268:6;40242:25;:33::i;:::-;-1:-1:-1;;;;;40218:21:0;;;;;;:13;:21;;;;;:57;40178:109;-1:-1:-1;;;;;40301:22:0;;;;;;:11;:22;;;;;;;;40297:118;;;-1:-1:-1;;;;;40367:24:0;;;;;;:13;:24;;;;;;:36;;40396:6;40367:28;:36::i;:::-;-1:-1:-1;;;;;40340:24:0;;;;;;:13;:24;;;;;:63;40297:118;40446:9;-1:-1:-1;;;;;40430:33:0;40439:6;-1:-1:-1;;;;;40430:33:0;-1:-1:-1;;;;;;;;;;;40456:6:0;40430:33;;;;;;;;;;;;;;;;;;-1:-1:-1;;40485:10:0;40474:22;;;;:10;:22;;;;;;;;:24;;;;;;40509:11;:23;;;;;40535:15;40509:41;;-1:-1:-1;;39121:1437:0:o;23377:29::-;;;-1:-1:-1;;;;;23377:29:0;;:::o;22542:40::-;;;;;;;;;:::o;43160:190::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;43267:18:::1;:35:::0;;;43313:29;;::::1;::::0;:17:::1;::::0;:29;;::::1;::::0;::::1;:::i;:::-;;43160:190:::0;;:::o;22203:25::-;;;-1:-1:-1;;;;;22203:25:0;;:::o;22410:49::-;;;;;;;;;;;;;:::o;22305:45::-;;;;;;;;;;;;;:::o;42925:101::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;42995:15:::1;:23:::0;;-1:-1:-1;;42995:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;42925:101::o;26456:215::-;-1:-1:-1;;;;;26546:20:0;;26522:7;26546:20;;;:11;:20;;;;;;;;26542:55;;;-1:-1:-1;;;;;;26575:22:0;;;;;;:13;:22;;;;;;26568:29;;26542:55;-1:-1:-1;;;;;26635:27:0;;;;;;:18;:27;;;;;;26615:48;;:19;:48::i;17493:148::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;17600:1:::1;17584:6:::0;;17563:40:::1;::::0;-1:-1:-1;;;;;17584:6:0;;::::1;::::0;17563:40:::1;::::0;17600:1;;17563:40:::1;17631:1;17614:19:::0;;-1:-1:-1;;;;;;17614:19:0::1;::::0;;17493:148::o;22868:47::-;;;;;;;;;;;;;:::o;22055:29::-;;;;:::o;22650:50::-;;;;:::o;16851:79::-;16889:7;16916:6;-1:-1:-1;;;;;16916:6:0;16851:79;:::o;41679:95::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;41746:12:::1;:20:::0;;-1:-1:-1;;41746:20:0::1;::::0;::::1;;::::0;;;::::1;::::0;;41679:95::o;26163:87::-;26235:7;26228:14;;;;;;;-1:-1:-1;;26228:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26202:13;;26228:14;;26235:7;;26228:14;;26235:7;26228:14;;;;;;;;;;;;;;;;;;;;;;;;22126:33;;;;:::o;43362:97::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;43430:13:::1;:21:::0;;-1:-1:-1;;43430:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;43362:97::o;27977:400::-;28097:4;28119:228;28142:12;:10;:12::i;:::-;28169:7;28191:145;28248:15;28191:145;;;;;;;;;;;;;;;;;:11;:25;28203:12;:10;:12::i;:::-;-1:-1:-1;;;;;28191:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;28191:25:0;;;:34;;;;;;;;;;;:145;:38;:145::i;26679:213::-;26801:4;26822:40;26832:12;:10;:12::i;:::-;26845:9;26855:6;26822:9;:40::i;22821:34::-;;;;;;:::o;22271:21::-;;;-1:-1:-1;;;;;22271:21:0;;:::o;23087:42::-;;;;:::o;42084:91::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;42148:11:::1;:19:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;42148:19:0;;::::1;::::0;;;::::1;::::0;;42084:91::o;23286:33::-;;;;;;:::o;23026:52::-;;;;;;;;;;;;;:::o;22235:29::-;;;-1:-1:-1;;;;;22235:29:0;;:::o;23136:34::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23136:34:0;:::o;41907:165::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;41985:21:::1;:31:::0;;;::::1;;::::0;;::::1;-1:-1:-1::0;;41985:31:0;;::::1;::::0;;;::::1;::::0;;;42027:37:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;41907:165:::0;:::o;28385:110::-;-1:-1:-1;;;;;28467:20:0;28443:4;28467:20;;;:11;:20;;;;;;;;;28385:110::o;22091:28::-;;;;:::o;42613:174::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;42719:11:::1;:23:::0;;;;42753:14:::1;:26:::0;42613:174::o;26900:184::-;-1:-1:-1;;;;;27049:18:0;;;27017:7;27049:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;26900:184::o;22589:30::-;;;;;;;;;:::o;22762:46::-;;;;:::o;40570:653::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;40656:12:::1;40682:11:::0;;40679:31:::1;;-1:-1:-1::0;40704:6:0;40679:31:::1;40737:14;::::0;-1:-1:-1;;;;;40737:14:0::1;40725:27;::::0;;;:11:::1;:27;::::0;;;;;::::1;;40721:133;;;40815:14;::::0;-1:-1:-1;;;;;40815:14:0::1;40801:29;::::0;;;:13:::1;:29;::::0;;;;;:41:::1;::::0;40835:6;40801:33:::1;:41::i;:::-;40783:14;::::0;-1:-1:-1;;;;;40783:14:0::1;40769:29;::::0;;;:13:::1;:29;::::0;;;;:73;40721:133:::1;40864:12;40879:20;:18;:20::i;:::-;40864:35:::0;-1:-1:-1;40947:56:0::1;40986:16;:6:::0;40864:35;40986:10:::1;:16::i;:::-;40966:14;::::0;-1:-1:-1;;;;;40966:14:0::1;40947:34;::::0;;;:18:::1;:34;::::0;;;;;;:38:::1;:56::i;:::-;40929:14;::::0;-1:-1:-1;;;;;40929:14:0::1;40910:34;::::0;;;:18:::1;:34;::::0;;;;:93;41033:38:::1;41054:16;:6:::0;41065:4;41054:10:::1;:16::i;41033:38::-;41014:16;:57:::0;41093:8:::1;::::0;:20:::1;::::0;41106:6;41093:12:::1;:20::i;:::-;41082:8;:31:::0;41138:14:::1;::::0;41129:45:::1;::::0;;;;;;;41161:4:::1;::::0;-1:-1:-1;;;;;41138:14:0::1;::::0;-1:-1:-1;;;;;;;;;;;41129:45:0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;;41200:15:0::1;41185:12;:30:::0;-1:-1:-1;40570:653:0:o;42187:84::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;42250:7:::1;:13:::0;42187:84::o;22975:44::-;;;;;;;;;;;;;:::o;29143:547::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;29257:15:::1;::::0;-1:-1:-1;;;;;29238:35:0;;::::1;29257:15;::::0;;::::1;;29238:35;;29216:126;;;;-1:-1:-1::0;;;29216:126:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;29372:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;29371:21;29363:68;;;;-1:-1:-1::0;;;29363:68:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;29446:27:0;::::1;29476:1;29446:27:::0;;;:18:::1;:27;::::0;;;;;:31;29442:169:::1;;-1:-1:-1::0;;;;;29557:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;29519:80:::1;::::0;:19:::1;:80::i;:::-;-1:-1:-1::0;;;;;29494:22:0;::::1;;::::0;;;:13:::1;:22;::::0;;;;:105;29442:169:::1;-1:-1:-1::0;;;;;29621:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;29621:27:0::1;29644:4;29621:27:::0;;::::1;::::0;;;29659:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;29659:23:0::1;::::0;;::::1;::::0;;29143:547::o;23232:45::-;;;;:::o;17796:281::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17899:22:0;::::1;17877:110;;;;-1:-1:-1::0;;;17877:110:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18024:6;::::0;;18003:38:::1;::::0;-1:-1:-1;;;;;18003:38:0;;::::1;::::0;18024:6;::::1;::::0;18003:38:::1;::::0;::::1;18052:6;:17:::0;;-1:-1:-1;;;;;;18052:17:0::1;-1:-1:-1::0;;;;;18052:17:0;;;::::1;::::0;;;::::1;::::0;;17796:281::o;29698:491::-;17073:12;:10;:12::i;:::-;17063:6;;-1:-1:-1;;;;;17063:6:0;;;:22;;;17055:67;;;;;-1:-1:-1;;;17055:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17055:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;29779:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;29771:67;;;;-1:-1:-1::0;;;29771:67:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29854:9;29849:333;29873:9;:16:::0;29869:20;::::1;29849:333;;;29931:7;-1:-1:-1::0;;;;;29915:23:0::1;:9;29925:1;29915:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;29915:12:0::1;:23;29911:260;;;29974:9;29984:16:::0;;-1:-1:-1;;29984:20:0;;;29974:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;29959:9:::1;:12:::0;;-1:-1:-1;;;;;29974:31:0;;::::1;::::0;29969:1;;29959:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;29959:46:0::1;-1:-1:-1::0;;;;;29959:46:0;;::::1;;::::0;;30024:22;;::::1;::::0;;:13:::1;:22:::0;;;;;;:26;;;30069:11:::1;:20:::0;;;;:28;;-1:-1:-1;;30069:28:0::1;::::0;;30116:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;30116:15:0;;;;;-1:-1:-1;;;;;;30116:15:0::1;::::0;;;;;30150:5:::1;;29911:260;29891:3;;29849:333;;;;29698:491:::0;:::o;6987:132::-;7045:7;7072:39;7076:1;7079;7072:39;;;;;;;;;;;;;;;;;:3;:39::i;4652:181::-;4710:7;4742:5;;;4766:6;;;;4758:46;;;;;-1:-1:-1;;;4758:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5116:136;5174:7;5201:43;5205:1;5208;5201:43;;;;;;;;;;;;;;;;;:3;:43::i;6040:471::-;6098:7;6343:6;6339:47;;-1:-1:-1;6373:1:0;6366:8;;6339:47;6410:5;;;6414:1;6410;:5;:1;6434:5;;;;;:10;6426:56;;;;-1:-1:-1;;;6426:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;632:106;720:10;632:106;:::o;30197:371::-;-1:-1:-1;;;;;30324:19:0;;30316:68;;;;-1:-1:-1;;;30316:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30403:21:0;;30395:68;;;;-1:-1:-1;;;30395:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30476:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;30528:32;;;;;;;;;;;;;;;;;30197:371;;;:::o;35894:808::-;35993:16;;36042:11;;35946:7;;35993:16;35946:7;36064:458;36088:9;:16;36084:20;;36064:458;;;36183:16;36148:18;:32;36167:9;36177:1;36167:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36167:12:0;36148:32;;;;;;;;;;;;;:51;;:113;;;36250:11;36220:13;:27;36234:9;36244:1;36234:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36234:12:0;36220:27;;;;;;;;;;;;;:41;36148:113;36126:191;;;36305:11;;36284:16;;:33;;:20;:33::i;:::-;36277:40;;;;;;;36126:191;36351:86;36390:18;:32;36409:9;36419:1;36409:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36409:12:0;36390:32;;;;;;;;;;;;;36351:16;;:20;:86::i;:::-;36332:105;;36466:44;36482:13;:27;36496:9;36506:1;36496:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36496:12:0;36482:27;;;;;;;;;;;;;36466:11;;:15;:44::i;:::-;36452:58;-1:-1:-1;36106:3:0;;36064:458;;;-1:-1:-1;36576:11:0;;36555:16;;:33;;:20;:33::i;:::-;36536:16;:52;36532:111;;;36631:11;;36610:16;;:33;;:20;:33::i;:::-;36603:40;;;;;;36532:111;36661:33;:16;36682:11;36661:20;:33::i;:::-;36654:40;;;;35894:808;:::o;30576:2204::-;-1:-1:-1;;;;;30707:20:0;;30699:70;;;;-1:-1:-1;;;30699:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30788:23:0;;30780:71;;;;-1:-1:-1;;;30780:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30879:1;30870:6;:10;30862:64;;;;-1:-1:-1;;;30862:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30969:17:0;;;;;;:9;:17;;;;;;;;;:41;;-1:-1:-1;;;;;;30990:20:0;;;;;;:9;:20;;;;;;;;30969:41;:166;;;;31039:11;;31029:6;:21;;:105;;;;-1:-1:-1;31118:10:0;;31093:14;;31074:13;;31064:70;;31131:1;31118:14;31113:2;:20;;31064:44;;:24;;-1:-1:-1;;;;;31074:13:0;31064:9;:24::i;:::-;:28;;:44::i;:70::-;31054:6;:80;;31029:105;30947:233;;;;;-1:-1:-1;;;30947:233:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;31226:6;31201:22;31258:20;:18;:20::i;:::-;31243:35;;31325:28;31356:24;31374:4;31356:9;:24::i;:::-;31419:10;;31325:55;;-1:-1:-1;31391:15:0;;31409:21;;-1:-1:-1;;;;;31419:10:0;31409:9;:21::i;:::-;31446:16;;31391:39;;-1:-1:-1;31446:16:0;;;;;31445:17;:44;;;;-1:-1:-1;31476:13:0;;-1:-1:-1;;;;;31466:23:0;;;31476:13;;31466:23;;31445:44;:69;;;;-1:-1:-1;31493:21:0;;;;;;;31445:69;31441:531;;;31558:19;;31534:20;:43;31531:430;;31596:36;31611:20;31596:14;:36::i;:::-;31531:430;;;31666:19;;31655:7;:30;31652:309;;31739:53;31774:17;:7;31786:4;31774:11;:17::i;:::-;31758:10;;-1:-1:-1;;;;;31758:10:0;31739:30;;;;:18;:30;;;;;;;:34;:53::i;:::-;31725:10;;-1:-1:-1;;;;;31725:10:0;31706:30;;;;:18;:30;;;;;:86;31847:56;31885:17;:7;31897:4;31885:11;:17::i;:::-;31874:4;31847:33;;;;:18;:33;;;;;;;:37;:56::i;:::-;31838:4;31811:33;;;;:18;:33;;;;;:92;31922:23;31937:7;31922:14;:23::i;:::-;31995:11;;;;;;;:33;;;;-1:-1:-1;;;;;;32011:17:0;;;;;;:9;:17;;;;;;;;32010:18;31995:33;:58;;;;-1:-1:-1;;;;;;32033:20:0;;;;;;:9;:20;;;;;;;;32032:21;31995:58;:79;;;;-1:-1:-1;32058:16:0;;;;;;;32057:17;31995:79;31992:168;;;32108:40;32119:6;32126:9;32136:6;32143:4;32108:10;:40::i;:::-;32091:57;;31992:168;32232:48;32263:16;:6;32274:4;32263:10;:16::i;:::-;-1:-1:-1;;;;;32232:26:0;;;;;;:18;:26;;;;;;;:30;:48::i;:::-;-1:-1:-1;;;;;32203:26:0;;;;;;:18;:26;;;;;:77;32323:59;32357:24;:14;32376:4;32357:18;:24::i;:::-;-1:-1:-1;;;;;32323:29:0;;;;;;:18;:29;;;;;;;:33;:59::i;:::-;-1:-1:-1;;;;;32291:29:0;;;;;;;:18;:29;;;;;;;;:91;;;;32471:19;;;;;:11;:19;;;;;;;32467:109;;;-1:-1:-1;;;;;32531:21:0;;;;;;:13;:21;;;;;;:33;;32557:6;32531:25;:33::i;:::-;-1:-1:-1;;;;;32507:21:0;;;;;;:13;:21;;;;;:57;32467:109;-1:-1:-1;;;;;32590:22:0;;;;;;:11;:22;;;;;;;;32586:126;;;-1:-1:-1;;;;;32656:24:0;;;;;;:13;:24;;;;;;:44;;32685:14;32656:28;:44::i;:::-;-1:-1:-1;;;;;32629:24:0;;;;;;:13;:24;;;;;:71;32586:126;32746:9;-1:-1:-1;;;;;32729:43:0;32738:6;-1:-1:-1;;;;;32729:43:0;-1:-1:-1;;;;;;;;;;;32757:14:0;32729:43;;;;;;;;;;;;;;;;;;30576:2204;;;;;;;:::o;5555:226::-;5675:7;5711:12;5703:6;;;;5695:29;;;;-1:-1:-1;;;5695:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5747:5:0;;;5555:226::o;7615:312::-;7735:7;7770:12;7763:5;7755:28;;;;-1:-1:-1;;;7755:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7794:9;7810:1;7806;:5;;;;;;;7615:312;-1:-1:-1;;;;;7615:312:0:o;36715:1097::-;23606:16;:23;;-1:-1:-1;;23606:23:0;;;;;36827:11:::1;::::0;36804:34;::::1;36801:86;;;-1:-1:-1::0;36876:11:0::1;::::0;36801:86:::1;36963:12;36978:27;:20:::0;37003:1:::1;36978:24;:27::i;:::-;36963:42:::0;-1:-1:-1;37016:17:0::1;37036:30;:20:::0;36963:42;37036:24:::1;:30::i;:::-;37016:50:::0;-1:-1:-1;37369:21:0::1;37435:22;37452:4:::0;37435:16:::1;:22::i;:::-;37588:18;37609:41;:21;37635:14:::0;37609:25:::1;:41::i;:::-;37588:62;;37700:35;37713:9;37724:10;37700:12;:35::i;:::-;37761:43;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;;;;::::1;-1:-1:-1::0;;23652:16:0;:24;;-1:-1:-1;;23652:24:0;;;-1:-1:-1;;;36715:1097:0:o;38420:165::-;23606:16;:23;;-1:-1:-1;;23606:23:0;;;;;38491:24:::1;38508:6:::0;38491:16:::1;:24::i;:::-;38534:10;::::0;38526:51:::1;::::0;-1:-1:-1;;;;;38534:10:0;;::::1;::::0;38555:21:::1;38526:51:::0;::::1;;;::::0;38534:10:::1;38526:51:::0;38534:10;38526:51;38555:21;38534:10;38526:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;23652:16:0;:24;;-1:-1:-1;;23652:24:0;;;38420:165::o;34401:1485::-;34497:7;34542:6;34497:7;;34616:35;34639:7;34648:2;34616:22;:35::i;:::-;34569:82;;;;34699:14;34717:1;34699:19;34696:581;;34794:10;;34734:21;;34758:52;;34807:1;34794:14;34789:2;:20;34758:26;:6;34769:14;34758:10;:26::i;:52::-;34734:76;-1:-1:-1;34842:33:0;:14;34734:76;34842:18;:33::i;:::-;34825:50;-1:-1:-1;34926:62:0;34964:23;:13;34982:4;34964:17;:23::i;34926:62::-;34917:4;34890:33;;;;:18;:33;;;;;;;;:98;;;;35007:11;:26;;;;;;35003:145;;;35107:4;35085:28;;;;:13;:28;;;;;;:47;;35118:13;35085:32;:47::i;:::-;35076:4;35054:28;;;;:13;:28;;;;;:78;35003:145;35173:8;;:27;;35186:13;35173:12;:27::i;:::-;35162:8;:38;35220:45;;;;;;;;35245:4;;-1:-1:-1;;;;;35220:45:0;;;-1:-1:-1;;;;;;;;;;;35220:45:0;;;;;;;;34696:581;;35325:14;;35322:523;;35405:10;;35355:16;;35374:47;;35418:1;35405:14;35400:2;:20;35374:21;:6;35385:9;35374:10;:21::i;:47::-;35355:66;-1:-1:-1;35453:28:0;:14;35355:66;35453:18;:28::i;:::-;35436:45;-1:-1:-1;35529:54:0;35564:18;:8;35577:4;35564:12;:18::i;:::-;35548:10;;-1:-1:-1;;;;;35548:10:0;35529:30;;;;:18;:30;;;;;;;:34;:54::i;:::-;35515:10;;;-1:-1:-1;;;;;35515:10:0;;;35496:30;;;;:18;:30;;;;;;;;:87;;;;35614:10;;;;;35602:23;;:11;:23;;;;;;;35598:131;;;35688:10;;-1:-1:-1;;;;;35688:10:0;35674:25;;;;:13;:25;;;;;;:39;;35704:8;35674:29;:39::i;:::-;35660:10;;-1:-1:-1;;;;;35660:10:0;35646:25;;;;:13;:25;;;;;:67;35598:131;35754:8;;:22;;35767:8;35754:12;:22::i;:::-;35743:8;:33;35813:10;;35796:37;;;;;;;;-1:-1:-1;;;;;35813:10:0;;;;35796:37;;;-1:-1:-1;;;;;;;;;;;35796:37:0;;;;;;;;;35322:523;;-1:-1:-1;35864:14:0;;34401:1485;-1:-1:-1;;;;;;34401:1485:0:o;37820:589::-;37970:16;;;37984:1;37970:16;;;37946:21;37970:16;;;;;37946:21;37970:16;;;;;;;;;;-1:-1:-1;37970:16:0;37946:40;;38015:4;37997;38002:1;37997:7;;;;;;;;;;;;;:23;-1:-1:-1;;;;;37997:23:0;;;-1:-1:-1;;;;;37997:23:0;;;;;38041:15;;;;;;;;;-1:-1:-1;;;;;38041:15:0;-1:-1:-1;;;;;38041:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38041:22:0;38031:7;;:4;;38036:1;;38031:7;;;;;;-1:-1:-1;;;;;38031:32:0;;;:7;;;;;;;;;:32;38108:15;;38076:62;;38093:4;;38108:15;;;;38126:11;38076:8;:62::i;:::-;38177:15;;;;;;;;;-1:-1:-1;;;;;38177:15:0;-1:-1:-1;;;;;38177:66:0;;38258:11;38284:1;38328:4;38355;38375:15;38177:224;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38177:224:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37820:589;;:::o;38596:513::-;38776:15;;38744:62;;38761:4;;38776:15;;;-1:-1:-1;;;;;38776:15:0;38794:11;38744:8;:62::i;:::-;38849:15;;;;;-1:-1:-1;;;;;38849:15:0;:31;38888:9;38921:4;38941:11;38967:1;;39053:7;:5;:7::i;:::-;39075:15;38849:252;;;;;;;;;;;;;-1:-1:-1;;;;;38849:252:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38849:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;38596:513:0:o;32792:1597::-;32961:15;;32866:7;;;;32961:15;;32960:16;;:66;;-1:-1:-1;32989:13:0;;-1:-1:-1;;;;;32981:21:0;;;32989:13;;32981:21;;;;:44;;-1:-1:-1;33012:13:0;;-1:-1:-1;;;;;33006:19:0;;;33012:13;;33006:19;;32981:44;32957:139;;;33049:13;;;;:47;;33092:1;33094;33049:47;;;33066:7;;33075:12;;33049:47;33042:54;;;;;;32957:139;33126:13;;-1:-1:-1;;;;;33120:19:0;;;33126:13;;33120:19;;;;:37;;-1:-1:-1;;;;;;33144:13:0;;;;;;:9;:13;;;;;;;;33143:14;33120:37;33117:199;;;-1:-1:-1;;;;;33182:15:0;;;;;;:11;:15;;;;;;33201;-1:-1:-1;33182:34:0;33174:64;;;;;-1:-1:-1;;;33174:64:0;;;;;;;;;;;;-1:-1:-1;;;33174:64:0;;;;;;;;;;;;;;;33289:15;;-1:-1:-1;;;;;33253:15:0;;;;;;:11;:15;;;;;33271;:33;;;33253:51;;33117:199;33347:7;;33389:12;;33425:13;;-1:-1:-1;;;;;33417:21:0;;;33425:13;;33417:21;;;;:41;;-1:-1:-1;;;;;;33443:15:0;;;;;;:9;:15;;;;;;;;33442:16;33417:41;33414:925;;;-1:-1:-1;;;;;33483:18:0;;;;;;:12;:18;;;;;;33505:15;-1:-1:-1;33483:37:0;33475:68;;;;;-1:-1:-1;;;33475:68:0;;;;;;;;;;;;-1:-1:-1;;;33475:68:0;;;;;;;;;;;;;;;33601:18;;-1:-1:-1;;;;;33575:23:0;;;;;;:17;:23;;;;;;33622:15;33575:44;;:62;33572:181;;;-1:-1:-1;;;;;33658:15:0;;33676:1;33658:15;;;:9;:15;;;;;;;;:19;;;33696:17;:23;;;;;33722:15;33696:41;;33572:181;33783:9;33779:549;33802:17;:24;33798:28;;33779:549;;;-1:-1:-1;;;;;33855:15:0;;;;;;:9;:15;;;;;;:20;;33852:461;;;-1:-1:-1;;;;;33900:15:0;;;;;;:9;:15;;;;;;;;:17;;;;;;33979:20;;33997:1;;33979:20;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33940:18:0;;;;:12;:18;;;;;;;33961:15;:38;;;33940:59;;34033:31;34045:6;;:18;;34058:1;34062;34058:5;34045:18;;;34054:1;34045:18;34033:7;;;:11;:31::i;:::-;34022:42;-1:-1:-1;34103:36:0;34120:6;;:18;;34133:1;34137;34133:5;34120:18;;;34129:1;34120:18;34103:12;;;:16;:36::i;:::-;34165:17;:24;34087:52;;-1:-1:-1;34197:1:0;34193:5;;34165:33;34162:103;;;34247:18;;-1:-1:-1;;;;;34221:23:0;;;;;;:17;:23;;;;;;;;;34200:12;:18;;;;;;34221:44;;34200:65;;34162:103;34288:5;;33852:461;33828:3;;33779:549;;;;33414:925;34357:8;;-1:-1:-1;34367:13:0;-1:-1:-1;32792:1597:0;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;

Swarm Source

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