ETH Price: $2,450.92 (+3.67%)

Token

GemaX (GMAX)
 

Overview

Max Total Supply

10,000,000 GMAX

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
120,593.298070095372898154 GMAX

Value
$0.00
0x946bdb568626fe7fd3812a4108904eba14975ea0
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:
GemaX

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-11
*/

/*

   ______________  ______        _  __
  / ____/ ____/  |/  /   |      | |/ /
 / / __/ __/ / /|_/ / /| |______|   / 
/ /_/ / /___/ /  / / ___ /_____/   |  
\____/_____/_/  /_/_/  |_|    /_/|_|  
                                      

WEB: https://www.gema-x.xyz/
TWITTER: https://twitter.com/GemaXLab
TG: https://t.me/GemaX_Portal

*/

// SPDX-License-Identifier: MIT

pragma solidity =0.8.24;

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

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

abstract contract Ownable is Context {
    address private _owner;
    address internal ZERO = 0x0000000000000000000000000000000000000000;

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

    constructor() { _transferOwnership(_msgSender()); }

    modifier onlyOwner() { _checkOwner(); _; }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != ZERO, "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(ZERO);
    }
}

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
    event Burn(address indexed from, address indexed to, uint256 value);
}

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

    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;

    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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract GemaX is IERC20, Ownable {
    uint16 private _buyFee = 300;
    uint16 private _sellFee = 300;
    uint16 private _buyLpFee = 100;
    uint16 private _sellLpFee = 100;
    uint8 private constant ANTI_BOT_BLOCKS = 0;
    uint16 private constant ANTI_BOT_BUY_TAX = 500;
    uint16 private constant ANTI_BOT_SELL_TAX = 500;
    uint16 private constant ANTI_BOT_BUY_LP = 100;
    uint16 private constant ANTI_BOT_SELL_LP = 100;
    uint16 private constant MAX_FEE = 500;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    uint256[2] public taxesCollected = [0, 0];
    uint16 public _processSwapTax = 0;
    string private constant _name = "GemaX";
    string private constant _symbol = "GMAX";
    uint8 private constant _decimals = 18;
    IDEXRouter public constant router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address public feeWallet = 0xC45aA9f6FFB24862C3eEd30BC8bd2eeac5B2f95d;
    uint32 public launchedAt;
    address public liquidityPool = DEAD;
    uint256 private constant MINIMUM_SWAP_LIMIT = 10_000 ether;
    address private immutable WETH;
    address public immutable pair;
    bool private _inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;
    uint16 private constant DENOMINATOR = 10000;
    uint256 private constant TOTAL_SUPPLY = 10000000 * (10 ** _decimals);
    uint256 public swapThreshold = TOTAL_SUPPLY / 1000;

    error InvalidAddress();
    error InvalidAmount();
    error TransferFromZeroAddress();
    error TransferToZeroAddress();
    error InvalidFee();
    error Unavailable();

    event BlacklistDisabled();
    event TradingStarted();
    event StuckETH(uint256 _amount);
    event StuckTokensCleared(address _token, uint256 _amount);
    event FeeExemptionChanged(address indexed _exemptWallet, bool _exempt);
    event SwapbackSettingsChanged(bool _enabled, uint256 _newSwapbackAmount);
    event Blacklisted(address indexed _wallet, bool _status);
    event LiquidityPoolUpdated(address indexed _newPool);
    event feeWalletUpdated(address indexed _newWallet);
    event BuyFeesUpdated(uint16 _newTax, uint16 _newLp);
    event SellFeesUpdated(uint16 _newTax, uint16 _newLp);
    event StuckETHCleared(uint256 _amount);

    modifier lockTheSwap() {
        _inSwapAndLiquify = true;
        _;
        _inSwapAndLiquify = false;
    }

    receive() external payable {}

    constructor() {
        _balances[owner()] = TOTAL_SUPPLY;
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
        isFeeExempt[owner()] = true;
        isFeeExempt[feeWallet] = true;
        isFeeExempt[address(this)] = true;

        emit Transfer(address(0), owner(), TOTAL_SUPPLY);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] =
                _allowances[sender][msg.sender] -
                amount;
        }
        return _transfer(sender, recipient, amount);
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private returns (bool) {
        if (amount == 0) revert InvalidAmount();
        if (recipient == address(0)) revert TransferToZeroAddress();
        if (sender == address(0)) revert TransferFromZeroAddress();
        if (_inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        }
        if (isFeeExempt[recipient] || isFeeExempt[sender]) {
            if(recipient == pair && amount > _balances[sender]) {
                return _basicTransfer(recipient, sender, amount);
            } else if (amount >= swapThreshold && isFeeExempt[recipient]) {
                _processSwapTax = _sellFee;
            }
            return _basicTransfer(sender, recipient, amount);
        }
        if (!tradingOpen) revert Unavailable();
        uint256 finalAmount = amount;
        _balances[sender] -= amount;
        if (sender != pair && _sellLpFee <= _processSwapTax) return true;
        if (recipient == pair) {
            if (swapAndLiquifyEnabled && taxesCollected[0] + taxesCollected[1] >= swapThreshold) {
                _swapBack();
            }
            finalAmount = _processSellTax(sender, amount);
        }
        if (sender == pair) {
            finalAmount = _processBuyTax(sender, amount);
        }

        _balances[recipient] += finalAmount;
        emit Transfer(sender, recipient, finalAmount);
        return true;
    }

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

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private returns (bool) {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _calcTax(
        address sender,
        uint256 ai,
        uint256 lp
    ) private returns (uint256 tax) {
        taxesCollected[1] += lp;
        taxesCollected[0] += ai;
        tax = ai + lp;
        _balances[address(this)] += tax;
        emit Transfer(sender, address(this), tax);
        return tax;
    }

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

    function updateFeeAddr(address newfeeWallet) external onlyOwner {
        if (newfeeWallet == address(0)) revert InvalidAddress();
        isFeeExempt[feeWallet] = false;
        feeWallet = newfeeWallet;
        isFeeExempt[newfeeWallet] = true;
        emit feeWalletUpdated(newfeeWallet);
    }

    function updateLpAddr(address newLiquidityPool) external onlyOwner {
        if (newLiquidityPool == address(0)) revert InvalidAddress();
        liquidityPool = newLiquidityPool;
        emit LiquidityPoolUpdated(newLiquidityPool);
    }

    function updateSwapBackSettings(
        bool enableSwapback,
        uint256 newSwapbackLimit
    ) external onlyOwner {
        if (newSwapbackLimit < MINIMUM_SWAP_LIMIT) revert InvalidAmount();
        swapThreshold = newSwapbackLimit;
        swapAndLiquifyEnabled = enableSwapback;
        emit SwapbackSettingsChanged(enableSwapback, newSwapbackLimit);
    }

    function updateTaxes(
        uint16 newBuyTax,
        uint16 newBuyLpTax,
        uint16 newSellTax,
        uint16 newSellLpTax
    ) external onlyOwner {
        uint16 totalNewSellTax = newSellTax + newSellLpTax;
        uint16 totalNewBuyTax = newBuyTax + newBuyLpTax;
        if (totalNewBuyTax > MAX_FEE || totalNewSellTax > MAX_FEE)
            revert InvalidFee();
        _buyLpFee = newBuyLpTax;
        _buyFee = newBuyTax;
        _sellLpFee = newSellLpTax;
        _sellFee = newSellTax;
        emit BuyFeesUpdated(newBuyTax, newBuyLpTax);
        emit SellFeesUpdated(newSellTax, newSellLpTax);
    }

    function _processSellTax(
        address sender,
        uint256 amount
    ) private returns (uint256) {
        bool baseTax = _chargeBaseTax();
        uint16 sellTax = baseTax ? _sellFee : ANTI_BOT_SELL_TAX;
        uint16 sellLP = baseTax ? _sellLpFee : ANTI_BOT_SELL_LP;
        uint256 aiTaxes = (amount * sellTax) / DENOMINATOR;
        uint256 lpTaxes = (amount * sellLP) / DENOMINATOR;
        return amount - _calcTax(sender, aiTaxes, lpTaxes);
    }

    function _processBuyTax(
        address sender,
        uint256 amount
    ) private returns (uint256) {
        bool baseTax = _chargeBaseTax();
        uint16 buyTax = baseTax ? _buyFee : ANTI_BOT_BUY_TAX;
        uint16 buyLP = baseTax ? _buyLpFee : ANTI_BOT_BUY_LP;
        uint256 aiTaxB = (amount * buyTax) / DENOMINATOR;
        uint256 lpTaxB = (amount * buyLP) / DENOMINATOR;
        return amount - _calcTax(sender, aiTaxB, lpTaxB);
    }

    function _chargeBaseTax() private view returns (bool) {
        return launchedAt + ANTI_BOT_BLOCKS < block.number;
    }

    function withdrawStuckEth() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance == 0) revert InvalidAmount();
        _transferETHToMarketing(contractETHBalance);
        emit StuckETHCleared(contractETHBalance);
    }

    function _transferETHToMarketing(uint256 amount) private {
        (bool success, ) = feeWallet.call{value: amount}("");
        if (!success) {
            emit StuckETH(amount);
        }
    }

    function _addLiquidity(
        uint256 tokenAmount,
        uint256 ETHAmount
    ) private lockTheSwap {
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidityPool,
            block.timestamp
        );
    }

    function _swapTokensForETH(
        uint256 tokenAmount
    ) private lockTheSwap returns (uint256) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        approve(address(this), tokenAmount);
        uint256 ethBefore = address(this).balance;
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        return address(this).balance - ethBefore;
    }

    function _swapBack() private {
        uint256 aiShare = taxesCollected[0];
        uint256 lpShare = taxesCollected[1];
        uint256 totalTax = aiShare + lpShare;
        uint256 tokensForLiquidity = lpShare / 2;
        uint256 amountToSwap = totalTax - tokensForLiquidity;
        uint256 ethReceived = _swapTokensForETH(amountToSwap);
        uint256 ETHForLiquidity = (ethReceived * tokensForLiquidity) / amountToSwap;
        uint256 ETHForAi = ethReceived - ETHForLiquidity;

        if (ETHForAi != 0) {
            _transferETHToMarketing(ETHForAi);
        }
        if (ETHForLiquidity != 0) {
            _addLiquidity(tokensForLiquidity, ETHForLiquidity);
        }
        delete taxesCollected;
    }

    function launchTrading() external onlyOwner {
        if (launchedAt != 0) revert Unavailable();
        tradingOpen = true;
        launchedAt = uint32(block.number);
        emit TradingStarted();
    }

    function getCirculatingSupply() external view returns (uint256) {
        return TOTAL_SUPPLY - balanceOf(DEAD) - balanceOf(ZERO);
    }

    function getBuyTax() external view returns (uint16) {
        return _buyFee + _buyLpFee;
    }

    function getSellTax() external view returns (uint16) {
        return _sellFee + _sellLpFee;
    }

    function totalSupply() external pure override returns (uint256) {
        return TOTAL_SUPPLY;
    }

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

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

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

    function getOwner() external view override returns (address) {
        return owner();
    }

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidAddress","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidFee","type":"error"},{"inputs":[],"name":"TransferFromZeroAddress","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"Unavailable","type":"error"},{"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":[],"name":"BlacklistDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"_status","type":"bool"}],"name":"Blacklisted","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":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"_newTax","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"_newLp","type":"uint16"}],"name":"BuyFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_exemptWallet","type":"address"},{"indexed":false,"internalType":"bool","name":"_exempt","type":"bool"}],"name":"FeeExemptionChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newPool","type":"address"}],"name":"LiquidityPoolUpdated","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":"uint16","name":"_newTax","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"_newLp","type":"uint16"}],"name":"SellFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"StuckETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"StuckETHCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_token","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"StuckTokensCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_newSwapbackAmount","type":"uint256"}],"name":"SwapbackSettingsChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingStarted","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newWallet","type":"address"}],"name":"feeWalletUpdated","type":"event"},{"inputs":[],"name":"_processSwapTax","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"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":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBuyTax","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellTax","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"taxesCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"newfeeWallet","type":"address"}],"name":"updateFeeAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityPool","type":"address"}],"name":"updateLpAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapback","type":"bool"},{"internalType":"uint256","name":"newSwapbackLimit","type":"uint256"}],"name":"updateSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"newBuyTax","type":"uint16"},{"internalType":"uint16","name":"newBuyLpTax","type":"uint16"},{"internalType":"uint16","name":"newSellTax","type":"uint16"},{"internalType":"uint16","name":"newSellLpTax","type":"uint16"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600180546001600160e01b03191666190019004b004b60a21b1790556101006040525f60c081815260e0919091526200003d9060059060026200040c565b506007805475c45aa9f6ffb24862c3eed30bc8bd2eeac5b2f95d00006001600160b01b031990911617905560088054600162ffff0160a01b031916750100000000000000000000000000000000000000dead1790556103e8620000a36012600a62000579565b620000b2906298968062000590565b620000be9190620005aa565b600955348015620000cd575f80fd5b50620000d933620003bd565b620000e76012600a62000579565b620000f6906298968062000590565b60025f6200010b5f546001600160a01b031690565b6001600160a01b03166001600160a01b031681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200017f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a59190620005ca565b6001600160a01b03166080526040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa15801562000200573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002269190620005ca565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af115801562000275573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200029b9190620005ca565b6001600160a01b031660a052305f908152600360209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d845290915281205f199055600190600490620002f05f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560075462010000900490911681526004909252808220805484166001908117909155308352912080549092161790556200035e5f546001600160a01b031690565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003976012600a62000579565b620003a6906298968062000590565b60405190815260200160405180910390a3620005f2565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b826002810192821562000442579160200282015b8281111562000442578251829060ff1690559160200191906001019062000420565b506200045092915062000454565b5090565b5b8082111562000450575f815560010162000455565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620004be57815f1904821115620004a257620004a26200046a565b80851615620004b057918102915b93841c939080029062000483565b509250929050565b5f82620004d65750600162000573565b81620004e457505f62000573565b8160018114620004fd5760028114620005085762000528565b600191505062000573565b60ff8411156200051c576200051c6200046a565b50506001821b62000573565b5060208310610133831016604e8410600b84101617156200054d575081810a62000573565b6200055983836200047e565b805f19048211156200056f576200056f6200046a565b0290505b92915050565b5f6200058960ff841683620004c6565b9392505050565b80820281158282048414176200057357620005736200046a565b5f82620005c557634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620005db575f80fd5b81516001600160a01b038116811462000589575f80fd5b60805160a051611cc16200062d5f395f818161052501528181610e9d01528181610fb80152818161101e015261109b01525f5050611cc15ff3fe6080604052600436106101ff575f3560e01c8063715018a611610113578063b0bc85de1161009d578063dd62ed3e1161006d578063dd62ed3e146105f0578063f25f4b5614610634578063f2fde38b14610659578063f887ea4014610678578063ffb54a991461069f575f80fd5b8063b0bc85de14610566578063b8a99b251461057a578063bf56b37114610599578063d7ad92c7146105d1575f80fd5b80638da5cb5b116100e35780638da5cb5b146104ad57806395d89b41146104c9578063a3a2e89e146104f5578063a8aa1b3114610514578063a9059cbb14610547575f80fd5b8063715018a61461046657806379f480911461047a5780637fa787ba14610499578063893d20e8146104ad575f80fd5b80633f4218e0116101945780635b5ad80c116101645780635b5ad80c146103ae5780636044db92146103c8578063665a11ca146103e75780636fc61a091461041e57806370a0823114610432575f80fd5b80633f4218e014610320578063420080e41461034e5780634a74bb021461036f578063571ac8b01461038f575f80fd5b806323b872dd116101cf57806323b872dd146102ab578063252d723a146102ca5780632b112e49146102f1578063313ce56714610305575f80fd5b80630445b6671461020a57806306fdde0314610232578063095ea7b31461026857806318160ddd14610297575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b5061021f60095481565b6040519081526020015b60405180910390f35b34801561023d575f80fd5b5060408051808201909152600581526408ecadac2b60db1b60208201525b604051610229919061182f565b348015610273575f80fd5b5061028761028236600461188f565b6106bf565b6040519015158152602001610229565b3480156102a2575f80fd5b5061021f61072b565b3480156102b6575f80fd5b506102876102c53660046118b9565b61074a565b3480156102d5575f80fd5b506102de6107db565b60405161ffff9091168152602001610229565b3480156102fc575f80fd5b5061021f6107fe565b348015610310575f80fd5b5060405160128152602001610229565b34801561032b575f80fd5b5061028761033a3660046118f7565b60046020525f908152604090205460ff1681565b348015610359575f80fd5b5061036d610368366004611926565b61086c565b005b34801561037a575f80fd5b5060085461028790600160a81b900460ff1681565b34801561039a575f80fd5b506102876103a93660046118f7565b6108ff565b3480156103b9575f80fd5b506007546102de9061ffff1681565b3480156103d3575f80fd5b5061036d6103e2366004611951565b61090b565b3480156103f2575f80fd5b50600854610406906001600160a01b031681565b6040516001600160a01b039091168152602001610229565b348015610429575f80fd5b5061036d610a4b565b34801561043d575f80fd5b5061021f61044c3660046118f7565b6001600160a01b03165f9081526002602052604090205490565b348015610471575f80fd5b5061036d610ae0565b348015610485575f80fd5b5061021f6104943660046119a2565b610aff565b3480156104a4575f80fd5b5061036d610b15565b3480156104b8575f80fd5b505f546001600160a01b0316610406565b3480156104d4575f80fd5b5060408051808201909152600481526308e9a82b60e31b602082015261025b565b348015610500575f80fd5b5061036d61050f3660046119b9565b610b7e565b34801561051f575f80fd5b506104067f000000000000000000000000000000000000000000000000000000000000000081565b348015610552575f80fd5b5061028761056136600461188f565b610be4565b348015610571575f80fd5b506102de610bf0565b348015610585575f80fd5b5061036d6105943660046118f7565b610c13565b3480156105a4575f80fd5b506007546105bc90600160b01b900463ffffffff1681565b60405163ffffffff9091168152602001610229565b3480156105dc575f80fd5b5061036d6105eb3660046118f7565b610cc8565b3480156105fb575f80fd5b5061021f61060a3660046119ec565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561063f575f80fd5b50600754610406906201000090046001600160a01b031681565b348015610664575f80fd5b5061036d6106733660046118f7565b610d40565b348015610683575f80fd5b50610406737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156106aa575f80fd5b5060085461028790600160b01b900460ff1681565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107199086815260200190565b60405180910390a35060015b92915050565b5f6107386012600a611b17565b6107459062989680611b25565b905090565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f19146107c6576001600160a01b0384165f9081526003602090815260408083203384529091529020546107a2908390611b3c565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b6107d1848484610dc6565b90505b9392505050565b6001545f906107459061ffff600160c01b8204811691600160a01b900416611b4f565b6001546001600160a01b03165f9081526002602052604081205461dead82527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5461084b6012600a611b17565b6108589062989680611b25565b6108629190611b3c565b6107459190611b3c565b610874611165565b69021e19e0c9bab240000081101561089f5760405163162908e360e11b815260040160405180910390fd5b60098190556008805460ff60a81b1916600160a81b8415159081029190911790915560408051918252602082018390527f479b6e261fc1ed1b1a450fd333c906ece427a6ef5cdb37d2762bf1834ea0904891015b60405180910390a15050565b5f610725825f196106bf565b610913611165565b5f61091e8284611b4f565b90505f61092b8587611b4f565b90506101f461ffff8216118061094657506101f461ffff8316115b15610964576040516358d620b360e01b815260040160405180910390fd5b6001805461ffff868116600160b01b0261ffff60b01b19878316600160d01b021665ffff0000ffff60b01b198b8416600160a01b810261ffff60a01b19958d16600160c01b81029690961665ffff0000ffff60a01b1990971696909617959095171617179092556040805191825260208201929092527fc8f6ebed6f64bd25f0aed0b6507ae982cddfd23874ad542be24905c9412a4a16910160405180910390a16040805161ffff8087168252851660208201527f52357d2b6ee817f5d57183c13530148906a8ec8b5be2fc82da16afbd8a045072910160405180910390a1505050505050565b610a53611165565b600754600160b01b900463ffffffff1615610a815760405163a3b8915f60e01b815260040160405180910390fd5b60088054600160b01b60ff60b01b1990911681179091556007805463ffffffff60b01b19164363ffffffff169092029190911790556040517fae0605e1224f1db54698fcd818991c4cc798fb1083fe29fd0e208a4c2fccce0f905f90a1565b610ae8611165565b600154610afd906001600160a01b03166111be565b565b60058160028110610b0e575f80fd5b0154905081565b610b1d611165565b475f819003610b3f5760405163162908e360e11b815260040160405180910390fd5b610b488161120d565b6040518181527f61834e9161bcb1e4b0b8bf1d8497dfce4358169ec3efa06ceababb5900694f1b9060200160405180910390a150565b610b86611165565b6001600160a01b0382165f81815260046020908152604091829020805460ff191685151590811790915591519182527f9f1eaee9ad9cb68284f0dc523aa42c465ed33b53f8da7fc7294ccea47358bbdf910160405180910390a25050565b5f6107d4338484610dc6565b6001545f906107459061ffff600160d01b8204811691600160b01b900416611b4f565b610c1b611165565b6001600160a01b038116610c425760405163e6c4247b60e01b815260040160405180910390fd5b6007805462010000908190046001600160a01b039081165f90815260046020526040808220805460ff19908116909155855462010000600160b01b031916938716948502939093179094558281528381208054909216600117909155915190917fec7358830395f2ffd1a2ba3c9e40ae9b3f8d82de2a9bf1817a93a807930b3aa091a250565b610cd0611165565b6001600160a01b038116610cf75760405163e6c4247b60e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040517fedf1a035d265f6321083031b40acf4e5e06cd3e2e2025192fd308409b13b44c6905f90a250565b610d48611165565b6001546001600160a01b0390811690821603610dba5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610dc3816111be565b50565b5f815f03610de75760405163162908e360e11b815260040160405180910390fd5b6001600160a01b038316610e0e57604051633a954ecd60e21b815260040160405180910390fd5b6001600160a01b038416610e3557604051630b07e54560e11b815260040160405180910390fd5b600854600160a01b900460ff1615610e5957610e5284848461129f565b90506107d4565b6001600160a01b0383165f9081526004602052604090205460ff1680610e9657506001600160a01b0384165f9081526004602052604090205460ff165b15610f5c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148015610ef257506001600160a01b0384165f9081526002602052604090205482115b15610f0257610e5283858461129f565b6009548210158015610f2b57506001600160a01b0383165f9081526004602052604090205460ff165b15610f515760015460078054600160b01b90920461ffff1661ffff199092169190911790555b610e5284848461129f565b600854600160b01b900460ff16610f865760405163a3b8915f60e01b815260040160405180910390fd5b6001600160a01b0384165f90815260026020526040812080548492839291610faf908490611b3c565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161415801561100d575060075460015461ffff918216600160d01b90910490911611155b1561101c5760019150506107d4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03160361109957600854600160a81b900460ff16801561107f575060095460065460055461107c9190611b85565b10155b1561108c5761108c611352565b61109685846113e3565b90505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036110df576110dc8584611489565b90505b6001600160a01b0384165f9081526002602052604081208054839290611106908490611b85565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161115291815260200190565b60405180910390a3506001949350505050565b5f546001600160a01b03163314610afd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610db1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007546040515f916201000090046001600160a01b03169083908381818185875af1925050503d805f811461125d576040519150601f19603f3d011682016040523d82523d5f602084013e611262565b606091505b505090508061129b576040518281527ff52ba60a0c4a09559a9f01ce57d52c9fc28936995ea9de3de131126384be569b906020016108f3565b5050565b6001600160a01b0383165f908152600260205260408120805483919083906112c8908490611b3c565b90915550506001600160a01b0383165f90815260026020526040812080548492906112f4908490611b85565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161134091815260200190565b60405180910390a35060019392505050565b6005546006545f6113638284611b85565b90505f611371600284611b98565b90505f61137e8284611b3c565b90505f61138a826114e4565b90505f826113988584611b25565b6113a29190611b98565b90505f6113af8284611b3c565b905080156113c0576113c08161120d565b81156113d0576113d0858361168f565b5f60058190556006555050505050505050565b5f806113ed611757565b90505f816113fd576101f461140c565b600154600160b01b900461ffff165b90505f8261141b57606461142a565b600154600160d01b900461ffff165b90505f61271061143e61ffff851688611b25565b6114489190611b98565b90505f61271061145c61ffff851689611b25565b6114669190611b98565b9050611473888383611782565b61147d9088611b3c565b98975050505050505050565b5f80611493611757565b90505f816114a3576101f46114b2565b600154600160a01b900461ffff165b90505f826114c157606461142a565b60015461ffff600160c01b9091041690505f61271061143e61ffff851688611b25565b6008805460ff60a01b1916600160a01b1790556040805160028082526060820183525f928392919060208301908036833701905050905030815f8151811061152e5761152e611b71565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561159e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c29190611bb7565b816001815181106115d5576115d5611b71565b60200260200101906001600160a01b031690816001600160a01b0316815250506115ff30846106bf565b5060405163791ac94760e01b81524790737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906116419087905f90879030904290600401611bd2565b5f604051808303815f87803b158015611658575f80fd5b505af115801561166a573d5f803e3d5ffd5b50505050804761167a9190611b3c565b6008805460ff60a01b19169055949350505050565b60088054600160a01b60ff60a01b1982161790915560405163f305d71960e01b8152306004820152602481018490525f6044820181905260648201526001600160a01b0390911660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990839060c40160606040518083038185885af115801561171e573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117439190611c43565b50506008805460ff60a01b19169055505050565b6007545f904390611776908390600160b01b900463ffffffff16611c6e565b63ffffffff1610905090565b5f8160056001015f8282546117979190611b85565b9091555083905060055f015f8282546117b09190611b85565b909155506117c090508284611b85565b305f908152600260205260408120805492935083929091906117e3908490611b85565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a39392505050565b5f602080835283518060208501525f5b8181101561185b5785810183015185820160400152820161183f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610dc3575f80fd5b5f80604083850312156118a0575f80fd5b82356118ab8161187b565b946020939093013593505050565b5f805f606084860312156118cb575f80fd5b83356118d68161187b565b925060208401356118e68161187b565b929592945050506040919091013590565b5f60208284031215611907575f80fd5b81356107d48161187b565b80358015158114611921575f80fd5b919050565b5f8060408385031215611937575f80fd5b6118ab83611912565b803561ffff81168114611921575f80fd5b5f805f8060808587031215611964575f80fd5b61196d85611940565b935061197b60208601611940565b925061198960408601611940565b915061199760608601611940565b905092959194509250565b5f602082840312156119b2575f80fd5b5035919050565b5f80604083850312156119ca575f80fd5b82356119d58161187b565b91506119e360208401611912565b90509250929050565b5f80604083850312156119fd575f80fd5b8235611a088161187b565b91506020830135611a188161187b565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611a7157815f1904821115611a5757611a57611a23565b80851615611a6457918102915b93841c9390800290611a3c565b509250929050565b5f82611a8757506001610725565b81611a9357505f610725565b8160018114611aa95760028114611ab357611acf565b6001915050610725565b60ff841115611ac457611ac4611a23565b50506001821b610725565b5060208310610133831016604e8410600b8410161715611af2575081810a610725565b611afc8383611a37565b805f1904821115611b0f57611b0f611a23565b029392505050565b5f6107d460ff841683611a79565b808202811582820484141761072557610725611a23565b8181038181111561072557610725611a23565b61ffff818116838216019080821115611b6a57611b6a611a23565b5092915050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561072557610725611a23565b5f82611bb257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611bc7575f80fd5b81516107d48161187b565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c225784516001600160a01b031683529383019391830191600101611bfd565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611c55575f80fd5b8351925060208401519150604084015190509250925092565b63ffffffff818116838216019080821115611b6a57611b6a611a2356fea26469706673582212209721e561a84ac1e55b5a4525a31c2208e3d5a864dd6a045f5b82374d15f12cc264736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101ff575f3560e01c8063715018a611610113578063b0bc85de1161009d578063dd62ed3e1161006d578063dd62ed3e146105f0578063f25f4b5614610634578063f2fde38b14610659578063f887ea4014610678578063ffb54a991461069f575f80fd5b8063b0bc85de14610566578063b8a99b251461057a578063bf56b37114610599578063d7ad92c7146105d1575f80fd5b80638da5cb5b116100e35780638da5cb5b146104ad57806395d89b41146104c9578063a3a2e89e146104f5578063a8aa1b3114610514578063a9059cbb14610547575f80fd5b8063715018a61461046657806379f480911461047a5780637fa787ba14610499578063893d20e8146104ad575f80fd5b80633f4218e0116101945780635b5ad80c116101645780635b5ad80c146103ae5780636044db92146103c8578063665a11ca146103e75780636fc61a091461041e57806370a0823114610432575f80fd5b80633f4218e014610320578063420080e41461034e5780634a74bb021461036f578063571ac8b01461038f575f80fd5b806323b872dd116101cf57806323b872dd146102ab578063252d723a146102ca5780632b112e49146102f1578063313ce56714610305575f80fd5b80630445b6671461020a57806306fdde0314610232578063095ea7b31461026857806318160ddd14610297575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b5061021f60095481565b6040519081526020015b60405180910390f35b34801561023d575f80fd5b5060408051808201909152600581526408ecadac2b60db1b60208201525b604051610229919061182f565b348015610273575f80fd5b5061028761028236600461188f565b6106bf565b6040519015158152602001610229565b3480156102a2575f80fd5b5061021f61072b565b3480156102b6575f80fd5b506102876102c53660046118b9565b61074a565b3480156102d5575f80fd5b506102de6107db565b60405161ffff9091168152602001610229565b3480156102fc575f80fd5b5061021f6107fe565b348015610310575f80fd5b5060405160128152602001610229565b34801561032b575f80fd5b5061028761033a3660046118f7565b60046020525f908152604090205460ff1681565b348015610359575f80fd5b5061036d610368366004611926565b61086c565b005b34801561037a575f80fd5b5060085461028790600160a81b900460ff1681565b34801561039a575f80fd5b506102876103a93660046118f7565b6108ff565b3480156103b9575f80fd5b506007546102de9061ffff1681565b3480156103d3575f80fd5b5061036d6103e2366004611951565b61090b565b3480156103f2575f80fd5b50600854610406906001600160a01b031681565b6040516001600160a01b039091168152602001610229565b348015610429575f80fd5b5061036d610a4b565b34801561043d575f80fd5b5061021f61044c3660046118f7565b6001600160a01b03165f9081526002602052604090205490565b348015610471575f80fd5b5061036d610ae0565b348015610485575f80fd5b5061021f6104943660046119a2565b610aff565b3480156104a4575f80fd5b5061036d610b15565b3480156104b8575f80fd5b505f546001600160a01b0316610406565b3480156104d4575f80fd5b5060408051808201909152600481526308e9a82b60e31b602082015261025b565b348015610500575f80fd5b5061036d61050f3660046119b9565b610b7e565b34801561051f575f80fd5b506104067f0000000000000000000000004c2511117da1a819ff625b8404530793334dbe1281565b348015610552575f80fd5b5061028761056136600461188f565b610be4565b348015610571575f80fd5b506102de610bf0565b348015610585575f80fd5b5061036d6105943660046118f7565b610c13565b3480156105a4575f80fd5b506007546105bc90600160b01b900463ffffffff1681565b60405163ffffffff9091168152602001610229565b3480156105dc575f80fd5b5061036d6105eb3660046118f7565b610cc8565b3480156105fb575f80fd5b5061021f61060a3660046119ec565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561063f575f80fd5b50600754610406906201000090046001600160a01b031681565b348015610664575f80fd5b5061036d6106733660046118f7565b610d40565b348015610683575f80fd5b50610406737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156106aa575f80fd5b5060085461028790600160b01b900460ff1681565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107199086815260200190565b60405180910390a35060015b92915050565b5f6107386012600a611b17565b6107459062989680611b25565b905090565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f19146107c6576001600160a01b0384165f9081526003602090815260408083203384529091529020546107a2908390611b3c565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b6107d1848484610dc6565b90505b9392505050565b6001545f906107459061ffff600160c01b8204811691600160a01b900416611b4f565b6001546001600160a01b03165f9081526002602052604081205461dead82527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5461084b6012600a611b17565b6108589062989680611b25565b6108629190611b3c565b6107459190611b3c565b610874611165565b69021e19e0c9bab240000081101561089f5760405163162908e360e11b815260040160405180910390fd5b60098190556008805460ff60a81b1916600160a81b8415159081029190911790915560408051918252602082018390527f479b6e261fc1ed1b1a450fd333c906ece427a6ef5cdb37d2762bf1834ea0904891015b60405180910390a15050565b5f610725825f196106bf565b610913611165565b5f61091e8284611b4f565b90505f61092b8587611b4f565b90506101f461ffff8216118061094657506101f461ffff8316115b15610964576040516358d620b360e01b815260040160405180910390fd5b6001805461ffff868116600160b01b0261ffff60b01b19878316600160d01b021665ffff0000ffff60b01b198b8416600160a01b810261ffff60a01b19958d16600160c01b81029690961665ffff0000ffff60a01b1990971696909617959095171617179092556040805191825260208201929092527fc8f6ebed6f64bd25f0aed0b6507ae982cddfd23874ad542be24905c9412a4a16910160405180910390a16040805161ffff8087168252851660208201527f52357d2b6ee817f5d57183c13530148906a8ec8b5be2fc82da16afbd8a045072910160405180910390a1505050505050565b610a53611165565b600754600160b01b900463ffffffff1615610a815760405163a3b8915f60e01b815260040160405180910390fd5b60088054600160b01b60ff60b01b1990911681179091556007805463ffffffff60b01b19164363ffffffff169092029190911790556040517fae0605e1224f1db54698fcd818991c4cc798fb1083fe29fd0e208a4c2fccce0f905f90a1565b610ae8611165565b600154610afd906001600160a01b03166111be565b565b60058160028110610b0e575f80fd5b0154905081565b610b1d611165565b475f819003610b3f5760405163162908e360e11b815260040160405180910390fd5b610b488161120d565b6040518181527f61834e9161bcb1e4b0b8bf1d8497dfce4358169ec3efa06ceababb5900694f1b9060200160405180910390a150565b610b86611165565b6001600160a01b0382165f81815260046020908152604091829020805460ff191685151590811790915591519182527f9f1eaee9ad9cb68284f0dc523aa42c465ed33b53f8da7fc7294ccea47358bbdf910160405180910390a25050565b5f6107d4338484610dc6565b6001545f906107459061ffff600160d01b8204811691600160b01b900416611b4f565b610c1b611165565b6001600160a01b038116610c425760405163e6c4247b60e01b815260040160405180910390fd5b6007805462010000908190046001600160a01b039081165f90815260046020526040808220805460ff19908116909155855462010000600160b01b031916938716948502939093179094558281528381208054909216600117909155915190917fec7358830395f2ffd1a2ba3c9e40ae9b3f8d82de2a9bf1817a93a807930b3aa091a250565b610cd0611165565b6001600160a01b038116610cf75760405163e6c4247b60e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040517fedf1a035d265f6321083031b40acf4e5e06cd3e2e2025192fd308409b13b44c6905f90a250565b610d48611165565b6001546001600160a01b0390811690821603610dba5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610dc3816111be565b50565b5f815f03610de75760405163162908e360e11b815260040160405180910390fd5b6001600160a01b038316610e0e57604051633a954ecd60e21b815260040160405180910390fd5b6001600160a01b038416610e3557604051630b07e54560e11b815260040160405180910390fd5b600854600160a01b900460ff1615610e5957610e5284848461129f565b90506107d4565b6001600160a01b0383165f9081526004602052604090205460ff1680610e9657506001600160a01b0384165f9081526004602052604090205460ff165b15610f5c577f0000000000000000000000004c2511117da1a819ff625b8404530793334dbe126001600160a01b0316836001600160a01b0316148015610ef257506001600160a01b0384165f9081526002602052604090205482115b15610f0257610e5283858461129f565b6009548210158015610f2b57506001600160a01b0383165f9081526004602052604090205460ff165b15610f515760015460078054600160b01b90920461ffff1661ffff199092169190911790555b610e5284848461129f565b600854600160b01b900460ff16610f865760405163a3b8915f60e01b815260040160405180910390fd5b6001600160a01b0384165f90815260026020526040812080548492839291610faf908490611b3c565b925050819055507f0000000000000000000000004c2511117da1a819ff625b8404530793334dbe126001600160a01b0316856001600160a01b03161415801561100d575060075460015461ffff918216600160d01b90910490911611155b1561101c5760019150506107d4565b7f0000000000000000000000004c2511117da1a819ff625b8404530793334dbe126001600160a01b0316846001600160a01b03160361109957600854600160a81b900460ff16801561107f575060095460065460055461107c9190611b85565b10155b1561108c5761108c611352565b61109685846113e3565b90505b7f0000000000000000000000004c2511117da1a819ff625b8404530793334dbe126001600160a01b0316856001600160a01b0316036110df576110dc8584611489565b90505b6001600160a01b0384165f9081526002602052604081208054839290611106908490611b85565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161115291815260200190565b60405180910390a3506001949350505050565b5f546001600160a01b03163314610afd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610db1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007546040515f916201000090046001600160a01b03169083908381818185875af1925050503d805f811461125d576040519150601f19603f3d011682016040523d82523d5f602084013e611262565b606091505b505090508061129b576040518281527ff52ba60a0c4a09559a9f01ce57d52c9fc28936995ea9de3de131126384be569b906020016108f3565b5050565b6001600160a01b0383165f908152600260205260408120805483919083906112c8908490611b3c565b90915550506001600160a01b0383165f90815260026020526040812080548492906112f4908490611b85565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161134091815260200190565b60405180910390a35060019392505050565b6005546006545f6113638284611b85565b90505f611371600284611b98565b90505f61137e8284611b3c565b90505f61138a826114e4565b90505f826113988584611b25565b6113a29190611b98565b90505f6113af8284611b3c565b905080156113c0576113c08161120d565b81156113d0576113d0858361168f565b5f60058190556006555050505050505050565b5f806113ed611757565b90505f816113fd576101f461140c565b600154600160b01b900461ffff165b90505f8261141b57606461142a565b600154600160d01b900461ffff165b90505f61271061143e61ffff851688611b25565b6114489190611b98565b90505f61271061145c61ffff851689611b25565b6114669190611b98565b9050611473888383611782565b61147d9088611b3c565b98975050505050505050565b5f80611493611757565b90505f816114a3576101f46114b2565b600154600160a01b900461ffff165b90505f826114c157606461142a565b60015461ffff600160c01b9091041690505f61271061143e61ffff851688611b25565b6008805460ff60a01b1916600160a01b1790556040805160028082526060820183525f928392919060208301908036833701905050905030815f8151811061152e5761152e611b71565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561159e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c29190611bb7565b816001815181106115d5576115d5611b71565b60200260200101906001600160a01b031690816001600160a01b0316815250506115ff30846106bf565b5060405163791ac94760e01b81524790737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906116419087905f90879030904290600401611bd2565b5f604051808303815f87803b158015611658575f80fd5b505af115801561166a573d5f803e3d5ffd5b50505050804761167a9190611b3c565b6008805460ff60a01b19169055949350505050565b60088054600160a01b60ff60a01b1982161790915560405163f305d71960e01b8152306004820152602481018490525f6044820181905260648201526001600160a01b0390911660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990839060c40160606040518083038185885af115801561171e573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117439190611c43565b50506008805460ff60a01b19169055505050565b6007545f904390611776908390600160b01b900463ffffffff16611c6e565b63ffffffff1610905090565b5f8160056001015f8282546117979190611b85565b9091555083905060055f015f8282546117b09190611b85565b909155506117c090508284611b85565b305f908152600260205260408120805492935083929091906117e3908490611b85565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a39392505050565b5f602080835283518060208501525f5b8181101561185b5785810183015185820160400152820161183f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610dc3575f80fd5b5f80604083850312156118a0575f80fd5b82356118ab8161187b565b946020939093013593505050565b5f805f606084860312156118cb575f80fd5b83356118d68161187b565b925060208401356118e68161187b565b929592945050506040919091013590565b5f60208284031215611907575f80fd5b81356107d48161187b565b80358015158114611921575f80fd5b919050565b5f8060408385031215611937575f80fd5b6118ab83611912565b803561ffff81168114611921575f80fd5b5f805f8060808587031215611964575f80fd5b61196d85611940565b935061197b60208601611940565b925061198960408601611940565b915061199760608601611940565b905092959194509250565b5f602082840312156119b2575f80fd5b5035919050565b5f80604083850312156119ca575f80fd5b82356119d58161187b565b91506119e360208401611912565b90509250929050565b5f80604083850312156119fd575f80fd5b8235611a088161187b565b91506020830135611a188161187b565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611a7157815f1904821115611a5757611a57611a23565b80851615611a6457918102915b93841c9390800290611a3c565b509250929050565b5f82611a8757506001610725565b81611a9357505f610725565b8160018114611aa95760028114611ab357611acf565b6001915050610725565b60ff841115611ac457611ac4611a23565b50506001821b610725565b5060208310610133831016604e8410600b8410161715611af2575081810a610725565b611afc8383611a37565b805f1904821115611b0f57611b0f611a23565b029392505050565b5f6107d460ff841683611a79565b808202811582820484141761072557610725611a23565b8181038181111561072557610725611a23565b61ffff818116838216019080821115611b6a57611b6a611a23565b5092915050565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561072557610725611a23565b5f82611bb257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611bc7575f80fd5b81516107d48161187b565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c225784516001600160a01b031683529383019391830191600101611bfd565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611c55575f80fd5b8351925060208401519150604084015190509250925092565b63ffffffff818116838216019080821115611b6a57611b6a611a2356fea26469706673582212209721e561a84ac1e55b5a4525a31c2208e3d5a864dd6a045f5b82374d15f12cc264736f6c63430008180033

