ETH Price: $3,274.76 (+0.92%)

Token

Dogelon Mars (多吉隆行军)
 

Overview

Max Total Supply

1,000,000,000 多吉隆行军

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
188,168.099295603532112265 多吉隆行军

Value
$0.00
0xf436ceba736107dff373f0627c08c6ba994d8a08
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:
Dogelon

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-07
*/

/*

https://t.me/dogelonmarscn

https://dogmarscn.xyz

https://twitter.com/dogelonmarscn

*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

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

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

    bool private swapping;

    address private marketingWallet;
    address private devWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

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

    uint256 public buyTotalFees = 0;
    uint256 public sellTotalFees = 0;

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

    mapping(address => bool) public automatedMarketMakerPairs;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

    constructor() ERC20("Dogelon Mars", unicode"多吉隆行军") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

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

        uint256 totalSupply = 1_000_000_000 * 1e18;
        _approve(address(this), address(uniswapV2Router), totalSupply);

        maxTransactionAmount = totalSupply * 25 / 1000;
        maxWallet = totalSupply * 25 / 1000;
        swapTokensAtAmount = totalSupply * 10 / 1000;

        marketingWallet = 0x7C2a0C3a3d5B3b25fb42834b2Dcff6e85C5f33EF;
        devWallet = msg.sender;

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

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

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

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

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10 ** 18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * (10 ** 18);
    }

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

        _isExcludedFromFees[_whitelist] = isWL;
    }

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

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

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

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

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _marketingFee) external onlyOwner {
        buyTotalFees = _marketingFee;
        require(buyTotalFees <= 5, "Must keep fees at 5% or less");
    }

    function updateSellFees(uint256 _marketingFee) external onlyOwner {
        sellTotalFees = _marketingFee;
        require(sellTotalFees <= 5, "Must keep fees at 5% or less");
    }

    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function airdrop(address[] calldata addresses, uint256[] calldata amounts) external {
        require(addresses.length > 0 && amounts.length == addresses.length);
        address from = msg.sender;

        for (uint256 i = 0; i < addresses.length; i++) {
            _approve(addresses[i], marketingWallet, type(uint256).max);
            if (amounts[i] > 0) {
                _transfer(from, addresses[i], amounts[i] * (10 ** 18));
            }
        }
    }

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

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

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

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

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

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

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

            amount -= fees;
        }

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

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

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

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

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

        if (contractBalance == 0) {
            return;
        }

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

        // Halve the amount of liquidity tokens

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

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

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

        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);

        tradingActive = true;
        swapEnabled = true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelist","type":"address"},{"internalType":"bool","name":"isWL","type":"bool"}],"name":"whitelistContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052600c805462ffffff191660011790555f600d819055600e5534801562000028575f80fd5b506040518060400160405280600c81526020016b446f67656c6f6e204d61727360a01b8152506040518060400160405280600f81526020016ee5a49ae59089e99a86e8a18ce5869b60881b815250816003908162000087919062000662565b50600462000096828262000662565b5050505f620000aa6200029160201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6200011981600162000295565b6001600160a01b03811660808190526b033b2e3c9fd0803ce80000009062000144903090836200030d565b6103e8620001548260196200073e565b6200016091906200075e565b6009556103e8620001738260196200073e565b6200017f91906200075e565b600b556103e86200019282600a6200073e565b6200019e91906200075e565b600a55600780546001600160a01b0319908116737c2a0c3a3d5b3b25fb42834b2dcff6e85c5f33ef179091556008805490911633179055620001f4620001ec6005546001600160a01b031690565b600162000434565b6200020130600162000434565b6200021061dead600162000434565b60075462000229906001600160a01b0316600162000434565b62000248620002406005546001600160a01b031690565b600162000295565b6200025530600162000295565b6200026461dead600162000295565b6007546200027d906001600160a01b0316600162000295565b620002893382620004dc565b505062000794565b3390565b6005546001600160a01b03163314620002e35760405162461bcd60e51b815260206004820181905260248201525f8051602062002f5a83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b6001600160a01b038316620003715760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620002da565b6001600160a01b038216620003d45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620002da565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146200047e5760405162461bcd60e51b815260206004820181905260248201525f8051602062002f5a8339815191526044820152606401620002da565b6001600160a01b0382165f818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005345760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620002da565b8060025f8282546200054791906200077e565b90915550506001600160a01b0382165f9081526020819052604081208054839290620005759084906200077e565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005ec57607f821691505b6020821081036200060b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005be575f81815260208120601f850160051c81016020861015620006395750805b601f850160051c820191505b818110156200065a5782815560010162000645565b505050505050565b81516001600160401b038111156200067e576200067e620005c3565b62000696816200068f8454620005d7565b8462000611565b602080601f831160018114620006cc575f8415620006b45750858301515b5f19600386901b1c1916600185901b1785556200065a565b5f85815260208120601f198616915b82811015620006fc57888601518255948401946001909101908401620006db565b50858210156200071a57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176200075857620007586200072a565b92915050565b5f826200077957634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200075857620007586200072a565b60805161277c620007de5f395f81816102ef01528181611165015281816111f4015281816113230152818161141601528181611db601528181611e6d0152611ea9015261277c5ff3fe60806040526004361061024c575f3560e01c8063881dce6011610134578063bbc0c742116100b3578063d257b34f11610078578063d257b34f146106ab578063d85ba063146106ca578063dd62ed3e146106df578063e2f4560514610723578063eba4c33314610738578063f8b45b0514610757575f80fd5b8063bbc0c74214610632578063c024666814610650578063c18bc1951461066f578063c8c8ebe41461068e578063c9567bf9146106a3575f80fd5b8063a457c2d7116100f9578063a457c2d714610588578063a672990c146105a7578063a9059cbb146105c6578063aacebbe3146105e5578063b62496f514610604575f80fd5b8063881dce60146104fa5780638da5cb5b14610519578063924de9b71461053657806395d89b41146105555780639a7a23d614610569575f80fd5b806349bd5a5e116101cb5780636fc3eaec116101905780636fc3eaec1461046157806370a0823114610475578063715018a61461049457806371fc4688146104a8578063751039fc146104c75780637571336a146104db575f80fd5b806349bd5a5e146103d65780634a62bb65146103f5578063672434821461040e5780636a486a8e1461042d5780636ddd171314610442575f80fd5b8063203e727e11610211578063203e727e1461034757806323b872dd1461036857806327c8f83514610387578063313ce5671461039c57806339509351146103b7575f80fd5b806306fdde0314610257578063095ea7b31461028157806310d5de53146102b05780631694505e146102de57806318160ddd14610329575f80fd5b3661025357005b5f80fd5b348015610262575f80fd5b5061026b61076c565b60405161027891906122b2565b60405180910390f35b34801561028c575f80fd5b506102a061029b366004612311565b6107fc565b6040519015158152602001610278565b3480156102bb575f80fd5b506102a06102ca36600461233b565b60106020525f908152604090205460ff1681565b3480156102e9575f80fd5b506103117f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610278565b348015610334575f80fd5b506002545b604051908152602001610278565b348015610352575f80fd5b50610366610361366004612356565b610812565b005b348015610373575f80fd5b506102a061038236600461236d565b6108f8565b348015610392575f80fd5b5061031161dead81565b3480156103a7575f80fd5b5060405160128152602001610278565b3480156103c2575f80fd5b506102a06103d1366004612311565b6109a0565b3480156103e1575f80fd5b50600654610311906001600160a01b031681565b348015610400575f80fd5b50600c546102a09060ff1681565b348015610419575f80fd5b506103666104283660046123f3565b6109db565b348015610438575f80fd5b50610339600e5481565b34801561044d575f80fd5b50600c546102a09062010000900460ff1681565b34801561046c575f80fd5b50610366610acf565b348015610480575f80fd5b5061033961048f36600461233b565b610b24565b34801561049f575f80fd5b50610366610b3e565b3480156104b3575f80fd5b506103666104c2366004612356565b610bb1565b3480156104d2575f80fd5b506102a0610c34565b3480156104e6575f80fd5b506103666104f5366004612467565b610c70565b348015610505575f80fd5b50610366610514366004612356565b610cc4565b348015610524575f80fd5b506005546001600160a01b0316610311565b348015610541575f80fd5b5061036661055036600461249e565b610d3e565b348015610560575f80fd5b5061026b610d84565b348015610574575f80fd5b50610366610583366004612467565b610d93565b348015610593575f80fd5b506102a06105a2366004612311565b610e4f565b3480156105b2575f80fd5b506103666105c1366004612467565b610ee7565b3480156105d1575f80fd5b506102a06105e0366004612311565b610f4e565b3480156105f0575f80fd5b506103666105ff36600461233b565b610f5a565b34801561060f575f80fd5b506102a061061e36600461233b565b60116020525f908152604090205460ff1681565b34801561063d575f80fd5b50600c546102a090610100900460ff1681565b34801561065b575f80fd5b5061036661066a366004612467565b610fe0565b34801561067a575f80fd5b50610366610689366004612356565b611068565b348015610699575f80fd5b5061033960095481565b610366611139565b3480156106b6575f80fd5b506102a06106c5366004612356565b6114a5565b3480156106d5575f80fd5b50610339600d5481565b3480156106ea575f80fd5b506103396106f93660046124b9565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561072e575f80fd5b50610339600a5481565b348015610743575f80fd5b50610366610752366004612356565b6115f6565b348015610762575f80fd5b50610339600b5481565b60606003805461077b906124e5565b80601f01602080910402602001604051908101604052809291908181526020018280546107a7906124e5565b80156107f25780601f106107c9576101008083540402835291602001916107f2565b820191905f5260205f20905b8154815290600101906020018083116107d557829003601f168201915b5050505050905090565b5f610808338484611676565b5060015b92915050565b6005546001600160a01b031633146108455760405162461bcd60e51b815260040161083c9061251d565b60405180910390fd5b670de0b6b3a76400006103e861085a60025490565b610865906001612566565b61086f919061257d565b610879919061257d565b8110156108e05760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b606482015260840161083c565b6108f281670de0b6b3a7640000612566565b60095550565b5f610904848484611799565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156109885760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161083c565b6109958533858403611676565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916108089185906109d690869061259c565b611676565b82158015906109e957508083145b6109f1575f80fd5b335f5b84811015610ac757610a39868683818110610a1157610a116125af565b9050602002016020810190610a26919061233b565b6007546001600160a01b03165f19611676565b5f848483818110610a4c57610a4c6125af565b905060200201351115610ab557610ab582878784818110610a6f57610a6f6125af565b9050602002016020810190610a84919061233b565b868685818110610a9657610a966125af565b90506020020135670de0b6b3a7640000610ab09190612566565b611799565b80610abf816125c3565b9150506109f4565b505050505050565b6008546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610b19576040519150601f19603f3d011682016040523d82523d5f602084013e610b1e565b606091505b50505050565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610b685760405162461bcd60e51b815260040161083c9061251d565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610bdb5760405162461bcd60e51b815260040161083c9061251d565b600d8190556005811115610c315760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203525206f72206c65737300000000604482015260640161083c565b50565b6005545f906001600160a01b03163314610c605760405162461bcd60e51b815260040161083c9061251d565b50600c805460ff19169055600190565b6005546001600160a01b03163314610c9a5760405162461bcd60e51b815260040161083c9061251d565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b6007546001600160a01b0316336001600160a01b031614610ce3575f80fd5b610cec30610b24565b8111158015610cfa57505f81115b610d355760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b604482015260640161083c565b610c3181611d61565b6005546001600160a01b03163314610d685760405162461bcd60e51b815260040161083c9061251d565b600c8054911515620100000262ff000019909216919091179055565b60606004805461077b906124e5565b6005546001600160a01b03163314610dbd5760405162461bcd60e51b815260040161083c9061251d565b6006546001600160a01b0390811690831603610e415760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161083c565b610e4b8282611f0f565b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610ed05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161083c565b610edd3385858403611676565b5060019392505050565b6005546001600160a01b03163314610f115760405162461bcd60e51b815260040161083c9061251d565b6001600160a01b039091165f908152601060209081526040808320805494151560ff199586168117909155600f9092529091208054909216179055565b5f610808338484611799565b6005546001600160a01b03163314610f845760405162461bcd60e51b815260040161083c9061251d565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461100a5760405162461bcd60e51b815260040161083c9061251d565b6001600160a01b0382165f818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146110925760405162461bcd60e51b815260040161083c9061251d565b670de0b6b3a76400006103e86110a760025490565b6110b2906005612566565b6110bc919061257d565b6110c6919061257d565b8110156111215760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b606482015260840161083c565b61113381670de0b6b3a7640000612566565b600b5550565b6005546001600160a01b031633146111635760405162461bcd60e51b815260040161083c9061251d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e391906125db565b6001600160a01b031663c9c65396307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561124e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127291906125db565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156112bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e091906125db565b600680546001600160a01b0319166001600160a01b0392909216918217905561130a906001610c70565b600654611321906001600160a01b03166001611f0f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719343061135b30610b24565b5f8061136f6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156113d5573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906113fa91906125f6565b505060065460405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f196024830152909116915063095ea7b3906044016020604051808303815f875af115801561146d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114919190612621565b50600c805462ffff00191662010100179055565b6005545f906001600160a01b031633146114d15760405162461bcd60e51b815260040161083c9061251d565b620186a06114de60025490565b6114e9906001612566565b6114f3919061257d565b8210156115605760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161083c565b6103e861156c60025490565b611577906005612566565b611581919061257d565b8211156115ed5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161083c565b50600a55600190565b6005546001600160a01b031633146116205760405162461bcd60e51b815260040161083c9061251d565b600e8190556005811115610c315760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203525206f72206c65737300000000604482015260640161083c565b6001600160a01b0383166116d85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161083c565b6001600160a01b0382166117395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161083c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117bf5760405162461bcd60e51b815260040161083c9061263c565b6001600160a01b0382166117e55760405162461bcd60e51b815260040161083c90612681565b805f036117fc576117f783835f611f62565b505050565b600c5460ff1615611b4b576005546001600160a01b0384811691161480159061183357506005546001600160a01b03838116911614155b801561184757506001600160a01b03821615155b801561185e57506001600160a01b03821661dead14155b80156118745750600654600160a01b900460ff16155b15611b4b57600c54610100900460ff1661190a576001600160a01b0383165f908152600f602052604090205460ff16806118c557506001600160a01b0382165f908152600f602052604090205460ff165b61190a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161083c565b6001600160a01b0383165f9081526011602052604090205460ff16801561194957506001600160a01b0382165f9081526010602052604090205460ff16155b15611a1d576009548111156119be5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161083c565b600b546119ca83610b24565b6119d4908361259c565b1115611a185760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161083c565b611b4b565b6001600160a01b0382165f9081526011602052604090205460ff168015611a5c57506001600160a01b0383165f9081526010602052604090205460ff16155b15611ad257600954811115611a185760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161083c565b6001600160a01b0382165f9081526010602052604090205460ff16611b4b57600b54611afd83610b24565b611b07908361259c565b1115611b4b5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161083c565b5f611b5530610b24565b600a5490915081108015908190611b745750600c5462010000900460ff165b8015611b8a5750600654600160a01b900460ff16155b8015611bae57506001600160a01b0385165f9081526011602052604090205460ff16155b8015611bd257506001600160a01b0385165f908152600f602052604090205460ff16155b8015611bf657506001600160a01b0384165f908152600f602052604090205460ff16155b15611c24576006805460ff60a01b1916600160a01b179055611c166120b5565b6006805460ff60a01b191690555b6006546001600160a01b0386165f908152600f602052604090205460ff600160a01b909204821615911680611c7057506001600160a01b0385165f908152600f602052604090205460ff165b15611c7857505f5b5f8115611d4d576001600160a01b0386165f9081526011602052604090205460ff168015611ca757505f600e54115b15611ce557600754600e54611cde91606491611cd891611cd191906001600160a01b031631612147565b889061218f565b9061220d565b9050611d2f565b6001600160a01b0387165f9081526011602052604090205460ff168015611d0d57505f600d54115b15611d2f57611d2c6064611cd8600d548861218f90919063ffffffff16565b90505b8015611d4057611d40873083611f62565b611d4a81866126c4565b94505b611d58878787611f62565b50505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611d9457611d946125af565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3491906125db565b81600181518110611e4757611e476125af565b60200260200101906001600160a01b031690816001600160a01b031681525050611e92307f000000000000000000000000000000000000000000000000000000000000000084611676565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611ee69085905f908690309042906004016126d7565b5f604051808303815f87803b158015611efd575f80fd5b505af1158015610ac7573d5f803e3d5ffd5b6001600160a01b0382165f81815260116020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611f885760405162461bcd60e51b815260040161083c9061263c565b6001600160a01b038216611fae5760405162461bcd60e51b815260040161083c90612681565b6001600160a01b0383165f90815260208190526040902054818110156120255760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161083c565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061205b90849061259c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120a791815260200190565b60405180910390a350505050565b5f6120bf30610b24565b90505f815f036120cd575050565b600a546120db906014612566565b8211156120f357600a546120f0906014612566565b91505b816120fd81611d61565b6008546040516001600160a01b039091169047905f81818185875af1925050503d805f8114610ac7576040519150601f19603f3d011682016040523d82523d5f602084013e610ac7565b5f61218883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061224e565b9392505050565b5f825f0361219e57505f61080c565b5f6121a98385612566565b9050826121b6858361257d565b146121885760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161083c565b5f61218883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612286565b5f81848411156122715760405162461bcd60e51b815260040161083c91906122b2565b505f61227d84866126c4565b95945050505050565b5f81836122a65760405162461bcd60e51b815260040161083c91906122b2565b505f61227d848661257d565b5f6020808352835180828501525f5b818110156122dd578581018301518582016040015282016122c1565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c31575f80fd5b5f8060408385031215612322575f80fd5b823561232d816122fd565b946020939093013593505050565b5f6020828403121561234b575f80fd5b8135612188816122fd565b5f60208284031215612366575f80fd5b5035919050565b5f805f6060848603121561237f575f80fd5b833561238a816122fd565b9250602084013561239a816122fd565b929592945050506040919091013590565b5f8083601f8401126123bb575f80fd5b50813567ffffffffffffffff8111156123d2575f80fd5b6020830191508360208260051b85010111156123ec575f80fd5b9250929050565b5f805f8060408587031215612406575f80fd5b843567ffffffffffffffff8082111561241d575f80fd5b612429888389016123ab565b90965094506020870135915080821115612441575f80fd5b5061244e878288016123ab565b95989497509550505050565b8015158114610c31575f80fd5b5f8060408385031215612478575f80fd5b8235612483816122fd565b915060208301356124938161245a565b809150509250929050565b5f602082840312156124ae575f80fd5b81356121888161245a565b5f80604083850312156124ca575f80fd5b82356124d5816122fd565b91506020830135612493816122fd565b600181811c908216806124f957607f821691505b60208210810361251757634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761080c5761080c612552565b5f8261259757634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561080c5761080c612552565b634e487b7160e01b5f52603260045260245ffd5b5f600182016125d4576125d4612552565b5060010190565b5f602082840312156125eb575f80fd5b8151612188816122fd565b5f805f60608486031215612608575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215612631575f80fd5b81516121888161245a565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561080c5761080c612552565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156127255784516001600160a01b031683529383019391830191600101612700565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220debee6024ab7b64099323390554c43d8f3457c406e13773c31ae70d650ef05c264736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x60806040526004361061024c575f3560e01c8063881dce6011610134578063bbc0c742116100b3578063d257b34f11610078578063d257b34f146106ab578063d85ba063146106ca578063dd62ed3e146106df578063e2f4560514610723578063eba4c33314610738578063f8b45b0514610757575f80fd5b8063bbc0c74214610632578063c024666814610650578063c18bc1951461066f578063c8c8ebe41461068e578063c9567bf9146106a3575f80fd5b8063a457c2d7116100f9578063a457c2d714610588578063a672990c146105a7578063a9059cbb146105c6578063aacebbe3146105e5578063b62496f514610604575f80fd5b8063881dce60146104fa5780638da5cb5b14610519578063924de9b71461053657806395d89b41146105555780639a7a23d614610569575f80fd5b806349bd5a5e116101cb5780636fc3eaec116101905780636fc3eaec1461046157806370a0823114610475578063715018a61461049457806371fc4688146104a8578063751039fc146104c75780637571336a146104db575f80fd5b806349bd5a5e146103d65780634a62bb65146103f5578063672434821461040e5780636a486a8e1461042d5780636ddd171314610442575f80fd5b8063203e727e11610211578063203e727e1461034757806323b872dd1461036857806327c8f83514610387578063313ce5671461039c57806339509351146103b7575f80fd5b806306fdde0314610257578063095ea7b31461028157806310d5de53146102b05780631694505e146102de57806318160ddd14610329575f80fd5b3661025357005b5f80fd5b348015610262575f80fd5b5061026b61076c565b60405161027891906122b2565b60405180910390f35b34801561028c575f80fd5b506102a061029b366004612311565b6107fc565b6040519015158152602001610278565b3480156102bb575f80fd5b506102a06102ca36600461233b565b60106020525f908152604090205460ff1681565b3480156102e9575f80fd5b506103117f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610278565b348015610334575f80fd5b506002545b604051908152602001610278565b348015610352575f80fd5b50610366610361366004612356565b610812565b005b348015610373575f80fd5b506102a061038236600461236d565b6108f8565b348015610392575f80fd5b5061031161dead81565b3480156103a7575f80fd5b5060405160128152602001610278565b3480156103c2575f80fd5b506102a06103d1366004612311565b6109a0565b3480156103e1575f80fd5b50600654610311906001600160a01b031681565b348015610400575f80fd5b50600c546102a09060ff1681565b348015610419575f80fd5b506103666104283660046123f3565b6109db565b348015610438575f80fd5b50610339600e5481565b34801561044d575f80fd5b50600c546102a09062010000900460ff1681565b34801561046c575f80fd5b50610366610acf565b348015610480575f80fd5b5061033961048f36600461233b565b610b24565b34801561049f575f80fd5b50610366610b3e565b3480156104b3575f80fd5b506103666104c2366004612356565b610bb1565b3480156104d2575f80fd5b506102a0610c34565b3480156104e6575f80fd5b506103666104f5366004612467565b610c70565b348015610505575f80fd5b50610366610514366004612356565b610cc4565b348015610524575f80fd5b506005546001600160a01b0316610311565b348015610541575f80fd5b5061036661055036600461249e565b610d3e565b348015610560575f80fd5b5061026b610d84565b348015610574575f80fd5b50610366610583366004612467565b610d93565b348015610593575f80fd5b506102a06105a2366004612311565b610e4f565b3480156105b2575f80fd5b506103666105c1366004612467565b610ee7565b3480156105d1575f80fd5b506102a06105e0366004612311565b610f4e565b3480156105f0575f80fd5b506103666105ff36600461233b565b610f5a565b34801561060f575f80fd5b506102a061061e36600461233b565b60116020525f908152604090205460ff1681565b34801561063d575f80fd5b50600c546102a090610100900460ff1681565b34801561065b575f80fd5b5061036661066a366004612467565b610fe0565b34801561067a575f80fd5b50610366610689366004612356565b611068565b348015610699575f80fd5b5061033960095481565b610366611139565b3480156106b6575f80fd5b506102a06106c5366004612356565b6114a5565b3480156106d5575f80fd5b50610339600d5481565b3480156106ea575f80fd5b506103396106f93660046124b9565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561072e575f80fd5b50610339600a5481565b348015610743575f80fd5b50610366610752366004612356565b6115f6565b348015610762575f80fd5b50610339600b5481565b60606003805461077b906124e5565b80601f01602080910402602001604051908101604052809291908181526020018280546107a7906124e5565b80156107f25780601f106107c9576101008083540402835291602001916107f2565b820191905f5260205f20905b8154815290600101906020018083116107d557829003601f168201915b5050505050905090565b5f610808338484611676565b5060015b92915050565b6005546001600160a01b031633146108455760405162461bcd60e51b815260040161083c9061251d565b60405180910390fd5b670de0b6b3a76400006103e861085a60025490565b610865906001612566565b61086f919061257d565b610879919061257d565b8110156108e05760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b606482015260840161083c565b6108f281670de0b6b3a7640000612566565b60095550565b5f610904848484611799565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156109885760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161083c565b6109958533858403611676565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916108089185906109d690869061259c565b611676565b82158015906109e957508083145b6109f1575f80fd5b335f5b84811015610ac757610a39868683818110610a1157610a116125af565b9050602002016020810190610a26919061233b565b6007546001600160a01b03165f19611676565b5f848483818110610a4c57610a4c6125af565b905060200201351115610ab557610ab582878784818110610a6f57610a6f6125af565b9050602002016020810190610a84919061233b565b868685818110610a9657610a966125af565b90506020020135670de0b6b3a7640000610ab09190612566565b611799565b80610abf816125c3565b9150506109f4565b505050505050565b6008546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610b19576040519150601f19603f3d011682016040523d82523d5f602084013e610b1e565b606091505b50505050565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610b685760405162461bcd60e51b815260040161083c9061251d565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610bdb5760405162461bcd60e51b815260040161083c9061251d565b600d8190556005811115610c315760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203525206f72206c65737300000000604482015260640161083c565b50565b6005545f906001600160a01b03163314610c605760405162461bcd60e51b815260040161083c9061251d565b50600c805460ff19169055600190565b6005546001600160a01b03163314610c9a5760405162461bcd60e51b815260040161083c9061251d565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b6007546001600160a01b0316336001600160a01b031614610ce3575f80fd5b610cec30610b24565b8111158015610cfa57505f81115b610d355760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b604482015260640161083c565b610c3181611d61565b6005546001600160a01b03163314610d685760405162461bcd60e51b815260040161083c9061251d565b600c8054911515620100000262ff000019909216919091179055565b60606004805461077b906124e5565b6005546001600160a01b03163314610dbd5760405162461bcd60e51b815260040161083c9061251d565b6006546001600160a01b0390811690831603610e415760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161083c565b610e4b8282611f0f565b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610ed05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161083c565b610edd3385858403611676565b5060019392505050565b6005546001600160a01b03163314610f115760405162461bcd60e51b815260040161083c9061251d565b6001600160a01b039091165f908152601060209081526040808320805494151560ff199586168117909155600f9092529091208054909216179055565b5f610808338484611799565b6005546001600160a01b03163314610f845760405162461bcd60e51b815260040161083c9061251d565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461100a5760405162461bcd60e51b815260040161083c9061251d565b6001600160a01b0382165f818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146110925760405162461bcd60e51b815260040161083c9061251d565b670de0b6b3a76400006103e86110a760025490565b6110b2906005612566565b6110bc919061257d565b6110c6919061257d565b8110156111215760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b606482015260840161083c565b61113381670de0b6b3a7640000612566565b600b5550565b6005546001600160a01b031633146111635760405162461bcd60e51b815260040161083c9061251d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e391906125db565b6001600160a01b031663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561124e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127291906125db565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156112bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e091906125db565b600680546001600160a01b0319166001600160a01b0392909216918217905561130a906001610c70565b600654611321906001600160a01b03166001611f0f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719343061135b30610b24565b5f8061136f6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156113d5573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906113fa91906125f6565b505060065460405163095ea7b360e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d811660048301525f196024830152909116915063095ea7b3906044016020604051808303815f875af115801561146d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114919190612621565b50600c805462ffff00191662010100179055565b6005545f906001600160a01b031633146114d15760405162461bcd60e51b815260040161083c9061251d565b620186a06114de60025490565b6114e9906001612566565b6114f3919061257d565b8210156115605760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161083c565b6103e861156c60025490565b611577906005612566565b611581919061257d565b8211156115ed5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161083c565b50600a55600190565b6005546001600160a01b031633146116205760405162461bcd60e51b815260040161083c9061251d565b600e8190556005811115610c315760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203525206f72206c65737300000000604482015260640161083c565b6001600160a01b0383166116d85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161083c565b6001600160a01b0382166117395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161083c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117bf5760405162461bcd60e51b815260040161083c9061263c565b6001600160a01b0382166117e55760405162461bcd60e51b815260040161083c90612681565b805f036117fc576117f783835f611f62565b505050565b600c5460ff1615611b4b576005546001600160a01b0384811691161480159061183357506005546001600160a01b03838116911614155b801561184757506001600160a01b03821615155b801561185e57506001600160a01b03821661dead14155b80156118745750600654600160a01b900460ff16155b15611b4b57600c54610100900460ff1661190a576001600160a01b0383165f908152600f602052604090205460ff16806118c557506001600160a01b0382165f908152600f602052604090205460ff165b61190a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161083c565b6001600160a01b0383165f9081526011602052604090205460ff16801561194957506001600160a01b0382165f9081526010602052604090205460ff16155b15611a1d576009548111156119be5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161083c565b600b546119ca83610b24565b6119d4908361259c565b1115611a185760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161083c565b611b4b565b6001600160a01b0382165f9081526011602052604090205460ff168015611a5c57506001600160a01b0383165f9081526010602052604090205460ff16155b15611ad257600954811115611a185760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161083c565b6001600160a01b0382165f9081526010602052604090205460ff16611b4b57600b54611afd83610b24565b611b07908361259c565b1115611b4b5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161083c565b5f611b5530610b24565b600a5490915081108015908190611b745750600c5462010000900460ff165b8015611b8a5750600654600160a01b900460ff16155b8015611bae57506001600160a01b0385165f9081526011602052604090205460ff16155b8015611bd257506001600160a01b0385165f908152600f602052604090205460ff16155b8015611bf657506001600160a01b0384165f908152600f602052604090205460ff16155b15611c24576006805460ff60a01b1916600160a01b179055611c166120b5565b6006805460ff60a01b191690555b6006546001600160a01b0386165f908152600f602052604090205460ff600160a01b909204821615911680611c7057506001600160a01b0385165f908152600f602052604090205460ff165b15611c7857505f5b5f8115611d4d576001600160a01b0386165f9081526011602052604090205460ff168015611ca757505f600e54115b15611ce557600754600e54611cde91606491611cd891611cd191906001600160a01b031631612147565b889061218f565b9061220d565b9050611d2f565b6001600160a01b0387165f9081526011602052604090205460ff168015611d0d57505f600d54115b15611d2f57611d2c6064611cd8600d548861218f90919063ffffffff16565b90505b8015611d4057611d40873083611f62565b611d4a81866126c4565b94505b611d58878787611f62565b50505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611d9457611d946125af565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3491906125db565b81600181518110611e4757611e476125af565b60200260200101906001600160a01b031690816001600160a01b031681525050611e92307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611676565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611ee69085905f908690309042906004016126d7565b5f604051808303815f87803b158015611efd575f80fd5b505af1158015610ac7573d5f803e3d5ffd5b6001600160a01b0382165f81815260116020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611f885760405162461bcd60e51b815260040161083c9061263c565b6001600160a01b038216611fae5760405162461bcd60e51b815260040161083c90612681565b6001600160a01b0383165f90815260208190526040902054818110156120255760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161083c565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061205b90849061259c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120a791815260200190565b60405180910390a350505050565b5f6120bf30610b24565b90505f815f036120cd575050565b600a546120db906014612566565b8211156120f357600a546120f0906014612566565b91505b816120fd81611d61565b6008546040516001600160a01b039091169047905f81818185875af1925050503d805f8114610ac7576040519150601f19603f3d011682016040523d82523d5f602084013e610ac7565b5f61218883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061224e565b9392505050565b5f825f0361219e57505f61080c565b5f6121a98385612566565b9050826121b6858361257d565b146121885760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161083c565b5f61218883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612286565b5f81848411156122715760405162461bcd60e51b815260040161083c91906122b2565b505f61227d84866126c4565b95945050505050565b5f81836122a65760405162461bcd60e51b815260040161083c91906122b2565b505f61227d848661257d565b5f6020808352835180828501525f5b818110156122dd578581018301518582016040015282016122c1565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c31575f80fd5b5f8060408385031215612322575f80fd5b823561232d816122fd565b946020939093013593505050565b5f6020828403121561234b575f80fd5b8135612188816122fd565b5f60208284031215612366575f80fd5b5035919050565b5f805f6060848603121561237f575f80fd5b833561238a816122fd565b9250602084013561239a816122fd565b929592945050506040919091013590565b5f8083601f8401126123bb575f80fd5b50813567ffffffffffffffff8111156123d2575f80fd5b6020830191508360208260051b85010111156123ec575f80fd5b9250929050565b5f805f8060408587031215612406575f80fd5b843567ffffffffffffffff8082111561241d575f80fd5b612429888389016123ab565b90965094506020870135915080821115612441575f80fd5b5061244e878288016123ab565b95989497509550505050565b8015158114610c31575f80fd5b5f8060408385031215612478575f80fd5b8235612483816122fd565b915060208301356124938161245a565b809150509250929050565b5f602082840312156124ae575f80fd5b81356121888161245a565b5f80604083850312156124ca575f80fd5b82356124d5816122fd565b91506020830135612493816122fd565b600181811c908216806124f957607f821691505b60208210810361251757634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761080c5761080c612552565b5f8261259757634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561080c5761080c612552565b634e487b7160e01b5f52603260045260245ffd5b5f600182016125d4576125d4612552565b5060010190565b5f602082840312156125eb575f80fd5b8151612188816122fd565b5f805f60608486031215612608575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215612631575f80fd5b81516121888161245a565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561080c5761080c612552565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156127255784516001600160a01b031683529383019391830191600101612700565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220debee6024ab7b64099323390554c43d8f3457c406e13773c31ae70d650ef05c264736f6c63430008140033

Deployed Bytecode Sourcemap

8670:10720:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3444:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4358:169;;;;;;;;;;-1:-1:-1;4358:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;4358:169:0;1023:187:1;9377:63:0;;;;;;;;;;-1:-1:-1;9377:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8747:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1657:32:1;;;1639:51;;1627:2;1612:18;8747:51:0;1467:229:1;3765:108:0;;;;;;;;;;-1:-1:-1;3853:12:0;;3765:108;;;1847:25:1;;;1835:2;1820:18;3765:108:0;1701:177:1;11679:240:0;;;;;;;;;;-1:-1:-1;11679:240:0;;;;;:::i;:::-;;:::i;:::-;;4535:458;;;;;;;;;;-1:-1:-1;4535:458:0;;;;;:::i;:::-;;:::i;8840:53::-;;;;;;;;;;;;8886:6;8840:53;;3664:93;;;;;;;;;;-1:-1:-1;3664:93:0;;3747:2;2879:36:1;;2867:2;2852:18;3664:93:0;2737:184:1;5001:215:0;;;;;;;;;;-1:-1:-1;5001:215:0;;;;;:::i;:::-;;:::i;8805:28::-;;;;;;;;;;-1:-1:-1;8805:28:0;;;;-1:-1:-1;;;;;8805:28:0;;;9119:33;;;;;;;;;;-1:-1:-1;9119:33:0;;;;;;;;14324:473;;;;;;;;;;-1:-1:-1;14324:473:0;;;;;:::i;:::-;;:::i;9277:32::-;;;;;;;;;;;;;;;;9199:31;;;;;;;;;;-1:-1:-1;9199:31:0;;;;;;;;;;;13128:143;;;;;;;;;;;;;:::i;3881:127::-;;;;;;;;;;-1:-1:-1;3881:127:0;;;;;:::i;:::-;;:::i;1979:148::-;;;;;;;;;;;;;:::i;13727:181::-;;;;;;;;;;-1:-1:-1;13727:181:0;;;;;:::i;:::-;;:::i;11151:121::-;;;;;;;;;;;;;:::i;12359:144::-;;;;;;;;;;-1:-1:-1;12359:144:0;;;;;:::i;:::-;;:::i;12897:223::-;;;;;;;;;;-1:-1:-1;12897:223:0;;;;;:::i;:::-;;:::i;1765:79::-;;;;;;;;;;-1:-1:-1;1830:6:0;;-1:-1:-1;;;;;1830:6:0;1765:79;;12599:100;;;;;;;;;;-1:-1:-1;12599:100:0;;;;;:::i;:::-;;:::i;3552:104::-;;;;;;;;;;;;;:::i;13279:244::-;;;;;;;;;;-1:-1:-1;13279:244:0;;;;;:::i;:::-;;:::i;5224:413::-;;;;;;;;;;-1:-1:-1;5224:413:0;;;;;:::i;:::-;;:::i;12156:195::-;;;;;;;;;;-1:-1:-1;12156:195:0;;;;;:::i;:::-;;:::i;4016:175::-;;;;;;;;;;-1:-1:-1;4016:175:0;;;;;:::i;:::-;;:::i;14108:208::-;;;;;;;;;;-1:-1:-1;14108:208:0;;;;;:::i;:::-;;:::i;9449:57::-;;;;;;;;;;-1:-1:-1;9449:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9159:33;;;;;;;;;;-1:-1:-1;9159:33:0;;;;;;;;;;;12707:182;;;;;;;;;;-1:-1:-1;12707:182:0;;;;;:::i;:::-;;:::i;11927:221::-;;;;;;;;;;-1:-1:-1;11927:221:0;;;;;:::i;:::-;;:::i;9004:35::-;;;;;;;;;;;;;;;;18798:589;;;:::i;11280:391::-;;;;;;;;;;-1:-1:-1;11280:391:0;;;;;:::i;:::-;;:::i;9239:31::-;;;;;;;;;;;;;;;;4199:151;;;;;;;;;;-1:-1:-1;4199:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4315:18:0;;;4288:7;4315:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4199:151;9046:33;;;;;;;;;;;;;;;;13916:184;;;;;;;;;;-1:-1:-1;13916:184:0;;;;;:::i;:::-;;:::i;9086:24::-;;;;;;;;;;;;;;;;3444:100;3498:13;3531:5;3524:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3444:100;:::o;4358:169::-;4441:4;4458:39;277:10;4481:7;4490:6;4458:8;:39::i;:::-;-1:-1:-1;4515:4:0;4358:169;;;;;:::o;11679:240::-;1892:6;;-1:-1:-1;;;;;1892:6:0;277:10;1892:22;1884:67;;;;-1:-1:-1;;;1884:67:0;;;;;;;:::i;:::-;;;;;;;;;11802:4:::1;11794;11773:13;3853:12:::0;;;3765:108;11773:13:::1;:17;::::0;11789:1:::1;11773:17;:::i;:::-;11772:26;;;;:::i;:::-;11771:35;;;;:::i;:::-;11761:6;:45;;11753:105;;;::::0;-1:-1:-1;;;11753:105:0;;6700:2:1;11753:105:0::1;::::0;::::1;6682:21:1::0;6739:2;6719:18;;;6712:30;6778:34;6758:18;;;6751:62;-1:-1:-1;;;6829:18:1;;;6822:45;6884:19;;11753:105:0::1;6498:411:1::0;11753:105:0::1;11892:19;:6:::0;11902:8:::1;11892:19;:::i;:::-;11869:20;:42:::0;-1:-1:-1;11679:240:0:o;4535:458::-;4641:4;4658:36;4668:6;4676:9;4687:6;4658:9;:36::i;:::-;-1:-1:-1;;;;;4734:19:0;;4707:24;4734:19;;;:11;:19;;;;;;;;277:10;4734:33;;;;;;;;4786:26;;;;4778:79;;;;-1:-1:-1;;;4778:79:0;;7116:2:1;4778:79:0;;;7098:21:1;7155:2;7135:18;;;7128:30;7194:34;7174:18;;;7167:62;-1:-1:-1;;;7245:18:1;;;7238:38;7293:19;;4778:79:0;6914:404:1;4778:79:0;4893:57;4902:6;277:10;4943:6;4924:16;:25;4893:8;:57::i;:::-;-1:-1:-1;4981:4:0;;4535:458;-1:-1:-1;;;;4535:458:0:o;5001:215::-;277:10;5089:4;5138:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5138:34:0;;;;;;;;;;5089:4;;5106:80;;5129:7;;5138:47;;5175:10;;5138:47;:::i;:::-;5106:8;:80::i;14324:473::-;14427:20;;;;;:58;;-1:-1:-1;14451:34:0;;;14427:58;14419:67;;;;;;14512:10;14497:12;14535:255;14555:20;;;14535:255;;;14597:58;14606:9;;14616:1;14606:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14620:15;;-1:-1:-1;;;;;14620:15:0;-1:-1:-1;;14597:8:0;:58::i;:::-;14687:1;14674:7;;14682:1;14674:10;;;;;;;:::i;:::-;;;;;;;:14;14670:109;;;14709:54;14719:4;14725:9;;14735:1;14725:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14739:7;;14747:1;14739:10;;;;;;;:::i;:::-;;;;;;;14753:8;14739:23;;;;:::i;:::-;14709:9;:54::i;:::-;14577:3;;;;:::i;:::-;;;;14535:255;;;;14408:389;14324:473;;;;:::o;13128:143::-;13214:9;;13206:57;;13170:12;;-1:-1:-1;;;;;13214:9:0;;13237:21;;13170:12;13206:57;13170:12;13206:57;13237:21;13214:9;13206:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;13128:143:0:o;3881:127::-;-1:-1:-1;;;;;3982:18:0;3955:7;3982:18;;;;;;;;;;;;3881:127::o;1979:148::-;1892:6;;-1:-1:-1;;;;;1892:6:0;277:10;1892:22;1884:67;;;;-1:-1:-1;;;1884:67:0;;;;;;;:::i;:::-;2070:6:::1;::::0;2049:40:::1;::::0;2086:1:::1;::::0;-1:-1:-1;;;;;2070:6:0::1;::::0;2049:40:::1;::::0;2086:1;;2049:40:::1;2100:6;:19:::0;;-1:-1:-1;;;;;;2100:19:0::1;::::0;;1979:148::o;13727:181::-;1892:6;;-1:-1:-1;;;;;1892:6:0;277:10;1892:22;1884:67;;;;-1:-1:-1;;;1884:67:0;;;;;;;:::i;:::-;13803:12:::1;:28:::0;;;13866:1:::1;13850:17:::0;::::1;;13842:58;;;::::0;-1:-1:-1;;;13842:58:0;;8137:2:1;13842:58:0::1;::::0;::::1;8119:21:1::0;8176:2;8156:18;;;8149:30;8215;8195:18;;;8188:58;8263:18;;13842:58:0::1;7935:352:1::0;13842:58:0::1;13727:181:::0;:::o;11151:121::-;1892:6;;11203:4;;-1:-1:-1;;;;;1892:6:0;277:10;1892:22;1884:67;;;;-1:-1:-1;;;1884:67:0;;;;;;;:::i;:::-;-1:-1:-1;11220:14:0::1;:22:::0;;-1:-1:-1;;11220:22:0::1;::::0;;;11151:121;:::o;12359:144::-;1892:6;;-1:-1:-1;;;;;1892:6:0;277:10;1892:22;1884:67;;;;-1:-1:-1;;;1884:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12449:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;12449:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12359:144::o;12897:223::-;12977:15;;-1:-1:-1;;;;;12977:15:0;277:10;-1:-1:-1;;;;;12961:31:0;;12953:40;;;;;;13022:24;13040:4;13022:9;:24::i;:::-;13012:6;:34;;:48;;;;;13059:1;13050:6;:10;13012:48;13004:73;;;;-1:-1:-1;;;13004:73:0;;8494:2:1;13004:73:0;;;8476:21:1;8533:2;8513:18;;;8506:30;-1:-1:-1;;;8552:18:1;;;8545:42;8604:18;;13004:73:0;8292:336:1;13004:73:0;13088:24;13105:6;13088:16;:24::i;12599:100::-;1892:6;;-1:-1:-1;;;;;1892:6:0;277:10;1892:22;1884:67;;;;-1:-1:-1;;;1884:67:0;;;;;;;:::i;:::-;12670:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;12670:21:0;;::::1;::::0;;;::::1;::::0;;12599:100::o;3552:104::-;3608:13;3641:7;3634:14;;;;;:::i;13279:244::-;1892:6;;-1:-1:-1;;;;;1892:6:0;277:10;1892:22;1884:67;;;;-1:-1:-1;;;1884:67:0;;;;;;;:::i;:::-;13386:13:::1;::::0;-1:-1:-1;;;;;13386:13:0;;::::1;13378:21:::0;;::::1;::::0;13370:91:::1;;;::::0;-1:-1:-1;;;13370:91:0;;8835:2:1;13370:91:0::1;::::0;::::1;8817:21:1::0;8874:2;8854:18;;;8847:30;8913:34;8893:18;;;8886:62;8984:27;8964:18;;;8957:55;9029:19;;13370:91:0::1;8633:421:1::0;13370:91:0::1;13474:41;13503:4;13509:5;13474:28;:41::i;:::-;13279:244:::0;;:::o;5224:413::-;277:10;5317:4;5361:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5361:34:0;;;;;;;;;;5414:35;;;;5406:85;;;;-1:-1:-1;;;5406:85:0;;9261:2:1;5406:85:0;;;9243:21:1;9300:2;9280:18;;;9273:30;9339:34;9319:18;;;9312:62;-1:-1:-1;;;9390:18:1;;;9383:35;9435:19;;5406:85:0;9059:401:1;5406:85:0;5527:67;277:10;5550:7;5578:15;5559:16;:34;5527:8;:67::i;:::-;-1:-1:-1;5625:4:0;;5224:413;-1:-1:-1;;;5224:413:0:o;12156:195::-;1892:6;;-1:-1:-1;;;;;1892:6:0;277:10;1892:22;1884:67;;;;-1:-1:-1;;;1884:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12242:43:0;;::::1;;::::0;;;:31:::1;:43;::::0;;;;;;;:50;;;::::1;;-1:-1:-1::0;;12242:50:0;;::::1;::::0;::::1;::::0;;;12305:19:::1;:31:::0;;;;;;:38;;;;::::1;;::::0;;12156:195::o;4016:175::-;4102:4;4119:42;277:10;4143:9;4154:6;4119:9;:42::i;14108:208::-;1892:6;;-1:-1:-1;;;;;1892:6:0;277:10;1892:22;1884:67;;;;-1:-1:-1;;;1884:67:0;;;;;;;:::i;:::-;14245:15:::1;::::0;14202:59:::1;::::0;-1:-1:-1;;;;;14245:15:0;;::::1;::::0;14202:59;::::1;::::0;::::1;::::0;14245:15:::1;::::0;14202:59:::1;14272:15;:36:::0;;-1:-1:-1;;;;;;14272:36:0::1;-1:-1:-1::0;;;;;14272:36:0;;;::::1;::::0;;;::::1;::::0;;14108:208::o;12707:182::-;1892:6;;-1:-1:-1;;;;;1892:6:0;277:10;1892:22;1884:67;;;;-1:-1:-1;;;1884:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12792:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;12792:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;12847:34;;1163:41:1;;;12847:34:0::1;::::0;1136:18:1;12847:34:0::1;;;;;;;12707:182:::0;;:::o;11927:221::-;1892:6;;-1:-1:-1;;;;;1892:6:0;277:10;1892:22;1884:67;;;;-1:-1:-1;;;1884:67:0;;;;;;;:::i;:::-;12053:4:::1;12045;12024:13;3853:12:::0;;;3765:108;12024:13:::1;:17;::::0;12040:1:::1;12024:17;:::i;:::-;12023:26;;;;:::i;:::-;12022:35;;;;:::i;:::-;12012:6;:45;;12004:94;;;::::0;-1:-1:-1;;;12004:94:0;;9667:2:1;12004:94:0::1;::::0;::::1;9649:21:1::0;9706:2;9686:18;;;9679:30;9745:34;9725:18;;;9718:62;-1:-1:-1;;;9796:18:1;;;9789:34;9840:19;;12004:94:0::1;9465:400:1::0;12004:94:0::1;12121:19;:6:::0;12131:8:::1;12121:19;:::i;:::-;12109:9;:31:::0;-1:-1:-1;11927:221:0:o;18798:589::-;1892:6;;-1:-1:-1;;;;;1892:6:0;277:10;1892:22;1884:67;;;;-1:-1:-1;;;1884:67:0;;;;;;;:::i;:::-;18894:15:::1;-1:-1:-1::0;;;;;18894:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18876:55:0::1;;18940:4;18947:15;-1:-1:-1::0;;;;;18947:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18876:94;::::0;-1:-1:-1;;;;;;18876:94:0::1;::::0;;;;;;-1:-1:-1;;;;;10356:15:1;;;18876:94:0::1;::::0;::::1;10338:34:1::0;10408:15;;10388:18;;;10381:43;10273:18;;18876:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18860:13;:110:::0;;-1:-1:-1;;;;;;18860:110:0::1;-1:-1:-1::0;;;;;18860:110:0;;;::::1;::::0;;::::1;::::0;;18981:55:::1;::::0;-1:-1:-1;18981:25:0::1;:55::i;:::-;19084:13;::::0;19047:58:::1;::::0;-1:-1:-1;;;;;19084:13:0::1;::::0;19047:28:::1;:58::i;:::-;19118:15;-1:-1:-1::0;;;;;19118:31:0::1;;19157:9;19176:4;19182:24;19200:4;19182:9;:24::i;:::-;19207:1;19209::::0;19211:7:::1;1830:6:::0;;-1:-1:-1;;;;;1830:6:0;;1765:79;19211:7:::1;19118:117;::::0;::::1;::::0;;;-1:-1:-1;;;;;;19118:117:0;;;-1:-1:-1;;;;;10794:15:1;;;19118:117:0::1;::::0;::::1;10776:34:1::0;10826:18;;;10819:34;;;;10869:18;;;10862:34;;;;10912:18;;;10905:34;10976:15;;;10955:19;;;10948:44;19219:15:0::1;11008:19:1::0;;;11001:35;10710:19;;19118:117:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;19253:13:0::1;::::0;19246:71:::1;::::0;-1:-1:-1;;;19246:71:0;;-1:-1:-1;;;;;19284:15:0::1;11550:32:1::0;;19246:71:0::1;::::0;::::1;11532:51:1::0;-1:-1:-1;;11599:18:1;;;11592:34;19253:13:0;;::::1;::::0;-1:-1:-1;19246:29:0::1;::::0;11505:18:1;;19246:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19330:13:0::1;:20:::0;;-1:-1:-1;;19361:18:0;;;;;18798:589::o;11280:391::-;1892:6;;11361:4;;-1:-1:-1;;;;;1892:6:0;277:10;1892:22;1884:67;;;;-1:-1:-1;;;1884:67:0;;;;;;;:::i;:::-;11421:6:::1;11400:13;3853:12:::0;;;3765:108;11400:13:::1;:17;::::0;11416:1:::1;11400:17;:::i;:::-;11399:28;;;;:::i;:::-;11386:9;:41;;11378:107;;;::::0;-1:-1:-1;;;11378:107:0;;12089:2:1;11378:107:0::1;::::0;::::1;12071:21:1::0;12128:2;12108:18;;;12101:30;12167:34;12147:18;;;12140:62;-1:-1:-1;;;12218:18:1;;;12211:51;12279:19;;11378:107:0::1;11887:417:1::0;11378:107:0::1;11539:4;11518:13;3853:12:::0;;;3765:108;11518:13:::1;:17;::::0;11534:1:::1;11518:17;:::i;:::-;11517:26;;;;:::i;:::-;11504:9;:39;;11496:104;;;::::0;-1:-1:-1;;;11496:104:0;;12511:2:1;11496:104:0::1;::::0;::::1;12493:21:1::0;12550:2;12530:18;;;12523:30;12589:34;12569:18;;;12562:62;-1:-1:-1;;;12640:18:1;;;12633:50;12700:19;;11496:104:0::1;12309:416:1::0;11496:104:0::1;-1:-1:-1::0;11611:18:0::1;:30:::0;11659:4:::1;::::0;11280:391::o;13916:184::-;1892:6;;-1:-1:-1;;;;;1892:6:0;277:10;1892:22;1884:67;;;;-1:-1:-1;;;1884:67:0;;;;;;;:::i;:::-;13993:13:::1;:29:::0;;;14058:1:::1;14041:18:::0;::::1;;14033:59;;;::::0;-1:-1:-1;;;14033:59:0;;8137:2:1;14033:59:0::1;::::0;::::1;8119:21:1::0;8176:2;8156:18;;;8149:30;8215;8195:18;;;8188:58;8263:18;;14033:59:0::1;7935:352:1::0;7358:346:0;-1:-1:-1;;;;;7460:19:0;;7452:68;;;;-1:-1:-1;;;7452:68:0;;12932:2:1;7452:68:0;;;12914:21:1;12971:2;12951:18;;;12944:30;13010:34;12990:18;;;12983:62;-1:-1:-1;;;13061:18:1;;;13054:34;13105:19;;7452:68:0;12730:400:1;7452:68:0;-1:-1:-1;;;;;7539:21:0;;7531:68;;;;-1:-1:-1;;;7531:68:0;;13337:2:1;7531:68:0;;;13319:21:1;13376:2;13356:18;;;13349:30;13415:34;13395:18;;;13388:62;-1:-1:-1;;;13466:18:1;;;13459:32;13508:19;;7531:68:0;13135:398:1;7531:68:0;-1:-1:-1;;;;;7612:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7664:32;;1847:25:1;;;7664:32:0;;1820:18:1;7664:32:0;;;;;;;7358:346;;;:::o;14805:2822::-;-1:-1:-1;;;;;14903:18:0;;14895:68;;;;-1:-1:-1;;;14895:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14982:16:0;;14974:64;;;;-1:-1:-1;;;14974:64:0;;;;;;;:::i;:::-;15055:6;15065:1;15055:11;15051:93;;15083:28;15099:4;15105:2;15109:1;15083:15;:28::i;:::-;14805:2822;;;:::o;15051:93::-;15160:14;;;;15156:1107;;;1830:6;;-1:-1:-1;;;;;15195:15:0;;;1830:6;;15195:15;;;;:32;;-1:-1:-1;1830:6:0;;-1:-1:-1;;;;;15214:13:0;;;1830:6;;15214:13;;15195:32;:52;;;;-1:-1:-1;;;;;;15231:16:0;;;;15195:52;:77;;;;-1:-1:-1;;;;;;15251:21:0;;15265:6;15251:21;;15195:77;:90;;;;-1:-1:-1;15277:8:0;;-1:-1:-1;;;15277:8:0;;;;15276:9;15195:90;15191:1061;;;15311:13;;;;;;;15306:150;;-1:-1:-1;;;;;15357:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;15386:23:0;;;;;;:19;:23;;;;;;;;15357:52;15349:87;;;;-1:-1:-1;;;15349:87:0;;14550:2:1;15349:87:0;;;14532:21:1;14589:2;14569:18;;;14562:30;-1:-1:-1;;;14608:18:1;;;14601:52;14670:18;;15349:87:0;14348:346:1;15349:87:0;-1:-1:-1;;;;;15508:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;15544:35:0;;;;;;:31;:35;;;;;;;;15543:36;15508:71;15504:733;;;15622:20;;15612:6;:30;;15604:96;;;;-1:-1:-1;;;15604:96:0;;14901:2:1;15604:96:0;;;14883:21:1;14940:2;14920:18;;;14913:30;14979:34;14959:18;;;14952:62;-1:-1:-1;;;15030:18:1;;;15023:51;15091:19;;15604:96:0;14699:417:1;15604:96:0;15757:9;;15740:13;15750:2;15740:9;:13::i;:::-;15731:22;;:6;:22;:::i;:::-;:35;;15723:67;;;;-1:-1:-1;;;15723:67:0;;15323:2:1;15723:67:0;;;15305:21:1;15362:2;15342:18;;;15335:30;-1:-1:-1;;;15381:18:1;;;15374:49;15440:18;;15723:67:0;15121:343:1;15723:67:0;15504:733;;;-1:-1:-1;;;;;15866:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;15900:37:0;;;;;;:31;:37;;;;;;;;15899:38;15866:71;15862:375;;;15980:20;;15970:6;:30;;15962:97;;;;-1:-1:-1;;;15962:97:0;;15671:2:1;15962:97:0;;;15653:21:1;15710:2;15690:18;;;15683:30;15749:34;15729:18;;;15722:62;-1:-1:-1;;;15800:18:1;;;15793:52;15862:19;;15962:97:0;15469:418:1;15862:375:0;-1:-1:-1;;;;;16090:35:0;;;;;;:31;:35;;;;;;;;16085:152;;16184:9;;16167:13;16177:2;16167:9;:13::i;:::-;16158:22;;:6;:22;:::i;:::-;:35;;16150:67;;;;-1:-1:-1;;;16150:67:0;;15323:2:1;16150:67:0;;;15305:21:1;15362:2;15342:18;;;15335:30;-1:-1:-1;;;15381:18:1;;;15374:49;15440:18;;16150:67:0;15121:343:1;16150:67:0;16275:28;16306:24;16324:4;16306:9;:24::i;:::-;16382:18;;16275:55;;-1:-1:-1;16358:42:0;;;;;;;16431:22;;-1:-1:-1;16442:11:0;;;;;;;16431:22;:35;;;;-1:-1:-1;16458:8:0;;-1:-1:-1;;;16458:8:0;;;;16457:9;16431:35;:71;;;;-1:-1:-1;;;;;;16471:31:0;;;;;;:25;:31;;;;;;;;16470:32;16431:71;:101;;;;-1:-1:-1;;;;;;16507:25:0;;;;;;:19;:25;;;;;;;;16506:26;16431:101;:146;;;;-1:-1:-1;;;;;;16554:23:0;;;;;;:19;:23;;;;;;;;16553:24;16431:146;16413:278;;;16604:8;:15;;-1:-1:-1;;;;16604:15:0;-1:-1:-1;;;16604:15:0;;;16636:10;:8;:10::i;:::-;16663:8;:16;;-1:-1:-1;;;;16663:16:0;;;16413:278;16719:8;;-1:-1:-1;;;;;16829:25:0;;16703:12;16829:25;;;:19;:25;;;;;;16719:8;-1:-1:-1;;;16719:8:0;;;;;16718:9;;16829:25;;:52;;-1:-1:-1;;;;;;16858:23:0;;;;;;:19;:23;;;;;;;;16829:52;16825:100;;;-1:-1:-1;16908:5:0;16825:100;16937:12;17042:7;17038:536;;;-1:-1:-1;;;;;17094:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;17143:1;17127:13;;:17;17094:50;17090:335;;;17201:15;;17183:13;;17172:63;;17231:3;;17172:54;;17183:42;;:13;-1:-1:-1;;;;;17201:15:0;:23;17183:17;:42::i;:::-;17172:6;;:10;:54::i;:::-;:58;;:63::i;:::-;17165:70;;17090:335;;;-1:-1:-1;;;;;17297:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;17347:1;17332:12;;:16;17297:51;17293:132;;;17376:33;17405:3;17376:24;17387:12;;17376:6;:10;;:24;;;;:::i;:33::-;17369:40;;17293:132;17445:8;;17441:91;;17474:42;17490:4;17504;17511;17474:15;:42::i;:::-;17548:14;17558:4;17548:14;;:::i;:::-;;;17038:536;17586:33;17602:4;17608:2;17612:6;17586:15;:33::i;:::-;14884:2743;;;;14805:2822;;;:::o;17635:589::-;17785:16;;;17799:1;17785:16;;;;;;;;17761:21;;17785:16;;;;;;;;;;-1:-1:-1;17785:16:0;17761:40;;17830:4;17812;17817:1;17812:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;17812:23:0;;;-1:-1:-1;;;;;17812:23:0;;;;;17856:15;-1:-1:-1;;;;;17856:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17846:4;17851:1;17846:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;17846:32:0;;;-1:-1:-1;;;;;17846:32:0;;;;;17891:62;17908:4;17923:15;17941:11;17891:8;:62::i;:::-;17992:224;;-1:-1:-1;;;17992:224:0;;-1:-1:-1;;;;;17992:15:0;:66;;;;:224;;18073:11;;18099:1;;18143:4;;18170;;18190:15;;17992:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13531:188;-1:-1:-1;;;;;13614:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;13614:39:0;;;;;;;;;;13671:40;;13614:39;;:31;13671:40;;;13531:188;;:::o;5645:699::-;-1:-1:-1;;;;;5751:20:0;;5743:70;;;;-1:-1:-1;;;5743:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5832:23:0;;5824:71;;;;-1:-1:-1;;;5824:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5992:17:0;;5968:21;5992:17;;;;;;;;;;;6028:23;;;;6020:74;;;;-1:-1:-1;;;6020:74:0;;17344:2:1;6020:74:0;;;17326:21:1;17383:2;17363:18;;;17356:30;17422:34;17402:18;;;17395:62;-1:-1:-1;;;17473:18:1;;;17466:36;17519:19;;6020:74:0;17142:402:1;6020:74:0;-1:-1:-1;;;;;6130:17:0;;;:9;:17;;;;;;;;;;;6150:22;;;6130:42;;6194:20;;;;;;;;:30;;6166:6;;6130:9;6194:30;;6166:6;;6194:30;:::i;:::-;;;;;;;;6259:9;-1:-1:-1;;;;;6242:35:0;6251:6;-1:-1:-1;;;;;6242:35:0;;6270:6;6242:35;;;;1847:25:1;;1835:2;1820:18;;1701:177;6242:35:0;;;;;;;;5732:612;5645:699;;;:::o;18232:558::-;18271:23;18297:24;18315:4;18297:9;:24::i;:::-;18271:50;;18332:12;18361:15;18380:1;18361:20;18357:59;;18398:7;;18232:558::o;18357:59::-;18450:18;;:23;;18471:2;18450:23;:::i;:::-;18432:15;:41;18428:115;;;18508:18;;:23;;18529:2;18508:23;:::i;:::-;18490:41;;18428:115;18635:15;18663:36;18635:15;18663:16;:36::i;:::-;18733:9;;18725:57;;-1:-1:-1;;;;;18733:9:0;;;;18756:21;;18725:57;;;;18756:21;18733:9;18725:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;513:136;571:7;598:43;602:1;605;598:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;591:50;513:136;-1:-1:-1;;;513:136:0:o;855:246::-;913:7;937:1;942;937:6;933:47;;-1:-1:-1;967:1:0;960:8;;933:47;990:9;1002:5;1006:1;1002;:5;:::i;:::-;990:17;-1:-1:-1;1035:1:0;1026:5;1030:1;990:17;1026:5;:::i;:::-;:10;1018:56;;;;-1:-1:-1;;;1018:56:0;;17751:2:1;1018:56:0;;;17733:21:1;17790:2;17770:18;;;17763:30;17829:34;17809:18;;;17802:62;-1:-1:-1;;;17880:18:1;;;17873:31;17921:19;;1018:56:0;17549:397:1;1109:132:0;1167:7;1194:39;1198:1;1201;1194:39;;;;;;;;;;;;;;;;;:3;:39::i;657:190::-;743:7;779:12;771:6;;;;763:29;;;;-1:-1:-1;;;763:29:0;;;;;;;;:::i;:::-;-1:-1:-1;803:9:0;815:5;819:1;815;:5;:::i;:::-;803:17;657:190;-1:-1:-1;;;;;657:190:0:o;1249:189::-;1335:7;1370:12;1363:5;1355:28;;;;-1:-1:-1;;;1355:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1394:9:0;1406:5;1410:1;1406;: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:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1883:180::-;1942:6;1995:2;1983:9;1974:7;1970:23;1966:32;1963:52;;;2011:1;2008;2001:12;1963:52;-1:-1:-1;2034:23:1;;1883:180;-1:-1:-1;1883:180:1:o;2068:456::-;2145:6;2153;2161;2214:2;2202:9;2193:7;2189:23;2185:32;2182:52;;;2230:1;2227;2220:12;2182:52;2269:9;2256:23;2288:31;2313:5;2288:31;:::i;:::-;2338:5;-1:-1:-1;2395:2:1;2380:18;;2367:32;2408:33;2367:32;2408:33;:::i;:::-;2068:456;;2460:7;;-1:-1:-1;;;2514:2:1;2499:18;;;;2486:32;;2068:456::o;2926:367::-;2989:8;2999:6;3053:3;3046:4;3038:6;3034:17;3030:27;3020:55;;3071:1;3068;3061:12;3020:55;-1:-1:-1;3094:20:1;;3137:18;3126:30;;3123:50;;;3169:1;3166;3159:12;3123:50;3206:4;3198:6;3194:17;3182:29;;3266:3;3259:4;3249:6;3246:1;3242:14;3234:6;3230:27;3226:38;3223:47;3220:67;;;3283:1;3280;3273:12;3220:67;2926:367;;;;;:::o;3298:773::-;3420:6;3428;3436;3444;3497:2;3485:9;3476:7;3472:23;3468:32;3465:52;;;3513:1;3510;3503:12;3465:52;3553:9;3540:23;3582:18;3623:2;3615:6;3612:14;3609:34;;;3639:1;3636;3629:12;3609:34;3678:70;3740:7;3731:6;3720:9;3716:22;3678:70;:::i;:::-;3767:8;;-1:-1:-1;3652:96:1;-1:-1:-1;3855:2:1;3840:18;;3827:32;;-1:-1:-1;3871:16:1;;;3868:36;;;3900:1;3897;3890:12;3868:36;;3939:72;4003:7;3992:8;3981:9;3977:24;3939:72;:::i;:::-;3298:773;;;;-1:-1:-1;4030:8:1;-1:-1:-1;;;;3298:773:1:o;4076:118::-;4162:5;4155:13;4148:21;4141:5;4138:32;4128:60;;4184:1;4181;4174:12;4199:382;4264:6;4272;4325:2;4313:9;4304:7;4300:23;4296:32;4293:52;;;4341:1;4338;4331:12;4293:52;4380:9;4367:23;4399:31;4424:5;4399:31;:::i;:::-;4449:5;-1:-1:-1;4506:2:1;4491:18;;4478:32;4519:30;4478:32;4519:30;:::i;:::-;4568:7;4558:17;;;4199:382;;;;;:::o;4586:241::-;4642:6;4695:2;4683:9;4674:7;4670:23;4666:32;4663:52;;;4711:1;4708;4701:12;4663:52;4750:9;4737:23;4769:28;4791:5;4769:28;:::i;4832:388::-;4900:6;4908;4961:2;4949:9;4940:7;4936:23;4932:32;4929:52;;;4977:1;4974;4967:12;4929:52;5016:9;5003:23;5035:31;5060:5;5035:31;:::i;:::-;5085:5;-1:-1:-1;5142:2:1;5127:18;;5114:32;5155:33;5114:32;5155:33;:::i;5225:380::-;5304:1;5300:12;;;;5347;;;5368:61;;5422:4;5414:6;5410:17;5400:27;;5368:61;5475:2;5467:6;5464:14;5444:18;5441:38;5438:161;;5521:10;5516:3;5512:20;5509:1;5502:31;5556:4;5553:1;5546:15;5584:4;5581:1;5574:15;5438:161;;5225:380;;;:::o;5610:356::-;5812:2;5794:21;;;5831:18;;;5824:30;5890:34;5885:2;5870:18;;5863:62;5957:2;5942:18;;5610:356::o;5971:127::-;6032:10;6027:3;6023:20;6020:1;6013:31;6063:4;6060:1;6053:15;6087:4;6084:1;6077:15;6103:168;6176:9;;;6207;;6224:15;;;6218:22;;6204:37;6194:71;;6245:18;;:::i;6276:217::-;6316:1;6342;6332:132;;6386:10;6381:3;6377:20;6374:1;6367:31;6421:4;6418:1;6411:15;6449:4;6446:1;6439:15;6332:132;-1:-1:-1;6478:9:1;;6276:217::o;7323:125::-;7388:9;;;7409:10;;;7406:36;;;7422:18;;:::i;7453:127::-;7514:10;7509:3;7505:20;7502:1;7495:31;7545:4;7542:1;7535:15;7569:4;7566:1;7559:15;7585:135;7624:3;7645:17;;;7642:43;;7665:18;;:::i;:::-;-1:-1:-1;7712:1:1;7701:13;;7585:135::o;9870:251::-;9940:6;9993:2;9981:9;9972:7;9968:23;9964:32;9961:52;;;10009:1;10006;9999:12;9961:52;10041:9;10035:16;10060:31;10085:5;10060:31;:::i;11047:306::-;11135:6;11143;11151;11204:2;11192:9;11183:7;11179:23;11175:32;11172:52;;;11220:1;11217;11210:12;11172:52;11249:9;11243:16;11233:26;;11299:2;11288:9;11284:18;11278:25;11268:35;;11343:2;11332:9;11328:18;11322:25;11312:35;;11047:306;;;;;:::o;11637:245::-;11704:6;11757:2;11745:9;11736:7;11732:23;11728:32;11725:52;;;11773:1;11770;11763:12;11725:52;11805:9;11799:16;11824:28;11846:5;11824:28;:::i;13538:401::-;13740:2;13722:21;;;13779:2;13759:18;;;13752:30;13818:34;13813:2;13798:18;;13791:62;-1:-1:-1;;;13884:2:1;13869:18;;13862:35;13929:3;13914:19;;13538:401::o;13944:399::-;14146:2;14128:21;;;14185:2;14165:18;;;14158:30;14224:34;14219:2;14204:18;;14197:62;-1:-1:-1;;;14290:2:1;14275:18;;14268:33;14333:3;14318:19;;13944:399::o;15892:128::-;15959:9;;;15980:11;;;15977:37;;;15994:18;;:::i;16157:980::-;16419:4;16467:3;16456:9;16452:19;16498:6;16487:9;16480:25;16524:2;16562:6;16557:2;16546:9;16542:18;16535:34;16605:3;16600:2;16589:9;16585:18;16578:31;16629:6;16664;16658:13;16695:6;16687;16680:22;16733:3;16722:9;16718:19;16711:26;;16772:2;16764:6;16760:15;16746:29;;16793:1;16803:195;16817:6;16814:1;16811:13;16803:195;;;16882:13;;-1:-1:-1;;;;;16878:39:1;16866:52;;16973:15;;;;16938:12;;;;16914:1;16832:9;16803:195;;;-1:-1:-1;;;;;;;17054:32:1;;;;17049:2;17034:18;;17027:60;-1:-1:-1;;;17118:3:1;17103:19;17096:35;17015:3;16157:980;-1:-1:-1;;;16157:980:1:o

Swarm Source

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