ETH Price: $2,628.63 (+7.98%)
 

Overview

Max Total Supply

1,000,000,000 4EVER

Holders

152

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.886193903555966266 4EVER

Value
$0.00
0xb7E71d697928BAf7110034B1d5F600a02d5A0001
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:
FOREVER

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-31
*/

// https://t.me/ForeverERC

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.17 >=0.8.10 >=0.8.0 <0.9.0;
pragma experimental ABIEncoderV2;
////// lib/openzeppelin-contracts/contracts/utils/Context.sol
// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)

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 _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 FOREVER is ERC20, Ownable {

    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    mapping (address => bool) private snipers;
    bool private swapable;
    address public taxReceiver;
    uint256 public swapTokensAtAmount;
    uint256 public maximumBuyCeilling;
    uint256 public maximumSellCeiling;
    uint256 public maximumWalletLimits;
    bool public limitsOn = true;
    bool public tradeOn = false;
    bool public swapOn = false;

    mapping(address => uint256) private timestampVariable; 
    bool public cooldownEnabled = true;
    uint256 public taxOnBuys;
    uint256 public taxOnSells;
    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 taxReceiverUpdated(address indexed newWallet,address indexed oldWallet);
    event SwapAndLiquify(uint256 tokensSwapped,uint256 ethReceived,uint256 tokensIntoLiquidity);
    event AutoNukeLP();
    event ManualNukeLP();
    event MaxTransactionExclusion(address _address, bool excluded);

    constructor() ERC20("FOREVER", "4EVER") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _excludeFromMaxTransaction(address(uniswapV2Pair),true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 1_000_000_000 * 1e18;
        swapTokensAtAmount = (totalSupply * 5) / 10000; 
        maximumBuyCeilling = (totalSupply * 2) / 100; 
        maximumSellCeiling = (totalSupply * 2) / 100; 
        maximumWalletLimits = (totalSupply * 2) / 100; 
        taxOnBuys = 40; 
        taxOnSells = 40; 
        taxReceiver = address(0x88e3A4DC9377Eb5Bc0Ceb9cB5e1F754f50A632C5); 

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        _excludeFromMaxTransaction(owner(), true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);
        _mint(msg.sender, totalSupply);

    }

    receive() external payable {}

    function enableTrading() external onlyOwner{
        tradeOn = true;
        swapOn = true;
    }

    function liftLimits() external onlyOwner returns (bool) {
        limitsOn = false;
        return true;
    }

    function disableCooldown() external onlyOwner returns (bool) {
        cooldownEnabled = false;
        return true;
    }

    function setSwapTokensAtAmount(uint256 num) external onlyOwner returns (bool) {
        require(num >= (totalSupply() * 1) / 100000," 0.001% max");
        require( num <= (totalSupply() * 5) / 1000," 0.5% max");
        swapTokensAtAmount = num;
        return true;
    }

    function setSwapStatus(bool enabled) external onlyOwner {
        swapOn = enabled;
    }

    function setTaxOnBuys(uint256 taxAmount) external onlyOwner {
        taxOnBuys = taxAmount;
        require(taxAmount < 99,"tax");
    }

    function setTaxOnSells(uint256 taxAmount) external onlyOwner {
        taxOnSells = taxAmount;
        require(taxAmount < 99,"tax");
    }

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

    function _excludeFromMaxTransaction(address addr, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[addr] = isExcluded;
        emit MaxTransactionExclusion(addr, isExcluded);
    }

    function excludeFromMaxTransaction(address addr, bool isEx) external onlyOwner {
        if (!isEx) { 
            require(addr != uniswapV2Pair,"Cannot remove uniswap pair from max txn");
        } _isExcludedMaxTransactionAmount[addr] = isEx;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require( pair != uniswapV2Pair,"!remove automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

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

    function setTaxReceiver(address wallet) external onlyOwner {
        emit taxReceiverUpdated(wallet, taxReceiver);
        taxReceiver = wallet;
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    event BoughtEarly(address indexed sniper);

    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");
        require(!snipers[from] && !snipers[to], "You are a bot");
        if (amount == 0) {super._transfer(from, to, 0); return;}
        if (limitsOn) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapable) {
                if (!tradeOn) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to],"Trading is not active." );
                }
                if (cooldownEnabled) {
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                        require(timestampVariable[tx.origin] < block.number,"Transfer Delay enabled.");
                        timestampVariable[tx.origin] = block.number;
                   }
            } } }
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) {
                    if (limitsOn){require(amount <= maximumBuyCeilling,"Buy transfer amount exceeds the max buy.");
                    } require(amount + balanceOf(to) <= maximumWalletLimits,"Max Wallet Exceeded");
                }
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    if (limitsOn) { require(amount <= maximumSellCeiling,"Sell transfer amount exceeds the max sell.");
                    }
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require( amount + balanceOf(to) <= maximumWalletLimits,"Max Wallet Exceeded" );
                }

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

        if (canSwap && swapOn && !swapable && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapable = true;
            swapBack();
            swapable = false;
        }
        bool takeFee = !swapable;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        uint256 fees = 0;

        if (takeFee) {
            if (automatedMarketMakerPairs[to] && taxOnSells > 0) {
                fees = amount.mul(taxOnSells).div(100);
            }
            else if (automatedMarketMakerPairs[from] && taxOnBuys > 0) {
                fees = amount.mul(taxOnBuys).div(100);
            }
            if (fees > 0) {
                super._transfer(from, address(this), fees);
            } amount -= fees;
        } super._transfer(from, to, amount);
    }

    function manageSniper(address addr, bool blocksniper) public onlyOwner {
        snipers[addr] = blocksniper;
    }
    function ManageBulkSniper(address[] memory blocksnipers) public onlyOwner {
        for (uint256 i = 0; i < blocksnipers.length; i++) {
            snipers[blocksnipers[i]] = true;
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;
        if (contractBalance == 0 ) {return;}
        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }
        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(contractBalance);
        uint256 deltaETH = address(this).balance.sub(initialETHBalance);
        if (deltaETH > 0) {
            (success,) = taxReceiver.call{value: deltaETH}("");
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","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":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","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":"taxReceiverUpdated","type":"event"},{"inputs":[{"internalType":"address[]","name":"blocksnipers","type":"address[]"}],"name":"ManageBulkSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableCooldown","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liftLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"blocksniper","type":"bool"}],"name":"manageSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maximumBuyCeilling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumSellCeiling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumWalletLimits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxAmount","type":"uint256"}],"name":"setTaxOnBuys","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxAmount","type":"uint256"}],"name":"setTaxOnSells","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setTaxReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapOn","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":"taxOnBuys","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxOnSells","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeOn","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"},{"stateMutability":"payable","type":"receive"}]

60c0604052600c805462ffffff19166001908117909155600e805460ff191690911790553480156200003057600080fd5b50604051806040016040528060078152602001662327a922ab22a960c91b815250604051806040016040528060058152602001641a22ab22a960d91b8152508160039081620000809190620006d8565b5060046200008f8282620006d8565b505050620000ac620000a66200037e60201b60201c565b62000382565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa15801562000103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001299190620007a4565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000177573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019d9190620007a4565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620001eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002119190620007a4565b6001600160a01b031660a08190526200022c906001620003d4565b60a0516200023c90600162000437565b6b033b2e3c9fd0803ce800000061271062000259826005620007ec565b6200026591906200080c565b600855606462000277826002620007ec565b6200028391906200080c565b600955606462000295826002620007ec565b620002a191906200080c565b600a556064620002b3826002620007ec565b620002bf91906200080c565b600b556028600f81905560105560078054610100600160a81b0319167488e3a4dc9377eb5bc0ceb9cb5e1f754f50a632c500179055620003136200030b6005546001600160a01b031690565b60016200048b565b620003203060016200048b565b6200032f61dead60016200048b565b6200034e620003466005546001600160a01b031690565b6001620003d4565b6200035b306001620003d4565b6200036a61dead6001620003d4565b6200037633826200054a565b505062000845565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260126020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b038216600081815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620004eb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b038216600081815260116020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005a25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004e2565b8060026000828254620005b691906200082f565b90915550506001600160a01b03821660009081526020819052604081208054839290620005e59084906200082f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200065f57607f821691505b6020821081036200068057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200062f57600081815260208120601f850160051c81016020861015620006af5750805b601f850160051c820191505b81811015620006d057828155600101620006bb565b505050505050565b81516001600160401b03811115620006f457620006f462000634565b6200070c816200070584546200064a565b8462000686565b602080601f8311600181146200074457600084156200072b5750858301515b600019600386901b1c1916600185901b178555620006d0565b600085815260208120601f198616915b82811015620007755788860151825594840194600190910190840162000754565b5085821015620007945787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620007b757600080fd5b81516001600160a01b0381168114620007cf57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620008065762000806620007d6565b92915050565b6000826200082a57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620008065762000806620007d6565b60805160a0516123a06200089c6000396000818161045801528181610c0101528181610d88015261151b01526000818161032b015281816114dd01528181611d4701528181611e000152611e3c01526123a06000f3fe6080604052600436106102605760003560e01c80637571336a11610144578063afa4f3b2116100b6578063dd62ed3e1161007a578063dd62ed3e14610750578063e2f4560514610796578063e6ef73d6146107ac578063f2fde38b146107d1578063f5e457c7146107f1578063f60b3d6d1461080757600080fd5b8063afa4f3b2146106aa578063b62496f5146106ca578063c0246668146106fa578063cd8de42c1461071a578063d3174e921461073a57600080fd5b80638da5cb5b116101085780638da5cb5b146105fd57806395d89b411461061b5780639a7a23d614610630578063a457c2d714610650578063a9059cbb14610670578063a985ceef1461069057600080fd5b80637571336a14610572578063819d38d2146105925780638946b3e0146105b25780638a8c523c146105c85780638d21c814146105dd57600080fd5b806339509351116101dd5780635cbd4553116101a15780635cbd4553146104b35780635f7dbee2146104d25780635fb9340c146104f257806366707e881461050757806370a0823114610527578063715018a61461055d57600080fd5b806339509351146103fa57806342aa81851461041a57806345984eaf1461043057806349bd5a5e146104465780634fbee1931461047a57600080fd5b806318160ddd1161022457806318160ddd146103655780631c42047a1461038457806323b872dd1461039e578063313ce567146103be57806335ed71a8146103da57600080fd5b806306fdde031461026c578063095ea7b3146102975780630a55e0ad146102c757806310d5de53146102e95780631694505e1461031957600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5061028161081c565b60405161028e9190611ebc565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004611f2a565b6108ae565b604051901515815260200161028e565b3480156102d357600080fd5b506102e76102e2366004611f6c565b6108c5565b005b3480156102f557600080fd5b506102b7610304366004612031565b60126020526000908152604090205460ff1681565b34801561032557600080fd5b5061034d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161028e565b34801561037157600080fd5b506002545b60405190815260200161028e565b34801561039057600080fd5b50600c546102b79060ff1681565b3480156103aa57600080fd5b506102b76103b936600461204e565b610964565b3480156103ca57600080fd5b506040516012815260200161028e565b3480156103e657600080fd5b506102e76103f536600461209f565b610a0e565b34801561040657600080fd5b506102b7610415366004611f2a565b610a54565b34801561042657600080fd5b50610376600a5481565b34801561043c57600080fd5b50610376600b5481565b34801561045257600080fd5b5061034d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561048657600080fd5b506102b7610495366004612031565b6001600160a01b031660009081526011602052604090205460ff1690565b3480156104bf57600080fd5b50600c546102b790610100900460ff1681565b3480156104de57600080fd5b506102e76104ed3660046120ba565b610a90565b3480156104fe57600080fd5b506102b7610af8565b34801561051357600080fd5b506102e76105223660046120ba565b610b35565b34801561053357600080fd5b50610376610542366004612031565b6001600160a01b031660009081526020819052604090205490565b34801561056957600080fd5b506102e7610b9a565b34801561057e57600080fd5b506102e761058d3660046120d3565b610bd0565b34801561059e57600080fd5b506102e76105ad3660046120d3565b610cbb565b3480156105be57600080fd5b50610376600f5481565b3480156105d457600080fd5b506102e7610d10565b3480156105e957600080fd5b50600c546102b79062010000900460ff1681565b34801561060957600080fd5b506005546001600160a01b031661034d565b34801561062757600080fd5b50610281610d4d565b34801561063c57600080fd5b506102e761064b3660046120d3565b610d5c565b34801561065c57600080fd5b506102b761066b366004611f2a565b610e1b565b34801561067c57600080fd5b506102b761068b366004611f2a565b610eb4565b34801561069c57600080fd5b50600e546102b79060ff1681565b3480156106b657600080fd5b506102b76106c53660046120ba565b610ec1565b3480156106d657600080fd5b506102b76106e5366004612031565b60136020526000908152604090205460ff1681565b34801561070657600080fd5b506102e76107153660046120d3565b610fb7565b34801561072657600080fd5b506102e7610735366004612031565b611040565b34801561074657600080fd5b5061037660095481565b34801561075c57600080fd5b5061037661076b366004612108565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107a257600080fd5b5061037660085481565b3480156107b857600080fd5b5060075461034d9061010090046001600160a01b031681565b3480156107dd57600080fd5b506102e76107ec366004612031565b6110d2565b3480156107fd57600080fd5b5061037660105481565b34801561081357600080fd5b506102b761116a565b60606003805461082b90612141565b80601f016020809104026020016040519081016040528092919081815260200182805461085790612141565b80156108a45780601f10610879576101008083540402835291602001916108a4565b820191906000526020600020905b81548152906001019060200180831161088757829003601f168201915b5050505050905090565b60006108bb3384846111a7565b5060015b92915050565b6005546001600160a01b031633146108f85760405162461bcd60e51b81526004016108ef9061217b565b60405180910390fd5b60005b81518110156109605760016006600084848151811061091c5761091c6121b0565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610958816121dc565b9150506108fb565b5050565b60006109718484846112cb565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109f65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108ef565b610a0385338584036111a7565b506001949350505050565b6005546001600160a01b03163314610a385760405162461bcd60e51b81526004016108ef9061217b565b600c8054911515620100000262ff000019909216919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108bb918590610a8b9086906121f5565b6111a7565b6005546001600160a01b03163314610aba5760405162461bcd60e51b81526004016108ef9061217b565b600f81905560638110610af55760405162461bcd60e51b81526020600482015260036024820152620e8c2f60eb1b60448201526064016108ef565b50565b6005546000906001600160a01b03163314610b255760405162461bcd60e51b81526004016108ef9061217b565b50600e805460ff19169055600190565b6005546001600160a01b03163314610b5f5760405162461bcd60e51b81526004016108ef9061217b565b601081905560638110610af55760405162461bcd60e51b81526020600482015260036024820152620e8c2f60eb1b60448201526064016108ef565b6005546001600160a01b03163314610bc45760405162461bcd60e51b81526004016108ef9061217b565b610bce6000611a24565b565b6005546001600160a01b03163314610bfa5760405162461bcd60e51b81526004016108ef9061217b565b80610c90577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610c905760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016108ef565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ce55760405162461bcd60e51b81526004016108ef9061217b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d3a5760405162461bcd60e51b81526004016108ef9061217b565b600c805462ffff00191662010100179055565b60606004805461082b90612141565b6005546001600160a01b03163314610d865760405162461bcd60e51b81526004016108ef9061217b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610e115760405162461bcd60e51b815260206004820152602160248201527f2172656d6f7665206175746f6d617465644d61726b65744d616b6572506169726044820152607360f81b60648201526084016108ef565b6109608282611a76565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e9d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108ef565b610eaa33858584036111a7565b5060019392505050565b60006108bb3384846112cb565b6005546000906001600160a01b03163314610eee5760405162461bcd60e51b81526004016108ef9061217b565b620186a0610efb60025490565b610f06906001612208565b610f10919061221f565b821015610f4d5760405162461bcd60e51b815260206004820152600b60248201526a040605c6060624a40dac2f60ab1b60448201526064016108ef565b6103e8610f5960025490565b610f64906005612208565b610f6e919061221f565b821115610fa95760405162461bcd60e51b8152602060048201526009602482015268040605c6a4a40dac2f60bb1b60448201526064016108ef565b50600881905560015b919050565b6005546001600160a01b03163314610fe15760405162461bcd60e51b81526004016108ef9061217b565b6001600160a01b038216600081815260116020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461106a5760405162461bcd60e51b81526004016108ef9061217b565b6007546040516001600160a01b036101009092048216918316907ffa3783310f16fcaaebbe35ace445eb548bf73b4654f2aa32ab2611c7cc67e11990600090a3600780546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6005546001600160a01b031633146110fc5760405162461bcd60e51b81526004016108ef9061217b565b6001600160a01b0381166111615760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108ef565b610af581611a24565b6005546000906001600160a01b031633146111975760405162461bcd60e51b81526004016108ef9061217b565b50600c805460ff19169055600190565b6001600160a01b0383166112095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108ef565b6001600160a01b03821661126a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108ef565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112f15760405162461bcd60e51b81526004016108ef90612241565b6001600160a01b0382166113175760405162461bcd60e51b81526004016108ef90612286565b6001600160a01b03831660009081526006602052604090205460ff1615801561135957506001600160a01b03821660009081526006602052604090205460ff16155b6113955760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b60448201526064016108ef565b806000036113ae576113a983836000611aca565b505050565b600c5460ff16156115c6576005546001600160a01b038481169116148015906113e557506005546001600160a01b03838116911614155b80156113f957506001600160a01b03821615155b801561141057506001600160a01b03821661dead14155b801561141f575060075460ff16155b156115c657600c54610100900460ff166114b7576001600160a01b03831660009081526011602052604090205460ff168061147257506001600160a01b03821660009081526011602052604090205460ff165b6114b75760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108ef565b600e5460ff16156115c6576005546001600160a01b0383811691161480159061151257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561155057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b156115c657326000908152600d602052604090205443116115b35760405162461bcd60e51b815260206004820152601760248201527f5472616e736665722044656c617920656e61626c65642e00000000000000000060448201526064016108ef565b326000908152600d602052604090204390555b6001600160a01b03831660009081526013602052604090205460ff16801561160757506001600160a01b03821660009081526012602052604090205460ff16155b156116e957600c5460ff161561167a5760095481111561167a5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016108ef565b600b546001600160a01b0383166000908152602081905260409020546116a090836121f5565b11156116e45760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b60448201526064016108ef565b611829565b6001600160a01b03821660009081526013602052604090205460ff16801561172a57506001600160a01b03831660009081526012602052604090205460ff16155b1561179f57600c5460ff16156116e457600a548111156116e45760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016108ef565b6001600160a01b03821660009081526012602052604090205460ff1661182957600b546001600160a01b0383166000908152602081905260409020546117e590836121f5565b11156118295760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b60448201526064016108ef565b30600090815260208190526040902054600854811080159081906118555750600c5462010000900460ff165b8015611864575060075460ff16155b801561188957506001600160a01b03851660009081526013602052604090205460ff16155b80156118ae57506001600160a01b03851660009081526011602052604090205460ff16155b80156118d357506001600160a01b03841660009081526011602052604090205460ff16155b156118f8576007805460ff191660011790556118ed611c20565b6007805460ff191690555b6007546001600160a01b03861660009081526011602052604090205460ff9182161591168061193f57506001600160a01b03851660009081526011602052604090205460ff165b15611948575060005b60008115611a10576001600160a01b03861660009081526013602052604090205460ff16801561197a57506000601054115b156119a65761199f606461199960105488611cd190919063ffffffff16565b90611ce4565b90506119f2565b6001600160a01b03871660009081526013602052604090205460ff1680156119d057506000600f54115b156119f2576119ef6064611999600f5488611cd190919063ffffffff16565b90505b8015611a0357611a03873083611aca565b611a0d81866122c9565b94505b611a1b878787611aca565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611af05760405162461bcd60e51b81526004016108ef90612241565b6001600160a01b038216611b165760405162461bcd60e51b81526004016108ef90612286565b6001600160a01b03831660009081526020819052604090205481811015611b8e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108ef565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611bc59084906121f5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c1191815260200190565b60405180910390a35b50505050565b3060009081526020819052604081205490818103611c3c575050565b600854611c4a906014612208565b821115611c6257600854611c5f906014612208565b91505b47611c6c83611cf0565b6000611c784783611eb0565b90508015611c1a576007546040516101009091046001600160a01b0316908290600081818185875af1925050503d8060008114611a1b576040519150601f19603f3d011682016040523d82523d6000602084013e611a1b565b6000611cdd8284612208565b9392505050565b6000611cdd828461221f565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d2557611d256121b0565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc791906122dc565b81600181518110611dda57611dda6121b0565b60200260200101906001600160a01b031690816001600160a01b031681525050611e25307f0000000000000000000000000000000000000000000000000000000000000000846111a7565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611e7a9085906000908690309042906004016122f9565b600060405180830381600087803b158015611e9457600080fd5b505af1158015611ea8573d6000803e3d6000fd5b505050505050565b6000611cdd82846122c9565b600060208083528351808285015260005b81811015611ee957858101830151858201604001528201611ecd565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610af557600080fd5b8035610fb281611f0a565b60008060408385031215611f3d57600080fd5b8235611f4881611f0a565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611f7f57600080fd5b823567ffffffffffffffff80821115611f9757600080fd5b818501915085601f830112611fab57600080fd5b813581811115611fbd57611fbd611f56565b8060051b604051601f19603f83011681018181108582111715611fe257611fe2611f56565b60405291825284820192508381018501918883111561200057600080fd5b938501935b828510156120255761201685611f1f565b84529385019392850192612005565b98975050505050505050565b60006020828403121561204357600080fd5b8135611cdd81611f0a565b60008060006060848603121561206357600080fd5b833561206e81611f0a565b9250602084013561207e81611f0a565b929592945050506040919091013590565b80358015158114610fb257600080fd5b6000602082840312156120b157600080fd5b611cdd8261208f565b6000602082840312156120cc57600080fd5b5035919050565b600080604083850312156120e657600080fd5b82356120f181611f0a565b91506120ff6020840161208f565b90509250929050565b6000806040838503121561211b57600080fd5b823561212681611f0a565b9150602083013561213681611f0a565b809150509250929050565b600181811c9082168061215557607f821691505b60208210810361217557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121ee576121ee6121c6565b5060010190565b808201808211156108bf576108bf6121c6565b80820281158282048414176108bf576108bf6121c6565b60008261223c57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156108bf576108bf6121c6565b6000602082840312156122ee57600080fd5b8151611cdd81611f0a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123495784516001600160a01b031683529383019391830191600101612324565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e805d4e0a350bd3c9ef00e6093c4f957f2c0e57826e1223949810918b557805b64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102605760003560e01c80637571336a11610144578063afa4f3b2116100b6578063dd62ed3e1161007a578063dd62ed3e14610750578063e2f4560514610796578063e6ef73d6146107ac578063f2fde38b146107d1578063f5e457c7146107f1578063f60b3d6d1461080757600080fd5b8063afa4f3b2146106aa578063b62496f5146106ca578063c0246668146106fa578063cd8de42c1461071a578063d3174e921461073a57600080fd5b80638da5cb5b116101085780638da5cb5b146105fd57806395d89b411461061b5780639a7a23d614610630578063a457c2d714610650578063a9059cbb14610670578063a985ceef1461069057600080fd5b80637571336a14610572578063819d38d2146105925780638946b3e0146105b25780638a8c523c146105c85780638d21c814146105dd57600080fd5b806339509351116101dd5780635cbd4553116101a15780635cbd4553146104b35780635f7dbee2146104d25780635fb9340c146104f257806366707e881461050757806370a0823114610527578063715018a61461055d57600080fd5b806339509351146103fa57806342aa81851461041a57806345984eaf1461043057806349bd5a5e146104465780634fbee1931461047a57600080fd5b806318160ddd1161022457806318160ddd146103655780631c42047a1461038457806323b872dd1461039e578063313ce567146103be57806335ed71a8146103da57600080fd5b806306fdde031461026c578063095ea7b3146102975780630a55e0ad146102c757806310d5de53146102e95780631694505e1461031957600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5061028161081c565b60405161028e9190611ebc565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004611f2a565b6108ae565b604051901515815260200161028e565b3480156102d357600080fd5b506102e76102e2366004611f6c565b6108c5565b005b3480156102f557600080fd5b506102b7610304366004612031565b60126020526000908152604090205460ff1681565b34801561032557600080fd5b5061034d7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161028e565b34801561037157600080fd5b506002545b60405190815260200161028e565b34801561039057600080fd5b50600c546102b79060ff1681565b3480156103aa57600080fd5b506102b76103b936600461204e565b610964565b3480156103ca57600080fd5b506040516012815260200161028e565b3480156103e657600080fd5b506102e76103f536600461209f565b610a0e565b34801561040657600080fd5b506102b7610415366004611f2a565b610a54565b34801561042657600080fd5b50610376600a5481565b34801561043c57600080fd5b50610376600b5481565b34801561045257600080fd5b5061034d7f000000000000000000000000445a8701aac2f65929123499fa369ea198205bf381565b34801561048657600080fd5b506102b7610495366004612031565b6001600160a01b031660009081526011602052604090205460ff1690565b3480156104bf57600080fd5b50600c546102b790610100900460ff1681565b3480156104de57600080fd5b506102e76104ed3660046120ba565b610a90565b3480156104fe57600080fd5b506102b7610af8565b34801561051357600080fd5b506102e76105223660046120ba565b610b35565b34801561053357600080fd5b50610376610542366004612031565b6001600160a01b031660009081526020819052604090205490565b34801561056957600080fd5b506102e7610b9a565b34801561057e57600080fd5b506102e761058d3660046120d3565b610bd0565b34801561059e57600080fd5b506102e76105ad3660046120d3565b610cbb565b3480156105be57600080fd5b50610376600f5481565b3480156105d457600080fd5b506102e7610d10565b3480156105e957600080fd5b50600c546102b79062010000900460ff1681565b34801561060957600080fd5b506005546001600160a01b031661034d565b34801561062757600080fd5b50610281610d4d565b34801561063c57600080fd5b506102e761064b3660046120d3565b610d5c565b34801561065c57600080fd5b506102b761066b366004611f2a565b610e1b565b34801561067c57600080fd5b506102b761068b366004611f2a565b610eb4565b34801561069c57600080fd5b50600e546102b79060ff1681565b3480156106b657600080fd5b506102b76106c53660046120ba565b610ec1565b3480156106d657600080fd5b506102b76106e5366004612031565b60136020526000908152604090205460ff1681565b34801561070657600080fd5b506102e76107153660046120d3565b610fb7565b34801561072657600080fd5b506102e7610735366004612031565b611040565b34801561074657600080fd5b5061037660095481565b34801561075c57600080fd5b5061037661076b366004612108565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107a257600080fd5b5061037660085481565b3480156107b857600080fd5b5060075461034d9061010090046001600160a01b031681565b3480156107dd57600080fd5b506102e76107ec366004612031565b6110d2565b3480156107fd57600080fd5b5061037660105481565b34801561081357600080fd5b506102b761116a565b60606003805461082b90612141565b80601f016020809104026020016040519081016040528092919081815260200182805461085790612141565b80156108a45780601f10610879576101008083540402835291602001916108a4565b820191906000526020600020905b81548152906001019060200180831161088757829003601f168201915b5050505050905090565b60006108bb3384846111a7565b5060015b92915050565b6005546001600160a01b031633146108f85760405162461bcd60e51b81526004016108ef9061217b565b60405180910390fd5b60005b81518110156109605760016006600084848151811061091c5761091c6121b0565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610958816121dc565b9150506108fb565b5050565b60006109718484846112cb565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109f65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108ef565b610a0385338584036111a7565b506001949350505050565b6005546001600160a01b03163314610a385760405162461bcd60e51b81526004016108ef9061217b565b600c8054911515620100000262ff000019909216919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108bb918590610a8b9086906121f5565b6111a7565b6005546001600160a01b03163314610aba5760405162461bcd60e51b81526004016108ef9061217b565b600f81905560638110610af55760405162461bcd60e51b81526020600482015260036024820152620e8c2f60eb1b60448201526064016108ef565b50565b6005546000906001600160a01b03163314610b255760405162461bcd60e51b81526004016108ef9061217b565b50600e805460ff19169055600190565b6005546001600160a01b03163314610b5f5760405162461bcd60e51b81526004016108ef9061217b565b601081905560638110610af55760405162461bcd60e51b81526020600482015260036024820152620e8c2f60eb1b60448201526064016108ef565b6005546001600160a01b03163314610bc45760405162461bcd60e51b81526004016108ef9061217b565b610bce6000611a24565b565b6005546001600160a01b03163314610bfa5760405162461bcd60e51b81526004016108ef9061217b565b80610c90577f000000000000000000000000445a8701aac2f65929123499fa369ea198205bf36001600160a01b0316826001600160a01b031603610c905760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016108ef565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ce55760405162461bcd60e51b81526004016108ef9061217b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d3a5760405162461bcd60e51b81526004016108ef9061217b565b600c805462ffff00191662010100179055565b60606004805461082b90612141565b6005546001600160a01b03163314610d865760405162461bcd60e51b81526004016108ef9061217b565b7f000000000000000000000000445a8701aac2f65929123499fa369ea198205bf36001600160a01b0316826001600160a01b031603610e115760405162461bcd60e51b815260206004820152602160248201527f2172656d6f7665206175746f6d617465644d61726b65744d616b6572506169726044820152607360f81b60648201526084016108ef565b6109608282611a76565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e9d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108ef565b610eaa33858584036111a7565b5060019392505050565b60006108bb3384846112cb565b6005546000906001600160a01b03163314610eee5760405162461bcd60e51b81526004016108ef9061217b565b620186a0610efb60025490565b610f06906001612208565b610f10919061221f565b821015610f4d5760405162461bcd60e51b815260206004820152600b60248201526a040605c6060624a40dac2f60ab1b60448201526064016108ef565b6103e8610f5960025490565b610f64906005612208565b610f6e919061221f565b821115610fa95760405162461bcd60e51b8152602060048201526009602482015268040605c6a4a40dac2f60bb1b60448201526064016108ef565b50600881905560015b919050565b6005546001600160a01b03163314610fe15760405162461bcd60e51b81526004016108ef9061217b565b6001600160a01b038216600081815260116020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461106a5760405162461bcd60e51b81526004016108ef9061217b565b6007546040516001600160a01b036101009092048216918316907ffa3783310f16fcaaebbe35ace445eb548bf73b4654f2aa32ab2611c7cc67e11990600090a3600780546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6005546001600160a01b031633146110fc5760405162461bcd60e51b81526004016108ef9061217b565b6001600160a01b0381166111615760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108ef565b610af581611a24565b6005546000906001600160a01b031633146111975760405162461bcd60e51b81526004016108ef9061217b565b50600c805460ff19169055600190565b6001600160a01b0383166112095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108ef565b6001600160a01b03821661126a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108ef565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112f15760405162461bcd60e51b81526004016108ef90612241565b6001600160a01b0382166113175760405162461bcd60e51b81526004016108ef90612286565b6001600160a01b03831660009081526006602052604090205460ff1615801561135957506001600160a01b03821660009081526006602052604090205460ff16155b6113955760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b60448201526064016108ef565b806000036113ae576113a983836000611aca565b505050565b600c5460ff16156115c6576005546001600160a01b038481169116148015906113e557506005546001600160a01b03838116911614155b80156113f957506001600160a01b03821615155b801561141057506001600160a01b03821661dead14155b801561141f575060075460ff16155b156115c657600c54610100900460ff166114b7576001600160a01b03831660009081526011602052604090205460ff168061147257506001600160a01b03821660009081526011602052604090205460ff165b6114b75760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108ef565b600e5460ff16156115c6576005546001600160a01b0383811691161480159061151257507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561155057507f000000000000000000000000445a8701aac2f65929123499fa369ea198205bf36001600160a01b0316826001600160a01b031614155b156115c657326000908152600d602052604090205443116115b35760405162461bcd60e51b815260206004820152601760248201527f5472616e736665722044656c617920656e61626c65642e00000000000000000060448201526064016108ef565b326000908152600d602052604090204390555b6001600160a01b03831660009081526013602052604090205460ff16801561160757506001600160a01b03821660009081526012602052604090205460ff16155b156116e957600c5460ff161561167a5760095481111561167a5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016108ef565b600b546001600160a01b0383166000908152602081905260409020546116a090836121f5565b11156116e45760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b60448201526064016108ef565b611829565b6001600160a01b03821660009081526013602052604090205460ff16801561172a57506001600160a01b03831660009081526012602052604090205460ff16155b1561179f57600c5460ff16156116e457600a548111156116e45760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016108ef565b6001600160a01b03821660009081526012602052604090205460ff1661182957600b546001600160a01b0383166000908152602081905260409020546117e590836121f5565b11156118295760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b60448201526064016108ef565b30600090815260208190526040902054600854811080159081906118555750600c5462010000900460ff165b8015611864575060075460ff16155b801561188957506001600160a01b03851660009081526013602052604090205460ff16155b80156118ae57506001600160a01b03851660009081526011602052604090205460ff16155b80156118d357506001600160a01b03841660009081526011602052604090205460ff16155b156118f8576007805460ff191660011790556118ed611c20565b6007805460ff191690555b6007546001600160a01b03861660009081526011602052604090205460ff9182161591168061193f57506001600160a01b03851660009081526011602052604090205460ff165b15611948575060005b60008115611a10576001600160a01b03861660009081526013602052604090205460ff16801561197a57506000601054115b156119a65761199f606461199960105488611cd190919063ffffffff16565b90611ce4565b90506119f2565b6001600160a01b03871660009081526013602052604090205460ff1680156119d057506000600f54115b156119f2576119ef6064611999600f5488611cd190919063ffffffff16565b90505b8015611a0357611a03873083611aca565b611a0d81866122c9565b94505b611a1b878787611aca565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611af05760405162461bcd60e51b81526004016108ef90612241565b6001600160a01b038216611b165760405162461bcd60e51b81526004016108ef90612286565b6001600160a01b03831660009081526020819052604090205481811015611b8e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108ef565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611bc59084906121f5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c1191815260200190565b60405180910390a35b50505050565b3060009081526020819052604081205490818103611c3c575050565b600854611c4a906014612208565b821115611c6257600854611c5f906014612208565b91505b47611c6c83611cf0565b6000611c784783611eb0565b90508015611c1a576007546040516101009091046001600160a01b0316908290600081818185875af1925050503d8060008114611a1b576040519150601f19603f3d011682016040523d82523d6000602084013e611a1b565b6000611cdd8284612208565b9392505050565b6000611cdd828461221f565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d2557611d256121b0565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc791906122dc565b81600181518110611dda57611dda6121b0565b60200260200101906001600160a01b031690816001600160a01b031681525050611e25307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846111a7565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611e7a9085906000908690309042906004016122f9565b600060405180830381600087803b158015611e9457600080fd5b505af1158015611ea8573d6000803e3d6000fd5b505050505050565b6000611cdd82846122c9565b600060208083528351808285015260005b81811015611ee957858101830151858201604001528201611ecd565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610af557600080fd5b8035610fb281611f0a565b60008060408385031215611f3d57600080fd5b8235611f4881611f0a565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611f7f57600080fd5b823567ffffffffffffffff80821115611f9757600080fd5b818501915085601f830112611fab57600080fd5b813581811115611fbd57611fbd611f56565b8060051b604051601f19603f83011681018181108582111715611fe257611fe2611f56565b60405291825284820192508381018501918883111561200057600080fd5b938501935b828510156120255761201685611f1f565b84529385019392850192612005565b98975050505050505050565b60006020828403121561204357600080fd5b8135611cdd81611f0a565b60008060006060848603121561206357600080fd5b833561206e81611f0a565b9250602084013561207e81611f0a565b929592945050506040919091013590565b80358015158114610fb257600080fd5b6000602082840312156120b157600080fd5b611cdd8261208f565b6000602082840312156120cc57600080fd5b5035919050565b600080604083850312156120e657600080fd5b82356120f181611f0a565b91506120ff6020840161208f565b90509250929050565b6000806040838503121561211b57600080fd5b823561212681611f0a565b9150602083013561213681611f0a565b809150509250929050565b600181811c9082168061215557607f821691505b60208210810361217557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121ee576121ee6121c6565b5060010190565b808201808211156108bf576108bf6121c6565b80820281158282048414176108bf576108bf6121c6565b60008261223c57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156108bf576108bf6121c6565b6000602082840312156122ee57600080fd5b8151611cdd81611f0a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123495784516001600160a01b031683529383019391830191600101612324565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e805d4e0a350bd3c9ef00e6093c4f957f2c0e57826e1223949810918b557805b64736f6c63430008130033

Deployed Bytecode Sourcemap

15186:9463:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2850:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3764:169;;;;;;;;;;-1:-1:-1;3764:169:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;3764:169:0;1162:187:1;23384:200:0;;;;;;;;;;-1:-1:-1;23384:200:0;;;;;:::i;:::-;;:::i;:::-;;15965:63;;;;;;;;;;-1:-1:-1;15965:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15265:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3055:32:1;;;3037:51;;3025:2;3010:18;15265:51:0;2864:230:1;3171:108:0;;;;;;;;;;-1:-1:-1;3259:12:0;;3171:108;;;3245:25:1;;;3233:2;3218:18;3171:108:0;3099:177:1;15638:27:0;;;;;;;;;;-1:-1:-1;15638:27:0;;;;;;;;3941:492;;;;;;;;;;-1:-1:-1;3941:492:0;;;;;:::i;:::-;;:::i;3070:93::-;;;;;;;;;;-1:-1:-1;3070:93:0;;3153:2;3884:36:1;;3872:2;3857:18;3070:93:0;3742:184:1;18567:91:0;;;;;;;;;;-1:-1:-1;18567:91:0;;;;;:::i;:::-;;:::i;4441:215::-;;;;;;;;;;-1:-1:-1;4441:215:0;;;;;:::i;:::-;;:::i;15557:33::-;;;;;;;;;;;;;;;;15597:34;;;;;;;;;;;;;;;;15323:38;;;;;;;;;;;;;;;20206:126;;;;;;;;;;-1:-1:-1;20206:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;20296:28:0;20272:4;20296:28;;;:19;:28;;;;;;;;;20206:126;15672:27;;;;;;;;;;-1:-1:-1;15672:27:0;;;;;;;;;;;18666:140;;;;;;;;;;-1:-1:-1;18666:140:0;;;;;:::i;:::-;;:::i;18148:125::-;;;;;;;;;;;;;:::i;18814:142::-;;;;;;;;;;-1:-1:-1;18814:142:0;;;;;:::i;:::-;;:::i;3287:127::-;;;;;;;;;;-1:-1:-1;3287:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3388:18:0;3361:7;3388:18;;;;;;;;;;;;3287:127;994:109;;;;;;;;;;;;;:::i;19363:254::-;;;;;;;;;;-1:-1:-1;19363:254:0;;;;;:::i;:::-;;:::i;23261:117::-;;;;;;;;;;-1:-1:-1;23261:117:0;;;;;:::i;:::-;;:::i;15843:24::-;;;;;;;;;;;;;;;;17919:100;;;;;;;;;;;;;:::i;15706:26::-;;;;;;;;;;-1:-1:-1;15706:26:0;;;;;;;;;;;767:87;;;;;;;;;;-1:-1:-1;840:6:0;;-1:-1:-1;;;;;840:6:0;767:87;;2958:104;;;;;;;;;;;;;:::i;19625:218::-;;;;;;;;;;-1:-1:-1;19625:218:0;;;;;:::i;:::-;;:::i;4664:413::-;;;;;;;;;;-1:-1:-1;4664:413:0;;;;;:::i;:::-;;:::i;3422:175::-;;;;;;;;;;-1:-1:-1;3422:175:0;;;;;:::i;:::-;;:::i;15802:34::-;;;;;;;;;;-1:-1:-1;15802:34:0;;;;;;;;18281:278;;;;;;;;;;-1:-1:-1;18281:278:0;;;;;:::i;:::-;;:::i;16036:57::-;;;;;;;;;;-1:-1:-1;16036:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18964:182;;;;;;;;;;-1:-1:-1;18964:182:0;;;;;:::i;:::-;;:::i;20045:153::-;;;;;;;;;;-1:-1:-1;20045:153:0;;;;;:::i;:::-;;:::i;15517:33::-;;;;;;;;;;;;;;;;3605:151;;;;;;;;;;-1:-1:-1;3605:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3721:18:0;;;3694:7;3721:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3605:151;15477:33;;;;;;;;;;;;;;;;15444:26;;;;;;;;;;-1:-1:-1;15444:26:0;;;;;;;-1:-1:-1;;;;;15444:26:0;;;1116:207;;;;;;;;;;-1:-1:-1;1116:207:0;;;;;:::i;:::-;;:::i;15874:25::-;;;;;;;;;;;;;;;;18027:113;;;;;;;;;;;;;:::i;2850:100::-;2904:13;2937:5;2930:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2850:100;:::o;3764:169::-;3847:4;3864:39;387:10;3887:7;3896:6;3864:8;:39::i;:::-;-1:-1:-1;3921:4:0;3764:169;;;;;:::o;23384:200::-;840:6;;-1:-1:-1;;;;;840:6:0;387:10;908:23;900:68;;;;-1:-1:-1;;;900:68:0;;;;;;;:::i;:::-;;;;;;;;;23474:9:::1;23469:108;23493:12;:19;23489:1;:23;23469:108;;;23561:4;23534:7;:24;23542:12;23555:1;23542:15;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23534:24:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23534:24:0;:31;;-1:-1:-1;;23534:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23514:3;::::1;::::0;::::1;:::i;:::-;;;;23469:108;;;;23384:200:::0;:::o;3941:492::-;4081:4;4098:36;4108:6;4116:9;4127:6;4098:9;:36::i;:::-;-1:-1:-1;;;;;4174:19:0;;4147:24;4174:19;;;:11;:19;;;;;;;;387:10;4174:33;;;;;;;;4226:26;;;;4218:79;;;;-1:-1:-1;;;4218:79:0;;6739:2:1;4218:79:0;;;6721:21:1;6778:2;6758:18;;;6751:30;6817:34;6797:18;;;6790:62;-1:-1:-1;;;6868:18:1;;;6861:38;6916:19;;4218:79:0;6537:404:1;4218:79:0;4333:57;4342:6;387:10;4383:6;4364:16;:25;4333:8;:57::i;:::-;-1:-1:-1;4421:4:0;;3941:492;-1:-1:-1;;;;3941:492:0:o;18567:91::-;840:6;;-1:-1:-1;;;;;840:6:0;387:10;908:23;900:68;;;;-1:-1:-1;;;900:68:0;;;;;;;:::i;:::-;18634:6:::1;:16:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;18634:16:0;;::::1;::::0;;;::::1;::::0;;18567:91::o;4441:215::-;387:10;4529:4;4578:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4578:34:0;;;;;;;;;;4529:4;;4546:80;;4569:7;;4578:47;;4615:10;;4578:47;:::i;:::-;4546:8;:80::i;18666:140::-;840:6;;-1:-1:-1;;;;;840:6:0;387:10;908:23;900:68;;;;-1:-1:-1;;;900:68:0;;;;;;;:::i;:::-;18737:9:::1;:21:::0;;;18789:2:::1;18777:14:::0;::::1;18769:29;;;::::0;-1:-1:-1;;;18769:29:0;;7278:2:1;18769:29:0::1;::::0;::::1;7260:21:1::0;7317:1;7297:18;;;7290:29;-1:-1:-1;;;7335:18:1;;;7328:33;7378:18;;18769:29:0::1;7076:326:1::0;18769:29:0::1;18666:140:::0;:::o;18148:125::-;840:6;;18203:4;;-1:-1:-1;;;;;840:6:0;387:10;908:23;900:68;;;;-1:-1:-1;;;900:68:0;;;;;;;:::i;:::-;-1:-1:-1;18220:15:0::1;:23:::0;;-1:-1:-1;;18220:23:0::1;::::0;;;18148:125;:::o;18814:142::-;840:6;;-1:-1:-1;;;;;840:6:0;387:10;908:23;900:68;;;;-1:-1:-1;;;900:68:0;;;;;;;:::i;:::-;18886:10:::1;:22:::0;;;18939:2:::1;18927:14:::0;::::1;18919:29;;;::::0;-1:-1:-1;;;18919:29:0;;7278:2:1;18919:29:0::1;::::0;::::1;7260:21:1::0;7317:1;7297:18;;;7290:29;-1:-1:-1;;;7335:18:1;;;7328:33;7378:18;;18919:29:0::1;7076:326:1::0;994:109:0;840:6;;-1:-1:-1;;;;;840:6:0;387:10;908:23;900:68;;;;-1:-1:-1;;;900:68:0;;;;;;;:::i;:::-;1065:30:::1;1092:1;1065:18;:30::i;:::-;994:109::o:0;19363:254::-;840:6;;-1:-1:-1;;;;;840:6:0;387:10;908:23;900:68;;;;-1:-1:-1;;;900:68:0;;;;;;;:::i;:::-;19458:4:::1;19453:111;;19496:13;-1:-1:-1::0;;;;;19488:21:0::1;:4;-1:-1:-1::0;;;;;19488:21:0::1;::::0;19480:72:::1;;;::::0;-1:-1:-1;;;19480:72:0;;7609:2:1;19480:72:0::1;::::0;::::1;7591:21:1::0;7648:2;7628:18;;;7621:30;7687:34;7667:18;;;7660:62;-1:-1:-1;;;7738:18:1;;;7731:37;7785:19;;19480:72:0::1;7407:403:1::0;19480:72:0::1;-1:-1:-1::0;;;;;19565:37:0;;;::::1;;::::0;;;:31:::1;:37;::::0;;;;:44;;-1:-1:-1;;19565:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19363:254::o;23261:117::-;840:6;;-1:-1:-1;;;;;840:6:0;387:10;908:23;900:68;;;;-1:-1:-1;;;900:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23343:13:0;;;::::1;;::::0;;;:7:::1;:13;::::0;;;;:27;;-1:-1:-1;;23343:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23261:117::o;17919:100::-;840:6;;-1:-1:-1;;;;;840:6:0;387:10;908:23;900:68;;;;-1:-1:-1;;;900:68:0;;;;;;;:::i;:::-;17973:7:::1;:14:::0;;-1:-1:-1;;17998:13:0;;;;;17919:100::o;2958:104::-;3014:13;3047:7;3040:14;;;;;:::i;19625:218::-;840:6;;-1:-1:-1;;;;;840:6:0;387:10;908:23;900:68;;;;-1:-1:-1;;;900:68:0;;;;;;;:::i;:::-;19733:13:::1;-1:-1:-1::0;;;;;19725:21:0::1;:4;-1:-1:-1::0;;;;;19725:21:0::1;::::0;19716:67:::1;;;::::0;-1:-1:-1;;;19716:67:0;;8017:2:1;19716:67:0::1;::::0;::::1;7999:21:1::0;8056:2;8036:18;;;8029:30;8095:34;8075:18;;;8068:62;-1:-1:-1;;;8146:18:1;;;8139:31;8187:19;;19716:67:0::1;7815:397:1::0;19716:67:0::1;19794:41;19823:4;19829:5;19794:28;:41::i;4664:413::-:0;387:10;4757:4;4801:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4801:34:0;;;;;;;;;;4854:35;;;;4846:85;;;;-1:-1:-1;;;4846:85:0;;8419:2:1;4846:85:0;;;8401:21:1;8458:2;8438:18;;;8431:30;8497:34;8477:18;;;8470:62;-1:-1:-1;;;8548:18:1;;;8541:35;8593:19;;4846:85:0;8217:401:1;4846:85:0;4967:67;387:10;4990:7;5018:15;4999:16;:34;4967:8;:67::i;:::-;-1:-1:-1;5065:4:0;;4664:413;-1:-1:-1;;;4664:413:0:o;3422:175::-;3508:4;3525:42;387:10;3549:9;3560:6;3525:9;:42::i;18281:278::-;840:6;;18353:4;;-1:-1:-1;;;;;840:6:0;387:10;908:23;900:68;;;;-1:-1:-1;;;900:68:0;;;;;;;:::i;:::-;18407:6:::1;18386:13;3259:12:::0;;;3171:108;18386:13:::1;:17;::::0;18402:1:::1;18386:17;:::i;:::-;18385:28;;;;:::i;:::-;18378:3;:35;;18370:58;;;::::0;-1:-1:-1;;;18370:58:0;;9220:2:1;18370:58:0::1;::::0;::::1;9202:21:1::0;9259:2;9239:18;;;9232:30;-1:-1:-1;;;9278:18:1;;;9271:41;9329:18;;18370:58:0::1;9018:335:1::0;18370:58:0::1;18477:4;18456:13;3259:12:::0;;;3171:108;18456:13:::1;:17;::::0;18472:1:::1;18456:17;:::i;:::-;18455:26;;;;:::i;:::-;18448:3;:33;;18439:55;;;::::0;-1:-1:-1;;;18439:55:0;;9560:2:1;18439:55:0::1;::::0;::::1;9542:21:1::0;9599:1;9579:18;;;9572:29;-1:-1:-1;;;9617:18:1;;;9610:39;9666:18;;18439:55:0::1;9358:332:1::0;18439:55:0::1;-1:-1:-1::0;18505:18:0::1;:24:::0;;;18547:4:::1;979:1;18281:278:::0;;;:::o;18964:182::-;840:6;;-1:-1:-1;;;;;840:6:0;387:10;908:23;900:68;;;;-1:-1:-1;;;900:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19049:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;19049:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19104:34;;1302:41:1;;;19104:34:0::1;::::0;1275:18:1;19104:34:0::1;;;;;;;18964:182:::0;;:::o;20045:153::-;840:6;;-1:-1:-1;;;;;840:6:0;387:10;908:23;900:68;;;;-1:-1:-1;;;900:68:0;;;;;;;:::i;:::-;20147:11:::1;::::0;20120:39:::1;::::0;-1:-1:-1;;;;;20147:11:0::1;::::0;;::::1;::::0;::::1;::::0;20120:39;::::1;::::0;::::1;::::0;;;::::1;20170:11;:20:::0;;-1:-1:-1;;;;;20170:20:0;;::::1;;;-1:-1:-1::0;;;;;;20170:20:0;;::::1;::::0;;;::::1;::::0;;20045:153::o;1116:207::-;840:6;;-1:-1:-1;;;;;840:6:0;387:10;908:23;900:68;;;;-1:-1:-1;;;900:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1211:22:0;::::1;1203:73;;;::::0;-1:-1:-1;;;1203:73:0;;9897:2:1;1203:73:0::1;::::0;::::1;9879:21:1::0;9936:2;9916:18;;;9909:30;9975:34;9955:18;;;9948:62;-1:-1:-1;;;10026:18:1;;;10019:36;10072:19;;1203:73:0::1;9695:402:1::0;1203:73:0::1;1287:28;1306:8;1287:18;:28::i;18027:113::-:0;840:6;;18077:4;;-1:-1:-1;;;;;840:6:0;387:10;908:23;900:68;;;;-1:-1:-1;;;900:68:0;;;;;;;:::i;:::-;-1:-1:-1;18094:8:0::1;:16:::0;;-1:-1:-1;;18094:16:0::1;::::0;;;18027:113;:::o;6842:380::-;-1:-1:-1;;;;;6978:19:0;;6970:68;;;;-1:-1:-1;;;6970:68:0;;10304:2:1;6970:68:0;;;10286:21:1;10343:2;10323:18;;;10316:30;10382:34;10362:18;;;10355:62;-1:-1:-1;;;10433:18:1;;;10426:34;10477:19;;6970:68:0;10102:400:1;6970:68:0;-1:-1:-1;;;;;7057:21:0;;7049:68;;;;-1:-1:-1;;;7049:68:0;;10709:2:1;7049:68:0;;;10691:21:1;10748:2;10728:18;;;10721:30;10787:34;10767:18;;;10760:62;-1:-1:-1;;;10838:18:1;;;10831:32;10880:19;;7049:68:0;10507:398:1;7049:68:0;-1:-1:-1;;;;;7130:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7182:32;;3245:25:1;;;7182:32:0;;3218:18:1;7182:32:0;;;;;;;6842:380;;;:::o;20390:2863::-;-1:-1:-1;;;;;20522:18:0;;20514:68;;;;-1:-1:-1;;;20514:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20601:16:0;;20593:64;;;;-1:-1:-1;;;20593:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20677:13:0;;;;;;:7;:13;;;;;;;;20676:14;:30;;;;-1:-1:-1;;;;;;20695:11:0;;;;;;:7;:11;;;;;;;;20694:12;20676:30;20668:56;;;;-1:-1:-1;;;20668:56:0;;11922:2:1;20668:56:0;;;11904:21:1;11961:2;11941:18;;;11934:30;-1:-1:-1;;;11980:18:1;;;11973:43;12033:18;;20668:56:0;11720:337:1;20668:56:0;20739:6;20749:1;20739:11;20735:56;;20753:28;20769:4;20775:2;20779:1;20753:15;:28::i;:::-;20390:2863;;;:::o;20735:56::-;20805:8;;;;20801:652;;;840:6;;-1:-1:-1;;;;;20834:15:0;;;840:6;;20834:15;;;;:32;;-1:-1:-1;840:6:0;;-1:-1:-1;;;;;20853:13:0;;;840:6;;20853:13;;20834:32;:52;;;;-1:-1:-1;;;;;;20870:16:0;;;;20834:52;:77;;;;-1:-1:-1;;;;;;20890:21:0;;20904:6;20890:21;;20834:77;:90;;;;-1:-1:-1;20916:8:0;;;;20915:9;20834:90;20830:621;;;20950:7;;;;;;;20945:144;;-1:-1:-1;;;;;20990:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;21019:23:0;;;;;;:19;:23;;;;;;;;20990:52;20982:87;;;;-1:-1:-1;;;20982:87:0;;12264:2:1;20982:87:0;;;12246:21:1;12303:2;12283:18;;;12276:30;-1:-1:-1;;;12322:18:1;;;12315:52;12384:18;;20982:87:0;12062:346:1;20982:87:0;21111:15;;;;21107:342;;;840:6;;-1:-1:-1;;;;;21155:13:0;;;840:6;;21155:13;;;;:47;;;21186:15;-1:-1:-1;;;;;21172:30:0;:2;-1:-1:-1;;;;;21172:30:0;;;21155:47;:79;;;;;21220:13;-1:-1:-1;;;;;21206:28:0;:2;-1:-1:-1;;;;;21206:28:0;;;21155:79;21151:283;;;21289:9;21271:28;;;;:17;:28;;;;;;21302:12;-1:-1:-1;21263:78:0;;;;-1:-1:-1;;;21263:78:0;;12615:2:1;21263:78:0;;;12597:21:1;12654:2;12634:18;;;12627:30;12693:25;12673:18;;;12666:53;12736:18;;21263:78:0;12413:347:1;21263:78:0;21386:9;21368:28;;;;:17;:28;;;;;21399:12;21368:43;;21151:283;-1:-1:-1;;;;;21475:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;21511:35:0;;;;;;:31;:35;;;;;;;;21510:36;21475:71;21471:749;;;21576:8;;;;21572:118;;;21604:18;;21594:6;:28;;21586:80;;;;-1:-1:-1;;;21586:80:0;;12967:2:1;21586:80:0;;;12949:21:1;13006:2;12986:18;;;12979:30;13045:34;13025:18;;;13018:62;-1:-1:-1;;;13096:18:1;;;13089:38;13144:19;;21586:80:0;12765:404:1;21586:80:0;21725:19;;-1:-1:-1;;;;;3388:18:0;;3361:7;3388:18;;;;;;;;;;;21699:22;;:6;:22;:::i;:::-;:45;;21691:76;;;;-1:-1:-1;;;21691:76:0;;13376:2:1;21691:76:0;;;13358:21:1;13415:2;13395:18;;;13388:30;-1:-1:-1;;;13434:18:1;;;13427:49;13493:18;;21691:76:0;13174:343:1;21691:76:0;21471:749;;;-1:-1:-1;;;;;21814:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;21848:37:0;;;;;;:31;:37;;;;;;;;21847:38;21814:71;21810:410;;;21914:8;;;;21910:122;;;21944:18;;21934:6;:28;;21926:82;;;;-1:-1:-1;;;21926:82:0;;13724:2:1;21926:82:0;;;13706:21:1;13763:2;13743:18;;;13736:30;13802:34;13782:18;;;13775:62;-1:-1:-1;;;13853:18:1;;;13846:40;13903:19;;21926:82:0;13522:406:1;21810:410:0;-1:-1:-1;;;;;22062:35:0;;;;;;:31;:35;;;;;;;;22057:163;;22157:19;;-1:-1:-1;;;;;3388:18:0;;3361:7;3388:18;;;;;;;;;;;22131:22;;:6;:22;:::i;:::-;:45;;22122:78;;;;-1:-1:-1;;;22122:78:0;;13376:2:1;22122:78:0;;;13358:21:1;13415:2;13395:18;;;13388:30;-1:-1:-1;;;13434:18:1;;;13427:49;13493:18;;22122:78:0;13174:343:1;22122:78:0;22281:4;22232:28;3388:18;;;;;;;;;;;22337;;22313:42;;;;;;;22372:17;;-1:-1:-1;22383:6:0;;;;;;;22372:17;:30;;;;-1:-1:-1;22394:8:0;;;;22393:9;22372:30;:66;;;;-1:-1:-1;;;;;;22407:31:0;;;;;;:25;:31;;;;;;;;22406:32;22372:66;:96;;;;-1:-1:-1;;;;;;22443:25:0;;;;;;:19;:25;;;;;;;;22442:26;22372:96;:124;;;;-1:-1:-1;;;;;;22473:23:0;;;;;;:19;:23;;;;;;;;22472:24;22372:124;22368:228;;;22513:8;:15;;-1:-1:-1;;22513:15:0;22524:4;22513:15;;;22543:10;:8;:10::i;:::-;22568:8;:16;;-1:-1:-1;;22568:16:0;;;22368:228;22622:8;;-1:-1:-1;;;;;22645:25:0;;22606:12;22645:25;;;:19;:25;;;;;;22622:8;;;;22621:9;;22645:25;;:52;;-1:-1:-1;;;;;;22674:23:0;;;;;;:19;:23;;;;;;;;22645:52;22641:100;;;-1:-1:-1;22724:5:0;22641:100;22751:12;22784:7;22780:431;;;-1:-1:-1;;;;;22812:29:0;;;;;;:25;:29;;;;;;;;:47;;;;;22858:1;22845:10;;:14;22812:47;22808:271;;;22887:31;22914:3;22887:22;22898:10;;22887:6;:10;;:22;;;;:::i;:::-;:26;;:31::i;:::-;22880:38;;22808:271;;;-1:-1:-1;;;;;22957:31:0;;;;;;:25;:31;;;;;;;;:48;;;;;23004:1;22992:9;;:13;22957:48;22953:126;;;23033:30;23059:3;23033:21;23044:9;;23033:6;:10;;:21;;;;:::i;:30::-;23026:37;;22953:126;23097:8;;23093:91;;23126:42;23142:4;23156;23163;23126:15;:42::i;:::-;23185:14;23195:4;23185:14;;:::i;:::-;;;22780:431;23212:33;23228:4;23234:2;23238:6;23212:15;:33::i;:::-;20503:2750;;;;20390:2863;;;:::o;1331:197::-;1430:6;;;-1:-1:-1;;;;;1447:17:0;;;-1:-1:-1;;;;;;1447:17:0;;;;;;;1480:40;;1430:6;;;1447:17;1430:6;;1480:40;;1411:16;;1480:40;1400:128;1331:197;:::o;19851:186::-;-1:-1:-1;;;;;19934:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;19934:39:0;;;;;;;;;;19989:40;;19934:39;;:31;19989:40;;;19851:186;;:::o;5085:743::-;-1:-1:-1;;;;;5225:20:0;;5217:70;;;;-1:-1:-1;;;5217:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5306:23:0;;5298:71;;;;-1:-1:-1;;;5298:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5476:17:0;;5452:21;5476:17;;;;;;;;;;;5512:23;;;;5504:74;;;;-1:-1:-1;;;5504:74:0;;14268:2:1;5504:74:0;;;14250:21:1;14307:2;14287:18;;;14280:30;14346:34;14326:18;;;14319:62;-1:-1:-1;;;14397:18:1;;;14390:36;14443:19;;5504:74:0;14066:402:1;5504:74:0;-1:-1:-1;;;;;5614:17:0;;;:9;:17;;;;;;;;;;;5634:22;;;5614:42;;5678:20;;;;;;;;:30;;5650:6;;5614:9;5678:30;;5650:6;;5678:30;:::i;:::-;;;;;;;;5743:9;-1:-1:-1;;;;;5726:35:0;5735:6;-1:-1:-1;;;;;5726:35:0;;5754:6;5726:35;;;;3245:25:1;;3233:2;3218:18;;3099:177;5726:35:0;;;;;;;;5774:46;5206:622;5085:743;;;:::o;24072:574::-;24155:4;24111:23;3388:18;;;;;;;;;;;;24199:20;;;24195:36;;24223:7;;24072:574::o;24195:36::-;24263:18;;:23;;24284:2;24263:23;:::i;:::-;24245:15;:41;24241:115;;;24321:18;;:23;;24342:2;24321:23;:::i;:::-;24303:41;;24241:115;24394:21;24426:33;24443:15;24426:16;:33::i;:::-;24470:16;24489:44;:21;24515:17;24489:25;:44::i;:::-;24470:63;-1:-1:-1;24548:12:0;;24544:95;;24590:11;;:37;;:11;;;;-1:-1:-1;;;;;24590:11:0;;24614:8;;24590:37;;;;24614:8;24590:11;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8871:98;8929:7;8956:5;8960:1;8956;:5;:::i;:::-;8949:12;8871:98;-1:-1:-1;;;8871:98:0:o;8977:::-;9035:7;9062:5;9066:1;9062;:5;:::i;23592:472::-;23682:16;;;23696:1;23682:16;;;;;;;;23658:21;;23682:16;;;;;;;;;;-1:-1:-1;23682:16:0;23658:40;;23727:4;23709;23714:1;23709:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;23709:23:0;;;-1:-1:-1;;;;;23709:23:0;;;;;23753:15;-1:-1:-1;;;;;23753:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23743:4;23748:1;23743:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;23743:32:0;;;-1:-1:-1;;;;;23743:32:0;;;;;23786:62;23803:4;23818:15;23836:11;23786:8;:62::i;:::-;23859:197;;-1:-1:-1;;;23859:197:0;;-1:-1:-1;;;;;23859:15:0;:66;;;;:197;;23940:11;;23966:1;;23983:4;;24010;;24030:15;;23859:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23647:417;23592:472;:::o;8765:98::-;8823:7;8850:5;8854:1;8850;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:127::-;1415:10;1410:3;1406:20;1403:1;1396:31;1446:4;1443:1;1436:15;1470:4;1467:1;1460:15;1486:1121;1570:6;1601:2;1644;1632:9;1623:7;1619:23;1615:32;1612:52;;;1660:1;1657;1650:12;1612:52;1700:9;1687:23;1729:18;1770:2;1762:6;1759:14;1756:34;;;1786:1;1783;1776:12;1756:34;1824:6;1813:9;1809:22;1799:32;;1869:7;1862:4;1858:2;1854:13;1850:27;1840:55;;1891:1;1888;1881:12;1840:55;1927:2;1914:16;1949:2;1945;1942:10;1939:36;;;1955:18;;:::i;:::-;2001:2;1998:1;1994:10;2033:2;2027:9;2096:2;2092:7;2087:2;2083;2079:11;2075:25;2067:6;2063:38;2151:6;2139:10;2136:22;2131:2;2119:10;2116:18;2113:46;2110:72;;;2162:18;;:::i;:::-;2198:2;2191:22;2248:18;;;2282:15;;;;-1:-1:-1;2324:11:1;;;2320:20;;;2352:19;;;2349:39;;;2384:1;2381;2374:12;2349:39;2408:11;;;;2428:148;2444:6;2439:3;2436:15;2428:148;;;2510:23;2529:3;2510:23;:::i;:::-;2498:36;;2461:12;;;;2554;;;;2428:148;;;2595:6;1486:1121;-1:-1:-1;;;;;;;;1486:1121:1:o;2612:247::-;2671:6;2724:2;2712:9;2703:7;2699:23;2695:32;2692:52;;;2740:1;2737;2730:12;2692:52;2779:9;2766:23;2798:31;2823:5;2798:31;:::i;3281:456::-;3358:6;3366;3374;3427:2;3415:9;3406:7;3402:23;3398:32;3395:52;;;3443:1;3440;3433:12;3395:52;3482:9;3469:23;3501:31;3526:5;3501:31;:::i;:::-;3551:5;-1:-1:-1;3608:2:1;3593:18;;3580:32;3621:33;3580:32;3621:33;:::i;:::-;3281:456;;3673:7;;-1:-1:-1;;;3727:2:1;3712:18;;;;3699:32;;3281:456::o;3931:160::-;3996:20;;4052:13;;4045:21;4035:32;;4025:60;;4081:1;4078;4071:12;4096:180;4152:6;4205:2;4193:9;4184:7;4180:23;4176:32;4173:52;;;4221:1;4218;4211:12;4173:52;4244:26;4260:9;4244:26;:::i;4489:180::-;4548:6;4601:2;4589:9;4580:7;4576:23;4572:32;4569:52;;;4617:1;4614;4607:12;4569:52;-1:-1:-1;4640:23:1;;4489:180;-1:-1:-1;4489:180:1:o;4674:315::-;4739:6;4747;4800:2;4788:9;4779:7;4775:23;4771:32;4768:52;;;4816:1;4813;4806:12;4768:52;4855:9;4842:23;4874:31;4899:5;4874:31;:::i;:::-;4924:5;-1:-1:-1;4948:35:1;4979:2;4964:18;;4948:35;:::i;:::-;4938:45;;4674:315;;;;;:::o;4994:388::-;5062:6;5070;5123:2;5111:9;5102:7;5098:23;5094:32;5091:52;;;5139:1;5136;5129:12;5091:52;5178:9;5165:23;5197:31;5222:5;5197:31;:::i;:::-;5247:5;-1:-1:-1;5304:2:1;5289:18;;5276:32;5317:33;5276:32;5317:33;:::i;:::-;5369:7;5359:17;;;4994:388;;;;;:::o;5387:380::-;5466:1;5462:12;;;;5509;;;5530:61;;5584:4;5576:6;5572:17;5562:27;;5530:61;5637:2;5629:6;5626:14;5606:18;5603:38;5600:161;;5683:10;5678:3;5674:20;5671:1;5664:31;5718:4;5715:1;5708:15;5746:4;5743:1;5736:15;5600:161;;5387:380;;;:::o;5772:356::-;5974:2;5956:21;;;5993:18;;;5986:30;6052:34;6047:2;6032:18;;6025:62;6119:2;6104:18;;5772:356::o;6133:127::-;6194:10;6189:3;6185:20;6182:1;6175:31;6225:4;6222:1;6215:15;6249:4;6246:1;6239:15;6265:127;6326:10;6321:3;6317:20;6314:1;6307:31;6357:4;6354:1;6347:15;6381:4;6378:1;6371:15;6397:135;6436:3;6457:17;;;6454:43;;6477:18;;:::i;:::-;-1:-1:-1;6524:1:1;6513:13;;6397:135::o;6946:125::-;7011:9;;;7032:10;;;7029:36;;;7045:18;;:::i;8623:168::-;8696:9;;;8727;;8744:15;;;8738:22;;8724:37;8714:71;;8765:18;;:::i;8796:217::-;8836:1;8862;8852:132;;8906:10;8901:3;8897:20;8894:1;8887:31;8941:4;8938:1;8931:15;8969:4;8966:1;8959:15;8852:132;-1:-1:-1;8998:9:1;;8796:217::o;10910:401::-;11112:2;11094:21;;;11151:2;11131:18;;;11124:30;11190:34;11185:2;11170:18;;11163:62;-1:-1:-1;;;11256:2:1;11241:18;;11234:35;11301:3;11286:19;;10910:401::o;11316:399::-;11518:2;11500:21;;;11557:2;11537:18;;;11530:30;11596:34;11591:2;11576:18;;11569:62;-1:-1:-1;;;11662:2:1;11647:18;;11640:33;11705:3;11690:19;;11316:399::o;13933:128::-;14000:9;;;14021:11;;;14018:37;;;14035:18;;:::i;14683:251::-;14753:6;14806:2;14794:9;14785:7;14781:23;14777:32;14774:52;;;14822:1;14819;14812:12;14774:52;14854:9;14848:16;14873:31;14898:5;14873:31;:::i;14939:980::-;15201:4;15249:3;15238:9;15234:19;15280:6;15269:9;15262:25;15306:2;15344:6;15339:2;15328:9;15324:18;15317:34;15387:3;15382:2;15371:9;15367:18;15360:31;15411:6;15446;15440:13;15477:6;15469;15462:22;15515:3;15504:9;15500:19;15493:26;;15554:2;15546:6;15542:15;15528:29;;15575:1;15585:195;15599:6;15596:1;15593:13;15585:195;;;15664:13;;-1:-1:-1;;;;;15660:39:1;15648:52;;15755:15;;;;15720:12;;;;15696:1;15614:9;15585:195;;;-1:-1:-1;;;;;;;15836:32:1;;;;15831:2;15816:18;;15809:60;-1:-1:-1;;;15900:3:1;15885:19;15878:35;15797:3;14939:980;-1:-1:-1;;;14939:980:1:o

Swarm Source

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