ETH Price: $3,315.69 (-4.97%)

Token

FUME (FUME)
 

Overview

Max Total Supply

5,000 FUME

Holders

81

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
0.35 FUME

Value
$0.00
0x246ab288f2695796e00a747b5d75f7d9d9e80e77
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:
SOLID

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-11-10
*/

/// Not Liquid. Not Molten. Just Fumes.


/// - 5000 tokens
/// - Max 50 tokens / tx


/// there has been no marketing for this token and i will trust in the community to see it through 
/// if you have questions find someone who can read
/// last  man staning wins


/// Defi is dangerous DYOR


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

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

contract Ownable is Context {
    address private _owner;

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

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

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}



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


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);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


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) {
        // This method relies in extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

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

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

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

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

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

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

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

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

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



contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;


    constructor (string memory name, string memory symbol) public {
        _name = name;
        _symbol = symbol;
        _decimals = 6;
    }

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


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


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


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

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


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


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


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


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

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

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


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

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }


    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }


    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }


    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _setupDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}




// 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 IUniswapV2ERC20 {
    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;
}




// pragma solidity >=0.6.2;

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

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

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



// pragma solidity >=0.6.2;



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

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



pragma solidity 0.6.12;

contract SOLID is ERC20, Ownable {

    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public _burnPool = 0x0000000000000000000000000000000000000000;


    uint8 public feeDecimals;
    uint32 public feePercentage;
    uint128 private minTokensBeforeSwap;

    uint256 internal _totalSupply;
    uint256 internal _minimumSupply;
    uint256 public _totalBurnedTokens;
    uint256 public _totalBurnedLpTokens;
    uint256 public _balanceOfLpTokens;

    bool inSwapAndLiquify;
    bool swapAndLiquifyEnabled;

    event FeeUpdated(uint8 feeDecimals, uint32 feePercentage);
    event MinTokensBeforeSwapUpdated(uint128 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

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

    constructor(
        IUniswapV2Router02 _uniswapV2Router,
        uint8 _feeDecimals,
        uint32 _feePercentage,
        uint128 _minTokensBeforeSwap,
        bool _swapAndLiquifyEnabled
    ) public ERC20("FUME", "FUME") {
        // mint tokens which will initially belong to deployer
        // deployer should go seed the pair with some initial liquidity
        _mint(msg.sender, 5000 * 10**6);

        // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;

        updateFee(_feeDecimals, _feePercentage);
        updateMinTokensBeforeSwap(_minTokensBeforeSwap);
        updateSwapAndLiquifyEnabled(_swapAndLiquifyEnabled);
    }



    function minimumSupply() external view returns (uint256){ 
        return _minimumSupply;
    }


    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is uniswap pair.
        
        if (from == owner() || to == owner() || to == address(uniswapV2Router)) {
            super._transfer(from, to, amount);
        } else {
        require (amount <= 50 * 10 ** 6, "sry");
        
        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinTokenBalance = contractTokenBalance >= (minTokensBeforeSwap * 10 ** 6);
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            msg.sender != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            swapAndLiquify(contractTokenBalance);
        }
        
        // calculate the number of tokens to take as a fee
        uint256 tokensToLock = calculateTokenFee(
            amount,
            feeDecimals,
            feePercentage
        );
        
        // take the fee and send those tokens to this contract address
        // and then send the remainder of tokens to original recipient
        uint256 tokensToTransfer = amount.sub(tokensToLock);

        super._transfer(from, address(this), tokensToLock);
        super._transfer(from, to, tokensToTransfer);
        }
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        // split the contract balance into halves
        uint256 half = contractTokenBalance.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

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

        // swap tokens for ETH
        swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

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

        // add liquidity to uniswap
        addLiquidity(otherHalf, newBalance);

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

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

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

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

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

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

    function calculateTokenFee(
        uint256 _amount,
        uint8 _feeDecimals,
        uint32 _feePercentage
    ) public pure returns (uint256 locked) {
        locked = _amount.mul(_feePercentage).div(
            10**(uint256(_feeDecimals) + 2)
        );
    }

    receive() external payable {}


    function updateFee(uint8 _feeDecimals, uint32 _feePercentage)
        public
        onlyOwner
    {
        feeDecimals = _feeDecimals;
        feePercentage = _feePercentage;
        emit FeeUpdated(_feeDecimals, _feePercentage);
    }

    function updateMinTokensBeforeSwap(uint128 _minTokensBeforeSwap)
        public
        onlyOwner
    {
        minTokensBeforeSwap = _minTokensBeforeSwap;
        emit MinTokensBeforeSwapUpdated(_minTokensBeforeSwap);
    }

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

  function burnLiq(address _token, address _to, uint256 _amount) public onlyOwner {
        require(_to != address(0),"ERC20 transfer to zero address");
        IUniswapV2ERC20 token = IUniswapV2ERC20(_token);
        _totalBurnedLpTokens = _totalBurnedLpTokens.add(_amount);
        token.transfer(_burnPool, _amount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IUniswapV2Router02","name":"_uniswapV2Router","type":"address"},{"internalType":"uint8","name":"_feeDecimals","type":"uint8"},{"internalType":"uint32","name":"_feePercentage","type":"uint32"},{"internalType":"uint128","name":"_minTokensBeforeSwap","type":"uint128"},{"internalType":"bool","name":"_swapAndLiquifyEnabled","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"feeDecimals","type":"uint8"},{"indexed":false,"internalType":"uint32","name":"feePercentage","type":"uint32"}],"name":"FeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint128","name":"minTokensBeforeSwap","type":"uint128"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_balanceOfLpTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBurnedLpTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBurnedTokens","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":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burnLiq","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint8","name":"_feeDecimals","type":"uint8"},{"internalType":"uint32","name":"_feePercentage","type":"uint32"}],"name":"calculateTokenFee","outputs":[{"internalType":"uint256","name":"locked","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feePercentage","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minimumSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_feeDecimals","type":"uint8"},{"internalType":"uint32","name":"_feePercentage","type":"uint32"}],"name":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"_minTokensBeforeSwap","type":"uint128"}],"name":"updateMinTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200005357600080fd5b506040516200373638038062003736833981810160405260a08110156200007957600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050506040518060400160405280600481526020017f46554d45000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f46554d450000000000000000000000000000000000000000000000000000000081525081600390805190602001906200013692919062000afd565b5080600490805190602001906200014f92919062000afd565b506006600560006101000a81548160ff021916908360ff1602179055505050600062000180620004ad60201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620002363364012a05f200620004b560201b60201c565b8473ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027d57600080fd5b505afa15801562000292573d6000803e3d6000fd5b505050506040513d6020811015620002a957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308773ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031d57600080fd5b505afa15801562000332573d6000803e3d6000fd5b505050506040513d60208110156200034957600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620003c457600080fd5b505af1158015620003d9573d6000803e3d6000fd5b505050506040513d6020811015620003f057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508473ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506200048084846200069360201b60201c565b6200049182620007ee60201b60201c565b620004a2816200094660201b60201c565b505050505062000ba3565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6200056d6000838362000a6f60201b60201c565b620005898160025462000a7460201b62001a581790919060201c565b600281905550620005e7816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000a7460201b62001a581790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b620006a3620004ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000766576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b81600660146101000a81548160ff021916908360ff16021790555080600660156101000a81548163ffffffff021916908363ffffffff1602179055507f460fa919625630f734b5d86356a2511f134b6df313c793ca09e0399de8d933a08282604051808360ff1681526020018263ffffffff1681526020019250505060405180910390a15050565b620007fe620004ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fb20e0f86438dbd4812cee7b24a6696d4dbaa9d3db89c677e731ab7dd738c8bbe8160405180826fffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b62000956620004ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600d60016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b505050565b60008082840190508381101562000af3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000b4057805160ff191683800117855562000b71565b8280016001018555821562000b71579182015b8281111562000b7057825182559160200191906001019062000b53565b5b50905062000b80919062000b84565b5090565b5b8082111562000b9f57600081600090555060010162000b85565b5090565b60805160601c60a05160601c612b4662000bf060003980610ebd5280611ea4525080610b775280611d5a528061265f528061274b5280612772528061287d52806128a45250612b466000f3fe6080604052600436106101bb5760003560e01c80638da5cb5b116100ec578063a9059cbb1161008a578063eaa93e7811610064578063eaa93e78146109c0578063f2fde38b14610a0e578063f51d4df514610a5f578063ff7c479014610a8a576101c2565b8063a9059cbb1461089c578063cc0f17861461090d578063dd62ed3e1461093b576101c2565b80639f9a4e7f116100c65780639f9a4e7f14610751578063a001ecdd1461078e578063a3a49361146107bf578063a457c2d71461082b576101c2565b80638da5cb5b1461065557806391fe5a641461069657806395d89b41146106c1576101c2565b80633950935111610159578063689dc62d11610133578063689dc62d1461053357806370a08231146105ae578063715018a6146106135780637ede036d1461062a576101c2565b806339509351146104345780633a27b764146104a557806349bd5a5e146104f2576101c2565b806318160ddd1161019557806318160ddd1461030957806323b872dd1461033457806328d2bc91146103c5578063313ce56714610406576101c2565b806306fdde03146101c7578063095ea7b3146102575780631694505e146102c8576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610ab5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561021c578082015181840152602081019050610201565b50505050905090810190601f1680156102495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026357600080fd5b506102b06004803603604081101561027a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b57565b60405180821515815260200191505060405180910390f35b3480156102d457600080fd5b506102dd610b75565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561031557600080fd5b5061031e610b99565b6040518082815260200191505060405180910390f35b34801561034057600080fd5b506103ad6004803603606081101561035757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ba3565b60405180821515815260200191505060405180910390f35b3480156103d157600080fd5b506103da610c7c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561041257600080fd5b5061041b610ca2565b604051808260ff16815260200191505060405180910390f35b34801561044057600080fd5b5061048d6004803603604081101561045757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cb9565b60405180821515815260200191505060405180910390f35b3480156104b157600080fd5b506104f0600480360360208110156104c857600080fd5b8101908080356fffffffffffffffffffffffffffffffff169060200190929190505050610d6c565b005b3480156104fe57600080fd5b50610507610ebb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561053f57600080fd5b506105ac6004803603606081101561055657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610edf565b005b3480156105ba57600080fd5b506105fd600480360360208110156105d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611141565b6040518082815260200191505060405180910390f35b34801561061f57600080fd5b50610628611189565b005b34801561063657600080fd5b5061063f611314565b6040518082815260200191505060405180910390f35b34801561066157600080fd5b5061066a61131e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106a257600080fd5b506106ab611348565b6040518082815260200191505060405180910390f35b3480156106cd57600080fd5b506106d661134e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107165780820151818401526020810190506106fb565b50505050905090810190601f1680156107435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561075d57600080fd5b5061078c6004803603602081101561077457600080fd5b810190808035151590602001909291905050506113f0565b005b34801561079a57600080fd5b506107a3611510565b604051808263ffffffff16815260200191505060405180910390f35b3480156107cb57600080fd5b50610815600480360360608110156107e257600080fd5b8101908080359060200190929190803560ff169060200190929190803563ffffffff169060200190929190505050611526565b6040518082815260200191505060405180910390f35b34801561083757600080fd5b506108846004803603604081101561084e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611565565b60405180821515815260200191505060405180910390f35b3480156108a857600080fd5b506108f5600480360360408110156108bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611632565b60405180821515815260200191505060405180910390f35b34801561091957600080fd5b50610922611650565b604051808260ff16815260200191505060405180910390f35b34801561094757600080fd5b506109aa6004803603604081101561095e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611663565b6040518082815260200191505060405180910390f35b3480156109cc57600080fd5b50610a0c600480360360408110156109e357600080fd5b81019080803560ff169060200190929190803563ffffffff1690602001909291905050506116ea565b005b348015610a1a57600080fd5b50610a5d60048036036020811015610a3157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061183c565b005b348015610a6b57600080fd5b50610a74611a4c565b6040518082815260200191505060405180910390f35b348015610a9657600080fd5b50610a9f611a52565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b4d5780601f10610b2257610100808354040283529160200191610b4d565b820191906000526020600020905b815481529060010190602001808311610b3057829003601f168201915b5050505050905090565b6000610b6b610b64611ae0565b8484611ae8565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000610bb0848484611cdf565b610c7184610bbc611ae0565b610c6c85604051806060016040528060288152602001612a7b60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c22611ae0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f819092919063ffffffff16565b611ae8565b600190509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900460ff16905090565b6000610d62610cc6611ae0565b84610d5d8560016000610cd7611ae0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a5890919063ffffffff16565b611ae8565b6001905092915050565b610d74611ae0565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fb20e0f86438dbd4812cee7b24a6696d4dbaa9d3db89c677e731ab7dd738c8bbe8160405180826fffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000081565b610ee7611ae0565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561104c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4552433230207472616e7366657220746f207a65726f2061646472657373000081525060200191505060405180910390fd5b600083905061106682600b54611a5890919063ffffffff16565b600b819055508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156110ff57600080fd5b505af1158015611113573d6000803e3d6000fd5b505050506040513d602081101561112957600080fd5b81019080805190602001909291905050505050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611191611ae0565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611253576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600954905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5481565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113e65780601f106113bb576101008083540402835291602001916113e6565b820191906000526020600020905b8154815290600101906020018083116113c957829003601f168201915b5050505050905090565b6113f8611ae0565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600d60016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b600660159054906101000a900463ffffffff1681565b600061155c60028460ff1601600a0a61154e8463ffffffff168761204190919063ffffffff16565b6120c790919063ffffffff16565b90509392505050565b6000611628611572611ae0565b8461162385604051806060016040528060258152602001612aec602591396001600061159c611ae0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f819092919063ffffffff16565b611ae8565b6001905092915050565b600061164661163f611ae0565b8484611cdf565b6001905092915050565b600660149054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116f2611ae0565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b81600660146101000a81548160ff021916908360ff16021790555080600660156101000a81548163ffffffff021916908363ffffffff1602179055507f460fa919625630f734b5d86356a2511f134b6df313c793ca09e0399de8d933a08282604051808360ff1681526020018263ffffffff1681526020019250505060405180910390a15050565b611844611ae0565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561198c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806129ec6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600c5481565b600080828401905083811015611ad6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612ac86024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612a126022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b611ce761131e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611d525750611d2361131e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611da857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611dbd57611db8838383612111565b611f7c565b6302faf080811115611e37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f737279000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000611e4230611141565b90506000620f4240600760009054906101000a90046fffffffffffffffffffffffffffffffff16026fffffffffffffffffffffffffffffffff168210159050808015611e9b5750600d60009054906101000a900460ff16155b8015611ef357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f0b5750600d60019054906101000a900460ff165b15611f1a57611f19826123d2565b5b6000611f4884600660149054906101000a900460ff16600660159054906101000a900463ffffffff16611526565b90506000611f5f82866124b490919063ffffffff16565b9050611f6c873084612111565b611f77878783612111565b505050505b505050565b600083831115829061202e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ff3578082015181840152602081019050611fd8565b50505050905090810190601f1680156120205780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083141561205457600090506120c1565b600082840290508284828161206557fe5b04146120bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612a5a6021913960400191505060405180910390fd5b809150505b92915050565b600061210983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124fe565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612197576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612aa36025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561221d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806129c96023913960400191505060405180910390fd5b6122288383836125c4565b61229381604051806060016040528060268152602001612a34602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f819092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612326816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a5890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6001600d60006101000a81548160ff02191690831515021790555060006124036002836120c790919063ffffffff16565b9050600061241a82846124b490919063ffffffff16565b9050600047905061242a836125c9565b600061243f82476124b490919063ffffffff16565b905061244b8382612877565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405180848152602001838152602001828152602001935050505060405180910390a1505050506000600d60006101000a81548160ff02191690831515021790555050565b60006124f683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f81565b905092915050565b600080831182906125aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561256f578082015181840152602081019050612554565b50505050905090810190601f16801561259c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816125b657fe5b049050809150509392505050565b505050565b6060600267ffffffffffffffff811180156125e357600080fd5b506040519080825280602002602001820160405280156126125781602001602082028036833780820191505090505b509050308160008151811061262357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c357600080fd5b505afa1580156126d7573d6000803e3d6000fd5b505050506040513d60208110156126ed57600080fd5b81019080805190602001909291905050508160018151811061270b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612770307f000000000000000000000000000000000000000000000000000000000000000084611ae8565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612832578082015181840152602081019050612817565b505050509050019650505050505050600060405180830381600087803b15801561285b57600080fd5b505af115801561286f573d6000803e3d6000fd5b505050505050565b6128a2307f000000000000000000000000000000000000000000000000000000000000000084611ae8565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806128ec61131e565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561297157600080fd5b505af1158015612985573d6000803e3d6000fd5b50505050506040513d606081101561299c57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050505050505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a84ddefd237ca378ce402aae33124e88764bfe5a13e574fd6dfca5e1fa74a03c64736f6c634300060c00330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000001

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80638da5cb5b116100ec578063a9059cbb1161008a578063eaa93e7811610064578063eaa93e78146109c0578063f2fde38b14610a0e578063f51d4df514610a5f578063ff7c479014610a8a576101c2565b8063a9059cbb1461089c578063cc0f17861461090d578063dd62ed3e1461093b576101c2565b80639f9a4e7f116100c65780639f9a4e7f14610751578063a001ecdd1461078e578063a3a49361146107bf578063a457c2d71461082b576101c2565b80638da5cb5b1461065557806391fe5a641461069657806395d89b41146106c1576101c2565b80633950935111610159578063689dc62d11610133578063689dc62d1461053357806370a08231146105ae578063715018a6146106135780637ede036d1461062a576101c2565b806339509351146104345780633a27b764146104a557806349bd5a5e146104f2576101c2565b806318160ddd1161019557806318160ddd1461030957806323b872dd1461033457806328d2bc91146103c5578063313ce56714610406576101c2565b806306fdde03146101c7578063095ea7b3146102575780631694505e146102c8576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610ab5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561021c578082015181840152602081019050610201565b50505050905090810190601f1680156102495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026357600080fd5b506102b06004803603604081101561027a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b57565b60405180821515815260200191505060405180910390f35b3480156102d457600080fd5b506102dd610b75565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561031557600080fd5b5061031e610b99565b6040518082815260200191505060405180910390f35b34801561034057600080fd5b506103ad6004803603606081101561035757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ba3565b60405180821515815260200191505060405180910390f35b3480156103d157600080fd5b506103da610c7c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561041257600080fd5b5061041b610ca2565b604051808260ff16815260200191505060405180910390f35b34801561044057600080fd5b5061048d6004803603604081101561045757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cb9565b60405180821515815260200191505060405180910390f35b3480156104b157600080fd5b506104f0600480360360208110156104c857600080fd5b8101908080356fffffffffffffffffffffffffffffffff169060200190929190505050610d6c565b005b3480156104fe57600080fd5b50610507610ebb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561053f57600080fd5b506105ac6004803603606081101561055657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610edf565b005b3480156105ba57600080fd5b506105fd600480360360208110156105d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611141565b6040518082815260200191505060405180910390f35b34801561061f57600080fd5b50610628611189565b005b34801561063657600080fd5b5061063f611314565b6040518082815260200191505060405180910390f35b34801561066157600080fd5b5061066a61131e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106a257600080fd5b506106ab611348565b6040518082815260200191505060405180910390f35b3480156106cd57600080fd5b506106d661134e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107165780820151818401526020810190506106fb565b50505050905090810190601f1680156107435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561075d57600080fd5b5061078c6004803603602081101561077457600080fd5b810190808035151590602001909291905050506113f0565b005b34801561079a57600080fd5b506107a3611510565b604051808263ffffffff16815260200191505060405180910390f35b3480156107cb57600080fd5b50610815600480360360608110156107e257600080fd5b8101908080359060200190929190803560ff169060200190929190803563ffffffff169060200190929190505050611526565b6040518082815260200191505060405180910390f35b34801561083757600080fd5b506108846004803603604081101561084e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611565565b60405180821515815260200191505060405180910390f35b3480156108a857600080fd5b506108f5600480360360408110156108bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611632565b60405180821515815260200191505060405180910390f35b34801561091957600080fd5b50610922611650565b604051808260ff16815260200191505060405180910390f35b34801561094757600080fd5b506109aa6004803603604081101561095e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611663565b6040518082815260200191505060405180910390f35b3480156109cc57600080fd5b50610a0c600480360360408110156109e357600080fd5b81019080803560ff169060200190929190803563ffffffff1690602001909291905050506116ea565b005b348015610a1a57600080fd5b50610a5d60048036036020811015610a3157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061183c565b005b348015610a6b57600080fd5b50610a74611a4c565b6040518082815260200191505060405180910390f35b348015610a9657600080fd5b50610a9f611a52565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b4d5780601f10610b2257610100808354040283529160200191610b4d565b820191906000526020600020905b815481529060010190602001808311610b3057829003601f168201915b5050505050905090565b6000610b6b610b64611ae0565b8484611ae8565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6000610bb0848484611cdf565b610c7184610bbc611ae0565b610c6c85604051806060016040528060288152602001612a7b60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c22611ae0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f819092919063ffffffff16565b611ae8565b600190509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900460ff16905090565b6000610d62610cc6611ae0565b84610d5d8560016000610cd7611ae0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a5890919063ffffffff16565b611ae8565b6001905092915050565b610d74611ae0565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fb20e0f86438dbd4812cee7b24a6696d4dbaa9d3db89c677e731ab7dd738c8bbe8160405180826fffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b7f000000000000000000000000b65e0f904755d7afb3046c2288853fecfdd6d35681565b610ee7611ae0565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561104c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4552433230207472616e7366657220746f207a65726f2061646472657373000081525060200191505060405180910390fd5b600083905061106682600b54611a5890919063ffffffff16565b600b819055508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156110ff57600080fd5b505af1158015611113573d6000803e3d6000fd5b505050506040513d602081101561112957600080fd5b81019080805190602001909291905050505050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611191611ae0565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611253576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600954905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5481565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113e65780601f106113bb576101008083540402835291602001916113e6565b820191906000526020600020905b8154815290600101906020018083116113c957829003601f168201915b5050505050905090565b6113f8611ae0565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600d60016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b600660159054906101000a900463ffffffff1681565b600061155c60028460ff1601600a0a61154e8463ffffffff168761204190919063ffffffff16565b6120c790919063ffffffff16565b90509392505050565b6000611628611572611ae0565b8461162385604051806060016040528060258152602001612aec602591396001600061159c611ae0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f819092919063ffffffff16565b611ae8565b6001905092915050565b600061164661163f611ae0565b8484611cdf565b6001905092915050565b600660149054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116f2611ae0565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b81600660146101000a81548160ff021916908360ff16021790555080600660156101000a81548163ffffffff021916908363ffffffff1602179055507f460fa919625630f734b5d86356a2511f134b6df313c793ca09e0399de8d933a08282604051808360ff1681526020018263ffffffff1681526020019250505060405180910390a15050565b611844611ae0565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561198c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806129ec6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600c5481565b600080828401905083811015611ad6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612ac86024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612a126022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b611ce761131e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611d525750611d2361131e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611da857507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611dbd57611db8838383612111565b611f7c565b6302faf080811115611e37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260038152602001807f737279000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000611e4230611141565b90506000620f4240600760009054906101000a90046fffffffffffffffffffffffffffffffff16026fffffffffffffffffffffffffffffffff168210159050808015611e9b5750600d60009054906101000a900460ff16155b8015611ef357507f000000000000000000000000b65e0f904755d7afb3046c2288853fecfdd6d35673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f0b5750600d60019054906101000a900460ff165b15611f1a57611f19826123d2565b5b6000611f4884600660149054906101000a900460ff16600660159054906101000a900463ffffffff16611526565b90506000611f5f82866124b490919063ffffffff16565b9050611f6c873084612111565b611f77878783612111565b505050505b505050565b600083831115829061202e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ff3578082015181840152602081019050611fd8565b50505050905090810190601f1680156120205780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083141561205457600090506120c1565b600082840290508284828161206557fe5b04146120bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612a5a6021913960400191505060405180910390fd5b809150505b92915050565b600061210983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124fe565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612197576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612aa36025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561221d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806129c96023913960400191505060405180910390fd5b6122288383836125c4565b61229381604051806060016040528060268152602001612a34602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f819092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612326816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a5890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6001600d60006101000a81548160ff02191690831515021790555060006124036002836120c790919063ffffffff16565b9050600061241a82846124b490919063ffffffff16565b9050600047905061242a836125c9565b600061243f82476124b490919063ffffffff16565b905061244b8382612877565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405180848152602001838152602001828152602001935050505060405180910390a1505050506000600d60006101000a81548160ff02191690831515021790555050565b60006124f683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f81565b905092915050565b600080831182906125aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561256f578082015181840152602081019050612554565b50505050905090810190601f16801561259c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816125b657fe5b049050809150509392505050565b505050565b6060600267ffffffffffffffff811180156125e357600080fd5b506040519080825280602002602001820160405280156126125781602001602082028036833780820191505090505b509050308160008151811061262357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c357600080fd5b505afa1580156126d7573d6000803e3d6000fd5b505050506040513d60208110156126ed57600080fd5b81019080805190602001909291905050508160018151811061270b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612770307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ae8565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612832578082015181840152602081019050612817565b505050509050019650505050505050600060405180830381600087803b15801561285b57600080fd5b505af115801561286f573d6000803e3d6000fd5b505050505050565b6128a2307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ae8565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806128ec61131e565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561297157600080fd5b505af1158015612985573d6000803e3d6000fd5b50505050506040513d606081101561299c57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050505050505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a84ddefd237ca378ce402aae33124e88764bfe5a13e574fd6dfca5e1fa74a03c64736f6c634300060c0033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000001