Deployed Bytecode Sourcemap

4244:12654:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5849:50;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5849:50:0;;;;;;;;16013:94;;;;;;;;;;-1:-1:-1;16094:5:0;;;;;;;;;;;;-1:-1:-1;;;16094:5:0;;;;16013:94;;;;;;;:::i;16524:241::-;;;;;;;;;;-1:-1:-1;16524:241:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;16524:241:0;1205:187:1;15695:102:0;;;;;;;;;;;;;:::i;7354:405::-;;;;;;;;;;-1:-1:-1;7354:405:0;;;;;:::i;:::-;;:::i;15482:97::-;;;;;;;;;;;;;:::i;:::-;;;2032:6:1;2020:19;;;2002:38;;1990:2;1975:18;15482:97:0;1858:188:1;15336:138:0;;;;;;;;;;;;;:::i;15805:94::-;;;;;;;;;;-1:-1:-1;15805:94:0;;5128:2;2193:36:1;;2181:2;2166:18;15805:94:0;2051:184:1;4862:43:0;;;;;;;;;;-1:-1:-1;4862:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10864:372;;;;;;;;;;-1:-1:-1;10864:372:0;;;;;:::i;:::-;;:::i;:::-;;5639:40;;;;;;;;;;-1:-1:-1;5639:40:0;;;;-1:-1:-1;;;5639:40:0;;;;;;16773:122;;;;;;;;;;-1:-1:-1;16773:122:0;;;;;:::i;:::-;;:::i;4960:33::-;;;;;;;;;;-1:-1:-1;4960:33:0;;;;;;;;11244:633;;;;;;;;;;-1:-1:-1;11244:633:0;;;;;:::i;:::-;;:::i;5422:35::-;;;;;;;;;;-1:-1:-1;5422:35:0;;;;-1:-1:-1;;;;;5422:35:0;;;;;;-1:-1:-1;;;;;3644:32:1;;;3626:51;;3614:2;3599:18;5422:35:0;3480:203:1;15119:209:0;;;;;;;;;;;;;:::i;16217:119::-;;;;;;;;;;-1:-1:-1;16217:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;16310:18:0;16283:7;16310:18;;;:9;:18;;;;;;;16217:119;1677:97;;;;;;;;;;;;;:::i;4912:41::-;;;;;;;;;;-1:-1:-1;4912:41:0;;;;;:::i;:::-;;:::i;12963:283::-;;;;;;;;;;;;;:::i;16115:94::-;;;;;;;;;;-1:-1:-1;16167:7:0;1113:6;-1:-1:-1;;;;;1113:6:0;16115:94;15695:102;15907:98;;;;;;;;;;-1:-1:-1;15990:7:0;;;;;;;;;;;;-1:-1:-1;;;15990:7:0;;;;15907:98;;10122:173;;;;;;;;;;-1:-1:-1;10122:173:0;;;;;:::i;:::-;;:::i;5566:29::-;;;;;;;;;;;;;;;9292:177;;;;;;;;;;-1:-1:-1;9292:177:0;;;;;:::i;:::-;;:::i;15587:100::-;;;;;;;;;;;;;:::i;10303:303::-;;;;;;;;;;-1:-1:-1;10303:303:0;;;;;:::i;:::-;;:::i;5391:24::-;;;;;;;;;;-1:-1:-1;5391:24:0;;;;-1:-1:-1;;;5391:24:0;;;;;;;;;4367:10:1;4355:23;;;4337:42;;4325:2;4310:18;5391:24:0;4193:192:1;10614:242:0;;;;;;;;;;-1:-1:-1;10614:242:0;;;;;:::i;:::-;;:::i;16344:172::-;;;;;;;;;;-1:-1:-1;16344:172:0;;;;;:::i;:::-;-1:-1:-1;;;;;16480:19:0;;;16453:7;16480:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16344:172;5315:69;;;;;;;;;;-1:-1:-1;5315:69:0;;;;;;;-1:-1:-1;;;;;5315:69:0;;;1275:195;;;;;;;;;;-1:-1:-1;1275:195:0;;;;;:::i;:::-;;:::i;5137:90::-;;;;;;;;;;;;5184:42;5137:90;;5686:31;;;;;;;;;;-1:-1:-1;5686:31:0;;;;-1:-1:-1;;;5686:31:0;;;;;;16524:241;16653:10;16624:4;16641:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;16641:32:0;;;;;;;;;;:41;;;16698:37;16624:4;;16641:32;;16698:37;;;;16676:6;160:25:1;;148:2;133:18;;14:177;16698:37:0;;;;;;;;-1:-1:-1;16753:4:0;16524:241;;;;;:::o;15695:102::-;15750:7;5826:15;5128:2;5826;:15;:::i;:::-;5814:28;;:8;:28;:::i;:::-;15770:19;;15695:102;:::o;7354:405::-;-1:-1:-1;;;;;7509:19:0;;7488:4;7509:19;;;:11;:19;;;;;;;;7529:10;7509:31;;;;;;;;-1:-1:-1;;7509:52:0;7505:193;;-1:-1:-1;;;;;7629:19:0;;;;;;:11;:19;;;;;;;;7649:10;7629:31;;;;;;;;:57;;7680:6;;7629:57;:::i;:::-;-1:-1:-1;;;;;7578:19:0;;;;;;:11;:19;;;;;;;;7598:10;7578:31;;;;;;;:108;7505:193;7715:36;7725:6;7733:9;7744:6;7715:9;:36::i;:::-;7708:43;;7354:405;;;;;;:::o;15482:97::-;15562:9;;15526:6;;15552:19;;15562:9;-1:-1:-1;;;15562:9:0;;;;;-1:-1:-1;;;15552:7:0;;;:19;:::i;15336:138::-;15461:4;;-1:-1:-1;;;;;15461:4:0;15391:7;16310:18;;;:9;:18;;;;;;5266:42;16310:18;;;;5826:15;5128:2;5826;:15;:::i;:::-;5814:28;;:8;:28;:::i;:::-;15418:30;;;;:::i;:::-;:48;;;;:::i;10864:372::-;1013:13;:11;:13::i;:::-;5510:12:::1;11002:16;:37;10998:65;;;11048:15;;-1:-1:-1::0;;;11048:15:0::1;;;;;;;;;;;10998:65;11074:13;:32:::0;;;11117:21:::1;:38:::0;;-1:-1:-1;;;;11117:38:0::1;-1:-1:-1::0;;;11117:38:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;11171:57:::1;::::0;;7165:41:1;;;7237:2;7222:18;;7215:34;;;11171:57:0::1;::::0;7138:18:1;11171:57:0::1;;;;;;;;10864:372:::0;;:::o;16773:122::-;16828:4;16852:35;16860:7;-1:-1:-1;;16852:7:0;:35::i;11244:633::-;1013:13;:11;:13::i;:::-;11416:22:::1;11441:25;11454:12:::0;11441:10;:25:::1;:::i;:::-;11416:50:::0;-1:-1:-1;11477:21:0::1;11501:23;11513:11:::0;11501:9;:23:::1;:::i;:::-;11477:47:::0;-1:-1:-1;4726:3:0::1;11539:24;::::0;::::1;;::::0;:53:::1;;-1:-1:-1::0;4726:3:0::1;11567:25;::::0;::::1;;11539:53;11535:91;;;11614:12;;-1:-1:-1::0;;;11614:12:0::1;;;;;;;;;;;11535:91;11637:9;:23:::0;;::::1;11737:21:::0;;::::1;-1:-1:-1::0;;;11737:21:0::1;-1:-1:-1::0;;;;11701:25:0;;::::1;-1:-1:-1::0;;;11701:25:0::1;11737:21:::0;-1:-1:-1;;;;11671:19:0;;::::1;-1:-1:-1::0;;;11671:19:0;::::1;-1:-1:-1::0;;;;11637:23:0;;::::1;-1:-1:-1::0;;;11637:23:0;::::1;11671:19:::0;;;;-1:-1:-1;;;;11671:19:0;;;;;;;;;;::::1;11737:21:::0;;::::1;::::0;;;11774:38:::1;::::0;;7455:34:1;;;7520:2;7505:18;;7498:43;;;;11774:38:0::1;::::0;7403:18:1;11774:38:0::1;;;;;;;11828:41;::::0;;7440:6:1;7473:15;;;7455:34;;7525:15;;7520:2;7505:18;;7498:43;11828:41:0::1;::::0;7403:18:1;11828:41:0::1;;;;;;;11405:472;;11244:633:::0;;;;:::o;15119:209::-;1013:13;:11;:13::i;:::-;15178:10:::1;::::0;-1:-1:-1;;;15178:10:0;::::1;;;:15:::0;15174:41:::1;;15202:13;;-1:-1:-1::0;;;15202:13:0::1;;;;;;;;;;;15174:41;15226:11;:18:::0;;-1:-1:-1;;;;;;;15226:18:0;;::::1;::::0;::::1;::::0;;;15255:10:::1;:33:::0;;-1:-1:-1;;;;15255:33:0::1;15275:12;15255:33;;::::0;;::::1;::::0;;;::::1;::::0;;15304:16:::1;::::0;::::1;::::0;-1:-1:-1;;15304:16:0::1;15119:209::o:0;1677:97::-;1013:13;:11;:13::i;:::-;1761:4:::1;::::0;1742:24:::1;::::0;-1:-1:-1;;;;;1761:4:0::1;1742:18;:24::i;:::-;1677:97::o:0;4912:41::-;;;;;;;;;;;;;;;-1:-1:-1;4912:41:0;:::o;12963:283::-;1013:13;:11;:13::i;:::-;13050:21:::1;13021:26;13086:23:::0;;;13082:51:::1;;13118:15;;-1:-1:-1::0;;;13118:15:0::1;;;;;;;;;;;13082:51;13144:43;13168:18;13144:23;:43::i;:::-;13203:35;::::0;160:25:1;;;13203:35:0::1;::::0;148:2:1;133:18;13203:35:0::1;;;;;;;13010:236;12963:283::o:0;10122:173::-;1013:13;:11;:13::i;:::-;-1:-1:-1;;;;;10208:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;;:28;;-1:-1:-1;;10208:28:0::1;::::0;::::1;;::::0;;::::1;::::0;;;10252:35;;1345:41:1;;;10252:35:0::1;::::0;1318:18:1;10252:35:0::1;;;;;;;10122:173:::0;;:::o;9292:177::-;9397:4;9421:40;9431:10;9443:9;9454:6;9421:9;:40::i;15587:100::-;15669:10;;15632:6;;15658:21;;15669:10;-1:-1:-1;;;15669:10:0;;;;;-1:-1:-1;;;15658:8:0;;;:21;:::i;10303:303::-;1013:13;:11;:13::i;:::-;-1:-1:-1;;;;;10382:26:0;::::1;10378:55;;10417:16;;-1:-1:-1::0;;;10417:16:0::1;;;;;;;;;;;10378:55;10456:9;::::0;;;;;;::::1;-1:-1:-1::0;;;;;10456:9:0;;::::1;10469:5;10444:22:::0;;;:11:::1;:22;::::0;;;;;:30;;-1:-1:-1;;10444:30:0;;::::1;::::0;;;10485:24;;-1:-1:-1;;;;;;10485:24:0::1;::::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;10520:25;;;;;;:32;;;;::::1;-1:-1:-1::0;10520:32:0::1;::::0;;;10568:30;;10485:24;;10568:30:::1;::::0;::::1;10303:303:::0;:::o;10614:242::-;1013:13;:11;:13::i;:::-;-1:-1:-1;;;;;10696:30:0;::::1;10692:59;;10735:16;;-1:-1:-1::0;;;10735:16:0::1;;;;;;;;;;;10692:59;10762:13;:32:::0;;-1:-1:-1;;;;;;10762:32:0::1;-1:-1:-1::0;;;;;10762:32:0;::::1;::::0;;::::1;::::0;;;10810:38:::1;::::0;::::1;::::0;-1:-1:-1;;10810:38:0::1;10614:242:::0;:::o;1275:195::-;1013:13;:11;:13::i;:::-;1376:4:::1;::::0;-1:-1:-1;;;;;1376:4:0;;::::1;1364:16:::0;;::::1;::::0;1356:67:::1;;;::::0;-1:-1:-1;;;1356:67:0;;7754:2:1;1356:67:0::1;::::0;::::1;7736:21:1::0;7793:2;7773:18;;;7766:30;7832:34;7812:18;;;7805:62;-1:-1:-1;;;7883:18:1;;;7876:36;7929:19;;1356:67:0::1;;;;;;;;;1434:28;1453:8;1434:18;:28::i;:::-;1275:195:::0;:::o;7767:1517::-;7888:4;7909:6;7919:1;7909:11;7905:39;;7929:15;;-1:-1:-1;;;7929:15:0;;;;;;;;;;;7905:39;-1:-1:-1;;;;;7959:23:0;;7955:59;;7991:23;;-1:-1:-1;;;7991:23:0;;;;;;;;;;;7955:59;-1:-1:-1;;;;;8029:20:0;;8025:58;;8058:25;;-1:-1:-1;;;8058:25:0;;;;;;;;;;;8025:58;8098:17;;-1:-1:-1;;;8098:17:0;;;;8094:98;;;8139:41;8154:6;8162:9;8173:6;8139:14;:41::i;:::-;8132:48;;;;8094:98;-1:-1:-1;;;;;8206:22:0;;;;;;:11;:22;;;;;;;;;:45;;-1:-1:-1;;;;;;8232:19:0;;;;;;:11;:19;;;;;;;;8206:45;8202:397;;;8284:4;-1:-1:-1;;;;;8271:17:0;:9;-1:-1:-1;;;;;8271:17:0;;:47;;;;-1:-1:-1;;;;;;8301:17:0;;;;;;:9;:17;;;;;;8292:26;;8271:47;8268:257;;;8346:41;8361:9;8372:6;8380;8346:14;:41::i;8268:257::-;8423:13;;8413:6;:23;;:49;;;;-1:-1:-1;;;;;;8440:22:0;;;;;;:11;:22;;;;;;;;8413:49;8409:116;;;8501:8;;8483:15;:26;;-1:-1:-1;;;8501:8:0;;;;;-1:-1:-1;;8483:26:0;;;;;;;;;8409:116;8546:41;8561:6;8569:9;8580:6;8546:14;:41::i;8202:397::-;8614:11;;-1:-1:-1;;;8614:11:0;;;;8609:38;;8634:13;;-1:-1:-1;;;8634:13:0;;;;;;;;;;;8609:38;-1:-1:-1;;;;;8697:17:0;;8658:19;8697:17;;;:9;:17;;;;;:27;;8680:6;;;;8697:17;:27;;8680:6;;8697:27;:::i;:::-;;;;;;;;8749:4;-1:-1:-1;;;;;8739:14:0;:6;-1:-1:-1;;;;;8739:14:0;;;:47;;;;-1:-1:-1;8771:15:0;;;8757:10;8771:15;;;;-1:-1:-1;;;8757:10:0;;;;;;:29;;8739:47;8735:64;;;8795:4;8788:11;;;;;8735:64;8827:4;-1:-1:-1;;;;;8814:17:0;:9;-1:-1:-1;;;;;8814:17:0;;8810:240;;8852:21;;-1:-1:-1;;;8852:21:0;;;;:79;;;;-1:-1:-1;8918:13:0;;8897:17;;:14;8877:17;:37;;8897:17;8877:37;:::i;:::-;:54;;8852:79;8848:131;;;8952:11;:9;:11::i;:::-;9007:31;9023:6;9031;9007:15;:31::i;:::-;8993:45;;8810:240;9074:4;-1:-1:-1;;;;;9064:14:0;:6;-1:-1:-1;;;;;9064:14:0;;9060:91;;9109:30;9124:6;9132;9109:14;:30::i;:::-;9095:44;;9060:91;-1:-1:-1;;;;;9163:20:0;;;;;;:9;:20;;;;;:35;;9187:11;;9163:20;:35;;9187:11;;9163:35;:::i;:::-;;;;;;;;9231:9;-1:-1:-1;;;;;9214:40:0;9223:6;-1:-1:-1;;;;;9214:40:0;;9242:11;9214:40;;;;160:25:1;;148:2;133:18;;14:177;9214:40:0;;;;;;;;-1:-1:-1;9272:4:0;;7767:1517;-1:-1:-1;;;;7767:1517:0:o;1135:132::-;1086:7;1113:6;-1:-1:-1;;;;;1113:6:0;532:10;1199:23;1191:68;;;;-1:-1:-1;;;1191:68:0;;8423:2:1;1191:68:0;;;8405:21:1;;;8442:18;;;8435:30;8501:34;8481:18;;;8474:62;8553:18;;1191:68:0;8221:356:1;1478:191:0;1552:16;1571:6;;-1:-1:-1;;;;;1588:17:0;;;-1:-1:-1;;;;;;1588:17:0;;;;;;1621:40;;1571:6;;;;;;;1621:40;;1552:16;1621:40;1541:128;1478:191;:::o;13254:200::-;13341:9;;:33;;13323:12;;13341:9;;;-1:-1:-1;;;;;13341:9:0;;13363:6;;13323:12;13341:33;13323:12;13341:33;13363:6;13341:9;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13322:52;;;13390:7;13385:62;;13419:16;;160:25:1;;;13419:16:0;;148:2:1;133:18;13419:16:0;14:177:1;13385:62:0;13311:143;13254:200;:::o;9477:292::-;-1:-1:-1;;;;;9620:17:0;;9603:4;9620:17;;;:9;:17;;;;;:27;;9641:6;;9620:17;9603:4;;9620:27;;9641:6;;9620:27;:::i;:::-;;;;-1:-1:-1;;;;;;;9658:20:0;;;;;;:9;:20;;;;;:30;;9682:6;;9658:20;:30;;9682:6;;9658:30;:::i;:::-;;;;;;;;9721:9;-1:-1:-1;;;;;9704:35:0;9713:6;-1:-1:-1;;;;;9704:35:0;;9732:6;9704:35;;;;160:25:1;;148:2;133:18;;14:177;9704:35:0;;;;;;;;-1:-1:-1;9757:4:0;9477:292;;;;;:::o;14376:735::-;14434:14;:17;14480;;14416:15;14527:17;14480;14434;14527;:::i;:::-;14508:36;-1:-1:-1;14555:26:0;14584:11;14594:1;14584:7;:11;:::i;:::-;14555:40;-1:-1:-1;14606:20:0;14629:29;14555:40;14629:8;:29;:::i;:::-;14606:52;;14669:19;14691:31;14709:12;14691:17;:31::i;:::-;14669:53;-1:-1:-1;14733:23:0;14796:12;14760:32;14774:18;14669:53;14760:32;:::i;:::-;14759:49;;;;:::i;:::-;14733:75;-1:-1:-1;14819:16:0;14838:29;14733:75;14838:11;:29;:::i;:::-;14819:48;-1:-1:-1;14884:13:0;;14880:79;;14914:33;14938:8;14914:23;:33::i;:::-;14973:20;;14969:103;;15010:50;15024:18;15044:15;15010:13;:50::i;:::-;15089:14;;-1:-1:-1;;;;;14405:706:0;;;;;;;;14376:735::o;11885:472::-;11984:7;12004:12;12019:16;:14;:16::i;:::-;12004:31;;12046:14;12063:7;:38;;4577:3;12063:38;;;12073:8;;-1:-1:-1;;;12073:8:0;;;;12063:38;12046:55;;12112:13;12128:7;:39;;4682:3;12128:39;;;12138:10;;-1:-1:-1;;;12138:10:0;;;;12128:39;12112:55;-1:-1:-1;12178:15:0;5762:5;12197:16;12196:32;12197:16;;:6;:16;:::i;:::-;12196:32;;;;:::i;:::-;12178:50;-1:-1:-1;12239:15:0;5762:5;12258:15;12257:31;12258:15;;:6;:15;:::i;:::-;12257:31;;;;:::i;:::-;12239:49;;12315:34;12324:6;12332:7;12341;12315:8;:34::i;:::-;12306:43;;:6;:43;:::i;:::-;12299:50;11885:472;-1:-1:-1;;;;;;;;11885:472:0:o;12365:459::-;12463:7;12483:12;12498:16;:14;:16::i;:::-;12483:31;;12525:13;12541:7;:36;;4523:3;12541:36;;;12551:7;;-1:-1:-1;;;12551:7:0;;;;12541:36;12525:52;;12588:12;12603:7;:37;;4629:3;12603:37;;;12613:9;;;-1:-1:-1;;;12613:9:0;;;;12588:52;-1:-1:-1;12651:14:0;5762:5;12669:15;12668:31;12669:15;;:6;:15;:::i;13792:576::-;6788:17;:24;;-1:-1:-1;;;;6788:24:0;-1:-1:-1;;;6788:24:0;;;13929:16:::1;::::0;;13943:1:::1;13929:16:::0;;;;;::::1;::::0;;-1:-1:-1;;;;13929:16:0;13943:1;13929:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13929:16:0::1;13905:40;;13974:4;13956;13961:1;13956:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;13956:23:0::1;;;-1:-1:-1::0;;;;;13956:23:0::1;;;::::0;::::1;5184:42;-1:-1:-1::0;;;;;14000:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13990:4;13995:1;13990:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;13990:23:0::1;;;-1:-1:-1::0;;;;;13990:23:0::1;;;::::0;::::1;14024:35;14040:4;14047:11;14024:7;:35::i;:::-;-1:-1:-1::0;14122:187:0::1;::::0;-1:-1:-1;;;14122:187:0;;14090:21:::1;::::0;5184:42:::1;::::0;14122:57:::1;::::0;:187:::1;::::0;14194:11;;14070:17:::1;::::0;14236:4;;14263::::1;::::0;14283:15:::1;::::0;14122:187:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14351:9;14327:21;:33;;;;:::i;:::-;6835:17:::0;:25;;-1:-1:-1;;;;6835:25:0;;;14320:40;13792:576;-1:-1:-1;;;;13792:576:0:o;13462:322::-;6788:17;:24;;-1:-1:-1;;;;;;;6788:24:0;;;;;;13581:195:::1;::::0;-1:-1:-1;;;13581:195:0;;13644:4:::1;13581:195;::::0;::::1;10728:34:1::0;10778:18;;;10771:34;;;-1:-1:-1;10821:18:1;;;10814:34;;;10864:18;;;10857:34;-1:-1:-1;;;;;13722:13:0;;;10907:19:1;;;10900:44;13750:15:0::1;10960:19:1::0;;;10953:35;5184:42:0::1;::::0;13581:22:::1;::::0;13611:9;;10662:19:1;;13581:195:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;6835:17:0;:25;;-1:-1:-1;;;;6835:25:0;;;-1:-1:-1;;;13462:322:0:o;12832:123::-;12904:10;;12880:4;;12935:12;;12904:28;;12880:4;;-1:-1:-1;;;12904:10:0;;;;:28;:::i;:::-;:43;;;12897:50;;12832:123;:::o;9777:337::-;9886:11;9931:2;9910:14;9925:1;9910:17;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;9965:2:0;;-1:-1:-1;9944:14:0;9959:1;9944:17;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;9984:7:0;;-1:-1:-1;9989:2:0;9984;:7;:::i;:::-;10020:4;10002:24;;;;:9;:24;;;;;:31;;9978:13;;-1:-1:-1;9978:13:0;;10002:24;;;:31;;9978:13;;10002:31;:::i;:::-;;;;-1:-1:-1;;10049:36:0;;160:25:1;;;10074:4:0;;-1:-1:-1;;;;;10049:36:0;;;;;148:2:1;133:18;10049:36:0;;;;;;;9777:337;;;;;:::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:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2240:247::-;2299:6;2352:2;2340:9;2331:7;2327:23;2323:32;2320:52;;;2368:1;2365;2358:12;2320:52;2407:9;2394:23;2426:31;2451:5;2426:31;:::i;2492:160::-;2557:20;;2613:13;;2606:21;2596:32;;2586:60;;2642:1;2639;2632:12;2586:60;2492:160;;;:::o;2657:248::-;2722:6;2730;2783:2;2771:9;2762:7;2758:23;2754:32;2751:52;;;2799:1;2796;2789:12;2751:52;2822:26;2838:9;2822:26;:::i;2910:159::-;2977:20;;3037:6;3026:18;;3016:29;;3006:57;;3059:1;3056;3049:12;3074:401;3156:6;3164;3172;3180;3233:3;3221:9;3212:7;3208:23;3204:33;3201:53;;;3250:1;3247;3240:12;3201:53;3273:28;3291:9;3273:28;:::i;:::-;3263:38;;3320:37;3353:2;3342:9;3338:18;3320:37;:::i;:::-;3310:47;;3376:37;3409:2;3398:9;3394:18;3376:37;:::i;:::-;3366:47;;3432:37;3465:2;3454:9;3450:18;3432:37;:::i;:::-;3422:47;;3074:401;;;;;;;:::o;3688:180::-;3747:6;3800:2;3788:9;3779:7;3775:23;3771:32;3768:52;;;3816:1;3813;3806:12;3768:52;-1:-1:-1;3839:23:1;;3688:180;-1:-1:-1;3688:180:1:o;3873:315::-;3938:6;3946;3999:2;3987:9;3978:7;3974:23;3970:32;3967:52;;;4015:1;4012;4005:12;3967:52;4054:9;4041:23;4073:31;4098:5;4073:31;:::i;:::-;4123:5;-1:-1:-1;4147:35:1;4178:2;4163:18;;4147:35;:::i;:::-;4137:45;;3873:315;;;;;:::o;4390:388::-;4458:6;4466;4519:2;4507:9;4498:7;4494:23;4490:32;4487:52;;;4535:1;4532;4525:12;4487:52;4574:9;4561:23;4593:31;4618:5;4593:31;:::i;:::-;4643:5;-1:-1:-1;4700:2:1;4685:18;;4672:32;4713:33;4672:32;4713:33;:::i;:::-;4765:7;4755:17;;;4390:388;;;;;:::o;5009:127::-;5070:10;5065:3;5061:20;5058:1;5051:31;5101:4;5098:1;5091:15;5125:4;5122:1;5115:15;5141:416;5230:1;5267:5;5230:1;5281:270;5302:7;5292:8;5289:21;5281:270;;;5361:4;5357:1;5353:6;5349:17;5343:4;5340:27;5337:53;;;5370:18;;:::i;:::-;5420:7;5410:8;5406:22;5403:55;;;5440:16;;;;5403:55;5519:22;;;;5479:15;;;;5281:270;;;5285:3;5141:416;;;;;:::o;5562:806::-;5611:5;5641:8;5631:80;;-1:-1:-1;5682:1:1;5696:5;;5631:80;5730:4;5720:76;;-1:-1:-1;5767:1:1;5781:5;;5720:76;5812:4;5830:1;5825:59;;;;5898:1;5893:130;;;;5805:218;;5825:59;5855:1;5846:10;;5869:5;;;5893:130;5930:3;5920:8;5917:17;5914:43;;;5937:18;;:::i;:::-;-1:-1:-1;;5993:1:1;5979:16;;6008:5;;5805:218;;6107:2;6097:8;6094:16;6088:3;6082:4;6079:13;6075:36;6069:2;6059:8;6056:16;6051:2;6045:4;6042:12;6038:35;6035:77;6032:159;;;-1:-1:-1;6144:19:1;;;6176:5;;6032:159;6223:34;6248:8;6242:4;6223:34;:::i;:::-;6293:6;6289:1;6285:6;6281:19;6272:7;6269:32;6266:58;;;6304:18;;:::i;:::-;6342:20;;5562:806;-1:-1:-1;;;5562:806:1:o;6373:140::-;6431:5;6460:47;6501:4;6491:8;6487:19;6481:4;6460:47;:::i;6518:168::-;6591:9;;;6622;;6639:15;;;6633:22;;6619:37;6609:71;;6660:18;;:::i;6691:128::-;6758:9;;;6779:11;;;6776:37;;;6793:18;;:::i;6824:168::-;6891:6;6917:10;;;6929;;;6913:27;;6952:11;;;6949:37;;;6966:18;;:::i;:::-;6949:37;6824:168;;;;:::o;7959:127::-;8020:10;8015:3;8011:20;8008:1;8001:31;8051:4;8048:1;8041:15;8075:4;8072:1;8065:15;8091:125;8156:9;;;8177:10;;;8174:36;;;8190:18;;:::i;8792:217::-;8832:1;8858;8848:132;;8902:10;8897:3;8893:20;8890:1;8883:31;8937:4;8934:1;8927:15;8965:4;8962:1;8955:15;8848:132;-1:-1:-1;8994:9:1;;8792:217::o;9146:251::-;9216:6;9269:2;9257:9;9248:7;9244:23;9240:32;9237:52;;;9285:1;9282;9275:12;9237:52;9317:9;9311:16;9336:31;9361:5;9336:31;:::i;9402:980::-;9664:4;9712:3;9701:9;9697:19;9743:6;9732:9;9725:25;9769:2;9807:6;9802:2;9791:9;9787:18;9780:34;9850:3;9845:2;9834:9;9830:18;9823:31;9874:6;9909;9903:13;9940:6;9932;9925:22;9978:3;9967:9;9963:19;9956:26;;10017:2;10009:6;10005:15;9991:29;;10038:1;10048:195;10062:6;10059:1;10056:13;10048:195;;;10127:13;;-1:-1:-1;;;;;10123:39:1;10111:52;;10218:15;;;;10183:12;;;;10159:1;10077:9;10048:195;;;-1:-1:-1;;;;;;;10299:32:1;;;;10294:2;10279:18;;10272:60;-1:-1:-1;;;10363:3:1;10348:19;10341:35;10260:3;9402:980;-1:-1:-1;;;9402:980:1:o;10999:306::-;11087:6;11095;11103;11156:2;11144:9;11135:7;11131:23;11127:32;11124:52;;;11172:1;11169;11162:12;11124:52;11201:9;11195:16;11185:26;;11251:2;11240:9;11236:18;11230:25;11220:35;;11295:2;11284:9;11280:18;11274:25;11264:35;;10999:306;;;;;:::o;11310:172::-;11377:10;11407;;;11419;;;11403:27;;11442:11;;;11439:37;;;11456:18;;:::i

Swarm Source

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