ETH Price: $3,409.12 (-1.04%)
Gas: 2 Gwei

Token

Snek on Ethereum (PAL)
 

Overview

Max Total Supply

76,715,880,000 PAL

Holders

144

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000001 PAL

Value
$0.00
0x348194d73a69a6dd749d74864143e5e626be3d3b
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:
PAL

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-24
*/

/******************************************************************
     _  _  _  _             _            _                
    (_)(_)(_)(_)_         _(_)_         (_)               
    (_)        (_)      _(_) (_)_       (_)               
    (_) _  _  _(_)    _(_)     (_)_     (_)               
    (_)(_)(_)(_)     (_) _  _  _ (_)    (_)               
    (_)              (_)(_)(_)(_)(_)    (_)               
    (_)              (_)         (_)    (_) _  _  _  _    
    (_)              (_)         (_)    (_)(_)(_)(_)(_)   
                                                  
                                               
    Website:    https://www.palonethereum.live/
    Telegram:   https://t.me/snekoneth
    Twitter:    https://twitter.com/paloneth

******************************************************************/
// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.19;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

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

contract PAL is IERC20, Ownable {
    /* -------------------------------------------------------------------------- */
    /*                                   events                                   */
    /* -------------------------------------------------------------------------- */
    event Reflect(uint256 amountReflected, uint256 newTotalProportion);

    /* -------------------------------------------------------------------------- */
    /*                                  constants                                 */
    /* -------------------------------------------------------------------------- */
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    uint256 constant MAX_FEE = 25;

    /* -------------------------------------------------------------------------- */
    /*                                   states                                   */
    /* -------------------------------------------------------------------------- */
    IUniswapV2Router02 public constant UNISWAP_V2_ROUTER =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable UNISWAP_V2_PAIR;

    struct Fee {
        uint8 reflection;
        uint8 marketing;
        uint8 lp;
        uint8 buyback;
        uint8 burn;
        uint128 total;
    }

    string _name = "Snek on Ethereum";
    string _symbol = "PAL";

    uint256 _totalSupply = 76_715_880_000 ether;
    uint256 private _maxTxAmount = _totalSupply;

    /* rOwned = ratio of tokens owned relative to circulating supply (NOT total supply, since circulating <= total) */
    mapping(address => uint256) public _rOwned;
    uint256 public _totalProportion = _totalSupply;

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

    bool private limitsEnabled = false;
    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isTxLimitExempt;

    Fee public buyFee = Fee({reflection: 1, marketing: 4, lp: 0, buyback: 0, burn: 0, total: 5});
    Fee public sellFee = Fee({reflection: 1, marketing: 4, lp: 0, buyback: 0, burn: 0, total: 5});

    address public marketingFeeReceiver;
    address private lpFeeReceiver;
    address private buybackFeeReceiver;

    bool public claimingFees = true;
    uint256 public swapThreshold = (_totalSupply * 2) / 1000;
    bool inSwap;

    /* -------------------------------------------------------------------------- */
    /*                                  modifiers                                 */
    /* -------------------------------------------------------------------------- */
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    /* -------------------------------------------------------------------------- */
    /*                                 constructor                                */
    /* -------------------------------------------------------------------------- */
    constructor() {
        // create uniswap pair
        address _uniswapPair =
            IUniswapV2Factory(UNISWAP_V2_ROUTER.factory()).createPair(address(this), UNISWAP_V2_ROUTER.WETH());
        UNISWAP_V2_PAIR = _uniswapPair;

        _allowances[address(this)][address(UNISWAP_V2_ROUTER)] = type(uint256).max;
        _allowances[address(this)][tx.origin] = type(uint256).max;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(UNISWAP_V2_ROUTER)] = true;
        isTxLimitExempt[_uniswapPair] = true;
        isTxLimitExempt[tx.origin] = true;
        isFeeExempt[tx.origin] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[address(UNISWAP_V2_ROUTER)] = true;

        marketingFeeReceiver = 0x792395E3d5129FfCA8449d47EE7C8c4aE089E7DD;
        lpFeeReceiver = 0x792395E3d5129FfCA8449d47EE7C8c4aE089E7DD;
        buybackFeeReceiver = 0x792395E3d5129FfCA8449d47EE7C8c4aE089E7DD;

        _rOwned[tx.origin] = _totalSupply;
        emit Transfer(address(0), tx.origin, _totalSupply);
    }

    receive() external payable {}

    /* -------------------------------------------------------------------------- */
    /*                                    ERC20                                   */
    /* -------------------------------------------------------------------------- */
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            require(_allowances[sender][msg.sender] >= amount, "ERC20: insufficient allowance");
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

    /* -------------------------------------------------------------------------- */
    /*                                    views                                   */
    /* -------------------------------------------------------------------------- */
    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function decimals() external pure returns (uint8) {
        return 18;
    }

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

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

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

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

    function tokensToProportion(uint256 tokens) public view returns (uint256) {
        return tokens * _totalProportion / _totalSupply;
    }

    function tokenFromReflection(uint256 proportion) public view returns (uint256) {
        return proportion * _totalSupply / _totalProportion;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD) - balanceOf(ZERO);
    }

    /* -------------------------------------------------------------------------- */
    /*                                   owners                                   */
    /* -------------------------------------------------------------------------- */
    function clearStuckBalance() external onlyOwner {
        (bool success,) = payable(msg.sender).call{value: address(this).balance}("");
        require(success);
    }

    function clearStuckToken() external onlyOwner {
        _transferFrom(address(this), msg.sender, balanceOf(address(this)));
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        claimingFees = _enabled;
        swapThreshold = _amount;
    }

    function changeFees(
        uint8 reflectionFeeBuy,
        uint8 marketingFeeBuy,
        uint8 lpFeeBuy,
        uint8 buybackFeeBuy,
        uint8 burnFeeBuy,
        uint8 reflectionFeeSell,
        uint8 marketingFeeSell,
        uint8 lpFeeSell,
        uint8 buybackFeeSell,
        uint8 burnFeeSell
    ) external onlyOwner {
        uint128 __totalBuyFee = reflectionFeeBuy + marketingFeeBuy + lpFeeBuy + buybackFeeBuy + burnFeeBuy;
        uint128 __totalSellFee = reflectionFeeSell + marketingFeeSell + lpFeeSell + buybackFeeSell + burnFeeSell;

        require(__totalBuyFee <= MAX_FEE, "Buy fees too high");
        require(__totalSellFee <= MAX_FEE, "Sell fees too high");

        buyFee = Fee({
            reflection: reflectionFeeBuy,
            marketing: reflectionFeeBuy,
            lp: reflectionFeeBuy,
            buyback: reflectionFeeBuy,
            burn: burnFeeBuy,
            total: __totalBuyFee
        });

        sellFee = Fee({
            reflection: reflectionFeeSell,
            marketing: reflectionFeeSell,
            lp: reflectionFeeSell,
            buyback: reflectionFeeSell,
            burn: burnFeeSell,
            total: __totalSellFee
        });
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setFeeReceivers(address m_, address lp_, address b_) external onlyOwner {
        marketingFeeReceiver = m_;
        lpFeeReceiver = lp_;
        buybackFeeReceiver = b_;
    }


    /* -------------------------------------------------------------------------- */
    /*                                   private                                  */
    /* -------------------------------------------------------------------------- */
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        

        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (limitsEnabled && !isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }

        if (_shouldSwapBack()) {
            _swapBack();
        }

        uint256 proportionAmount = tokensToProportion(amount);
        require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
        _rOwned[sender] = _rOwned[sender] - proportionAmount;

        uint256 proportionReceived = _shouldTakeFee(sender, recipient)
            ? _takeFeeInProportions(sender == UNISWAP_V2_PAIR ? true : false, sender, proportionAmount)
            : proportionAmount;
        _rOwned[recipient] = _rOwned[recipient] + proportionReceived;

        emit Transfer(sender, recipient, tokenFromReflection(proportionReceived));
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 proportionAmount = tokensToProportion(amount);
        require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
        _rOwned[sender] = _rOwned[sender] - proportionAmount;
        _rOwned[recipient] = _rOwned[recipient] + proportionAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _takeFeeInProportions(bool buying, address sender, uint256 proportionAmount) internal returns (uint256) {
        Fee memory __buyFee = buyFee;
        Fee memory __sellFee = sellFee;

        uint256 proportionFeeAmount =
            buying == true ? proportionAmount * __buyFee.total / 100 : proportionAmount * __sellFee.total / 100;

        // reflect
        uint256 proportionReflected = buying == true
            ? proportionFeeAmount * __buyFee.reflection / __buyFee.total
            : proportionFeeAmount * __sellFee.reflection / __sellFee.total;

        _totalProportion = _totalProportion - proportionReflected;

        // take fees
        uint256 _proportionToContract = proportionFeeAmount - proportionReflected;
        if (_proportionToContract > 0) {
            _rOwned[address(this)] = _rOwned[address(this)] + _proportionToContract;

            emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract));
        }
        emit Reflect(proportionReflected, _totalProportion);
        return proportionAmount - proportionFeeAmount;
    }

    function _shouldSwapBack() internal view returns (bool) {
        return msg.sender != UNISWAP_V2_PAIR && !inSwap && claimingFees && balanceOf(address(this)) >= swapThreshold;
    }

    function _swapBack() internal swapping {
        Fee memory __sellFee = sellFee;

        uint256 __swapThreshold = swapThreshold;
        uint256 amountToBurn = __swapThreshold * __sellFee.burn / __sellFee.total;
        uint256 amountToSwap = __swapThreshold - amountToBurn;
        approve(address(UNISWAP_V2_ROUTER), amountToSwap);

        // burn
        _transferFrom(address(this), DEAD, amountToBurn);

        // swap
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = UNISWAP_V2_ROUTER.WETH();

        UNISWAP_V2_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap, 0, path, address(this), block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 totalSwapFee = __sellFee.total - __sellFee.reflection - __sellFee.burn;
        uint256 amountETHMarketing = amountETH * __sellFee.marketing / totalSwapFee;
        uint256 amountETHLP = amountETH * __sellFee.lp / totalSwapFee;
        uint256 amountETHBuyback = amountETH * __sellFee.buyback / totalSwapFee;

        // send
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(lpFeeReceiver).call{value: amountETHLP}("");
        (tmpSuccess,) = payable(buybackFeeReceiver).call{value: amountETHBuyback}("");

    }

    function _shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","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":"UNISWAP_V2_PAIR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAP_V2_ROUTER","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"},{"internalType":"uint8","name":"lp","type":"uint8"},{"internalType":"uint8","name":"buyback","type":"uint8"},{"internalType":"uint8","name":"burn","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"reflectionFeeBuy","type":"uint8"},{"internalType":"uint8","name":"marketingFeeBuy","type":"uint8"},{"internalType":"uint8","name":"lpFeeBuy","type":"uint8"},{"internalType":"uint8","name":"buybackFeeBuy","type":"uint8"},{"internalType":"uint8","name":"burnFeeBuy","type":"uint8"},{"internalType":"uint8","name":"reflectionFeeSell","type":"uint8"},{"internalType":"uint8","name":"marketingFeeSell","type":"uint8"},{"internalType":"uint8","name":"lpFeeSell","type":"uint8"},{"internalType":"uint8","name":"buybackFeeSell","type":"uint8"},{"internalType":"uint8","name":"burnFeeSell","type":"uint8"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"sellFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"},{"internalType":"uint8","name":"lp","type":"uint8"},{"internalType":"uint8","name":"buyback","type":"uint8"},{"internalType":"uint8","name":"burn","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"m_","type":"address"},{"internalType":"address","name":"lp_","type":"address"},{"internalType":"address","name":"b_","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052601060a09081526f536e656b206f6e20457468657265756d60801b60c05260019062000031908262000547565b5060408051808201909152600381526214105360ea1b60208201526002906200005b908262000547565b506bf7e1e37c01c1c5f2d10000006003819055600481815560068290556008805460ff191690556040805160c0808201835260018083526020808401869052600084860181905260608086018290526080808701839052600560a0978801819052600b8054650500000004016001600160a81b031991821681179092558a519889018b5296885294870199909952968501829052840181905294830194909452910192909252600c8054909216179055600f805460ff60a01b1916600160a01b1790556103e8906200012f90600262000613565b6200013b91906200063f565b6010553480156200014b57600080fd5b50620001573362000452565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d2919062000662565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a919062000662565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ce919062000662565b6001600160a01b0381166080819052306000818152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d84528252808320600019908190553280855282852091909155848452600a83528184208054600160ff1991821681179092557fc90215bb1b0ac6bfa50a3c02c4b559c695b6a8e828048a88e327592fc55c5d2c80548216831790559685528285208054881682179055818552828520805488168217905560098452828520805488168217905594845281842080548716861790557fbaa441ac52505693dd98c7dd2f5bbf8f9349b7da9de72f9d52e5cac70e7da8ce8054909616909417909455600d805473792395e3d5129ffca8449d47ee7c8c4ae089e7dd6001600160a01b03199182168117909255600e8054821683179055600f80549091169091179055600354838352600582528483208190559351938452939450909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000694565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004cd57607f821691505b602082108103620004ee57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200054257600081815260208120601f850160051c810160208610156200051d5750805b601f850160051c820191505b818110156200053e5782815560010162000529565b5050505b505050565b81516001600160401b03811115620005635762000563620004a2565b6200057b81620005748454620004b8565b84620004f4565b602080601f831160018114620005b357600084156200059a5750858301515b600019600386901b1c1916600185901b1785556200053e565b600085815260208120601f198616915b82811015620005e457888601518255948401946001909101908401620005c3565b5085821015620006035787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176200063957634e487b7160e01b600052601160045260246000fd5b92915050565b6000826200065d57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200067557600080fd5b81516001600160a01b03811681146200068d57600080fd5b9392505050565b608051611e4a620006be6000396000818161067e0152818161100601526112bb0152611e4a6000f3fe6080604052600436106101dc5760003560e01c8063658d4b7f11610102578063c38a31de11610095578063df20fd4911610064578063df20fd491461060c578063e96fada21461062c578063f2fde38b1461064c578063f40acc3d1461066c57600080fd5b8063c38a31de14610571578063d7c0103214610591578063d85a2828146105b1578063dd62ed3e146105c657600080fd5b806395d89b41116100d157806395d89b41146104f3578063a82ed9ec14610508578063a9059cbb14610530578063b0f7ec381461055057600080fd5b8063658d4b7f1461046c57806370a082311461048c578063715018a6146104ac5780638da5cb5b146104c157600080fd5b80632b112e491161017a578063364333f411610149578063364333f4146103c357806345ce5365146103da57806347062402146103fa578063571ac8b01461044c57600080fd5b80632b112e49146102db5780632b14ca56146102f05780632d83811914610387578063313ce567146103a757600080fd5b80630cfc15f9116101b65780630cfc15f914610263578063178002871461029057806318160ddd146102a657806323b872dd146102bb57600080fd5b80630445b667146101e857806306fdde0314610211578063095ea7b31461023357600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b506101fe60105481565b6040519081526020015b60405180910390f35b34801561021d57600080fd5b506102266106a0565b60405161020891906119c6565b34801561023f57600080fd5b5061025361024e366004611a29565b610732565b6040519015158152602001610208565b34801561026f57600080fd5b506101fe61027e366004611a55565b60056020526000908152604090205481565b34801561029c57600080fd5b506101fe60065481565b3480156102b257600080fd5b506003546101fe565b3480156102c757600080fd5b506102536102d6366004611a72565b61079f565b3480156102e757600080fd5b506101fe6108ac565b3480156102fc57600080fd5b50600c546103429060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b6040805160ff9788168152958716602087015293861693850193909352908416606084015290921660808201526001600160801b0390911660a082015260c001610208565b34801561039357600080fd5b506101fe6103a2366004611ab3565b6108df565b3480156103b357600080fd5b5060405160128152602001610208565b3480156103cf57600080fd5b506103d86108fc565b005b3480156103e657600080fd5b506101fe6103f5366004611ab3565b61095c565b34801561040657600080fd5b50600b546103429060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b34801561045857600080fd5b50610253610467366004611a55565b61096f565b34801561047857600080fd5b506103d8610487366004611ae1565b61097d565b34801561049857600080fd5b506101fe6104a7366004611a55565b6109b0565b3480156104b857600080fd5b506103d86109d2565b3480156104cd57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610208565b3480156104ff57600080fd5b506102266109e6565b34801561051457600080fd5b506104db737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561053c57600080fd5b5061025361054b366004611a29565b6109f5565b34801561055c57600080fd5b50600f5461025390600160a01b900460ff1681565b34801561057d57600080fd5b506103d861058c366004611b27565b610a02565b34801561059d57600080fd5b506103d86105ac366004611be1565b610d51565b3480156105bd57600080fd5b506103d8610d98565b3480156105d257600080fd5b506101fe6105e1366004611c2c565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561061857600080fd5b506103d8610627366004611c65565b610db3565b34801561063857600080fd5b50600d546104db906001600160a01b031681565b34801561065857600080fd5b506103d8610667366004611a55565b610ddd565b34801561067857600080fd5b506104db7f000000000000000000000000000000000000000000000000000000000000000081565b6060600180546106af90611c81565b80601f01602080910402602001604051908101604052809291908181526020018280546106db90611c81565b80156107285780601f106106fd57610100808354040283529160200191610728565b820191906000526020600020905b81548152906001019060200180831161070b57829003601f168201915b5050505050905090565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061078d9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610897576001600160a01b03841660009081526007602090815260408083203384529091529020548211156108435760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064015b60405180910390fd5b6001600160a01b0384166000908152600760209081526040808320338452909152902054610872908390611cd1565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b6108a2848484610e53565b90505b9392505050565b60006108b860006109b0565b6108c361dead6109b0565b6003546108d09190611cd1565b6108da9190611cd1565b905090565b6000600654600354836108f29190611ce4565b6107999190611cfb565b6109046110db565b604051600090339047908381818185875af1925050503d8060008114610946576040519150601f19603f3d011682016040523d82523d6000602084013e61094b565b606091505b505090508061095957600080fd5b50565b6000600354600654836108f29190611ce4565b600061079982600019610732565b6109856110db565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001600160a01b038116600090815260056020526040812054610799906108df565b6109da6110db565b6109e46000611135565b565b6060600280546106af90611c81565b60006108a5338484610e53565b610a0a6110db565b600086888a610a198d8f611d1d565b610a239190611d1d565b610a2d9190611d1d565b610a379190611d1d565b60ff1690506000828486610a4b898b611d1d565b610a559190611d1d565b610a5f9190611d1d565b610a699190611d1d565b60ff1690506019826001600160801b03161115610abc5760405162461bcd60e51b8152602060048201526011602482015270084eaf240cccacae640e8dede40d0d2ced607b1b604482015260640161083a565b6019816001600160801b03161115610b0b5760405162461bcd60e51b81526020600482015260126024820152710a6cad8d840cccacae640e8dede40d0d2ced60731b604482015260640161083a565b6040518060c001604052808d60ff1681526020018d60ff1681526020018d60ff1681526020018d60ff1681526020018960ff168152602001836001600160801b0316815250600b60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816001600160801b0302191690836001600160801b031602179055509050506040518060c001604052808860ff1681526020018860ff1681526020018860ff1681526020018860ff1681526020018460ff168152602001826001600160801b0316815250600c60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816001600160801b0302191690836001600160801b03160217905550905050505050505050505050505050565b610d596110db565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493851693821693909317909255600f8054919093169116179055565b610da06110db565b6109593033610dae306109b0565b610e53565b610dbb6110db565b600f8054921515600160a01b0260ff60a01b1990931692909217909155601055565b610de56110db565b6001600160a01b038116610e4a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161083a565b61095981611135565b60115460009060ff1615610e7357610e6c848484611185565b90506108a5565b60085460ff168015610e9e57506001600160a01b0384166000908152600a602052604090205460ff16155b8015610ec357506001600160a01b0383166000908152600a602052604090205460ff16155b15610f2b57600454821115610f2b5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161083a565b610f336112ae565b15610f4057610f4061131b565b6000610f4b8361095c565b6001600160a01b038616600090815260056020526040902054909150811115610fad5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b604482015260640161083a565b6001600160a01b038516600090815260056020526040902054610fd1908290611cd1565b6001600160a01b038616600090815260056020526040812091909155610ff7868661170d565b611001578161104e565b61104e7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031614611044576000611047565b60015b8784611753565b6001600160a01b038616600090815260056020526040902054909150611075908290611d36565b6001600160a01b0380871660008181526005602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6110be846108df565b60405190815260200160405180910390a350600195945050505050565b6000546001600160a01b031633146109e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161083a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806111918361095c565b6001600160a01b0386166000908152600560205260409020549091508111156111f35760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b604482015260640161083a565b6001600160a01b038516600090815260056020526040902054611217908290611cd1565b6001600160a01b038087166000908152600560205260408082209390935590861681522054611247908290611d36565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061129b9087815260200190565b60405180910390a3506001949350505050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906112ec575060115460ff16155b80156113015750600f54600160a01b900460ff165b80156108da5750601054611314306109b0565b1015905090565b60118054600160ff199091161790556040805160c081018252600c5460ff80821683526101008204811660208401526201000082048116938301939093526301000000810483166060830152640100000000810490921660808201819052600160281b9092046001600160801b031660a082018190526010549192600091906113a49084611ce4565b6113ae9190611cfb565b905060006113bc8284611cd1565b90506113dc737a250d5630b4cf539739df2c5dacb4c659f2488d82610732565b506113ea3061dead84610e53565b50604080516002808252606082018352600092602083019080368337019050509050308160008151811061142057611420611d49565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b69190611d5f565b816001815181106114c9576114c9611d49565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611521908590600090869030904290600401611d7c565b600060405180830381600087803b15801561153b57600080fd5b505af115801561154f573d6000803e3d6000fd5b5050505060004790506000866080015160ff16876000015160ff168860a001516115799190611ded565b6115839190611ded565b6001600160801b03169050600081886020015160ff16846115a49190611ce4565b6115ae9190611cfb565b9050600082896040015160ff16856115c69190611ce4565b6115d09190611cfb565b90506000838a6060015160ff16866115e89190611ce4565b6115f29190611cfb565b600d546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114611644576040519150601f19603f3d011682016040523d82523d6000602084013e611649565b606091505b5050600e546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611699576040519150601f19603f3d011682016040523d82523d6000602084013e61169e565b606091505b5050600f546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146116ee576040519150601f19603f3d011682016040523d82523d6000602084013e6116f3565b606091505b50506011805460ff19169055505050505050505050505050565b6001600160a01b03821660009081526009602052604081205460ff161580156108a55750506001600160a01b031660009081526009602052604090205460ff1615919050565b6040805160c08082018352600b5460ff8082168452610100808304821660208087019190915262010000808504841687890152630100000080860485166060808a019190915264010000000080880487166080808c01919091526001600160801b03600160281b998a9004811660a0808e01919091528d519b8c018e52600c54808b168d529889048a16978c019790975294870488169b8a019b909b52918504861690880152830490931696850196909652919091041692810192909252600091828615156001146118495760648260a001516001600160801b03168661183a9190611ce4565b6118449190611cfb565b61186e565b60648360a001516001600160801b0316866118649190611ce4565b61186e9190611cfb565b905060006001881515146118ac578260a001516001600160801b0316836000015160ff168361189d9190611ce4565b6118a79190611cfb565b6118d7565b8360a001516001600160801b0316846000015160ff16836118cd9190611ce4565b6118d79190611cfb565b9050806006546118e79190611cd1565b60065560006118f68284611cd1565b905080156119725730600090815260056020526040902054611919908290611d36565b306000818152600560205260409020919091556001600160a01b0389167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611960846108df565b60405190815260200160405180910390a35b6006546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a16119b98388611cd1565b9998505050505050505050565b600060208083528351808285015260005b818110156119f3578581018301518582016040015282016119d7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461095957600080fd5b60008060408385031215611a3c57600080fd5b8235611a4781611a14565b946020939093013593505050565b600060208284031215611a6757600080fd5b81356108a581611a14565b600080600060608486031215611a8757600080fd5b8335611a9281611a14565b92506020840135611aa281611a14565b929592945050506040919091013590565b600060208284031215611ac557600080fd5b5035919050565b80358015158114611adc57600080fd5b919050565b60008060408385031215611af457600080fd5b8235611aff81611a14565b9150611b0d60208401611acc565b90509250929050565b803560ff81168114611adc57600080fd5b6000806000806000806000806000806101408b8d031215611b4757600080fd5b611b508b611b16565b9950611b5e60208c01611b16565b9850611b6c60408c01611b16565b9750611b7a60608c01611b16565b9650611b8860808c01611b16565b9550611b9660a08c01611b16565b9450611ba460c08c01611b16565b9350611bb260e08c01611b16565b9250611bc16101008c01611b16565b9150611bd06101208c01611b16565b90509295989b9194979a5092959850565b600080600060608486031215611bf657600080fd5b8335611c0181611a14565b92506020840135611c1181611a14565b91506040840135611c2181611a14565b809150509250925092565b60008060408385031215611c3f57600080fd5b8235611c4a81611a14565b91506020830135611c5a81611a14565b809150509250929050565b60008060408385031215611c7857600080fd5b611a4783611acc565b600181811c90821680611c9557607f821691505b602082108103611cb557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561079957610799611cbb565b808202811582820484141761079957610799611cbb565b600082611d1857634e487b7160e01b600052601260045260246000fd5b500490565b60ff818116838216019081111561079957610799611cbb565b8082018082111561079957610799611cbb565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611d7157600080fd5b81516108a581611a14565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611dcc5784516001600160a01b031683529383019391830191600101611da7565b50506001600160a01b03969096166060850152505050608001529392505050565b6001600160801b03828116828216039080821115611e0d57611e0d611cbb565b509291505056fea26469706673582212202a4c282d9dee50c8f3b52fe78ab6eaf7408814eea3bb8dc3fd69c7b4fa81e73c64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c8063658d4b7f11610102578063c38a31de11610095578063df20fd4911610064578063df20fd491461060c578063e96fada21461062c578063f2fde38b1461064c578063f40acc3d1461066c57600080fd5b8063c38a31de14610571578063d7c0103214610591578063d85a2828146105b1578063dd62ed3e146105c657600080fd5b806395d89b41116100d157806395d89b41146104f3578063a82ed9ec14610508578063a9059cbb14610530578063b0f7ec381461055057600080fd5b8063658d4b7f1461046c57806370a082311461048c578063715018a6146104ac5780638da5cb5b146104c157600080fd5b80632b112e491161017a578063364333f411610149578063364333f4146103c357806345ce5365146103da57806347062402146103fa578063571ac8b01461044c57600080fd5b80632b112e49146102db5780632b14ca56146102f05780632d83811914610387578063313ce567146103a757600080fd5b80630cfc15f9116101b65780630cfc15f914610263578063178002871461029057806318160ddd146102a657806323b872dd146102bb57600080fd5b80630445b667146101e857806306fdde0314610211578063095ea7b31461023357600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b506101fe60105481565b6040519081526020015b60405180910390f35b34801561021d57600080fd5b506102266106a0565b60405161020891906119c6565b34801561023f57600080fd5b5061025361024e366004611a29565b610732565b6040519015158152602001610208565b34801561026f57600080fd5b506101fe61027e366004611a55565b60056020526000908152604090205481565b34801561029c57600080fd5b506101fe60065481565b3480156102b257600080fd5b506003546101fe565b3480156102c757600080fd5b506102536102d6366004611a72565b61079f565b3480156102e757600080fd5b506101fe6108ac565b3480156102fc57600080fd5b50600c546103429060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b6040805160ff9788168152958716602087015293861693850193909352908416606084015290921660808201526001600160801b0390911660a082015260c001610208565b34801561039357600080fd5b506101fe6103a2366004611ab3565b6108df565b3480156103b357600080fd5b5060405160128152602001610208565b3480156103cf57600080fd5b506103d86108fc565b005b3480156103e657600080fd5b506101fe6103f5366004611ab3565b61095c565b34801561040657600080fd5b50600b546103429060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b34801561045857600080fd5b50610253610467366004611a55565b61096f565b34801561047857600080fd5b506103d8610487366004611ae1565b61097d565b34801561049857600080fd5b506101fe6104a7366004611a55565b6109b0565b3480156104b857600080fd5b506103d86109d2565b3480156104cd57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610208565b3480156104ff57600080fd5b506102266109e6565b34801561051457600080fd5b506104db737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561053c57600080fd5b5061025361054b366004611a29565b6109f5565b34801561055c57600080fd5b50600f5461025390600160a01b900460ff1681565b34801561057d57600080fd5b506103d861058c366004611b27565b610a02565b34801561059d57600080fd5b506103d86105ac366004611be1565b610d51565b3480156105bd57600080fd5b506103d8610d98565b3480156105d257600080fd5b506101fe6105e1366004611c2c565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561061857600080fd5b506103d8610627366004611c65565b610db3565b34801561063857600080fd5b50600d546104db906001600160a01b031681565b34801561065857600080fd5b506103d8610667366004611a55565b610ddd565b34801561067857600080fd5b506104db7f00000000000000000000000066cc9d62507ab8fb2306b3cbc88ddfa54913741e81565b6060600180546106af90611c81565b80601f01602080910402602001604051908101604052809291908181526020018280546106db90611c81565b80156107285780601f106106fd57610100808354040283529160200191610728565b820191906000526020600020905b81548152906001019060200180831161070b57829003601f168201915b5050505050905090565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061078d9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610897576001600160a01b03841660009081526007602090815260408083203384529091529020548211156108435760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064015b60405180910390fd5b6001600160a01b0384166000908152600760209081526040808320338452909152902054610872908390611cd1565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b6108a2848484610e53565b90505b9392505050565b60006108b860006109b0565b6108c361dead6109b0565b6003546108d09190611cd1565b6108da9190611cd1565b905090565b6000600654600354836108f29190611ce4565b6107999190611cfb565b6109046110db565b604051600090339047908381818185875af1925050503d8060008114610946576040519150601f19603f3d011682016040523d82523d6000602084013e61094b565b606091505b505090508061095957600080fd5b50565b6000600354600654836108f29190611ce4565b600061079982600019610732565b6109856110db565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001600160a01b038116600090815260056020526040812054610799906108df565b6109da6110db565b6109e46000611135565b565b6060600280546106af90611c81565b60006108a5338484610e53565b610a0a6110db565b600086888a610a198d8f611d1d565b610a239190611d1d565b610a2d9190611d1d565b610a379190611d1d565b60ff1690506000828486610a4b898b611d1d565b610a559190611d1d565b610a5f9190611d1d565b610a699190611d1d565b60ff1690506019826001600160801b03161115610abc5760405162461bcd60e51b8152602060048201526011602482015270084eaf240cccacae640e8dede40d0d2ced607b1b604482015260640161083a565b6019816001600160801b03161115610b0b5760405162461bcd60e51b81526020600482015260126024820152710a6cad8d840cccacae640e8dede40d0d2ced60731b604482015260640161083a565b6040518060c001604052808d60ff1681526020018d60ff1681526020018d60ff1681526020018d60ff1681526020018960ff168152602001836001600160801b0316815250600b60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816001600160801b0302191690836001600160801b031602179055509050506040518060c001604052808860ff1681526020018860ff1681526020018860ff1681526020018860ff1681526020018460ff168152602001826001600160801b0316815250600c60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816001600160801b0302191690836001600160801b03160217905550905050505050505050505050505050565b610d596110db565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493851693821693909317909255600f8054919093169116179055565b610da06110db565b6109593033610dae306109b0565b610e53565b610dbb6110db565b600f8054921515600160a01b0260ff60a01b1990931692909217909155601055565b610de56110db565b6001600160a01b038116610e4a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161083a565b61095981611135565b60115460009060ff1615610e7357610e6c848484611185565b90506108a5565b60085460ff168015610e9e57506001600160a01b0384166000908152600a602052604090205460ff16155b8015610ec357506001600160a01b0383166000908152600a602052604090205460ff16155b15610f2b57600454821115610f2b5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161083a565b610f336112ae565b15610f4057610f4061131b565b6000610f4b8361095c565b6001600160a01b038616600090815260056020526040902054909150811115610fad5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b604482015260640161083a565b6001600160a01b038516600090815260056020526040902054610fd1908290611cd1565b6001600160a01b038616600090815260056020526040812091909155610ff7868661170d565b611001578161104e565b61104e7f00000000000000000000000066cc9d62507ab8fb2306b3cbc88ddfa54913741e6001600160a01b0316876001600160a01b031614611044576000611047565b60015b8784611753565b6001600160a01b038616600090815260056020526040902054909150611075908290611d36565b6001600160a01b0380871660008181526005602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6110be846108df565b60405190815260200160405180910390a350600195945050505050565b6000546001600160a01b031633146109e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161083a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806111918361095c565b6001600160a01b0386166000908152600560205260409020549091508111156111f35760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b604482015260640161083a565b6001600160a01b038516600090815260056020526040902054611217908290611cd1565b6001600160a01b038087166000908152600560205260408082209390935590861681522054611247908290611d36565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061129b9087815260200190565b60405180910390a3506001949350505050565b6000336001600160a01b037f00000000000000000000000066cc9d62507ab8fb2306b3cbc88ddfa54913741e16148015906112ec575060115460ff16155b80156113015750600f54600160a01b900460ff165b80156108da5750601054611314306109b0565b1015905090565b60118054600160ff199091161790556040805160c081018252600c5460ff80821683526101008204811660208401526201000082048116938301939093526301000000810483166060830152640100000000810490921660808201819052600160281b9092046001600160801b031660a082018190526010549192600091906113a49084611ce4565b6113ae9190611cfb565b905060006113bc8284611cd1565b90506113dc737a250d5630b4cf539739df2c5dacb4c659f2488d82610732565b506113ea3061dead84610e53565b50604080516002808252606082018352600092602083019080368337019050509050308160008151811061142057611420611d49565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b69190611d5f565b816001815181106114c9576114c9611d49565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611521908590600090869030904290600401611d7c565b600060405180830381600087803b15801561153b57600080fd5b505af115801561154f573d6000803e3d6000fd5b5050505060004790506000866080015160ff16876000015160ff168860a001516115799190611ded565b6115839190611ded565b6001600160801b03169050600081886020015160ff16846115a49190611ce4565b6115ae9190611cfb565b9050600082896040015160ff16856115c69190611ce4565b6115d09190611cfb565b90506000838a6060015160ff16866115e89190611ce4565b6115f29190611cfb565b600d546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114611644576040519150601f19603f3d011682016040523d82523d6000602084013e611649565b606091505b5050600e546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611699576040519150601f19603f3d011682016040523d82523d6000602084013e61169e565b606091505b5050600f546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146116ee576040519150601f19603f3d011682016040523d82523d6000602084013e6116f3565b606091505b50506011805460ff19169055505050505050505050505050565b6001600160a01b03821660009081526009602052604081205460ff161580156108a55750506001600160a01b031660009081526009602052604090205460ff1615919050565b6040805160c08082018352600b5460ff8082168452610100808304821660208087019190915262010000808504841687890152630100000080860485166060808a019190915264010000000080880487166080808c01919091526001600160801b03600160281b998a9004811660a0808e01919091528d519b8c018e52600c54808b168d529889048a16978c019790975294870488169b8a019b909b52918504861690880152830490931696850196909652919091041692810192909252600091828615156001146118495760648260a001516001600160801b03168661183a9190611ce4565b6118449190611cfb565b61186e565b60648360a001516001600160801b0316866118649190611ce4565b61186e9190611cfb565b905060006001881515146118ac578260a001516001600160801b0316836000015160ff168361189d9190611ce4565b6118a79190611cfb565b6118d7565b8360a001516001600160801b0316846000015160ff16836118cd9190611ce4565b6118d79190611cfb565b9050806006546118e79190611cd1565b60065560006118f68284611cd1565b905080156119725730600090815260056020526040902054611919908290611d36565b306000818152600560205260409020919091556001600160a01b0389167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611960846108df565b60405190815260200160405180910390a35b6006546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a16119b98388611cd1565b9998505050505050505050565b600060208083528351808285015260005b818110156119f3578581018301518582016040015282016119d7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461095957600080fd5b60008060408385031215611a3c57600080fd5b8235611a4781611a14565b946020939093013593505050565b600060208284031215611a6757600080fd5b81356108a581611a14565b600080600060608486031215611a8757600080fd5b8335611a9281611a14565b92506020840135611aa281611a14565b929592945050506040919091013590565b600060208284031215611ac557600080fd5b5035919050565b80358015158114611adc57600080fd5b919050565b60008060408385031215611af457600080fd5b8235611aff81611a14565b9150611b0d60208401611acc565b90509250929050565b803560ff81168114611adc57600080fd5b6000806000806000806000806000806101408b8d031215611b4757600080fd5b611b508b611b16565b9950611b5e60208c01611b16565b9850611b6c60408c01611b16565b9750611b7a60608c01611b16565b9650611b8860808c01611b16565b9550611b9660a08c01611b16565b9450611ba460c08c01611b16565b9350611bb260e08c01611b16565b9250611bc16101008c01611b16565b9150611bd06101208c01611b16565b90509295989b9194979a5092959850565b600080600060608486031215611bf657600080fd5b8335611c0181611a14565b92506020840135611c1181611a14565b91506040840135611c2181611a14565b809150509250925092565b60008060408385031215611c3f57600080fd5b8235611c4a81611a14565b91506020830135611c5a81611a14565b809150509250929050565b60008060408385031215611c7857600080fd5b611a4783611acc565b600181811c90821680611c9557607f821691505b602082108103611cb557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561079957610799611cbb565b808202811582820484141761079957610799611cbb565b600082611d1857634e487b7160e01b600052601260045260246000fd5b500490565b60ff818116838216019081111561079957610799611cbb565b8082018082111561079957610799611cbb565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611d7157600080fd5b81516108a581611a14565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611dcc5784516001600160a01b031683529383019391830191600101611da7565b50506001600160a01b03969096166060850152505050608001529392505050565b6001600160801b03828116828216039080821115611e0d57611e0d611cbb565b509291505056fea26469706673582212202a4c282d9dee50c8f3b52fe78ab6eaf7408814eea3bb8dc3fd69c7b4fa81e73c64736f6c63430008130033

Deployed Bytecode Sourcemap

7448:13825:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9830:56;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9830:56:0;;;;;;;;13316:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11895:216::-;;;;;;;;;;-1:-1:-1;11895:216:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;11895:216:0;1205:187:1;9165:42:0;;;;;;;;;;-1:-1:-1;9165:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;9214:46;;;;;;;;;;;;;;;;13120:102;;;;;;;;;;-1:-1:-1;13202:12:0;;13120:102;;12413:441;;;;;;;;;;-1:-1:-1;12413:441:0;;;;;:::i;:::-;;:::i;14112:136::-;;;;;;;;;;;;;:::i;9569:93::-;;;;;;;;;;-1:-1:-1;9569:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9569:93:0;;-1:-1:-1;;;;;9569:93:0;;;;;;;2407:4:1;2395:17;;;2377:36;;2449:17;;;2444:2;2429:18;;2422:45;2503:17;;;2483:18;;;2476:45;;;;2557:17;;;2552:2;2537:18;;2530:45;2612:17;;;2606:3;2591:19;;2584:46;-1:-1:-1;;;;;2667:47:1;;;2661:3;2646:19;;2639:76;2364:3;2349:19;9569:93:0;2110:611:1;13955:149:0;;;;;;;;;;-1:-1:-1;13955:149:0;;;;;:::i;:::-;;:::i;13230:78::-;;;;;;;;;;-1:-1:-1;13230:78:0;;13298:2;3053:36:1;;3041:2;3026:18;13230:78:0;2911:184:1;14514:170:0;;;;;;;;;;;;;:::i;:::-;;13807:140;;;;;;;;;;-1:-1:-1;13807:140:0;;;;;:::i;:::-;;:::i;9470:92::-;;;;;;;;;;-1:-1:-1;9470:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9470:92:0;;-1:-1:-1;;;;;9470:92:0;;;12119:122;;;;;;;;;;-1:-1:-1;12119:122:0;;;;;:::i;:::-;;:::i;16249:119::-;;;;;;;;;;-1:-1:-1;16249:119:0;;;;;:::i;:::-;;:::i;13506:138::-;;;;;;;;;;-1:-1:-1;13506:138:0;;;;;:::i;:::-;;:::i;6120:103::-;;;;;;;;;;;;;:::i;5472:87::-;;;;;;;;;;-1:-1:-1;5518:7:0;5545:6;-1:-1:-1;;;;;5545:6:0;5472:87;;;-1:-1:-1;;;;;3749:32:1;;;3731:51;;3719:2;3704:18;5472:87:0;3585:203:1;13409:89:0;;;;;;;;;;;;;:::i;8522:126::-;;;;;;;;;;;;8605:42;8522:126;;12249:156;;;;;;;;;;-1:-1:-1;12249:156:0;;;;;:::i;:::-;;:::i;9792:31::-;;;;;;;;;;-1:-1:-1;9792:31:0;;;;-1:-1:-1;;;9792:31:0;;;;;;14995:1246;;;;;;;;;;-1:-1:-1;14995:1246:0;;;;;:::i;:::-;;:::i;16376:189::-;;;;;;;;;;-1:-1:-1;16376:189:0;;;;;:::i;:::-;;:::i;14692:131::-;;;;;;;;;;;;;:::i;13652:147::-;;;;;;;;;;-1:-1:-1;13652:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;13763:19:0;;;13736:7;13763:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;13652:147;14831:156;;;;;;;;;;-1:-1:-1;14831:156:0;;;;;:::i;:::-;;:::i;9671:35::-;;;;;;;;;;-1:-1:-1;9671:35:0;;;;-1:-1:-1;;;;;9671:35:0;;;6378:201;;;;;;;;;;-1:-1:-1;6378:201:0;;;;;:::i;:::-;;:::i;8655:40::-;;;;;;;;;;;;;;;13316:85;13355:13;13388:5;13381:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13316:85;:::o;11895:216::-;11999:10;11970:4;11987:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11987:32:0;;;;;;;;;;:41;;;12044:37;11970:4;;11987:32;;12044:37;;;;12022:6;160:25:1;;148:2;133:18;;14:177;12044:37:0;;;;;;;;-1:-1:-1;12099:4:0;11895:216;;;;;:::o;12413:441::-;-1:-1:-1;;;;;12534:19:0;;12513:4;12534:19;;;:11;:19;;;;;;;;12554:10;12534:31;;;;;;;;-1:-1:-1;;12534:52:0;12530:257;;-1:-1:-1;;;;;12611:19:0;;;;;;:11;:19;;;;;;;;12631:10;12611:31;;;;;;;;:41;-1:-1:-1;12611:41:0;12603:83;;;;-1:-1:-1;;;12603:83:0;;6779:2:1;12603:83:0;;;6761:21:1;6818:2;6798:18;;;6791:30;6857:31;6837:18;;;6830:59;6906:18;;12603:83:0;;;;;;;;;-1:-1:-1;;;;;12735:19:0;;;;;;:11;:19;;;;;;;;12755:10;12735:31;;;;;;;;:40;;12769:6;;12735:40;:::i;:::-;-1:-1:-1;;;;;12701:19:0;;;;;;:11;:19;;;;;;;;12721:10;12701:31;;;;;;;:74;12530:257;12806:40;12820:6;12828:9;12839:6;12806:13;:40::i;:::-;12799:47;;12413:441;;;;;;:::o;14112:136::-;14165:7;14225:15;8175:42;14225:9;:15::i;:::-;14207;8102:42;14207:9;:15::i;:::-;14192:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;14185:55;;14112:136;:::o;13955:149::-;14025:7;14080:16;;14065:12;;14052:10;:25;;;;:::i;:::-;:44;;;;:::i;14514:170::-;5358:13;:11;:13::i;:::-;14591:58:::1;::::0;14574:12:::1;::::0;14599:10:::1;::::0;14623:21:::1;::::0;14574:12;14591:58;14574:12;14591:58;14623:21;14599:10;14591:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14573:76;;;14668:7;14660:16;;;::::0;::::1;;14562:122;14514:170::o:0;13807:140::-;13872:7;13927:12;;13908:16;;13899:6;:25;;;;:::i;12119:122::-;12174:4;12198:35;12206:7;-1:-1:-1;;12198:7:0;:35::i;16249:119::-;5358:13;:11;:13::i;:::-;-1:-1:-1;;;;;16332:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;16332:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16249:119::o;13506:138::-;-1:-1:-1;;;;;13619:16:0;;13572:7;13619:16;;;:7;:16;;;;;;13599:37;;:19;:37::i;6120:103::-;5358:13;:11;:13::i;:::-;6185:30:::1;6212:1;6185:18;:30::i;:::-;6120:103::o:0;13409:89::-;13450:13;13483:7;13476:14;;;;;:::i;12249:156::-;12329:4;12353:44;12367:10;12379:9;12390:6;12353:13;:44::i;14995:1246::-;5358:13;:11;:13::i;:::-;15351:21:::1;15439:10:::0;15423:13;15412:8;15375:34:::1;15394:15:::0;15375:16;:34:::1;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;:74;;;;:::i;:::-;15351:98;;::::0;-1:-1:-1;15460:22:0::1;15553:11:::0;15536:14;15524:9;15485:36:::1;15505:16:::0;15485:17;:36:::1;:::i;:::-;:48;;;;:::i;:::-;:65;;;;:::i;:::-;:79;;;;:::i;:::-;15460:104;;;;8253:2;15585:13;-1:-1:-1::0;;;;;15585:24:0::1;;;15577:54;;;::::0;-1:-1:-1;;;15577:54:0;;8160:2:1;15577:54:0::1;::::0;::::1;8142:21:1::0;8199:2;8179:18;;;8172:30;-1:-1:-1;;;8218:18:1;;;8211:47;8275:18;;15577:54:0::1;7958:341:1::0;15577:54:0::1;8253:2;15650:14;-1:-1:-1::0;;;;;15650:25:0::1;;;15642:56;;;::::0;-1:-1:-1;;;15642:56:0;;8506:2:1;15642:56:0::1;::::0;::::1;8488:21:1::0;8545:2;8525:18;;;8518:30;-1:-1:-1;;;8564:18:1;;;8557:48;8622:18;;15642:56:0::1;8304:342:1::0;15642:56:0::1;15720:242;;;;;;;;15751:16;15720:242;;;;;;15793:16;15720:242;;;;;;15828:16;15720:242;;;;;;15868:16;15720:242;;;;;;15905:10;15720:242;;;;;;15937:13;-1:-1:-1::0;;;;;15720:242:0::1;;;::::0;15711:6:::1;:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;15711:251:0::1;;;;;-1:-1:-1::0;;;;;15711:251:0::1;;;;;;;;;15985:248;;;;;;;;16016:17;15985:248;;;;;;16059:17;15985:248;;;;;;16095:17;15985:248;;;;;;16136:17;15985:248;;;;;;16174:11;15985:248;;;;;;16207:14;-1:-1:-1::0;;;;;15985:248:0::1;;;::::0;15975:7:::1;:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;15975:258:0::1;;;;;-1:-1:-1::0;;;;;15975:258:0::1;;;;;;;;;15340:901;;14995:1246:::0;;;;;;;;;;:::o;16376:189::-;5358:13;:11;:13::i;:::-;16468:20:::1;:25:::0;;-1:-1:-1;;;;;16468:25:0;;::::1;-1:-1:-1::0;;;;;;16468:25:0;;::::1;;::::0;;;16504:13:::1;:19:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;16534:18:::1;:23:::0;;;;;::::1;::::0;::::1;;::::0;;16376:189::o;14692:131::-;5358:13;:11;:13::i;:::-;14749:66:::1;14771:4;14778:10;14790:24;14808:4;14790:9;:24::i;:::-;14749:13;:66::i;14831:156::-:0;5358:13;:11;:13::i;:::-;14922:12:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;14922:23:0::1;-1:-1:-1::0;;;;14922:23:0;;::::1;::::0;;;::::1;::::0;;;14956:13:::1;:23:::0;14831:156::o;6378:201::-;5358:13;:11;:13::i;:::-;-1:-1:-1;;;;;6467:22:0;::::1;6459:73;;;::::0;-1:-1:-1;;;6459:73:0;;8853:2:1;6459:73:0::1;::::0;::::1;8835:21:1::0;8892:2;8872:18;;;8865:30;8931:34;8911:18;;;8904:62;-1:-1:-1;;;8982:18:1;;;8975:36;9028:19;;6459:73:0::1;8651:402:1::0;6459:73:0::1;6543:28;6562:8;6543:18;:28::i;16833:1079::-:0;16958:6;;16925:4;;16958:6;;16954:87;;;16988:41;17003:6;17011:9;17022:6;16988:14;:41::i;:::-;16981:48;;;;16954:87;17057:13;;;;:41;;;;-1:-1:-1;;;;;;17075:23:0;;;;;;:15;:23;;;;;;;;17074:24;17057:41;:72;;;;-1:-1:-1;;;;;;17103:26:0;;;;;;:15;:26;;;;;;;;17102:27;17057:72;17053:180;;;17164:12;;17154:6;:22;;17146:75;;;;-1:-1:-1;;;17146:75:0;;9260:2:1;17146:75:0;;;9242:21:1;9299:2;9279:18;;;9272:30;9338:34;9318:18;;;9311:62;-1:-1:-1;;;9389:18:1;;;9382:38;9437:19;;17146:75:0;9058:404:1;17146:75:0;17249:17;:15;:17::i;:::-;17245:61;;;17283:11;:9;:11::i;:::-;17318:24;17345:26;17364:6;17345:18;:26::i;:::-;-1:-1:-1;;;;;17390:15:0;;;;;;:7;:15;;;;;;17318:53;;-1:-1:-1;17390:35:0;-1:-1:-1;17390:35:0;17382:68;;;;-1:-1:-1;;;17382:68:0;;9669:2:1;17382:68:0;;;9651:21:1;9708:2;9688:18;;;9681:30;-1:-1:-1;;;9727:18:1;;;9720:50;9787:18;;17382:68:0;9467:344:1;17382:68:0;-1:-1:-1;;;;;17479:15:0;;;;;;:7;:15;;;;;;:34;;17497:16;;17479:34;:::i;:::-;-1:-1:-1;;;;;17461:15:0;;;;;;:7;:15;;;;;:52;;;;17555:33;17469:6;17578:9;17555:14;:33::i;:::-;:170;;17709:16;17555:170;;;17604:89;17636:15;-1:-1:-1;;;;;17626:25:0;:6;-1:-1:-1;;;;;17626:25:0;;:40;;17661:5;17626:40;;;17654:4;17626:40;17668:6;17676:16;17604:21;:89::i;:::-;-1:-1:-1;;;;;17757:18:0;;;;;;:7;:18;;;;;;17526:199;;-1:-1:-1;17757:39:0;;17526:199;;17757:39;:::i;:::-;-1:-1:-1;;;;;17736:18:0;;;;;;;:7;:18;;;;;:60;;;;17814:68;;;17842:39;17862:18;17842:19;:39::i;:::-;17814:68;;160:25:1;;;148:2;133:18;17814:68:0;;;;;;;-1:-1:-1;17900:4:0;;16833:1079;-1:-1:-1;;;;;16833:1079:0:o;5637:132::-;5518:7;5545:6;-1:-1:-1;;;;;5545:6:0;1546:10;5701:23;5693:68;;;;-1:-1:-1;;;5693:68:0;;10148:2:1;5693:68:0;;;10130:21:1;;;10167:18;;;10160:30;10226:34;10206:18;;;10199:62;10278:18;;5693:68:0;9946:356:1;6739:191:0;6813:16;6832:6;;-1:-1:-1;;;;;6849:17:0;;;-1:-1:-1;;;;;;6849:17:0;;;;;;6882:40;;6832:6;;;;;;;6882:40;;6813:16;6882:40;6802:128;6739:191;:::o;17920:455::-;18013:4;18030:24;18057:26;18076:6;18057:18;:26::i;:::-;-1:-1:-1;;;;;18102:15:0;;;;;;:7;:15;;;;;;18030:53;;-1:-1:-1;18102:35:0;-1:-1:-1;18102:35:0;18094:68;;;;-1:-1:-1;;;18094:68:0;;9669:2:1;18094:68:0;;;9651:21:1;9708:2;9688:18;;;9681:30;-1:-1:-1;;;9727:18:1;;;9720:50;9787:18;;18094:68:0;9467:344:1;18094:68:0;-1:-1:-1;;;;;18191:15:0;;;;;;:7;:15;;;;;;:34;;18209:16;;18191:34;:::i;:::-;-1:-1:-1;;;;;18173:15:0;;;;;;;:7;:15;;;;;;:52;;;;18257:18;;;;;;;:37;;18278:16;;18257:37;:::i;:::-;-1:-1:-1;;;;;18236:18:0;;;;;;;:7;:18;;;;;;;:58;;;;18310:35;;;;;;;;;;18338:6;160:25:1;;148:2;133:18;;14:177;18310:35:0;;;;;;;;-1:-1:-1;18363:4:0;;17920:455;-1:-1:-1;;;;17920:455:0:o;19506:183::-;19556:4;19580:10;-1:-1:-1;;;;;19594:15:0;19580:29;;;;;:40;;-1:-1:-1;19614:6:0;;;;19613:7;19580:40;:56;;;;-1:-1:-1;19624:12:0;;-1:-1:-1;;;19624:12:0;;;;19580:56;:101;;;;;19668:13;;19640:24;19658:4;19640:9;:24::i;:::-;:41;;19573:108;;19506:183;:::o;19697:1404::-;10202:6;:13;;10211:4;-1:-1:-1;;10202:13:0;;;;;;19747:30:::1;::::0;;::::1;::::0;::::1;::::0;;19770:7:::1;19747:30:::0;10202:13;19747:30;;::::1;::::0;;10202:13;19747:30;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;19747:30:0;;::::1;-1:-1:-1::0;;;;;19747:30:0::1;::::0;;;;;;19816:13:::1;::::0;19747:30;;-1:-1:-1;;19747:30:0;19863:32:::1;::::0;19816:13;19863:32:::1;:::i;:::-;:50;;;;:::i;:::-;19840:73:::0;-1:-1:-1;19924:20:0::1;19947:30;19840:73:::0;19947:15;:30:::1;:::i;:::-;19924:53;;19988:49;8605:42;20024:12;19988:7;:49::i;:::-;;20067:48;20089:4;8102:42;20102:12;20067:13;:48::i;:::-;-1:-1:-1::0;20169:16:0::1;::::0;;20183:1:::1;20169:16:::0;;;;;::::1;::::0;;20145:21:::1;::::0;20169:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20169:16:0::1;20145:40;;20214:4;20196;20201:1;20196:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;20196:23:0::1;;;-1:-1:-1::0;;;;;20196:23:0::1;;;::::0;::::1;8605:42;-1:-1:-1::0;;;;;20240:22:0::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20230:4;20235:1;20230:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20230:34:0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:34;20277:147:::1;::::0;-1:-1:-1;;;20277:147:0;;8605:42:::1;::::0;20277:68:::1;::::0;:147:::1;::::0;20360:12;;20374:1:::1;::::0;20377:4;;20391::::1;::::0;20398:15:::1;::::0;20277:147:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20437:17;20457:21;20437:41;;20491:20;20555:9;:14;;;20514:55;;20532:9;:20;;;20514:38;;:9;:15;;;:38;;;;:::i;:::-;:55;;;;:::i;:::-;-1:-1:-1::0;;;;;20491:78:0::1;;;20580:26;20643:12;20621:9;:19;;;20609:31;;:9;:31;;;;:::i;:::-;:46;;;;:::i;:::-;20580:75;;20666:19;20715:12;20700:9;:12;;;20688:24;;:9;:24;;;;:::i;:::-;:39;;;;:::i;:::-;20666:61;;20738:24;20797:12;20777:9;:17;;;20765:29;;:9;:29;;;;:::i;:::-;:44;;;;:::i;:::-;20868:20;::::0;20860:65:::1;::::0;20738:71;;-1:-1:-1;20840:15:0::1;::::0;-1:-1:-1;;;;;20868:20:0;;::::1;::::0;20902:18;;20840:15;20860:65;20840:15;20860:65;20902:18;20868:20;20860:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;20960:13:0::1;::::0;20952:51:::1;::::0;20839:86;;-1:-1:-1;;;;;;20960:13:0::1;::::0;20987:11;;20952:51:::1;::::0;;;20987:11;20960:13;20952:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;21038:18:0::1;::::0;21030:61:::1;::::0;20936:67;;-1:-1:-1;;;;;;21038:18:0::1;::::0;21070:16;;21030:61:::1;::::0;;;21070:16;21038:18;21030:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;10238:6:0;:14;;-1:-1:-1;;10238:14:0;;;-1:-1:-1;;;;;;;;;;;;19697:1404:0:o;21109:161::-;-1:-1:-1;;;;;21216:19:0;;21191:4;21216:19;;;:11;:19;;;;;;;;21215:20;:47;;;;-1:-1:-1;;;;;;;21240:22:0;;;;;:11;:22;;;;;;;;21239:23;;21109:161;-1:-1:-1;21109:161:0:o;18383:1115::-;18507:28;;;;;;;;;18529:6;18507:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;18507:28:0;;;;;;;;;;;;;;18546:30;;;;;;;18569:7;18546:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18487:7;;;18632:14;;;18507:28;18632:14;:99;;18728:3;18710:9;:15;;;-1:-1:-1;;;;;18691:34:0;:16;:34;;;;:::i;:::-;:40;;;;:::i;:::-;18632:99;;;18685:3;18668:8;:14;;;-1:-1:-1;;;;;18649:33:0;:16;:33;;;;:::i;:::-;:39;;;;:::i;:::-;18589:142;-1:-1:-1;18764:27:0;18804:4;18794:14;;;;:164;;18943:9;:15;;;-1:-1:-1;;;;;18898:60:0;18920:9;:20;;;18898:42;;:19;:42;;;;:::i;:::-;:60;;;;:::i;:::-;18794:164;;;18868:8;:14;;;-1:-1:-1;;;;;18824:58:0;18846:8;:19;;;18824:41;;:19;:41;;;;:::i;:::-;:58;;;;:::i;:::-;18764:194;;19009:19;18990:16;;:38;;;;:::i;:::-;18971:16;:57;19063:29;19095:41;19117:19;19095;:41;:::i;:::-;19063:73;-1:-1:-1;19151:25:0;;19147:226;;19234:4;19218:22;;;;:7;:22;;;;;;:46;;19243:21;;19218:46;:::i;:::-;19209:4;19193:22;;;;:7;:22;;;;;:71;;;;-1:-1:-1;;;;;19286:75:0;;;19318:42;19338:21;19318:19;:42::i;:::-;19286:75;;160:25:1;;;148:2;133:18;19286:75:0;;;;;;;19147:226;19417:16;;19388:46;;;12191:25:1;;;12247:2;12232:18;;12225:34;;;;19388:46:0;;12164:18:1;19388:46:0;;;;;;;19452:38;19471:19;19452:16;:38;:::i;:::-;19445:45;18383:1115;-1:-1:-1;;;;;;;;;18383:1115:0:o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2726:180::-;2785:6;2838:2;2826:9;2817:7;2813:23;2809:32;2806:52;;;2854:1;2851;2844:12;2806:52;-1:-1:-1;2877:23:1;;2726:180;-1:-1:-1;2726:180:1:o;3100:160::-;3165:20;;3221:13;;3214:21;3204:32;;3194:60;;3250:1;3247;3240:12;3194:60;3100:160;;;:::o;3265:315::-;3330:6;3338;3391:2;3379:9;3370:7;3366:23;3362:32;3359:52;;;3407:1;3404;3397:12;3359:52;3446:9;3433:23;3465:31;3490:5;3465:31;:::i;:::-;3515:5;-1:-1:-1;3539:35:1;3570:2;3555:18;;3539:35;:::i;:::-;3529:45;;3265:315;;;;;:::o;4027:156::-;4093:20;;4153:4;4142:16;;4132:27;;4122:55;;4173:1;4170;4163:12;4188:819;4308:6;4316;4324;4332;4340;4348;4356;4364;4372;4380;4433:3;4421:9;4412:7;4408:23;4404:33;4401:53;;;4450:1;4447;4440:12;4401:53;4473:27;4490:9;4473:27;:::i;:::-;4463:37;;4519:36;4551:2;4540:9;4536:18;4519:36;:::i;:::-;4509:46;;4574:36;4606:2;4595:9;4591:18;4574:36;:::i;:::-;4564:46;;4629:36;4661:2;4650:9;4646:18;4629:36;:::i;:::-;4619:46;;4684:37;4716:3;4705:9;4701:19;4684:37;:::i;:::-;4674:47;;4740:37;4772:3;4761:9;4757:19;4740:37;:::i;:::-;4730:47;;4796:37;4828:3;4817:9;4813:19;4796:37;:::i;:::-;4786:47;;4852:37;4884:3;4873:9;4869:19;4852:37;:::i;:::-;4842:47;;4908:37;4940:3;4929:9;4925:19;4908:37;:::i;:::-;4898:47;;4964:37;4996:3;4985:9;4981:19;4964:37;:::i;:::-;4954:47;;4188:819;;;;;;;;;;;;;:::o;5012:529::-;5089:6;5097;5105;5158:2;5146:9;5137:7;5133:23;5129:32;5126:52;;;5174:1;5171;5164:12;5126:52;5213:9;5200:23;5232:31;5257:5;5232:31;:::i;:::-;5282:5;-1:-1:-1;5339:2:1;5324:18;;5311:32;5352:33;5311:32;5352:33;:::i;:::-;5404:7;-1:-1:-1;5463:2:1;5448:18;;5435:32;5476:33;5435:32;5476:33;:::i;:::-;5528:7;5518:17;;;5012:529;;;;;:::o;5546:388::-;5614:6;5622;5675:2;5663:9;5654:7;5650:23;5646:32;5643:52;;;5691:1;5688;5681:12;5643:52;5730:9;5717:23;5749:31;5774:5;5749:31;:::i;:::-;5799:5;-1:-1:-1;5856:2:1;5841:18;;5828:32;5869:33;5828:32;5869:33;:::i;:::-;5921:7;5911:17;;;5546:388;;;;;:::o;5939:248::-;6004:6;6012;6065:2;6053:9;6044:7;6040:23;6036:32;6033:52;;;6081:1;6078;6071:12;6033:52;6104:26;6120:9;6104:26;:::i;6192:380::-;6271:1;6267:12;;;;6314;;;6335:61;;6389:4;6381:6;6377:17;6367:27;;6335:61;6442:2;6434:6;6431:14;6411:18;6408:38;6405:161;;6488:10;6483:3;6479:20;6476:1;6469:31;6523:4;6520:1;6513:15;6551:4;6548:1;6541:15;6405:161;;6192:380;;;:::o;6935:127::-;6996:10;6991:3;6987:20;6984:1;6977:31;7027:4;7024:1;7017:15;7051:4;7048:1;7041:15;7067:128;7134:9;;;7155:11;;;7152:37;;;7169:18;;:::i;7200:168::-;7273:9;;;7304;;7321:15;;;7315:22;;7301:37;7291:71;;7342:18;;:::i;7373:217::-;7413:1;7439;7429:132;;7483:10;7478:3;7474:20;7471:1;7464:31;7518:4;7515:1;7508:15;7546:4;7543:1;7536:15;7429:132;-1:-1:-1;7575:9:1;;7373:217::o;7805:148::-;7893:4;7872:12;;;7886;;;7868:31;;7911:13;;7908:39;;;7927:18;;:::i;9816:125::-;9881:9;;;9902:10;;;9899:36;;;9915:18;;:::i;10439:127::-;10500:10;10495:3;10491:20;10488:1;10481:31;10531:4;10528:1;10521:15;10555:4;10552:1;10545:15;10571:251;10641:6;10694:2;10682:9;10673:7;10669:23;10665:32;10662:52;;;10710:1;10707;10700:12;10662:52;10742:9;10736:16;10761:31;10786:5;10761:31;:::i;10827:980::-;11089:4;11137:3;11126:9;11122:19;11168:6;11157:9;11150:25;11194:2;11232:6;11227:2;11216:9;11212:18;11205:34;11275:3;11270:2;11259:9;11255:18;11248:31;11299:6;11334;11328:13;11365:6;11357;11350:22;11403:3;11392:9;11388:19;11381:26;;11442:2;11434:6;11430:15;11416:29;;11463:1;11473:195;11487:6;11484:1;11481:13;11473:195;;;11552:13;;-1:-1:-1;;;;;11548:39:1;11536:52;;11643:15;;;;11608:12;;;;11584:1;11502:9;11473:195;;;-1:-1:-1;;;;;;;11724:32:1;;;;11719:2;11704:18;;11697:60;-1:-1:-1;;;11788:3:1;11773:19;11766:35;11685:3;10827:980;-1:-1:-1;;;10827:980:1:o;11812:200::-;-1:-1:-1;;;;;11948:10:1;;;11936;;;11932:27;;11971:12;;;11968:38;;;11986:18;;:::i;:::-;11968:38;11812:200;;;;:::o

Swarm Source

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