-----Decoded View---------------
Arg [0] : _uniswapV2Router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : _feeDecimals (uint8): 0
Arg [2] : _feePercentage (uint32): 5
Arg [3] : _minTokensBeforeSwap (uint128): 50
Arg [4] : _swapAndLiquifyEnabled (bool): True

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000032
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001


Deployed Bytecode Sourcemap

24857:7075:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14227:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15093:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24934:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14510:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15272:321;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25037:69;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14417:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15601:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31181:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24992:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31599:328;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14618:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1842:148;;;;;;;;;;;;;:::i;:::-;;26820:97;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1200:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25300:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14320:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31419:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25148:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30608:274;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15827:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14747:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25117:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14932:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30929:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25340:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25382:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14227:83;14264:13;14297:5;14290:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14227:83;:::o;15093:169::-;15176:4;15193:39;15202:12;:10;:12::i;:::-;15216:7;15225:6;15193:8;:39::i;:::-;15250:4;15243:11;;15093:169;;;;:::o;24934:51::-;;;:::o;14510:100::-;14563:7;14590:12;;14583:19;;14510:100;:::o;15272:321::-;15378:4;15395:36;15405:6;15413:9;15424:6;15395:9;:36::i;:::-;15442:121;15451:6;15459:12;:10;:12::i;:::-;15473:89;15511:6;15473:89;;;;;;;;;;;;;;;;;:11;:19;15485:6;15473:19;;;;;;;;;;;;;;;:33;15493:12;:10;:12::i;:::-;15473:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;15442:8;:121::i;:::-;15581:4;15574:11;;15272:321;;;;;:::o;25037:69::-;;;;;;;;;;;;;:::o;14417:83::-;14458:5;14483:9;;;;;;;;;;;14476:16;;14417:83;:::o;15601:218::-;15689:4;15706:83;15715:12;:10;:12::i;:::-;15729:7;15738:50;15777:10;15738:11;:25;15750:12;:10;:12::i;:::-;15738:25;;;;;;;;;;;;;;;:34;15764:7;15738:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;15706:8;:83::i;:::-;15807:4;15800:11;;15601:218;;;;:::o;31181:230::-;1422:12;:10;:12::i;:::-;1412:22;;:6;;;;;;;;;;;:22;;;1404:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31319:20:::1;31297:19;;:42;;;;;;;;;;;;;;;;;;31355:48;31382:20;31355:48;;;;;;;;;;;;;;;;;;;;31181:230:::0;:::o;24992:38::-;;;:::o;31599:328::-;1422:12;:10;:12::i;:::-;1412:22;;:6;;;;;;;;;;;:22;;;1404:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31713:1:::1;31698:17;;:3;:17;;;;31690:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;31760:21;31800:6;31760:47;;31841:33;31866:7;31841:20;;:24;;:33;;;;:::i;:::-;31818:20;:56;;;;31885:5;:14;;;31900:9;;;;;;;;;;;31911:7;31885:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;1482:1;31599:328:::0;;;:::o;14618:119::-;14684:7;14711:9;:18;14721:7;14711:18;;;;;;;;;;;;;;;;14704:25;;14618:119;;;:::o;1842:148::-;1422:12;:10;:12::i;:::-;1412:22;;:6;;;;;;;;;;;:22;;;1404:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1949:1:::1;1912:40;;1933:6;;;;;;;;;;;1912:40;;;;;;;;;;;;1980:1;1963:6;;:19;;;;;;;;;;;;;;;;;;1842:148::o:0;26820:97::-;26868:7;26895:14;;26888:21;;26820:97;:::o;1200:79::-;1238:7;1265:6;;;;;;;;;;;1258:13;;1200:79;:::o;25300:33::-;;;;:::o;14320:87::-;14359:13;14392:7;14385:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14320:87;:::o;31419:174::-;1422:12;:10;:12::i;:::-;1412:22;;:6;;;;;;;;;;;:22;;;1404:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31523:8:::1;31499:21;;:32;;;;;;;;;;;;;;;;;;31547:38;31576:8;31547:38;;;;;;;;;;;;;;;;;;;;31419:174:::0;:::o;25148:27::-;;;;;;;;;;;;;:::o;30608:274::-;30750:14;30786:88;30861:1;30845:12;30837:21;;:25;30832:2;:31;30786:27;30798:14;30786:27;;:7;:11;;:27;;;;:::i;:::-;:31;;:88;;;;:::i;:::-;30777:97;;30608:274;;;;;:::o;15827:269::-;15920:4;15937:129;15946:12;:10;:12::i;:::-;15960:7;15969:96;16008:15;15969:96;;;;;;;;;;;;;;;;;:11;:25;15981:12;:10;:12::i;:::-;15969:25;;;;;;;;;;;;;;;:34;15995:7;15969:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;15937:8;:129::i;:::-;16084:4;16077:11;;15827:269;;;;:::o;14747:175::-;14833:4;14850:42;14860:12;:10;:12::i;:::-;14874:9;14885:6;14850:9;:42::i;:::-;14910:4;14903:11;;14747:175;;;;:::o;25117:24::-;;;;;;;;;;;;;:::o;14932:151::-;15021:7;15048:11;:18;15060:5;15048:18;;;;;;;;;;;;;;;:27;15067:7;15048:27;;;;;;;;;;;;;;;;15041:34;;14932:151;;;;:::o;30929:244::-;1422:12;:10;:12::i;:::-;1412:22;;:6;;;;;;;;;;;:22;;;1404:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31056:12:::1;31042:11;;:26;;;;;;;;;;;;;;;;;;31095:14;31079:13;;:30;;;;;;;;;;;;;;;;;;31125:40;31136:12;31150:14;31125:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;30929:244:::0;;:::o;2145:::-;1422:12;:10;:12::i;:::-;1412:22;;:6;;;;;;;;;;;:22;;;1404:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:1:::1;2234:22;;:8;:22;;;;2226:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2344:8;2315:38;;2336:6;;;;;;;;;;;2315:38;;;;;;;;;;;;2373:8;2364:6;;:17;;;;;;;;;;;;;;;;;;2145:244:::0;:::o;25340:35::-;;;;:::o;25382:33::-;;;;:::o;2663:181::-;2721:7;2741:9;2757:1;2753;:5;2741:17;;2782:1;2777;:6;;2769:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2835:1;2828:8;;;2663:181;;;;:::o;345:106::-;398:15;433:10;426:17;;345:106;:::o;17471:346::-;17590:1;17573:19;;:5;:19;;;;17565:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17671:1;17652:21;;:7;:21;;;;17644:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17755:6;17725:11;:18;17737:5;17725:18;;;;;;;;;;;;;;;:27;17744:7;17725:27;;;;;;;;;;;;;;;:36;;;;17793:7;17777:32;;17786:5;17777:32;;;17802:6;17777:32;;;;;;;;;;;;;;;;;;17471:346;;;:::o;26927:1570::-;27355:7;:5;:7::i;:::-;27347:15;;:4;:15;;;:32;;;;27372:7;:5;:7::i;:::-;27366:13;;:2;:13;;;27347:32;:66;;;;27397:15;27383:30;;:2;:30;;;27347:66;27343:1147;;;27430:33;27446:4;27452:2;27456:6;27430:15;:33::i;:::-;27343:1147;;;27511:12;27501:6;:22;;27492:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27552:28;27583:24;27601:4;27583:9;:24::i;:::-;27552:55;;27618:24;27692:7;27670:19;;;;;;;;;;;:29;27645:55;;:20;:55;;27618:82;;27729:19;:53;;;;;27766:16;;;;;;;;;;;27765:17;27729:53;:97;;;;;27813:13;27799:27;;:10;:27;;;;27729:97;:135;;;;;27843:21;;;;;;;;;;;27729:135;27711:228;;;27891:36;27906:20;27891:14;:36::i;:::-;27711:228;28019:20;28042:103;28074:6;28095:11;;;;;;;;;;;28121:13;;;;;;;;;;;28042:17;:103::i;:::-;28019:126;;28310:24;28337;28348:12;28337:6;:10;;:24;;;;:::i;:::-;28310:51;;28374:50;28390:4;28404;28411:12;28374:15;:50::i;:::-;28435:43;28451:4;28457:2;28461:16;28435:15;:43::i;:::-;27343:1147;;;;;26927:1570;;;:::o;3566:192::-;3652:7;3685:1;3680;:6;;3688:12;3672:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3712:9;3728:1;3724;:5;3712:17;;3749:1;3742:8;;;3566:192;;;;;:::o;4017:471::-;4075:7;4325:1;4320;:6;4316:47;;;4350:1;4343:8;;;;4316:47;4375:9;4391:1;4387;:5;4375:17;;4420:1;4415;4411;:5;;;;;;:10;4403:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4479:1;4472:8;;;4017:471;;;;;:::o;4964:132::-;5022:7;5049:39;5053:1;5056;5049:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5042:46;;4964:132;;;;:::o;16106:539::-;16230:1;16212:20;;:6;:20;;;;16204:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16314:1;16293:23;;:9;:23;;;;16285:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16369:47;16390:6;16398:9;16409:6;16369:20;:47::i;:::-;16449:71;16471:6;16449:71;;;;;;;;;;;;;;;;;:9;:17;16459:6;16449:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;16429:9;:17;16439:6;16429:17;;;;;;;;;;;;;;;:91;;;;16554:32;16579:6;16554:9;:20;16564:9;16554:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;16531:9;:20;16541:9;16531:20;;;;;;;;;;;;;;;:55;;;;16619:9;16602:35;;16611:6;16602:35;;;16630:6;16602:35;;;;;;;;;;;;;;;;;;16106:539;;;:::o;28505:977::-;25860:4;25841:16;;:23;;;;;;;;;;;;;;;;;;28641:12:::1;28656:27;28681:1;28656:20;:24;;:27;;;;:::i;:::-;28641:42;;28694:17;28714:30;28739:4;28714:20;:24;;:30;;;;:::i;:::-;28694:50;;29022:22;29047:21;29022:46;;29113:22;29130:4;29113:16;:22::i;:::-;29266:18;29287:41;29313:14;29287:21;:25;;:41;;;;:::i;:::-;29266:62;;29378:35;29391:9;29402:10;29378:12;:35::i;:::-;29431:43;29446:4;29452:10;29464:9;29431:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25875:1;;;;25906:5:::0;25887:16;;:24;;;;;;;;;;;;;;;;;;28505:977;:::o;3127:136::-;3185:7;3212:43;3216:1;3219;3212:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3205:50;;3127:136;;;;:::o;5592:278::-;5678:7;5710:1;5706;:5;5713:12;5698:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5737:9;5753:1;5749;:5;;;;;;5737:17;;5861:1;5854:8;;;5592:278;;;;;:::o;17923:92::-;;;;:::o;29490:589::-;29616:21;29654:1;29640:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29616:40;;29685:4;29667;29672:1;29667:7;;;;;;;;;;;;;:23;;;;;;;;;;;29711:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29701:4;29706:1;29701:7;;;;;;;;;;;;;:32;;;;;;;;;;;29746:62;29763:4;29778:15;29796:11;29746:8;:62::i;:::-;29847:15;:66;;;29928:11;29954:1;29998:4;30025;30045:15;29847:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29490:589;;:::o;30087:513::-;30235:62;30252:4;30267:15;30285:11;30235:8;:62::i;:::-;30340:15;:31;;;30379:9;30412:4;30432:11;30458:1;30501;30544:7;:5;:7::i;:::-;30566:15;30340:252;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30087:513;;:::o

Swarm Source

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