ETH Price: $2,309.77 (-0.03%)

Token

4096 2.0 (4096)
 

Overview

Max Total Supply

4,096 4096

Holders

47

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Filtered by Token Holder
Uniswap V2: 4096 2
Balance
2,812 4096

Value
$0.00
0x9553beb8949c0ecbf09b405361c08d033acf1140
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:
ERC409620

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-18
*/

/**
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.23;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

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;

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

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

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

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

    constructor(string memory name_, string memory symbol_, uint8 decimals_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

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

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

contract ERC409620 is ERC20, Ownable {
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private isSwapping;

    address private treasuryWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxSwapTokens;

    uint256 public lpBurnFrequency = 8 hours;
    uint256 public lastLpBurnTime;

    bool public limitsInEffect = true;
    bool public tradingActive = false;

    uint256 private launchedAt;

    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyBurnFee;

    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellBurnFee;

    uint256 public sellCounter;
    uint256 public sellAmountCounter;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(uint256 => uint256) private swapInBlock;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    mapping(address => bool) public automatedMarketMakerPairs;

    event AutoNukeLP();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event MarketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    constructor() ERC20("4096 2.0", "4096", 0) {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uint256 _buyTreasuryFee = 10;
        uint256 _buyBurnFee = 10;

        uint256 _sellTreasuryFee = 16;
        uint256 _sellBurnFee = 16;

        buyTreasuryFee = _buyTreasuryFee;
        buyBurnFee = _buyBurnFee;
        buyTotalFees = buyTreasuryFee + buyBurnFee;

        sellTreasuryFee = _sellTreasuryFee;
        sellBurnFee = _sellBurnFee;
        sellTotalFees = sellTreasuryFee + sellBurnFee;

        uint256 totalSupply = 4096;

        maxTransactionAmount = 82; // 2%
        swapTokensAtAmount = 2;
        maxSwapTokens = 32;

        treasuryWallet = msg.sender;

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function addLiquidity() external payable onlyOwner {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        _addLiquidity(balanceOf(address(this)), msg.value);
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function enableTrading() external onlyOwner {
        tradingActive = true;
        launchedAt = block.number;
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function wlContract(address _whitelist, bool isWL) public onlyOwner {
        _isExcludedMaxTransactionAmount[_whitelist] = isWL;
        _isExcludedFromFees[_whitelist] = isWL;
    }

    function excludeFromMaxTransaction(
        address excludedAddress,
        bool isExcluded
    ) public onlyOwner {
        _isExcludedMaxTransactionAmount[excludedAddress] = isExcluded;
    }

    function updateSwapTokensAtAmount(
        uint256 newAmount
    ) external onlyOwner returns (bool) {
        require(newAmount >= 1 && newAmount <= 128);
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxSwapTokens(
        uint256 newAmount
    ) external onlyOwner returns (bool) {
        require(newAmount >= 1 && newAmount <= 128);
        maxSwapTokens = newAmount;
        return true;
    }

    function updateBuyFees(
        uint256 _treasuryFee,
        uint256 _burnFee
    ) external onlyOwner {
        buyTreasuryFee = _treasuryFee;
        buyBurnFee = _burnFee;
        buyTotalFees = buyTreasuryFee + buyBurnFee;
        require(buyTotalFees <= 20);
    }

    function updateSellFees(
        uint256 _treasuryFee,
        uint256 _burnFee
    ) external onlyOwner {
        sellTreasuryFee = _treasuryFee;
        sellBurnFee = _burnFee;
        sellTotalFees = sellTreasuryFee + sellBurnFee;
        require(sellTotalFees <= 32);
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(
        address pair,
        bool value
    ) public onlyOwner {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(
        address newMarketingWallet
    ) external onlyOwner {
        emit MarketingWalletUpdated(newMarketingWallet, treasuryWallet);
        treasuryWallet = newMarketingWallet;
    }

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

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        uint256 blockNumber = block.number;

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !isSwapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxTransactionAmount,
                        "Max wallet exceeded"
                    );
                }
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxTransactionAmount,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            !isSwapping &&
            (swapInBlock[blockNumber] <= 2) &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            isSwapping = true;

            swapBack();

            ++swapInBlock[blockNumber];

            isSwapping = false;
        }

        if (
            !isSwapping &&
            automatedMarketMakerPairs[to] &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }

        bool takeFee = !isSwapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        uint256 toTreasury = 0;
        uint256 toBurn = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        // cause there are no decimals, fees will be taken only on txs of 50 tokens and more
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 100;
                toBurn = (fees * sellBurnFee) / sellTotalFees;
                toTreasury = fees - toBurn;

                // on every 2/4/8/16 sells, if LP balance is > 2048/1024/512/256, take 1 token as burn tax no matter the amount being sold
                // will be triggered only if burn amount from fees is 0 for the current trade and the trade is taxable
                sellCounter++;
                uint256 lpBalance = balanceOf(uniswapV2Pair);
                if (toBurn == 0) {
                    if (
                        (lpBalance > 2048 && sellCounter >= 2) ||
                        (lpBalance > 1024 && sellCounter >= 4) ||
                        (lpBalance > 512 && sellCounter >= 8) ||
                        (lpBalance > 256 && sellCounter >= 16)
                    ) {
                        sellCounter = 0;
                        toBurn = 1;
                        fees += 1;
                    }
                }

                sellAmountCounter += amount;
            }
            // on buy
            else if (buyTotalFees > 0 && automatedMarketMakerPairs[from]) {
                fees = (amount * buyTotalFees) / 100;
                toBurn = (fees * buyBurnFee) / buyTotalFees;
                toTreasury = fees - toBurn;
            }

            if (toTreasury > 0) {
                super._transfer(from, address(this), toTreasury);
            }

            if (toBurn > 0) {
                super._transfer(from, address(0xdead), toBurn);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;

        if (contractBalance == 0) {
            return;
        }

        if (contractBalance > maxSwapTokens) {
            contractBalance = maxSwapTokens;
        }

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

        (success, ) = address(treasuryWallet).call{
            value: address(this).balance
        }("");
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function autoBurnLiquidityPairTokens() internal {
        uint256 liquidityPairBalance = balanceOf(uniswapV2Pair);

        if (liquidityPairBalance > 256) {
            if (sellAmountCounter < 1024) {
                if (block.timestamp < lastLpBurnTime + lpBurnFrequency) {
                    return;
                } else {
                    lastLpBurnTime = block.timestamp;
                }
            } else {
                sellAmountCounter = 0;
            }

            super._transfer(uniswapV2Pair, address(0xdead), 1);

            IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
            pair.sync();
            emit AutoNukeLP();
        }
    }
}

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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MarketingWalletUpdated","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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellAmountCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateMaxSwapTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelist","type":"address"},{"internalType":"bool","name":"isWL","type":"bool"}],"name":"wlContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052617080600b55600d805461ffff1916600117905534801562000024575f80fd5b506040518060400160405280600881526020016703430393620322e360c41b815250604051806040016040528060048152602001631a181c9b60e11b8152505f8260039081620000759190620004d9565b506004620000848382620004d9565b506005805460ff191660ff9290921691909117905550620000ae9050620000a83390565b620001d0565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000d081600162000229565b6001600160a01b038116608052600a60108181556011829055819080620000f88380620005a5565b600f5560138290556014819055620001118183620005a5565b601255605260085560026009556020600a55600780546001600160a01b031916331790556110006200015c6200015460055461010090046001600160a01b031690565b6001620002a7565b62000169306001620002a7565b6200017861dead6001620002a7565b6200019c6200019460055461010090046001600160a01b031690565b600162000229565b620001a930600162000229565b620001b861dead600162000229565b620001c4338262000355565b505050505050620005cb565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6005546001600160a01b036101009091041633146200027d5760405162461bcd60e51b815260206004820181905260248201525f8051602062002a7583398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601960205260409020805460ff1916911515919091179055565b6005546001600160a01b03610100909104163314620002f75760405162461bcd60e51b815260206004820181905260248201525f8051602062002a75833981519152604482015260640162000274565b6001600160a01b0382165f81815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620003ad5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000274565b8060025f828254620003c09190620005a5565b90915550506001600160a01b0382165f9081526020819052604081208054839290620003ee908490620005a5565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200046557607f821691505b6020821081036200048457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200043757805f5260205f20601f840160051c81016020851015620004b15750805b601f840160051c820191505b81811015620004d2575f8155600101620004bd565b5050505050565b81516001600160401b03811115620004f557620004f56200043c565b6200050d8162000506845462000450565b846200048a565b602080601f83116001811462000543575f84156200052b5750858301515b5f19600386901b1c1916600185901b1785556200059d565b5f85815260208120601f198616915b82811015620005735788860151825594840194600190910190840162000552565b50858210156200059157878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b80820180821115620005c557634e487b7160e01b5f52601160045260245ffd5b92915050565b608051612460620006155f395f818161033c01528181610f1901528181610fa801528181611ad201528181611af901528181611f0101528181611fb80152611ff401526124605ff3fe608060405260043610610278575f3560e01c80638a8c523c1161014a578063b431dd28116100be578063d85ba06311610078578063d85ba06314610725578063dd62ed3e1461073a578063e2f456051461077e578063e71dc3f514610793578063e8078d94146107a8578063f2fde38b146107b0575f80fd5b8063b431dd2814610667578063b62496f514610686578063bbc0c742146106b4578063c0246668146106d2578063c8c8ebe4146106f1578063d257b34f14610706575f80fd5b8063a457c2d71161010f578063a457c2d7146105cb578063a4c82a00146105ea578063a4d0047d146105ff578063a9059cbb14610614578063aacebbe314610633578063adb873bd14610652575f80fd5b80638a8c523c146105435780638da5cb5b1461055757806395d89b41146105795780639a7a23d61461058d5780639b66731b146105ac575f80fd5b806339509351116101ec5780636b2fb124116101a65780636b2fb124146104b357806370a08231146104c8578063715018a6146104e7578063751039fc146104fb5780637571336a1461050f57806378d527221461052e575f80fd5b8063395093511461041357806349bd5a5e146104325780634a62bb65146104515780635c068a8c1461046a57806366ca9b831461047f5780636a486a8e1461049e575f80fd5b806318160ddd1161023d57806318160ddd1461037657806323b872dd1461039457806327c8f835146103b35780632c3e486c146103c8578063313ce567146103dd57806336a1efe4146103fe575f80fd5b806302dbd8f81461028357806306fdde03146102a4578063095ea7b3146102ce57806310d5de53146102fd5780631694505e1461032b575f80fd5b3661027f57005b5f80fd5b34801561028e575f80fd5b506102a261029d36600461205a565b6107cf565b005b3480156102af575f80fd5b506102b8610831565b6040516102c5919061207a565b60405180910390f35b3480156102d9575f80fd5b506102ed6102e83660046120da565b6108c1565b60405190151581526020016102c5565b348015610308575f80fd5b506102ed610317366004612104565b60196020525f908152604090205460ff1681565b348015610336575f80fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102c5565b348015610381575f80fd5b506002545b6040519081526020016102c5565b34801561039f575f80fd5b506102ed6103ae366004612126565b6108d7565b3480156103be575f80fd5b5061035e61dead81565b3480156103d3575f80fd5b50610386600b5481565b3480156103e8575f80fd5b5060055460405160ff90911681526020016102c5565b348015610409575f80fd5b50610386600a5481565b34801561041e575f80fd5b506102ed61042d3660046120da565b61097f565b34801561043d575f80fd5b5060065461035e906001600160a01b031681565b34801561045c575f80fd5b50600d546102ed9060ff1681565b348015610475575f80fd5b5061038660105481565b34801561048a575f80fd5b506102a261049936600461205a565b6109ba565b3480156104a9575f80fd5b5061038660125481565b3480156104be575f80fd5b5061038660135481565b3480156104d3575f80fd5b506103866104e2366004612104565b610a0f565b3480156104f2575f80fd5b506102a2610a29565b348015610506575f80fd5b506102ed610a64565b34801561051a575f80fd5b506102a2610529366004612164565b610aa6565b348015610539575f80fd5b5061038660165481565b34801561054e575f80fd5b506102a2610b00565b348015610562575f80fd5b5060055461010090046001600160a01b031661035e565b348015610584575f80fd5b506102b8610b45565b348015610598575f80fd5b506102a26105a7366004612164565b610b54565b3480156105b7575f80fd5b506102ed6105c636600461219f565b610c12565b3480156105d6575f80fd5b506102ed6105e53660046120da565b610c67565b3480156105f5575f80fd5b50610386600c5481565b34801561060a575f80fd5b5061038660155481565b34801561061f575f80fd5b506102ed61062e3660046120da565b610cff565b34801561063e575f80fd5b506102a261064d366004612104565b610d0b565b34801561065d575f80fd5b5061038660145481565b348015610672575f80fd5b506102a2610681366004612164565b610d97565b348015610691575f80fd5b506102ed6106a0366004612104565b601a6020525f908152604090205460ff1681565b3480156106bf575f80fd5b50600d546102ed90610100900460ff1681565b3480156106dd575f80fd5b506102a26106ec366004612164565b610e04565b3480156106fc575f80fd5b5061038660085481565b348015610711575f80fd5b506102ed61072036600461219f565b610e92565b348015610730575f80fd5b50610386600f5481565b348015610745575f80fd5b506103866107543660046121b6565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610789575f80fd5b5061038660095481565b34801561079e575f80fd5b5061038660115481565b6102a2610ee7565b3480156107bb575f80fd5b506102a26107ca366004612104565b6110e7565b6005546001600160a01b036101009091041633146108085760405162461bcd60e51b81526004016107ff906121e2565b60405180910390fd5b6013829055601481905561081c818361222b565b60128190556020101561082d575f80fd5b5050565b6060600380546108409061223e565b80601f016020809104026020016040519081016040528092919081815260200182805461086c9061223e565b80156108b75780601f1061088e576101008083540402835291602001916108b7565b820191905f5260205f20905b81548152906001019060200180831161089a57829003601f168201915b5050505050905090565b5f6108cd338484611188565b5060015b92915050565b5f6108e38484846112ab565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156109675760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107ff565b6109748533858403611188565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916108cd9185906109b590869061222b565b611188565b6005546001600160a01b036101009091041633146109ea5760405162461bcd60e51b81526004016107ff906121e2565b601082905560118190556109fe818361222b565b600f8190556014101561082d575f80fd5b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03610100909104163314610a595760405162461bcd60e51b81526004016107ff906121e2565b610a625f611a20565b565b6005545f906001600160a01b03610100909104163314610a965760405162461bcd60e51b81526004016107ff906121e2565b50600d805460ff19169055600190565b6005546001600160a01b03610100909104163314610ad65760405162461bcd60e51b81526004016107ff906121e2565b6001600160a01b03919091165f908152601960205260409020805460ff1916911515919091179055565b6005546001600160a01b03610100909104163314610b305760405162461bcd60e51b81526004016107ff906121e2565b600d805461ff00191661010017905543600e55565b6060600480546108409061223e565b6005546001600160a01b03610100909104163314610b845760405162461bcd60e51b81526004016107ff906121e2565b6006546001600160a01b0390811690831603610c085760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016107ff565b61082d8282611a79565b6005545f906001600160a01b03610100909104163314610c445760405162461bcd60e51b81526004016107ff906121e2565b60018210158015610c56575060808211155b610c5e575f80fd5b50600a55600190565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610ce85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107ff565b610cf53385858403611188565b5060019392505050565b5f6108cd3384846112ab565b6005546001600160a01b03610100909104163314610d3b5760405162461bcd60e51b81526004016107ff906121e2565b6007546040516001600160a01b03918216918316907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc67905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03610100909104163314610dc75760405162461bcd60e51b81526004016107ff906121e2565b6001600160a01b039091165f908152601960209081526040808320805494151560ff19958616811790915560179092529091208054909216179055565b6005546001600160a01b03610100909104163314610e345760405162461bcd60e51b81526004016107ff906121e2565b6001600160a01b0382165f81815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005545f906001600160a01b03610100909104163314610ec45760405162461bcd60e51b81526004016107ff906121e2565b60018210158015610ed6575060808211155b610ede575f80fd5b50600955600190565b6005546001600160a01b03610100909104163314610f175760405162461bcd60e51b81526004016107ff906121e2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f979190612276565b6001600160a01b031663c9c65396307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611002573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110269190612276565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611070573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110949190612276565b600680546001600160a01b0319166001600160a01b039290921691821790556110be906001610aa6565b6006546110d5906001600160a01b03166001611a79565b610a626110e130610a0f565b34611acc565b6005546001600160a01b036101009091041633146111175760405162461bcd60e51b81526004016107ff906121e2565b6001600160a01b03811661117c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ff565b61118581611a20565b50565b6001600160a01b0383166111ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107ff565b6001600160a01b03821661124b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107ff565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112d15760405162461bcd60e51b81526004016107ff90612291565b6001600160a01b0382166112f75760405162461bcd60e51b81526004016107ff906122d6565b805f0361130e5761130983835f611bd5565b505050565b600d54439060ff1615611669576005546001600160a01b03858116610100909204161480159061135157506005546001600160a01b038481166101009092041614155b801561136557506001600160a01b03831615155b801561137c57506001600160a01b03831661dead14155b80156113925750600654600160a01b900460ff16155b1561166957600d54610100900460ff16611428576001600160a01b0384165f9081526017602052604090205460ff16806113e357506001600160a01b0383165f9081526017602052604090205460ff165b6114285760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016107ff565b6001600160a01b0384165f908152601a602052604090205460ff16801561146757506001600160a01b0383165f9081526019602052604090205460ff16155b1561153b576008548211156114dc5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016107ff565b6008546114e884610a0f565b6114f2908461222b565b11156115365760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107ff565b611669565b6001600160a01b0383165f908152601a602052604090205460ff16801561157a57506001600160a01b0384165f9081526019602052604090205460ff16155b156115f0576008548211156115365760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016107ff565b6001600160a01b0383165f9081526019602052604090205460ff166116695760085461161b84610a0f565b611625908461222b565b11156116695760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107ff565b5f61167330610a0f565b600954909150811080159081906116945750600654600160a01b900460ff16155b80156116ae57505f83815260186020526040902054600210155b80156116d257506001600160a01b0386165f908152601a602052604090205460ff16155b80156116f657506001600160a01b0386165f9081526017602052604090205460ff16155b801561171a57506001600160a01b0385165f9081526017602052604090205460ff16155b15611767576006805460ff60a01b1916600160a01b17905561173a611d28565b5f838152601860205260408120805490919061175590612319565b909155506006805460ff60a01b191690555b600654600160a01b900460ff1615801561179857506001600160a01b0385165f908152601a602052604090205460ff165b80156117bc57506001600160a01b0386165f9081526017602052604090205460ff16155b156117c9576117c9611db1565b6006546001600160a01b0387165f9081526017602052604090205460ff600160a01b90920482161591168061181557506001600160a01b0386165f9081526017602052604090205460ff165b1561181d57505f5b5f805f8315611a09576001600160a01b0389165f908152601a602052604090205460ff16801561184e57505f601254115b15611965576064601254896118639190612331565b61186d9190612348565b9250601254601454846118809190612331565b61188a9190612348565b90506118968184612367565b601580549193505f6118a783612319565b90915550506006545f906118c3906001600160a01b0316610a0f565b9050815f0361194857610800811180156118e05750600260155410155b806118fa5750610400811180156118fa5750600460155410155b806119145750610200811180156119145750600860155410155b8061192e57506101008111801561192e5750601060155410155b15611948575f60155560019150611945828561222b565b93505b8860165f828254611959919061222b565b909155506119d8915050565b5f600f5411801561198d57506001600160a01b038a165f908152601a602052604090205460ff165b156119d8576064600f54896119a29190612331565b6119ac9190612348565b9250600f54601154846119bf9190612331565b6119c99190612348565b90506119d58184612367565b91505b81156119e9576119e98a3084611bd5565b80156119fc576119fc8a61dead83611bd5565b611a068389612367565b97505b611a148a8a8a611bd5565b50505050505050505050565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f818152601a6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b611af7307f000000000000000000000000000000000000000000000000000000000000000084611188565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230855f80611b436005546001600160a01b036101009091041690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611ba9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611bce919061237a565b5050505050565b6001600160a01b038316611bfb5760405162461bcd60e51b81526004016107ff90612291565b6001600160a01b038216611c215760405162461bcd60e51b81526004016107ff906122d6565b6001600160a01b0383165f9081526020819052604090205481811015611c985760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107ff565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611cce90849061222b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d1a91815260200190565b60405180910390a350505050565b5f611d3230610a0f565b90505f815f03611d40575050565b600a54821115611d5057600a5491505b81611d5a81611eac565b6007546040516001600160a01b039091169047905f81818185875af1925050503d805f8114611da4576040519150601f19603f3d011682016040523d82523d5f602084013e611da9565b606091505b505050505050565b6006545f90611dc8906001600160a01b0316610a0f565b9050610100811115611185576104006016541015611e0357600b54600c54611df0919061222b565b421015611dfa5750565b42600c55611e08565b5f6016555b600654611e22906001600160a01b031661dead6001611bd5565b6006546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae9916004808301925f92919082900301818387803b158015611e6a575f80fd5b505af1158015611e7c573d5f803e3d5ffd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d92505f9150a15050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611edf57611edf6123a5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f7f9190612276565b81600181518110611f9257611f926123a5565b60200260200101906001600160a01b031690816001600160a01b031681525050611fdd307f000000000000000000000000000000000000000000000000000000000000000084611188565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906120319085905f908690309042906004016123b9565b5f604051808303815f87803b158015612048575f80fd5b505af1158015611da9573d5f803e3d5ffd5b5f806040838503121561206b575f80fd5b50508035926020909101359150565b5f602080835283518060208501525f5b818110156120a65785810183015185820160400152820161208a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611185575f80fd5b5f80604083850312156120eb575f80fd5b82356120f6816120c6565b946020939093013593505050565b5f60208284031215612114575f80fd5b813561211f816120c6565b9392505050565b5f805f60608486031215612138575f80fd5b8335612143816120c6565b92506020840135612153816120c6565b929592945050506040919091013590565b5f8060408385031215612175575f80fd5b8235612180816120c6565b915060208301358015158114612194575f80fd5b809150509250929050565b5f602082840312156121af575f80fd5b5035919050565b5f80604083850312156121c7575f80fd5b82356121d2816120c6565b91506020830135612194816120c6565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156108d1576108d1612217565b600181811c9082168061225257607f821691505b60208210810361227057634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215612286575f80fd5b815161211f816120c6565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f6001820161232a5761232a612217565b5060010190565b80820281158282048414176108d1576108d1612217565b5f8261236257634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156108d1576108d1612217565b5f805f6060848603121561238c575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156124095784516001600160a01b0316835293830193918301916001016123e4565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122091e8a561a874cc4aada804a76db092145af6f3e6d87491a5d069a935ad4a88e664736f6c634300081700334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x608060405260043610610278575f3560e01c80638a8c523c1161014a578063b431dd28116100be578063d85ba06311610078578063d85ba06314610725578063dd62ed3e1461073a578063e2f456051461077e578063e71dc3f514610793578063e8078d94146107a8578063f2fde38b146107b0575f80fd5b8063b431dd2814610667578063b62496f514610686578063bbc0c742146106b4578063c0246668146106d2578063c8c8ebe4146106f1578063d257b34f14610706575f80fd5b8063a457c2d71161010f578063a457c2d7146105cb578063a4c82a00146105ea578063a4d0047d146105ff578063a9059cbb14610614578063aacebbe314610633578063adb873bd14610652575f80fd5b80638a8c523c146105435780638da5cb5b1461055757806395d89b41146105795780639a7a23d61461058d5780639b66731b146105ac575f80fd5b806339509351116101ec5780636b2fb124116101a65780636b2fb124146104b357806370a08231146104c8578063715018a6146104e7578063751039fc146104fb5780637571336a1461050f57806378d527221461052e575f80fd5b8063395093511461041357806349bd5a5e146104325780634a62bb65146104515780635c068a8c1461046a57806366ca9b831461047f5780636a486a8e1461049e575f80fd5b806318160ddd1161023d57806318160ddd1461037657806323b872dd1461039457806327c8f835146103b35780632c3e486c146103c8578063313ce567146103dd57806336a1efe4146103fe575f80fd5b806302dbd8f81461028357806306fdde03146102a4578063095ea7b3146102ce57806310d5de53146102fd5780631694505e1461032b575f80fd5b3661027f57005b5f80fd5b34801561028e575f80fd5b506102a261029d36600461205a565b6107cf565b005b3480156102af575f80fd5b506102b8610831565b6040516102c5919061207a565b60405180910390f35b3480156102d9575f80fd5b506102ed6102e83660046120da565b6108c1565b60405190151581526020016102c5565b348015610308575f80fd5b506102ed610317366004612104565b60196020525f908152604090205460ff1681565b348015610336575f80fd5b5061035e7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102c5565b348015610381575f80fd5b506002545b6040519081526020016102c5565b34801561039f575f80fd5b506102ed6103ae366004612126565b6108d7565b3480156103be575f80fd5b5061035e61dead81565b3480156103d3575f80fd5b50610386600b5481565b3480156103e8575f80fd5b5060055460405160ff90911681526020016102c5565b348015610409575f80fd5b50610386600a5481565b34801561041e575f80fd5b506102ed61042d3660046120da565b61097f565b34801561043d575f80fd5b5060065461035e906001600160a01b031681565b34801561045c575f80fd5b50600d546102ed9060ff1681565b348015610475575f80fd5b5061038660105481565b34801561048a575f80fd5b506102a261049936600461205a565b6109ba565b3480156104a9575f80fd5b5061038660125481565b3480156104be575f80fd5b5061038660135481565b3480156104d3575f80fd5b506103866104e2366004612104565b610a0f565b3480156104f2575f80fd5b506102a2610a29565b348015610506575f80fd5b506102ed610a64565b34801561051a575f80fd5b506102a2610529366004612164565b610aa6565b348015610539575f80fd5b5061038660165481565b34801561054e575f80fd5b506102a2610b00565b348015610562575f80fd5b5060055461010090046001600160a01b031661035e565b348015610584575f80fd5b506102b8610b45565b348015610598575f80fd5b506102a26105a7366004612164565b610b54565b3480156105b7575f80fd5b506102ed6105c636600461219f565b610c12565b3480156105d6575f80fd5b506102ed6105e53660046120da565b610c67565b3480156105f5575f80fd5b50610386600c5481565b34801561060a575f80fd5b5061038660155481565b34801561061f575f80fd5b506102ed61062e3660046120da565b610cff565b34801561063e575f80fd5b506102a261064d366004612104565b610d0b565b34801561065d575f80fd5b5061038660145481565b348015610672575f80fd5b506102a2610681366004612164565b610d97565b348015610691575f80fd5b506102ed6106a0366004612104565b601a6020525f908152604090205460ff1681565b3480156106bf575f80fd5b50600d546102ed90610100900460ff1681565b3480156106dd575f80fd5b506102a26106ec366004612164565b610e04565b3480156106fc575f80fd5b5061038660085481565b348015610711575f80fd5b506102ed61072036600461219f565b610e92565b348015610730575f80fd5b50610386600f5481565b348015610745575f80fd5b506103866107543660046121b6565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610789575f80fd5b5061038660095481565b34801561079e575f80fd5b5061038660115481565b6102a2610ee7565b3480156107bb575f80fd5b506102a26107ca366004612104565b6110e7565b6005546001600160a01b036101009091041633146108085760405162461bcd60e51b81526004016107ff906121e2565b60405180910390fd5b6013829055601481905561081c818361222b565b60128190556020101561082d575f80fd5b5050565b6060600380546108409061223e565b80601f016020809104026020016040519081016040528092919081815260200182805461086c9061223e565b80156108b75780601f1061088e576101008083540402835291602001916108b7565b820191905f5260205f20905b81548152906001019060200180831161089a57829003601f168201915b5050505050905090565b5f6108cd338484611188565b5060015b92915050565b5f6108e38484846112ab565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156109675760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107ff565b6109748533858403611188565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916108cd9185906109b590869061222b565b611188565b6005546001600160a01b036101009091041633146109ea5760405162461bcd60e51b81526004016107ff906121e2565b601082905560118190556109fe818361222b565b600f8190556014101561082d575f80fd5b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03610100909104163314610a595760405162461bcd60e51b81526004016107ff906121e2565b610a625f611a20565b565b6005545f906001600160a01b03610100909104163314610a965760405162461bcd60e51b81526004016107ff906121e2565b50600d805460ff19169055600190565b6005546001600160a01b03610100909104163314610ad65760405162461bcd60e51b81526004016107ff906121e2565b6001600160a01b03919091165f908152601960205260409020805460ff1916911515919091179055565b6005546001600160a01b03610100909104163314610b305760405162461bcd60e51b81526004016107ff906121e2565b600d805461ff00191661010017905543600e55565b6060600480546108409061223e565b6005546001600160a01b03610100909104163314610b845760405162461bcd60e51b81526004016107ff906121e2565b6006546001600160a01b0390811690831603610c085760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016107ff565b61082d8282611a79565b6005545f906001600160a01b03610100909104163314610c445760405162461bcd60e51b81526004016107ff906121e2565b60018210158015610c56575060808211155b610c5e575f80fd5b50600a55600190565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610ce85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107ff565b610cf53385858403611188565b5060019392505050565b5f6108cd3384846112ab565b6005546001600160a01b03610100909104163314610d3b5760405162461bcd60e51b81526004016107ff906121e2565b6007546040516001600160a01b03918216918316907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc67905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03610100909104163314610dc75760405162461bcd60e51b81526004016107ff906121e2565b6001600160a01b039091165f908152601960209081526040808320805494151560ff19958616811790915560179092529091208054909216179055565b6005546001600160a01b03610100909104163314610e345760405162461bcd60e51b81526004016107ff906121e2565b6001600160a01b0382165f81815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005545f906001600160a01b03610100909104163314610ec45760405162461bcd60e51b81526004016107ff906121e2565b60018210158015610ed6575060808211155b610ede575f80fd5b50600955600190565b6005546001600160a01b03610100909104163314610f175760405162461bcd60e51b81526004016107ff906121e2565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f979190612276565b6001600160a01b031663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611002573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110269190612276565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611070573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110949190612276565b600680546001600160a01b0319166001600160a01b039290921691821790556110be906001610aa6565b6006546110d5906001600160a01b03166001611a79565b610a626110e130610a0f565b34611acc565b6005546001600160a01b036101009091041633146111175760405162461bcd60e51b81526004016107ff906121e2565b6001600160a01b03811661117c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ff565b61118581611a20565b50565b6001600160a01b0383166111ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107ff565b6001600160a01b03821661124b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107ff565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112d15760405162461bcd60e51b81526004016107ff90612291565b6001600160a01b0382166112f75760405162461bcd60e51b81526004016107ff906122d6565b805f0361130e5761130983835f611bd5565b505050565b600d54439060ff1615611669576005546001600160a01b03858116610100909204161480159061135157506005546001600160a01b038481166101009092041614155b801561136557506001600160a01b03831615155b801561137c57506001600160a01b03831661dead14155b80156113925750600654600160a01b900460ff16155b1561166957600d54610100900460ff16611428576001600160a01b0384165f9081526017602052604090205460ff16806113e357506001600160a01b0383165f9081526017602052604090205460ff165b6114285760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016107ff565b6001600160a01b0384165f908152601a602052604090205460ff16801561146757506001600160a01b0383165f9081526019602052604090205460ff16155b1561153b576008548211156114dc5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016107ff565b6008546114e884610a0f565b6114f2908461222b565b11156115365760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107ff565b611669565b6001600160a01b0383165f908152601a602052604090205460ff16801561157a57506001600160a01b0384165f9081526019602052604090205460ff16155b156115f0576008548211156115365760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016107ff565b6001600160a01b0383165f9081526019602052604090205460ff166116695760085461161b84610a0f565b611625908461222b565b11156116695760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107ff565b5f61167330610a0f565b600954909150811080159081906116945750600654600160a01b900460ff16155b80156116ae57505f83815260186020526040902054600210155b80156116d257506001600160a01b0386165f908152601a602052604090205460ff16155b80156116f657506001600160a01b0386165f9081526017602052604090205460ff16155b801561171a57506001600160a01b0385165f9081526017602052604090205460ff16155b15611767576006805460ff60a01b1916600160a01b17905561173a611d28565b5f838152601860205260408120805490919061175590612319565b909155506006805460ff60a01b191690555b600654600160a01b900460ff1615801561179857506001600160a01b0385165f908152601a602052604090205460ff165b80156117bc57506001600160a01b0386165f9081526017602052604090205460ff16155b156117c9576117c9611db1565b6006546001600160a01b0387165f9081526017602052604090205460ff600160a01b90920482161591168061181557506001600160a01b0386165f9081526017602052604090205460ff165b1561181d57505f5b5f805f8315611a09576001600160a01b0389165f908152601a602052604090205460ff16801561184e57505f601254115b15611965576064601254896118639190612331565b61186d9190612348565b9250601254601454846118809190612331565b61188a9190612348565b90506118968184612367565b601580549193505f6118a783612319565b90915550506006545f906118c3906001600160a01b0316610a0f565b9050815f0361194857610800811180156118e05750600260155410155b806118fa5750610400811180156118fa5750600460155410155b806119145750610200811180156119145750600860155410155b8061192e57506101008111801561192e5750601060155410155b15611948575f60155560019150611945828561222b565b93505b8860165f828254611959919061222b565b909155506119d8915050565b5f600f5411801561198d57506001600160a01b038a165f908152601a602052604090205460ff165b156119d8576064600f54896119a29190612331565b6119ac9190612348565b9250600f54601154846119bf9190612331565b6119c99190612348565b90506119d58184612367565b91505b81156119e9576119e98a3084611bd5565b80156119fc576119fc8a61dead83611bd5565b611a068389612367565b97505b611a148a8a8a611bd5565b50505050505050505050565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f818152601a6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b611af7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611188565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230855f80611b436005546001600160a01b036101009091041690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611ba9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611bce919061237a565b5050505050565b6001600160a01b038316611bfb5760405162461bcd60e51b81526004016107ff90612291565b6001600160a01b038216611c215760405162461bcd60e51b81526004016107ff906122d6565b6001600160a01b0383165f9081526020819052604090205481811015611c985760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107ff565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611cce90849061222b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d1a91815260200190565b60405180910390a350505050565b5f611d3230610a0f565b90505f815f03611d40575050565b600a54821115611d5057600a5491505b81611d5a81611eac565b6007546040516001600160a01b039091169047905f81818185875af1925050503d805f8114611da4576040519150601f19603f3d011682016040523d82523d5f602084013e611da9565b606091505b505050505050565b6006545f90611dc8906001600160a01b0316610a0f565b9050610100811115611185576104006016541015611e0357600b54600c54611df0919061222b565b421015611dfa5750565b42600c55611e08565b5f6016555b600654611e22906001600160a01b031661dead6001611bd5565b6006546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae9916004808301925f92919082900301818387803b158015611e6a575f80fd5b505af1158015611e7c573d5f803e3d5ffd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d92505f9150a15050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611edf57611edf6123a5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f7f9190612276565b81600181518110611f9257611f926123a5565b60200260200101906001600160a01b031690816001600160a01b031681525050611fdd307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611188565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906120319085905f908690309042906004016123b9565b5f604051808303815f87803b158015612048575f80fd5b505af1158015611da9573d5f803e3d5ffd5b5f806040838503121561206b575f80fd5b50508035926020909101359150565b5f602080835283518060208501525f5b818110156120a65785810183015185820160400152820161208a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611185575f80fd5b5f80604083850312156120eb575f80fd5b82356120f6816120c6565b946020939093013593505050565b5f60208284031215612114575f80fd5b813561211f816120c6565b9392505050565b5f805f60608486031215612138575f80fd5b8335612143816120c6565b92506020840135612153816120c6565b929592945050506040919091013590565b5f8060408385031215612175575f80fd5b8235612180816120c6565b915060208301358015158114612194575f80fd5b809150509250929050565b5f602082840312156121af575f80fd5b5035919050565b5f80604083850312156121c7575f80fd5b82356121d2816120c6565b91506020830135612194816120c6565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156108d1576108d1612217565b600181811c9082168061225257607f821691505b60208210810361227057634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215612286575f80fd5b815161211f816120c6565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f6001820161232a5761232a612217565b5060010190565b80820281158282048414176108d1576108d1612217565b5f8261236257634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156108d1576108d1612217565b5f805f6060848603121561238c575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156124095784516001600160a01b0316835293830193918301916001016123e4565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122091e8a561a874cc4aada804a76db092145af6f3e6d87491a5d069a935ad4a88e664736f6c63430008170033

Deployed Bytecode Sourcemap

12914:12934:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17849:285;;;;;;;;;;-1:-1:-1;17849:285:0;;;;;:::i;:::-;;:::i;:::-;;7971:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8958:194;;;;;;;;;;-1:-1:-1;8958:194:0;;;;;:::i;:::-;;:::i;:::-;;;1441:14:1;;1434:22;1416:41;;1404:2;1389:18;8958:194:0;1276:187:1;13903:63:0;;;;;;;;;;-1:-1:-1;13903:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12958:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1910:32:1;;;1892:51;;1880:2;1865:18;12958:51:0;1720:229:1;8299:108:0;;;;;;;;;;-1:-1:-1;8387:12:0;;8299:108;;;2100:25:1;;;2088:2;2073:18;8299:108:0;1954:177:1;9160:529:0;;;;;;;;;;-1:-1:-1;9160:529:0;;;;;:::i;:::-;;:::i;13051:53::-;;;;;;;;;;;;13097:6;13051:53;;13303:40;;;;;;;;;;;;;;;;8191:100;;;;;;;;;;-1:-1:-1;8274:9:0;;8191:100;;8274:9;;;;2947:36:1;;2935:2;2920:18;8191:100:0;2805:184:1;13266:28:0;;;;;;;;;;;;;;;;9697:290;;;;;;;;;;-1:-1:-1;9697:290:0;;;;;:::i;:::-;;:::i;13016:28::-;;;;;;;;;;-1:-1:-1;13016:28:0;;;;-1:-1:-1;;;;;13016:28:0;;;13388:33;;;;;;;;;;-1:-1:-1;13388:33:0;;;;;;;;13539:29;;;;;;;;;;;;;;;;17563:278;;;;;;;;;;-1:-1:-1;17563:278:0;;;;;:::i;:::-;;:::i;13609:28::-;;;;;;;;;;;;;;;;13644:30;;;;;;;;;;;;;;;;8415:143;;;;;;;;;;-1:-1:-1;8415:143:0;;;;;:::i;:::-;;:::i;6931:103::-;;;;;;;;;;;;;:::i;16571:121::-;;;;;;;;;;;;;:::i;16894:199::-;;;;;;;;;;-1:-1:-1;16894:199:0;;;;;:::i;:::-;;:::i;13749:32::-;;;;;;;;;;;;;;;;16444:119;;;;;;;;;;;;;:::i;6708:87::-;;;;;;;;;;-1:-1:-1;6781:6:0;;;;;-1:-1:-1;;;;;6781:6:0;6708:87;;8079:104;;;;;;;;;;;;;:::i;18332:306::-;;;;;;;;;;-1:-1:-1;18332:306:0;;;;;:::i;:::-;;:::i;17337:218::-;;;;;;;;;;-1:-1:-1;17337:218:0;;;;;:::i;:::-;;:::i;9995:475::-;;;;;;;;;;-1:-1:-1;9995:475:0;;;;;:::i;:::-;;:::i;13350:29::-;;;;;;;;;;;;;;;;13716:26;;;;;;;;;;;;;;;;8566:200;;;;;;;;;;-1:-1:-1;8566:200:0;;;;;:::i;:::-;;:::i;18842:222::-;;;;;;;;;;-1:-1:-1;18842:222:0;;;;;:::i;:::-;;:::i;13681:26::-;;;;;;;;;;;;;;;;16700:186;;;;;;;;;;-1:-1:-1;16700:186:0;;;;;:::i;:::-;;:::i;13975:57::-;;;;;;;;;;-1:-1:-1;13975:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13428:33;;;;;;;;;;-1:-1:-1;13428:33:0;;;;;;;;;;;18142:182;;;;;;;;;;-1:-1:-1;18142:182:0;;;;;:::i;:::-;;:::i;13184:35::-;;;;;;;;;;;;;;;;17101:228;;;;;;;;;;-1:-1:-1;17101:228:0;;;;;:::i;:::-;;:::i;13505:27::-;;;;;;;;;;;;;;;;8774:176;;;;;;;;;;-1:-1:-1;8774:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;8915:18:0;;;8888:7;8915:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8774:176;13226:33;;;;;;;;;;;;;;;;13575:25;;;;;;;;;;;;;;;;15650:415;;;:::i;7042:238::-;;;;;;;;;;-1:-1:-1;7042:238:0;;;;;:::i;:::-;;:::i;17849:285::-;6781:6;;-1:-1:-1;;;;;6781:6:0;;;;;6309:10;6843:23;6835:68;;;;-1:-1:-1;;;6835:68:0;;;;;;;:::i;:::-;;;;;;;;;17968:15:::1;:30:::0;;;18009:11:::1;:22:::0;;;18058:29:::1;18023:8:::0;17986:12;18058:29:::1;:::i;:::-;18042:13;:45:::0;;;18123:2:::1;-1:-1:-1::0;18106:19:0::1;18098:28;;;::::0;::::1;;17849:285:::0;;:::o;7971:100::-;8025:13;8058:5;8051:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7971:100;:::o;8958:194::-;9066:4;9083:39;6309:10;9106:7;9115:6;9083:8;:39::i;:::-;-1:-1:-1;9140:4:0;8958:194;;;;;:::o;9160:529::-;9300:4;9317:36;9327:6;9335:9;9346:6;9317:9;:36::i;:::-;-1:-1:-1;;;;;9393:19:0;;9366:24;9393:19;;;:11;:19;;;;;;;;6309:10;9393:33;;;;;;;;9459:26;;;;9437:116;;;;-1:-1:-1;;;9437:116:0;;5203:2:1;9437:116:0;;;5185:21:1;5242:2;5222:18;;;5215:30;5281:34;5261:18;;;5254:62;-1:-1:-1;;;5332:18:1;;;5325:38;5380:19;;9437:116:0;5001:404:1;9437:116:0;9589:57;9598:6;6309:10;9639:6;9620:16;:25;9589:8;:57::i;:::-;-1:-1:-1;9677:4:0;;9160:529;-1:-1:-1;;;;9160:529:0:o;9697:290::-;6309:10;9810:4;9899:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9899:34:0;;;;;;;;;;9810:4;;9827:130;;9877:7;;9899:47;;9936:10;;9899:47;:::i;:::-;9827:8;:130::i;17563:278::-;6781:6;;-1:-1:-1;;;;;6781:6:0;;;;;6309:10;6843:23;6835:68;;;;-1:-1:-1;;;6835:68:0;;;;;;;:::i;:::-;17681:14:::1;:29:::0;;;17721:10:::1;:21:::0;;;17768:27:::1;17734:8:::0;17698:12;17768:27:::1;:::i;:::-;17753:12;:42:::0;;;17830:2:::1;-1:-1:-1::0;17814:18:0::1;17806:27;;;::::0;::::1;8415:143:::0;-1:-1:-1;;;;;8532:18:0;8505:7;8532:18;;;;;;;;;;;;8415:143::o;6931:103::-;6781:6;;-1:-1:-1;;;;;6781:6:0;;;;;6309:10;6843:23;6835:68;;;;-1:-1:-1;;;6835:68:0;;;;;;;:::i;:::-;6996:30:::1;7023:1;6996:18;:30::i;:::-;6931:103::o:0;16571:121::-;6781:6;;16623:4;;-1:-1:-1;;;;;6781:6:0;;;;;6309:10;6843:23;6835:68;;;;-1:-1:-1;;;6835:68:0;;;;;;;:::i;:::-;-1:-1:-1;16640:14:0::1;:22:::0;;-1:-1:-1;;16640:22:0::1;::::0;;;16571:121;:::o;16894:199::-;6781:6;;-1:-1:-1;;;;;6781:6:0;;;;;6309:10;6843:23;6835:68;;;;-1:-1:-1;;;6835:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17024:48:0;;;::::1;;::::0;;;:31:::1;:48;::::0;;;;:61;;-1:-1:-1;;17024:61:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16894:199::o;16444:119::-;6781:6;;-1:-1:-1;;;;;6781:6:0;;;;;6309:10;6843:23;6835:68;;;;-1:-1:-1;;;6835:68:0;;;;;;;:::i;:::-;16499:13:::1;:20:::0;;-1:-1:-1;;16499:20:0::1;;;::::0;;16543:12:::1;16530:10;:25:::0;16444:119::o;8079:104::-;8135:13;8168:7;8161:14;;;;;:::i;18332:306::-;6781:6;;-1:-1:-1;;;;;6781:6:0;;;;;6309:10;6843:23;6835:68;;;;-1:-1:-1;;;6835:68:0;;;;;;;:::i;:::-;18478:13:::1;::::0;-1:-1:-1;;;;;18478:13:0;;::::1;18470:21:::0;;::::1;::::0;18448:128:::1;;;::::0;-1:-1:-1;;;18448:128:0;;5612:2:1;18448:128:0::1;::::0;::::1;5594:21:1::0;5651:2;5631:18;;;5624:30;5690:34;5670:18;;;5663:62;5761:27;5741:18;;;5734:55;5806:19;;18448:128:0::1;5410:421:1::0;18448:128:0::1;18589:41;18618:4;18624:5;18589:28;:41::i;17337:218::-:0;6781:6;;17429:4;;-1:-1:-1;;;;;6781:6:0;;;;;6309:10;6843:23;6835:68;;;;-1:-1:-1;;;6835:68:0;;;;;;;:::i;:::-;17467:1:::1;17454:9;:14;;:34;;;;;17485:3;17472:9;:16;;17454:34;17446:43;;;::::0;::::1;;-1:-1:-1::0;17500:13:0::1;:25:::0;17543:4:::1;::::0;17337:218::o;9995:475::-;6309:10;10113:4;10157:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10157:34:0;;;;;;;;;;10224:35;;;;10202:122;;;;-1:-1:-1;;;10202:122:0;;6038:2:1;10202:122:0;;;6020:21:1;6077:2;6057:18;;;6050:30;6116:34;6096:18;;;6089:62;-1:-1:-1;;;6167:18:1;;;6160:35;6212:19;;10202:122:0;5836:401:1;10202:122:0;10360:67;6309:10;10383:7;10411:15;10392:16;:34;10360:8;:67::i;:::-;-1:-1:-1;10458:4:0;;9995:475;-1:-1:-1;;;9995:475:0:o;8566:200::-;8677:4;8694:42;6309:10;8718:9;8729:6;8694:9;:42::i;18842:222::-;6781:6;;-1:-1:-1;;;;;6781:6:0;;;;;6309:10;6843:23;6835:68;;;;-1:-1:-1;;;6835:68:0;;;;;;;:::i;:::-;18995:14:::1;::::0;18952:58:::1;::::0;-1:-1:-1;;;;;18995:14:0;;::::1;::::0;18952:58;::::1;::::0;::::1;::::0;18995:14:::1;::::0;18952:58:::1;19021:14;:35:::0;;-1:-1:-1;;;;;;19021:35:0::1;-1:-1:-1::0;;;;;19021:35:0;;;::::1;::::0;;;::::1;::::0;;18842:222::o;16700:186::-;6781:6;;-1:-1:-1;;;;;6781:6:0;;;;;6309:10;6843:23;6835:68;;;;-1:-1:-1;;;6835:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16779:43:0;;::::1;;::::0;;;:31:::1;:43;::::0;;;;;;;:50;;;::::1;;-1:-1:-1::0;;16779:50:0;;::::1;::::0;::::1;::::0;;;16840:19:::1;:31:::0;;;;;;:38;;;;::::1;;::::0;;16700:186::o;18142:182::-;6781:6;;-1:-1:-1;;;;;6781:6:0;;;;;6309:10;6843:23;6835:68;;;;-1:-1:-1;;;6835:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18227:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;18227:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;18282:34;;1416:41:1;;;18282:34:0::1;::::0;1389:18:1;18282:34:0::1;;;;;;;18142:182:::0;;:::o;17101:228::-;6781:6;;17198:4;;-1:-1:-1;;;;;6781:6:0;;;;;6309:10;6843:23;6835:68;;;;-1:-1:-1;;;6835:68:0;;;;;;;:::i;:::-;17236:1:::1;17223:9;:14;;:34;;;;;17254:3;17241:9;:16;;17223:34;17215:43;;;::::0;::::1;;-1:-1:-1::0;17269:18:0::1;:30:::0;17317:4:::1;::::0;17101:228::o;15650:415::-;6781:6;;-1:-1:-1;;;;;6781:6:0;;;;;6309:10;6843:23;6835:68;;;;-1:-1:-1;;;6835:68:0;;;;;;;:::i;:::-;15746:15:::1;-1:-1:-1::0;;;;;15746:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15728:55:0::1;;15806:4;15826:15;-1:-1:-1::0;;;;;15826:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15728:131;::::0;-1:-1:-1;;;;;;15728:131:0::1;::::0;;;;;;-1:-1:-1;;;;;6728:15:1;;;15728:131:0::1;::::0;::::1;6710:34:1::0;6780:15;;6760:18;;;6753:43;6645:18;;15728:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15712:13;:147:::0;;-1:-1:-1;;;;;;15712:147:0::1;-1:-1:-1::0;;;;;15712:147:0;;;::::1;::::0;;::::1;::::0;;15870:55:::1;::::0;-1:-1:-1;15870:25:0::1;:55::i;:::-;15973:13;::::0;15936:58:::1;::::0;-1:-1:-1;;;;;15973:13:0::1;::::0;15936:28:::1;:58::i;:::-;16007:50;16021:24;16039:4;16021:9;:24::i;:::-;16047:9;16007:13;:50::i;7042:238::-:0;6781:6;;-1:-1:-1;;;;;6781:6:0;;;;;6309:10;6843:23;6835:68;;;;-1:-1:-1;;;6835:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7145:22:0;::::1;7123:110;;;::::0;-1:-1:-1;;;7123:110:0;;7009:2:1;7123:110:0::1;::::0;::::1;6991:21:1::0;7048:2;7028:18;;;7021:30;7087:34;7067:18;;;7060:62;-1:-1:-1;;;7138:18:1;;;7131:36;7184:19;;7123:110:0::1;6807:402:1::0;7123:110:0::1;7244:28;7263:8;7244:18;:28::i;:::-;7042:238:::0;:::o;12262:380::-;-1:-1:-1;;;;;12398:19:0;;12390:68;;;;-1:-1:-1;;;12390:68:0;;7416:2:1;12390:68:0;;;7398:21:1;7455:2;7435:18;;;7428:30;7494:34;7474:18;;;7467:62;-1:-1:-1;;;7545:18:1;;;7538:34;7589:19;;12390:68:0;7214:400:1;12390:68:0;-1:-1:-1;;;;;12477:21:0;;12469:68;;;;-1:-1:-1;;;12469:68:0;;7821:2:1;12469:68:0;;;7803:21:1;7860:2;7840:18;;;7833:30;7899:34;7879:18;;;7872:62;-1:-1:-1;;;7950:18:1;;;7943:32;7992:19;;12469:68:0;7619:398:1;12469:68:0;-1:-1:-1;;;;;12550:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12602:32;;2100:25:1;;;12602:32:0;;2073:18:1;12602:32:0;;;;;;;12262:380;;;:::o;19072:5060::-;-1:-1:-1;;;;;19204:18:0;;19196:68;;;;-1:-1:-1;;;19196:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19283:16:0;;19275:64;;;;-1:-1:-1;;;19275:64:0;;;;;;;:::i;:::-;19356:6;19366:1;19356:11;19352:93;;19384:28;19400:4;19406:2;19410:1;19384:15;:28::i;:::-;19072:5060;;;:::o;19352:93::-;19508:14;;19479:12;;19508:14;;19504:1661;;;6781:6;;-1:-1:-1;;;;;19561:15:0;;;6781:6;;;;;19561:15;;;;:49;;-1:-1:-1;6781:6:0;;-1:-1:-1;;;;;19597:13:0;;;6781:6;;;;;19597:13;;19561:49;:86;;;;-1:-1:-1;;;;;;19631:16:0;;;;19561:86;:128;;;;-1:-1:-1;;;;;;19668:21:0;;19682:6;19668:21;;19561:128;:160;;;;-1:-1:-1;19711:10:0;;-1:-1:-1;;;19711:10:0;;;;19710:11;19561:160;19539:1615;;;19761:13;;;;;;;19756:223;;-1:-1:-1;;;;;19833:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;19862:23:0;;;;;;:19;:23;;;;;;;;19833:52;19799:160;;;;-1:-1:-1;;;19799:160:0;;9034:2:1;19799:160:0;;;9016:21:1;9073:2;9053:18;;;9046:30;-1:-1:-1;;;9092:18:1;;;9085:52;9154:18;;19799:160:0;8832:346:1;19799:160:0;-1:-1:-1;;;;;20025:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;20082:35:0;;;;;;:31;:35;;;;;;;;20081:36;20025:92;19999:1140;;;20204:20;;20194:6;:30;;20160:169;;;;-1:-1:-1;;;20160:169:0;;9385:2:1;20160:169:0;;;9367:21:1;9424:2;9404:18;;;9397:30;9463:34;9443:18;;;9436:62;-1:-1:-1;;;9514:18:1;;;9507:51;9575:19;;20160:169:0;9183:417:1;20160:169:0;20412:20;;20395:13;20405:2;20395:9;:13::i;:::-;20386:22;;:6;:22;:::i;:::-;:46;;20352:151;;;;-1:-1:-1;;;20352:151:0;;9807:2:1;20352:151:0;;;9789:21:1;9846:2;9826:18;;;9819:30;-1:-1:-1;;;9865:18:1;;;9858:49;9924:18;;20352:151:0;9605:343:1;20352:151:0;19999:1140;;;-1:-1:-1;;;;;20572:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;20627:37:0;;;;;;:31;:37;;;;;;;;20626:38;20572:92;20546:593;;;20751:20;;20741:6;:30;;20707:170;;;;-1:-1:-1;;;20707:170:0;;10155:2:1;20707:170:0;;;10137:21:1;10194:2;10174:18;;;10167:30;10233:34;10213:18;;;10206:62;-1:-1:-1;;;10284:18:1;;;10277:52;10346:19;;20707:170:0;9953:418:1;20546:593:0;-1:-1:-1;;;;;20908:35:0;;;;;;:31;:35;;;;;;;;20903:236;;21028:20;;21011:13;21021:2;21011:9;:13::i;:::-;21002:22;;:6;:22;:::i;:::-;:46;;20968:151;;;;-1:-1:-1;;;20968:151:0;;9807:2:1;20968:151:0;;;9789:21:1;9846:2;9826:18;;;9819:30;-1:-1:-1;;;9865:18:1;;;9858:49;9924:18;;20968:151:0;9605:343:1;20968:151:0;21177:28;21208:24;21226:4;21208:9;:24::i;:::-;21282:18;;21177:55;;-1:-1:-1;21258:42:0;;;;;;;21331:35;;-1:-1:-1;21356:10:0;;-1:-1:-1;;;21356:10:0;;;;21355:11;21331:35;:83;;;;-1:-1:-1;21384:24:0;;;;:11;:24;;;;;;21412:1;-1:-1:-1;21384:29:0;21331:83;:132;;;;-1:-1:-1;;;;;;21432:31:0;;;;;;:25;:31;;;;;;;;21431:32;21331:132;:175;;;;-1:-1:-1;;;;;;21481:25:0;;;;;;:19;:25;;;;;;;;21480:26;21331:175;:216;;;;-1:-1:-1;;;;;;21524:23:0;;;;;;:19;:23;;;;;;;;21523:24;21331:216;21313:395;;;21574:10;:17;;-1:-1:-1;;;;21574:17:0;-1:-1:-1;;;21574:17:0;;;21608:10;:8;:10::i;:::-;21637:24;;;;:11;:24;;;;;21635:26;;21637:24;;;21635:26;;;:::i;:::-;;;;-1:-1:-1;21678:10:0;:18;;-1:-1:-1;;;;21678:18:0;;;21313:395;21739:10;;-1:-1:-1;;;21739:10:0;;;;21738:11;:57;;;;-1:-1:-1;;;;;;21766:29:0;;;;;;:25;:29;;;;;;;;21738:57;:100;;;;-1:-1:-1;;;;;;21813:25:0;;;;;;:19;:25;;;;;;;;21812:26;21738:100;21720:186;;;21865:29;:27;:29::i;:::-;21934:10;;-1:-1:-1;;;;;21961:25:0;;21918:12;21961:25;;;:19;:25;;;;;;21934:10;-1:-1:-1;;;21934:10:0;;;;;21933:11;;21961:25;;:52;;-1:-1:-1;;;;;;21990:23:0;;;;;;:19;:23;;;;;;;;21961:52;21957:100;;;-1:-1:-1;22040:5:0;21957:100;22069:12;22096:18;22129:14;22330:7;22326:1753;;;-1:-1:-1;;;;;22382:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;22431:1;22415:13;;:17;22382:50;22378:1427;;;22487:3;22470:13;;22461:6;:22;;;;:::i;:::-;22460:30;;;;:::i;:::-;22453:37;;22541:13;;22526:11;;22519:4;:18;;;;:::i;:::-;22518:36;;;;:::i;:::-;22509:45;-1:-1:-1;22586:13:0;22509:45;22586:4;:13;:::i;:::-;22880:11;:13;;22573:26;;-1:-1:-1;22880:11:0;:13;;;:::i;:::-;;;;-1:-1:-1;;22942:13:0;;22912:17;;22932:24;;-1:-1:-1;;;;;22942:13:0;22932:9;:24::i;:::-;22912:44;;22979:6;22989:1;22979:11;22975:490;;23058:4;23046:9;:16;:36;;;;;23081:1;23066:11;;:16;;23046:36;23045:105;;;;23125:4;23113:9;:16;:36;;;;;23148:1;23133:11;;:16;;23113:36;23045:171;;;;23192:3;23180:9;:15;:35;;;;;23214:1;23199:11;;:16;;23180:35;23045:238;;;;23258:3;23246:9;:15;:36;;;;;23280:2;23265:11;;:17;;23246:36;23015:431;;;23348:1;23334:11;:15;23385:1;;-1:-1:-1;23413:9:0;23385:1;23413:9;;:::i;:::-;;;23015:431;23506:6;23485:17;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;22378:1427:0;;-1:-1:-1;;22378:1427:0;;23589:1;23574:12;;:16;:51;;;;-1:-1:-1;;;;;;23594:31:0;;;;;;:25;:31;;;;;;;;23574:51;23570:235;;;23679:3;23663:12;;23654:6;:21;;;;:::i;:::-;23653:29;;;;:::i;:::-;23646:36;;23732:12;;23718:10;;23711:4;:17;;;;:::i;:::-;23710:34;;;;:::i;:::-;23701:43;-1:-1:-1;23776:13:0;23701:43;23776:4;:13;:::i;:::-;23763:26;;23570:235;23825:14;;23821:103;;23860:48;23876:4;23890;23897:10;23860:15;:48::i;:::-;23944:10;;23940:97;;23975:46;23991:4;24005:6;24014;23975:15;:46::i;:::-;24053:14;24063:4;24053:14;;:::i;:::-;;;22326:1753;24091:33;24107:4;24113:2;24117:6;24091:15;:33::i;:::-;19185:4947;;;;;;;19072:5060;;;:::o;7288:191::-;7381:6;;;-1:-1:-1;;;;;7398:17:0;;;7381:6;7398:17;;;-1:-1:-1;;;;;;7398:17:0;;;;;;7431:40;;7381:6;;;;;;;;7431:40;;7362:16;;7431:40;7351:128;7288:191;:::o;18646:188::-;-1:-1:-1;;;;;18729:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;18729:39:0;;;;;;;;;;18786:40;;18729:39;;:31;18786:40;;;18646:188;;:::o;16073:363::-;16155:62;16172:4;16187:15;16205:11;16155:8;:62::i;:::-;16230:15;-1:-1:-1;;;;;16230:31:0;;16269:9;16302:4;16322:11;16348:1;16364;16380:7;6781:6;;-1:-1:-1;;;;;6781:6:0;;;;;;6708:87;16380:7;16230:198;;;;;;-1:-1:-1;;;;;;16230:198:0;;;-1:-1:-1;;;;;11403:15:1;;;16230:198:0;;;11385:34:1;11435:18;;;11428:34;;;;11478:18;;;11471:34;;;;11521:18;;;11514:34;11585:15;;;11564:19;;;11557:44;16402:15:0;11617:19:1;;;11610:35;11319:19;;16230:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16073:363;;:::o;10478:770::-;-1:-1:-1;;;;;10618:20:0;;10610:70;;;;-1:-1:-1;;;10610:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10699:23:0;;10691:71;;;;-1:-1:-1;;;10691:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10859:17:0;;10835:21;10859:17;;;;;;;;;;;10909:23;;;;10887:111;;;;-1:-1:-1;;;10887:111:0;;12169:2:1;10887:111:0;;;12151:21:1;12208:2;12188:18;;;12181:30;12247:34;12227:18;;;12220:62;-1:-1:-1;;;12298:18:1;;;12291:36;12344:19;;10887:111:0;11967:402:1;10887:111:0;-1:-1:-1;;;;;11034:17:0;;;:9;:17;;;;;;;;;;;11054:22;;;11034:42;;11098:20;;;;;;;;:30;;11070:6;;11034:9;11098:30;;11070:6;;11098:30;:::i;:::-;;;;;;;;11163:9;-1:-1:-1;;;;;11146:35:0;11155:6;-1:-1:-1;;;;;11146:35:0;;11174:6;11146:35;;;;2100:25:1;;2088:2;2073:18;;1954:177;11146:35:0;;;;;;;;10599:649;10478:770;;;:::o;24140:517::-;24179:23;24205:24;24223:4;24205:9;:24::i;:::-;24179:50;;24240:12;24269:15;24288:1;24269:20;24265:59;;24306:7;;24140:517::o;24265:59::-;24358:13;;24340:15;:31;24336:95;;;24406:13;;24388:31;;24336:95;24472:15;24500:36;24472:15;24500:16;:36::i;:::-;24571:14;;24563:86;;-1:-1:-1;;;;;24571:14:0;;;;24613:21;;24563:86;;;;24613:21;24571:14;24563:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24140:517:0:o;25148:697::-;25248:13;;25207:28;;25238:24;;-1:-1:-1;;;;;25248:13:0;25238:9;:24::i;:::-;25207:55;;25302:3;25279:20;:26;25275:563;;;25346:4;25326:17;;:24;25322:312;;;25410:15;;25393:14;;:32;;;;:::i;:::-;25375:15;:50;25371:186;;;25450:7;25148:697::o;25371:186::-;25522:15;25505:14;:32;25322:312;;;25617:1;25597:17;:21;25322:312;25666:13;;25650:50;;-1:-1:-1;;;;;25666:13:0;25689:6;25666:13;25650:15;:50::i;:::-;25754:13;;25783:11;;;-1:-1:-1;;;;;;25783:11:0;;;;-1:-1:-1;;;;;25754:13:0;;;;;;25783:9;;:11;;;;;25717:19;;25783:11;;;;;;;25717:19;25754:13;25783:11;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25814:12:0;;;;-1:-1:-1;25814:12:0;;-1:-1:-1;25814:12:0;25307:531;25196:649;25148:697::o;24665:475::-;24755:16;;;24769:1;24755:16;;;;;;;;24731:21;;24755:16;;;;;;;;;;-1:-1:-1;24755:16:0;24731:40;;24800:4;24782;24787:1;24782:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;24782:23:0;;;-1:-1:-1;;;;;24782:23:0;;;;;24826:15;-1:-1:-1;;;;;24826:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24816:4;24821:1;24816:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;24816:32:0;;;-1:-1:-1;;;;;24816:32:0;;;;;24861:62;24878:4;24893:15;24911:11;24861:8;:62::i;:::-;24936:196;;-1:-1:-1;;;24936:196:0;;-1:-1:-1;;;;;24936:15:0;:66;;;;:196;;25017:11;;25043:1;;25059:4;;25086;;25106:15;;24936:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:248:1;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;820:131::-;-1:-1:-1;;;;;895:31:1;;885:42;;875:70;;941:1;938;931:12;956:315;1024:6;1032;1085:2;1073:9;1064:7;1060:23;1056:32;1053:52;;;1101:1;1098;1091:12;1053:52;1140:9;1127:23;1159:31;1184:5;1159:31;:::i;:::-;1209:5;1261:2;1246:18;;;;1233:32;;-1:-1:-1;;;956:315:1:o;1468:247::-;1527:6;1580:2;1568:9;1559:7;1555:23;1551:32;1548:52;;;1596:1;1593;1586:12;1548:52;1635:9;1622:23;1654:31;1679:5;1654:31;:::i;:::-;1704:5;1468:247;-1:-1:-1;;;1468:247:1:o;2136:456::-;2213:6;2221;2229;2282:2;2270:9;2261:7;2257:23;2253:32;2250:52;;;2298:1;2295;2288:12;2250:52;2337:9;2324:23;2356:31;2381:5;2356:31;:::i;:::-;2406:5;-1:-1:-1;2463:2:1;2448:18;;2435:32;2476:33;2435:32;2476:33;:::i;:::-;2136:456;;2528:7;;-1:-1:-1;;;2582:2:1;2567:18;;;;2554:32;;2136:456::o;2994:416::-;3059:6;3067;3120:2;3108:9;3099:7;3095:23;3091:32;3088:52;;;3136:1;3133;3126:12;3088:52;3175:9;3162:23;3194:31;3219:5;3194:31;:::i;:::-;3244:5;-1:-1:-1;3301:2:1;3286:18;;3273:32;3343:15;;3336:23;3324:36;;3314:64;;3374:1;3371;3364:12;3314:64;3397:7;3387:17;;;2994:416;;;;;:::o;3415:180::-;3474:6;3527:2;3515:9;3506:7;3502:23;3498:32;3495:52;;;3543:1;3540;3533:12;3495:52;-1:-1:-1;3566:23:1;;3415:180;-1:-1:-1;3415:180:1:o;3600:388::-;3668:6;3676;3729:2;3717:9;3708:7;3704:23;3700:32;3697:52;;;3745:1;3742;3735:12;3697:52;3784:9;3771:23;3803:31;3828:5;3803:31;:::i;:::-;3853:5;-1:-1:-1;3910:2:1;3895:18;;3882:32;3923:33;3882:32;3923:33;:::i;3993:356::-;4195:2;4177:21;;;4214:18;;;4207:30;4273:34;4268:2;4253:18;;4246:62;4340:2;4325:18;;3993:356::o;4354:127::-;4415:10;4410:3;4406:20;4403:1;4396:31;4446:4;4443:1;4436:15;4470:4;4467:1;4460:15;4486:125;4551:9;;;4572:10;;;4569:36;;;4585:18;;:::i;4616:380::-;4695:1;4691:12;;;;4738;;;4759:61;;4813:4;4805:6;4801:17;4791:27;;4759:61;4866:2;4858:6;4855:14;4835:18;4832:38;4829:161;;4912:10;4907:3;4903:20;4900:1;4893:31;4947:4;4944:1;4937:15;4975:4;4972:1;4965:15;4829:161;;4616:380;;;:::o;6242:251::-;6312:6;6365:2;6353:9;6344:7;6340:23;6336:32;6333:52;;;6381:1;6378;6371:12;6333:52;6413:9;6407:16;6432:31;6457:5;6432:31;:::i;8022:401::-;8224:2;8206:21;;;8263:2;8243:18;;;8236:30;8302:34;8297:2;8282:18;;8275:62;-1:-1:-1;;;8368:2:1;8353:18;;8346:35;8413:3;8398:19;;8022:401::o;8428:399::-;8630:2;8612:21;;;8669:2;8649:18;;;8642:30;8708:34;8703:2;8688:18;;8681:62;-1:-1:-1;;;8774:2:1;8759:18;;8752:33;8817:3;8802:19;;8428:399::o;10376:135::-;10415:3;10436:17;;;10433:43;;10456:18;;:::i;:::-;-1:-1:-1;10503:1:1;10492:13;;10376:135::o;10516:168::-;10589:9;;;10620;;10637:15;;;10631:22;;10617:37;10607:71;;10658:18;;:::i;10689:217::-;10729:1;10755;10745:132;;10799:10;10794:3;10790:20;10787:1;10780:31;10834:4;10831:1;10824:15;10862:4;10859:1;10852:15;10745:132;-1:-1:-1;10891:9:1;;10689:217::o;10911:128::-;10978:9;;;10999:11;;;10996:37;;;11013:18;;:::i;11656:306::-;11744:6;11752;11760;11813:2;11801:9;11792:7;11788:23;11784:32;11781:52;;;11829:1;11826;11819:12;11781:52;11858:9;11852:16;11842:26;;11908:2;11897:9;11893:18;11887:25;11877:35;;11952:2;11941:9;11937:18;11931:25;11921:35;;11656:306;;;;;:::o;12716:127::-;12777:10;12772:3;12768:20;12765:1;12758:31;12808:4;12805:1;12798:15;12832:4;12829:1;12822:15;12848:980;13110:4;13158:3;13147:9;13143:19;13189:6;13178:9;13171:25;13215:2;13253:6;13248:2;13237:9;13233:18;13226:34;13296:3;13291:2;13280:9;13276:18;13269:31;13320:6;13355;13349:13;13386:6;13378;13371:22;13424:3;13413:9;13409:19;13402:26;;13463:2;13455:6;13451:15;13437:29;;13484:1;13494:195;13508:6;13505:1;13502:13;13494:195;;;13573:13;;-1:-1:-1;;;;;13569:39:1;13557:52;;13664:15;;;;13629:12;;;;13605:1;13523:9;13494:195;;;-1:-1:-1;;;;;;;13745:32:1;;;;13740:2;13725:18;;13718:60;-1:-1:-1;;;13809:3:1;13794:19;13787:35;13706:3;12848:980;-1:-1:-1;;;12848:980:1:o

Swarm Source

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