ETH Price: $3,241.97 (+0.16%)

Token

Capital Lending (CL)
 

Overview

Max Total Supply

100,000,000 CL

Holders

67

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
995,893.445950707476927935 CL

Value
$0.00
0xD9b8c0bD1FF0adfBBCCb3d2bD1B93Cea433996d6
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:
CL

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-08-09
*/

// SPDX-License-Identifier: MIT

/**
Capital Lending - bridges the gap between decentralized and centralized finance 
by offering a hybrid platform that combines the strengths of both approaches.

Telegram: https://t.me/CapitalLending
Website:  https://CapitalLending.app
Twitter:  https://x.com/CapitalLender

*/

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Invalid owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "New owner is ZERO");
        _transferOwnership(newOwner);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

interface IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, 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 IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint256) external view returns (address pair);
    function allPairsLength() external view returns (uint256);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

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

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

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

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

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

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

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (
        uint112 reserve0,
        uint112 reserve1,
        uint32 blockTimestampLast
    );

    function price0CumulativeLast() external view returns (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function mint(address to) external returns (uint256 liquidity);
    function burn(address to) external returns (uint256 amount0, uint256 amount1);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}


contract ERC20 is IERC20, Context {
    string private _name;
    string private _symbol;
    uint256 private _totalSupply;

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

    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 approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: Not owner != address(0)");
        require(spender != address(0), "ERC20: Not spender != address(0)");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        _transfer(from, to, amount);
        uint256 curAllow = _allowances[from][_msgSender()];
        require(curAllow >= amount, "ERC20: Not curAllow >= amount");
        unchecked {
            _approve(from, _msgSender(), curAllow - amount);
        }
        return true;
    }

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

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

    function decreaseAllowance(address spender, uint256 subValue) public virtual returns (bool) {
        uint256 curAllow = _allowances[_msgSender()][spender];
        require(curAllow >= subValue, "ERC20: Not curAllow >= subValue");
        unchecked {
            _approve(_msgSender(), spender, curAllow - subValue);
        }
        return true;
    }

    function _mint(
    	address account,
	    uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _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: Not account != address(0)");
        _beforeTokenTransfer(account, address(0), amount);
        uint256 kBalance = _balances[account];
        require(kBalance >= amount, "ERC20: kBalance >= amount");
        unchecked {
            _balances[account] = kBalance - amount;
        }
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }

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

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: Not from != address(0)");
        require(to != address(0), "ERC20: Not to != address(0)");
        _beforeTokenTransfer(from, to, amount);
        uint256 balanceFrom = _balances[from];
        require(balanceFrom >= amount, "ERC20: Not balanceFrom >= amount");
        unchecked {
            _balances[from] = balanceFrom - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

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

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

    IUniswapV2Router02 public swapRouter;
    address public swapPair;
    
    uint256 public minSwapTokenAmount;
    uint256 public maxTokenAmountPerWallet;
    uint256 public maxTokenAmountPerTxn;

    bool public TradingActive = false;
    uint256 public ActiveTradingBlock;
    uint256 public PreventSwapbackBlocks;
    bool public SwapEnabled = false;

    address public marketingWallet;
    address public devWallet;

    uint256 public tokenAmountForMarketing;
    uint256 public tokenAmountForDev;

    mapping(address => bool) public ExcludedMaxTokenAmountPerTxn;

    mapping(address => bool) public ExcludedFromTax;

    mapping(address => bool) public automatedMarketMakerPairs;

    bool public limitsInEffect = true;

    uint256 public sellTotalTax;
    uint256 public sellMarketingTax;
    uint256 public sellDevTax;

    uint256 public buyTotalTax;
    uint256 public buyMarketingTax;
    uint256 public buyDevTax;

    
    bool private Swapping;
    mapping(address => bool) private blackList;
    
    constructor() ERC20("Capital Lending", "CL") {
        devWallet = address(0x13C28b9e98dEC2899CA6e9c32a39C5175DE1728C);
        marketingWallet = address(0x13C28b9e98dEC2899CA6e9c32a39C5175DE1728C);

        swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH());

        ExcludedMaxTokenAmountPerTxn[owner()] = true;
        ExcludedMaxTokenAmountPerTxn[address(this)] = true;

        uint256 totalSupply = 100_000_000 * (10 ** decimals());
        minSwapTokenAmount = 100_000 * (10 ** decimals()); 
        maxTokenAmountPerTxn = 1_000_001 * (10 ** decimals()); // 1% maximum transaction amount
        maxTokenAmountPerWallet = 1_100_001 * (10 ** decimals()); // 1.1% maxiumum wallet amount
        ExcludedFromTax[address(this)] = true;
        ExcludedFromTax[owner()] = true;


        automatedMarketMakerPairs[address(swapPair)] = true;
        
        ExcludedMaxTokenAmountPerTxn[address(0xdead)] = true;
        ExcludedMaxTokenAmountPerTxn[address(swapRouter)] = true;
        ExcludedMaxTokenAmountPerTxn[address(swapPair)] = true;

        ExcludedFromTax[address(0xdead)] = true;

        sellMarketingTax = 40;
        sellDevTax = 30;
        sellTotalTax = sellMarketingTax + sellDevTax;

        buyMarketingTax = 10;
        buyDevTax = 20;
        buyTotalTax = buyMarketingTax + buyDevTax;

        PreventSwapbackBlocks=3; 
        _mint(msg.sender, totalSupply);
    }

    function openTrade() external onlyOwner {
        TradingActive = true;
        SwapEnabled = true;
        ActiveTradingBlock=block.number;
    }
    function setSwapbackBlocks(uint256 newNum) external onlyOwner{
        PreventSwapbackBlocks=newNum;
    }
    function excludeFromMaxTx(address addr, bool value) external onlyOwner {
        ExcludedMaxTokenAmountPerTxn[addr] = value;
    }
    function excludeFromTax(address account, bool value) external onlyOwner {    	
        ExcludedFromTax[account] = value;
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
    }
    function toggleSwap(bool enabled) external onlyOwner {
        SwapEnabled = enabled;
    }
    function setMinimumSwap(uint256 amount) external onlyOwner {
        require(amount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(amount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        minSwapTokenAmount = amount;
    }

    function setBuyTax(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        buyMarketingTax = newMarketFee;
        buyDevTax = newDevFee;
        buyTotalTax = buyMarketingTax + buyDevTax;
        require(buyTotalTax <= 50, "Must keep tax at 50% or less");
    }

    function setSellTax(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        sellMarketingTax = newMarketFee;
        sellDevTax = newDevFee;
        sellTotalTax = sellMarketingTax + sellDevTax;
        require(sellTotalTax <= 99, "Must keep tax at 95% or less");
    }
    function setBlackList(address addr, bool enable) external onlyOwner {
        blackList[addr] = enable;
    }
    function setBulkBlackList(address[] memory _addr, bool enable) external onlyOwner {
        for (uint256 i=0; i <= _addr.length-1; i++) {
            blackList[_addr[i]] = enable;
        }
    }
    function setAutomatedPair(address pair, bool value)
        external onlyOwner {
        require(pair != swapPair, "The pair cannot be removed from automatedMarketMakerPairs");
        automatedMarketMakerPairs[pair] = value;
    }
    function swapBack() private {
        bool success;
        uint256 tokenAmountToSwap = tokenAmountForMarketing + tokenAmountForDev;
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenAmountToSwap == 0 || tokenBalance == 0)
            return;

        if (tokenBalance > minSwapTokenAmount * 3){
            tokenBalance = minSwapTokenAmount * 3;
        }

        uint256 prevETHBalance = address(this).balance;
        swapTokensForEth(tokenBalance);

        uint256 ethBalance = address(this).balance.sub(prevETHBalance);
        uint256 ethForDev = ethBalance.mul(tokenAmountForDev).div(tokenAmountToSwap);

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

        tokenAmountForMarketing = 0;
        tokenAmountForDev = 0;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: Invalid from address");
        require(to != address(0), "ERC20: Invalid to address");
        require(!blackList[from], "ERC20: Sender is blacklisted");
        require(!blackList[to], "ERC20: Receiver is blacklisted");

        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(ExcludedFromTax[from] || ExcludedFromTax[to], "Trading is not active.");
                }

                if (automatedMarketMakerPairs[from] && !ExcludedMaxTokenAmountPerTxn[to]) {
                    require(amount <= maxTokenAmountPerTxn, "Buy transfer amount exceeds the maxTokenAmountPerTxn.");
                    require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded");
                }
                else if (automatedMarketMakerPairs[to] && !ExcludedMaxTokenAmountPerTxn[from]) {
                    require(amount <= maxTokenAmountPerTxn, "Sell transfer amount exceeds the maxTokenAmountPerTxn.");
                }
                else if (!ExcludedMaxTokenAmountPerTxn[to]) {
                    require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded");
                }
            }
        }
        uint256 tokenBalance = balanceOf(address(this));
        bool canSwap = tokenBalance >= minSwapTokenAmount;
        if (SwapEnabled 
            && canSwap 
            && !Swapping 
            && !automatedMarketMakerPairs[from] 
            && !ExcludedFromTax[from] 
            && !ExcludedFromTax[to]
            && ActiveTradingBlock+PreventSwapbackBlocks <= block.number
        ) {
            Swapping = true;
            swapBack();
            Swapping = false;
        }

        bool Tax = !Swapping;
        if (ExcludedFromTax[from] || ExcludedFromTax[to])
            Tax = false;

        uint256 fees = 0; 
        uint tFee = 0;
        if (Tax) {
            if (automatedMarketMakerPairs[to] && sellTotalTax > 0) {
                fees = amount.mul(sellTotalTax).div(100);
                tokenAmountForDev += (fees * sellDevTax) / sellTotalTax;
                tokenAmountForMarketing += (fees * sellMarketingTax) / sellTotalTax;
            }
            else if (automatedMarketMakerPairs[from] && buyTotalTax > 0) {
                fees = amount.mul(buyTotalTax).div(100);
                tokenAmountForDev += (fees * buyDevTax) / buyTotalTax;
                tokenAmountForMarketing += (fees * buyMarketingTax) / buyTotalTax;
            }
            if (fees > 0)
                super._transfer(from, address(this), fees);
            amount -= fees;
        }
            if (!TradingActive){
                tFee = amount.mul(buyDevTax).div(100);
                super._transfer(from, address(this), tFee);
                amount -= tFee;
            }
        super._transfer(from, to, amount);
    }
    receive() external payable {}
    function swapTokensForEth(uint256 amount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();

        _approve(address(this), address(swapRouter), amount);

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ActiveTradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedMaxTokenAmountPerTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PreventSwapbackBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"subValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addValue","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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapTokenAmount","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":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBulkBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMinimumSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"setSwapbackBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenAmountForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b805460ff19908116909155600e805482169055601580549091166001179055348015610030575f80fd5b506040518060400160405280600f81526020016e4361706974616c204c656e64696e6760881b8152506040518060400160405280600281526020016110d360f21b815250815f9081610082919061063c565b50600161008f828261063c565b5050506100a86100a361046b60201b60201c565b61046f565b600f80547313c28b9e98dec2899ca6e9c32a39c5175de1728c6001600160a01b031991821617909155600e8054610100600160a81b0319167413c28b9e98dec2899ca6e9c32a39c5175de1728c0017905560068054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610151573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017591906106f6565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101f891906106f6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610242573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061026691906106f6565b600780546001600160a01b0319166001600160a01b03928316179055600554165f908152601260208190526040808320805460ff19908116600190811790925530855291842080549092161790556102bf90600a61081c565b6102cd906305f5e10061082a565b90506102db6012600a61081c565b6102e890620186a061082a565b6008556102f76012600a61081c565b61030490620f424161082a565b600a55601261031490600a61081c565b610321906210c8e161082a565b600955305f9081526013602081905260408220805460ff19166001908117909155916103556005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600780548316825260148552838220805487166001908117909155601286527f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f7805488168217905560065484168352848320805488168217905590549092168152918220805485168217905561dead90915260139091527f2264e2d7bacabe6058f5009f42467b9be28015e7760f87409562384c94ac271c805490921617905560286017819055601e601881905561043991610841565b601655600a601a8190556014601b81905561045391610841565b6019556003600d5561046533826104c0565b50610854565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b03821661051a5760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74206163636f756e7420213d2061646472657373283029604482015260640160405180910390fd5b8060025f82825461052b9190610841565b90915550506001600160a01b0382165f9081526003602052604081208054839290610557908490610841565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806105cd57607f821691505b6020821081036105eb57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156105a057805f5260205f20601f840160051c810160208510156106165750805b601f840160051c820191505b81811015610635575f8155600101610622565b5050505050565b81516001600160401b03811115610655576106556105a5565b6106698161066384546105b9565b846105f1565b6020601f82116001811461069b575f83156106845750848201515b5f19600385901b1c1916600184901b178455610635565b5f84815260208120601f198516915b828110156106ca57878501518255602094850194600190920191016106aa565b50848210156106e757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610706575f80fd5b81516001600160a01b038116811461071c575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156107725780850481111561075657610756610723565b600184161561076457908102905b60019390931c92800261073b565b935093915050565b5f8261078857506001610816565b8161079457505f610816565b81600181146107aa57600281146107b4576107d0565b6001915050610816565b60ff8411156107c5576107c5610723565b50506001821b610816565b5060208310610133831016604e8410600b84101617156107f3575081810a610816565b6107ff5f198484610737565b805f190482111561081257610812610723565b0290505b92915050565b5f61071c60ff84168361077a565b808202811582820484141761081657610816610723565b8082018082111561081657610816610723565b61232c806108615f395ff3fe6080604052600436106102a8575f3560e01c806375f0a8741161016f578063be691883116100d8578063d4c989d311610092578063e96db1ef1161006d578063e96db1ef1461081b578063f2fde38b14610830578063fb201b1d1461084f578063fc0217a414610863575f80fd5b8063d4c989d3146107a3578063dd62ed3e146107c2578063e27a55fe14610806575f80fd5b8063be691883146106ee578063c1cb02a414610703578063c31c9c0714610722578063c410a11b14610741578063c42c3f881461076f578063c6a3064714610784575f80fd5b8063a457c2d711610129578063a457c2d714610639578063a50b8bc214610658578063a9059cbb14610677578063af8f26e714610696578063b38d229a146106ab578063b62496f5146106c0575f80fd5b806375f0a874146105825780637d673170146105a657806380da4543146105bb5780638da5cb5b146105e95780638ea5220f1461060657806395d89b4114610625575f80fd5b8063372b44b811610211578063685fbc6b116101cb578063685fbc6b146104d35780636a204be1146104e85780636d8aa8f81461050757806370a0823114610526578063715018a61461055a578063751039fc1461056e575f80fd5b8063372b44b814610439578063395093511461044e57806341c787961461046d5780634a62bb65146104865780635df6e68e1461049f57806368092bd9146104b4575f80fd5b80631c55c8b6116102625780631c55c8b61461037557806323b872dd14610394578063247b912d146103b357806326991cc8146103d2578063313ce567146104095780633301241114610424575f80fd5b806301b12312146102b357806305a1f36d146102db57806306fdde03146102fc578063095ea7b31461031d57806318160ddd1461034c57806318c34be114610360575f80fd5b366102af57005b5f80fd5b3480156102be575f80fd5b506102c8600d5481565b6040519081526020015b60405180910390f35b3480156102e6575f80fd5b506102fa6102f5366004611ee3565b61087c565b005b348015610307575f80fd5b5061031061091c565b6040516102d29190611f03565b348015610328575f80fd5b5061033c610337366004611f5c565b6109ab565b60405190151581526020016102d2565b348015610357575f80fd5b506002546102c8565b34801561036b575f80fd5b506102c860105481565b348015610380575f80fd5b506102fa61038f366004611f95565b6109c1565b34801561039f575f80fd5b5061033c6103ae366004611fc8565b610a99565b3480156103be575f80fd5b506102fa6103cd366004611ee3565b610b30565b3480156103dd575f80fd5b506007546103f1906001600160a01b031681565b6040516001600160a01b0390911681526020016102d2565b348015610414575f80fd5b50604051601281526020016102d2565b34801561042f575f80fd5b506102c8601a5481565b348015610444575f80fd5b506102c860115481565b348015610459575f80fd5b5061033c610468366004611f5c565b610bc3565b348015610478575f80fd5b50600e5461033c9060ff1681565b348015610491575f80fd5b5060155461033c9060ff1681565b3480156104aa575f80fd5b506102c860195481565b3480156104bf575f80fd5b506102fa6104ce366004611f95565b610bfe565b3480156104de575f80fd5b506102c860095481565b3480156104f3575f80fd5b506102fa610502366004612006565b610c52565b348015610512575f80fd5b506102fa61052136600461201d565b610c81565b348015610531575f80fd5b506102c8610540366004612036565b6001600160a01b03165f9081526003602052604090205490565b348015610565575f80fd5b506102fa610cbe565b348015610579575f80fd5b506102fa610cf3565b34801561058d575f80fd5b50600e546103f19061010090046001600160a01b031681565b3480156105b1575f80fd5b506102c860085481565b3480156105c6575f80fd5b5061033c6105d5366004612036565b60136020525f908152604090205460ff1681565b3480156105f4575f80fd5b506005546001600160a01b03166103f1565b348015610611575f80fd5b50600f546103f1906001600160a01b031681565b348015610630575f80fd5b50610310610d29565b348015610644575f80fd5b5061033c610653366004611f5c565b610d38565b348015610663575f80fd5b506102fa610672366004612006565b610dc2565b348015610682575f80fd5b5061033c610691366004611f5c565b610f0d565b3480156106a1575f80fd5b506102c8601b5481565b3480156106b6575f80fd5b506102c8600c5481565b3480156106cb575f80fd5b5061033c6106da366004612036565b60146020525f908152604090205460ff1681565b3480156106f9575f80fd5b506102c860185481565b34801561070e575f80fd5b506102fa61071d366004612065565b610f19565b34801561072d575f80fd5b506006546103f1906001600160a01b031681565b34801561074c575f80fd5b5061033c61075b366004612036565b60126020525f908152604090205460ff1681565b34801561077a575f80fd5b506102c8600a5481565b34801561078f575f80fd5b506102fa61079e366004611f95565b610fb7565b3480156107ae575f80fd5b506102fa6107bd366004611f95565b61100b565b3480156107cd575f80fd5b506102c86107dc366004612139565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610811575f80fd5b506102c860165481565b348015610826575f80fd5b506102c860175481565b34801561083b575f80fd5b506102fa61084a366004612036565b61105f565b34801561085a575f80fd5b506102fa6110df565b34801561086e575f80fd5b50600b5461033c9060ff1681565b6005546001600160a01b031633146108af5760405162461bcd60e51b81526004016108a690612170565b60405180910390fd5b601a829055601b8190556108c381836121ab565b6019819055603210156109185760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420353025206f72206c6573730000000060448201526064016108a6565b5050565b60605f805461092a906121be565b80601f0160208091040260200160405190810160405280929190818152602001828054610956906121be565b80156109a15780601f10610978576101008083540402835291602001916109a1565b820191905f5260205f20905b81548152906001019060200180831161098457829003601f168201915b5050505050905090565b5f6109b733848461112c565b5060015b92915050565b6005546001600160a01b031633146109eb5760405162461bcd60e51b81526004016108a690612170565b6007546001600160a01b0390811690831603610a6f5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016108a6565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b5f610aa5848484611238565b6001600160a01b0384165f90815260046020908152604080832033845290915290205482811015610b185760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e7400000060448201526064016108a6565b610b25853385840361112c565b506001949350505050565b6005546001600160a01b03163314610b5a5760405162461bcd60e51b81526004016108a690612170565b60178290556018819055610b6e81836121ab565b6016819055606310156109185760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420393525206f72206c6573730000000060448201526064016108a6565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916109b7918590610bf99086906121ab565b61112c565b6005546001600160a01b03163314610c285760405162461bcd60e51b81526004016108a690612170565b6001600160a01b03919091165f908152601d60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610c7c5760405162461bcd60e51b81526004016108a690612170565b600d55565b6005546001600160a01b03163314610cab5760405162461bcd60e51b81526004016108a690612170565b600e805460ff1916911515919091179055565b6005546001600160a01b03163314610ce85760405162461bcd60e51b81526004016108a690612170565b610cf15f611a2b565b565b6005546001600160a01b03163314610d1d5760405162461bcd60e51b81526004016108a690612170565b6015805460ff19169055565b60606001805461092a906121be565b335f9081526004602090815260408083206001600160a01b038616845290915281205482811015610dab5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c75650060448201526064016108a6565b610db8338585840361112c565b5060019392505050565b6005546001600160a01b03163314610dec5760405162461bcd60e51b81526004016108a690612170565b620186a0610df960025490565b610e049060016121f6565b610e0e919061220d565b811015610e7b5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108a6565b6103e8610e8760025490565b610e929060056121f6565b610e9c919061220d565b811115610f085760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016108a6565b600855565b5f6109b7338484611238565b6005546001600160a01b03163314610f435760405162461bcd60e51b81526004016108a690612170565b5f5b60018351610f53919061222c565b8111610fb25781601d5f858481518110610f6f57610f6f61223f565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610faa81612253565b915050610f45565b505050565b6005546001600160a01b03163314610fe15760405162461bcd60e51b81526004016108a690612170565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110355760405162461bcd60e51b81526004016108a690612170565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110895760405162461bcd60e51b81526004016108a690612170565b6001600160a01b0381166110d35760405162461bcd60e51b81526020600482015260116024820152704e6577206f776e6572206973205a45524f60781b60448201526064016108a6565b6110dc81611a2b565b50565b6005546001600160a01b031633146111095760405162461bcd60e51b81526004016108a690612170565b600b8054600160ff199182168117909255600e8054909116909117905543600c55565b6001600160a01b0383166111825760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f74206f776e657220213d2061646472657373283029000060448201526064016108a6565b6001600160a01b0382166111d85760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74207370656e64657220213d206164647265737328302960448201526064016108a6565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661128e5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e76616c69642066726f6d2061646472657373000000000060448201526064016108a6565b6001600160a01b0382166112e45760405162461bcd60e51b815260206004820152601960248201527f45524332303a20496e76616c696420746f20616464726573730000000000000060448201526064016108a6565b6001600160a01b0383165f908152601d602052604090205460ff161561134c5760405162461bcd60e51b815260206004820152601c60248201527f45524332303a2053656e64657220697320626c61636b6c69737465640000000060448201526064016108a6565b6001600160a01b0382165f908152601d602052604090205460ff16156113b45760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20526563656976657220697320626c61636b6c6973746564000060448201526064016108a6565b805f036113c657610fb283835f611a7c565b60155460ff1615611727576005546001600160a01b038481169116148015906113fd57506005546001600160a01b03838116911614155b801561141157506001600160a01b03821615155b801561142857506001600160a01b03821661dead14155b80156114375750601c5460ff16155b1561172757600b5460ff166114c8576001600160a01b0383165f9081526013602052604090205460ff168061148357506001600160a01b0382165f9081526013602052604090205460ff165b6114c85760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108a6565b6001600160a01b0383165f9081526014602052604090205460ff16801561150757506001600160a01b0382165f9081526012602052604090205460ff16155b156115ea57600a5481111561157c5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760591b60648201526084016108a6565b6009546001600160a01b0383165f908152600360205260409020546115a190836121ab565b11156115e55760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108a6565b611727565b6001600160a01b0382165f9081526014602052604090205460ff16801561162957506001600160a01b0383165f9081526012602052604090205460ff16155b1561169f57600a548111156115e55760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760511b60648201526084016108a6565b6001600160a01b0382165f9081526012602052604090205460ff16611727576009546001600160a01b0383165f908152600360205260409020546116e390836121ab565b11156117275760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108a6565b305f90815260036020526040902054600854600e54908210159060ff16801561174d5750805b801561175c5750601c5460ff16155b801561178057506001600160a01b0385165f9081526014602052604090205460ff16155b80156117a457506001600160a01b0385165f9081526013602052604090205460ff16155b80156117c857506001600160a01b0384165f9081526013602052604090205460ff16155b80156117e3575043600d54600c546117e091906121ab565b11155b1561180857601c805460ff191660011790556117fd611c20565b601c805460ff191690555b601c546001600160a01b0386165f9081526013602052604090205460ff9182161591168061184d57506001600160a01b0385165f9081526013602052604090205460ff165b1561185557505f5b5f8082156119d8576001600160a01b0387165f9081526014602052604090205460ff16801561188557505f601654115b15611911576118aa60646118a460165489611d6b90919063ffffffff16565b90611d7d565b9150601654601854836118bd91906121f6565b6118c7919061220d565b60115f8282546118d791906121ab565b90915550506016546017546118ec90846121f6565b6118f6919061220d565b60105f82825461190691906121ab565b909155506119ba9050565b6001600160a01b0388165f9081526014602052604090205460ff16801561193957505f601954115b156119ba5761195860646118a460195489611d6b90919063ffffffff16565b9150601954601b548361196b91906121f6565b611975919061220d565b60115f82825461198591906121ab565b9091555050601954601a5461199a90846121f6565b6119a4919061220d565b60105f8282546119b491906121ab565b90915550505b81156119cb576119cb883084611a7c565b6119d5828761222c565b95505b600b5460ff16611a16576119fc60646118a4601b5489611d6b90919063ffffffff16565b9050611a09883083611a7c565b611a13818761222c565b95505b611a21888888611a7c565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316611ad25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f742066726f6d20213d206164647265737328302900000060448201526064016108a6565b6001600160a01b038216611b285760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204e6f7420746f20213d2061646472657373283029000000000060448201526064016108a6565b6001600160a01b0383165f9081526003602052604090205481811015611b905760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e7460448201526064016108a6565b6001600160a01b038085165f90815260036020526040808220858503905591851681529081208054849290611bc69084906121ab565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c1291815260200190565b60405180910390a350505050565b5f80601154601054611c3291906121ab565b305f90815260036020526040902054909150811580611c4f575080155b15611c5957505050565b600854611c679060036121f6565b811115611c7f57600854611c7c9060036121f6565b90505b47611c8982611d88565b5f611c944783611ed8565b90505f611cb0856118a460115485611d6b90919063ffffffff16565b600f546040519192506001600160a01b03169082905f81818185875af1925050503d805f8114611cfb576040519150601f19603f3d011682016040523d82523d5f602084013e611d00565b606091505b5050600e5460405191975061010090046001600160a01b03169047905f81818185875af1925050503d805f8114611d52576040519150601f19603f3d011682016040523d82523d5f602084013e611d57565b606091505b50505f601081905560115550505050505050565b5f611d7682846121f6565b9392505050565b5f611d76828461220d565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611dbb57611dbb61223f565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e36919061226b565b81600181518110611e4957611e4961223f565b6001600160a01b039283166020918202929092010152600654611e6f913091168461112c565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ea79085905f90869030904290600401612286565b5f604051808303815f87803b158015611ebe575f80fd5b505af1158015611ed0573d5f803e3d5ffd5b505050505050565b5f611d76828461222c565b5f8060408385031215611ef4575f80fd5b50508035926020909101359150565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146110dc575f80fd5b8035611f5781611f38565b919050565b5f8060408385031215611f6d575f80fd5b8235611f7881611f38565b946020939093013593505050565b80358015158114611f57575f80fd5b5f8060408385031215611fa6575f80fd5b8235611fb181611f38565b9150611fbf60208401611f86565b90509250929050565b5f805f60608486031215611fda575f80fd5b8335611fe581611f38565b92506020840135611ff581611f38565b929592945050506040919091013590565b5f60208284031215612016575f80fd5b5035919050565b5f6020828403121561202d575f80fd5b611d7682611f86565b5f60208284031215612046575f80fd5b8135611d7681611f38565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215612076575f80fd5b823567ffffffffffffffff81111561208c575f80fd5b8301601f8101851361209c575f80fd5b803567ffffffffffffffff8111156120b6576120b6612051565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156120e3576120e3612051565b604052918252602081840181019290810188841115612100575f80fd5b6020850194505b838510156121265761211885611f4c565b815260209485019401612107565b509450611fbf9250505060208401611f86565b5f806040838503121561214a575f80fd5b823561215581611f38565b9150602083013561216581611f38565b809150509250929050565b6020808252600d908201526c24b73b30b634b21037bbb732b960991b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156109bb576109bb612197565b600181811c908216806121d257607f821691505b6020821081036121f057634e487b7160e01b5f52602260045260245ffd5b50919050565b80820281158282048414176109bb576109bb612197565b5f8261222757634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156109bb576109bb612197565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161226457612264612197565b5060010190565b5f6020828403121561227b575f80fd5b8151611d7681611f38565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156122d65783516001600160a01b03168352602093840193909201916001016122af565b50506001600160a01b03959095166060840152505060800152939250505056fea26469706673582212209422ed066349e838280f7cc3d34ab5d4758a25359f534febe07a1f22bda9a12864736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106102a8575f3560e01c806375f0a8741161016f578063be691883116100d8578063d4c989d311610092578063e96db1ef1161006d578063e96db1ef1461081b578063f2fde38b14610830578063fb201b1d1461084f578063fc0217a414610863575f80fd5b8063d4c989d3146107a3578063dd62ed3e146107c2578063e27a55fe14610806575f80fd5b8063be691883146106ee578063c1cb02a414610703578063c31c9c0714610722578063c410a11b14610741578063c42c3f881461076f578063c6a3064714610784575f80fd5b8063a457c2d711610129578063a457c2d714610639578063a50b8bc214610658578063a9059cbb14610677578063af8f26e714610696578063b38d229a146106ab578063b62496f5146106c0575f80fd5b806375f0a874146105825780637d673170146105a657806380da4543146105bb5780638da5cb5b146105e95780638ea5220f1461060657806395d89b4114610625575f80fd5b8063372b44b811610211578063685fbc6b116101cb578063685fbc6b146104d35780636a204be1146104e85780636d8aa8f81461050757806370a0823114610526578063715018a61461055a578063751039fc1461056e575f80fd5b8063372b44b814610439578063395093511461044e57806341c787961461046d5780634a62bb65146104865780635df6e68e1461049f57806368092bd9146104b4575f80fd5b80631c55c8b6116102625780631c55c8b61461037557806323b872dd14610394578063247b912d146103b357806326991cc8146103d2578063313ce567146104095780633301241114610424575f80fd5b806301b12312146102b357806305a1f36d146102db57806306fdde03146102fc578063095ea7b31461031d57806318160ddd1461034c57806318c34be114610360575f80fd5b366102af57005b5f80fd5b3480156102be575f80fd5b506102c8600d5481565b6040519081526020015b60405180910390f35b3480156102e6575f80fd5b506102fa6102f5366004611ee3565b61087c565b005b348015610307575f80fd5b5061031061091c565b6040516102d29190611f03565b348015610328575f80fd5b5061033c610337366004611f5c565b6109ab565b60405190151581526020016102d2565b348015610357575f80fd5b506002546102c8565b34801561036b575f80fd5b506102c860105481565b348015610380575f80fd5b506102fa61038f366004611f95565b6109c1565b34801561039f575f80fd5b5061033c6103ae366004611fc8565b610a99565b3480156103be575f80fd5b506102fa6103cd366004611ee3565b610b30565b3480156103dd575f80fd5b506007546103f1906001600160a01b031681565b6040516001600160a01b0390911681526020016102d2565b348015610414575f80fd5b50604051601281526020016102d2565b34801561042f575f80fd5b506102c8601a5481565b348015610444575f80fd5b506102c860115481565b348015610459575f80fd5b5061033c610468366004611f5c565b610bc3565b348015610478575f80fd5b50600e5461033c9060ff1681565b348015610491575f80fd5b5060155461033c9060ff1681565b3480156104aa575f80fd5b506102c860195481565b3480156104bf575f80fd5b506102fa6104ce366004611f95565b610bfe565b3480156104de575f80fd5b506102c860095481565b3480156104f3575f80fd5b506102fa610502366004612006565b610c52565b348015610512575f80fd5b506102fa61052136600461201d565b610c81565b348015610531575f80fd5b506102c8610540366004612036565b6001600160a01b03165f9081526003602052604090205490565b348015610565575f80fd5b506102fa610cbe565b348015610579575f80fd5b506102fa610cf3565b34801561058d575f80fd5b50600e546103f19061010090046001600160a01b031681565b3480156105b1575f80fd5b506102c860085481565b3480156105c6575f80fd5b5061033c6105d5366004612036565b60136020525f908152604090205460ff1681565b3480156105f4575f80fd5b506005546001600160a01b03166103f1565b348015610611575f80fd5b50600f546103f1906001600160a01b031681565b348015610630575f80fd5b50610310610d29565b348015610644575f80fd5b5061033c610653366004611f5c565b610d38565b348015610663575f80fd5b506102fa610672366004612006565b610dc2565b348015610682575f80fd5b5061033c610691366004611f5c565b610f0d565b3480156106a1575f80fd5b506102c8601b5481565b3480156106b6575f80fd5b506102c8600c5481565b3480156106cb575f80fd5b5061033c6106da366004612036565b60146020525f908152604090205460ff1681565b3480156106f9575f80fd5b506102c860185481565b34801561070e575f80fd5b506102fa61071d366004612065565b610f19565b34801561072d575f80fd5b506006546103f1906001600160a01b031681565b34801561074c575f80fd5b5061033c61075b366004612036565b60126020525f908152604090205460ff1681565b34801561077a575f80fd5b506102c8600a5481565b34801561078f575f80fd5b506102fa61079e366004611f95565b610fb7565b3480156107ae575f80fd5b506102fa6107bd366004611f95565b61100b565b3480156107cd575f80fd5b506102c86107dc366004612139565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610811575f80fd5b506102c860165481565b348015610826575f80fd5b506102c860175481565b34801561083b575f80fd5b506102fa61084a366004612036565b61105f565b34801561085a575f80fd5b506102fa6110df565b34801561086e575f80fd5b50600b5461033c9060ff1681565b6005546001600160a01b031633146108af5760405162461bcd60e51b81526004016108a690612170565b60405180910390fd5b601a829055601b8190556108c381836121ab565b6019819055603210156109185760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420353025206f72206c6573730000000060448201526064016108a6565b5050565b60605f805461092a906121be565b80601f0160208091040260200160405190810160405280929190818152602001828054610956906121be565b80156109a15780601f10610978576101008083540402835291602001916109a1565b820191905f5260205f20905b81548152906001019060200180831161098457829003601f168201915b5050505050905090565b5f6109b733848461112c565b5060015b92915050565b6005546001600160a01b031633146109eb5760405162461bcd60e51b81526004016108a690612170565b6007546001600160a01b0390811690831603610a6f5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016108a6565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b5f610aa5848484611238565b6001600160a01b0384165f90815260046020908152604080832033845290915290205482811015610b185760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e7400000060448201526064016108a6565b610b25853385840361112c565b506001949350505050565b6005546001600160a01b03163314610b5a5760405162461bcd60e51b81526004016108a690612170565b60178290556018819055610b6e81836121ab565b6016819055606310156109185760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420393525206f72206c6573730000000060448201526064016108a6565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916109b7918590610bf99086906121ab565b61112c565b6005546001600160a01b03163314610c285760405162461bcd60e51b81526004016108a690612170565b6001600160a01b03919091165f908152601d60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610c7c5760405162461bcd60e51b81526004016108a690612170565b600d55565b6005546001600160a01b03163314610cab5760405162461bcd60e51b81526004016108a690612170565b600e805460ff1916911515919091179055565b6005546001600160a01b03163314610ce85760405162461bcd60e51b81526004016108a690612170565b610cf15f611a2b565b565b6005546001600160a01b03163314610d1d5760405162461bcd60e51b81526004016108a690612170565b6015805460ff19169055565b60606001805461092a906121be565b335f9081526004602090815260408083206001600160a01b038616845290915281205482811015610dab5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c75650060448201526064016108a6565b610db8338585840361112c565b5060019392505050565b6005546001600160a01b03163314610dec5760405162461bcd60e51b81526004016108a690612170565b620186a0610df960025490565b610e049060016121f6565b610e0e919061220d565b811015610e7b5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108a6565b6103e8610e8760025490565b610e929060056121f6565b610e9c919061220d565b811115610f085760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016108a6565b600855565b5f6109b7338484611238565b6005546001600160a01b03163314610f435760405162461bcd60e51b81526004016108a690612170565b5f5b60018351610f53919061222c565b8111610fb25781601d5f858481518110610f6f57610f6f61223f565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610faa81612253565b915050610f45565b505050565b6005546001600160a01b03163314610fe15760405162461bcd60e51b81526004016108a690612170565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110355760405162461bcd60e51b81526004016108a690612170565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110895760405162461bcd60e51b81526004016108a690612170565b6001600160a01b0381166110d35760405162461bcd60e51b81526020600482015260116024820152704e6577206f776e6572206973205a45524f60781b60448201526064016108a6565b6110dc81611a2b565b50565b6005546001600160a01b031633146111095760405162461bcd60e51b81526004016108a690612170565b600b8054600160ff199182168117909255600e8054909116909117905543600c55565b6001600160a01b0383166111825760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f74206f776e657220213d2061646472657373283029000060448201526064016108a6565b6001600160a01b0382166111d85760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74207370656e64657220213d206164647265737328302960448201526064016108a6565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661128e5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e76616c69642066726f6d2061646472657373000000000060448201526064016108a6565b6001600160a01b0382166112e45760405162461bcd60e51b815260206004820152601960248201527f45524332303a20496e76616c696420746f20616464726573730000000000000060448201526064016108a6565b6001600160a01b0383165f908152601d602052604090205460ff161561134c5760405162461bcd60e51b815260206004820152601c60248201527f45524332303a2053656e64657220697320626c61636b6c69737465640000000060448201526064016108a6565b6001600160a01b0382165f908152601d602052604090205460ff16156113b45760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20526563656976657220697320626c61636b6c6973746564000060448201526064016108a6565b805f036113c657610fb283835f611a7c565b60155460ff1615611727576005546001600160a01b038481169116148015906113fd57506005546001600160a01b03838116911614155b801561141157506001600160a01b03821615155b801561142857506001600160a01b03821661dead14155b80156114375750601c5460ff16155b1561172757600b5460ff166114c8576001600160a01b0383165f9081526013602052604090205460ff168061148357506001600160a01b0382165f9081526013602052604090205460ff165b6114c85760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108a6565b6001600160a01b0383165f9081526014602052604090205460ff16801561150757506001600160a01b0382165f9081526012602052604090205460ff16155b156115ea57600a5481111561157c5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760591b60648201526084016108a6565b6009546001600160a01b0383165f908152600360205260409020546115a190836121ab565b11156115e55760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108a6565b611727565b6001600160a01b0382165f9081526014602052604090205460ff16801561162957506001600160a01b0383165f9081526012602052604090205460ff16155b1561169f57600a548111156115e55760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760511b60648201526084016108a6565b6001600160a01b0382165f9081526012602052604090205460ff16611727576009546001600160a01b0383165f908152600360205260409020546116e390836121ab565b11156117275760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108a6565b305f90815260036020526040902054600854600e54908210159060ff16801561174d5750805b801561175c5750601c5460ff16155b801561178057506001600160a01b0385165f9081526014602052604090205460ff16155b80156117a457506001600160a01b0385165f9081526013602052604090205460ff16155b80156117c857506001600160a01b0384165f9081526013602052604090205460ff16155b80156117e3575043600d54600c546117e091906121ab565b11155b1561180857601c805460ff191660011790556117fd611c20565b601c805460ff191690555b601c546001600160a01b0386165f9081526013602052604090205460ff9182161591168061184d57506001600160a01b0385165f9081526013602052604090205460ff165b1561185557505f5b5f8082156119d8576001600160a01b0387165f9081526014602052604090205460ff16801561188557505f601654115b15611911576118aa60646118a460165489611d6b90919063ffffffff16565b90611d7d565b9150601654601854836118bd91906121f6565b6118c7919061220d565b60115f8282546118d791906121ab565b90915550506016546017546118ec90846121f6565b6118f6919061220d565b60105f82825461190691906121ab565b909155506119ba9050565b6001600160a01b0388165f9081526014602052604090205460ff16801561193957505f601954115b156119ba5761195860646118a460195489611d6b90919063ffffffff16565b9150601954601b548361196b91906121f6565b611975919061220d565b60115f82825461198591906121ab565b9091555050601954601a5461199a90846121f6565b6119a4919061220d565b60105f8282546119b491906121ab565b90915550505b81156119cb576119cb883084611a7c565b6119d5828761222c565b95505b600b5460ff16611a16576119fc60646118a4601b5489611d6b90919063ffffffff16565b9050611a09883083611a7c565b611a13818761222c565b95505b611a21888888611a7c565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316611ad25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f742066726f6d20213d206164647265737328302900000060448201526064016108a6565b6001600160a01b038216611b285760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204e6f7420746f20213d2061646472657373283029000000000060448201526064016108a6565b6001600160a01b0383165f9081526003602052604090205481811015611b905760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e7460448201526064016108a6565b6001600160a01b038085165f90815260036020526040808220858503905591851681529081208054849290611bc69084906121ab565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c1291815260200190565b60405180910390a350505050565b5f80601154601054611c3291906121ab565b305f90815260036020526040902054909150811580611c4f575080155b15611c5957505050565b600854611c679060036121f6565b811115611c7f57600854611c7c9060036121f6565b90505b47611c8982611d88565b5f611c944783611ed8565b90505f611cb0856118a460115485611d6b90919063ffffffff16565b600f546040519192506001600160a01b03169082905f81818185875af1925050503d805f8114611cfb576040519150601f19603f3d011682016040523d82523d5f602084013e611d00565b606091505b5050600e5460405191975061010090046001600160a01b03169047905f81818185875af1925050503d805f8114611d52576040519150601f19603f3d011682016040523d82523d5f602084013e611d57565b606091505b50505f601081905560115550505050505050565b5f611d7682846121f6565b9392505050565b5f611d76828461220d565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611dbb57611dbb61223f565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e36919061226b565b81600181518110611e4957611e4961223f565b6001600160a01b039283166020918202929092010152600654611e6f913091168461112c565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ea79085905f90869030904290600401612286565b5f604051808303815f87803b158015611ebe575f80fd5b505af1158015611ed0573d5f803e3d5ffd5b505050505050565b5f611d76828461222c565b5f8060408385031215611ef4575f80fd5b50508035926020909101359150565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146110dc575f80fd5b8035611f5781611f38565b919050565b5f8060408385031215611f6d575f80fd5b8235611f7881611f38565b946020939093013593505050565b80358015158114611f57575f80fd5b5f8060408385031215611fa6575f80fd5b8235611fb181611f38565b9150611fbf60208401611f86565b90509250929050565b5f805f60608486031215611fda575f80fd5b8335611fe581611f38565b92506020840135611ff581611f38565b929592945050506040919091013590565b5f60208284031215612016575f80fd5b5035919050565b5f6020828403121561202d575f80fd5b611d7682611f86565b5f60208284031215612046575f80fd5b8135611d7681611f38565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215612076575f80fd5b823567ffffffffffffffff81111561208c575f80fd5b8301601f8101851361209c575f80fd5b803567ffffffffffffffff8111156120b6576120b6612051565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156120e3576120e3612051565b604052918252602081840181019290810188841115612100575f80fd5b6020850194505b838510156121265761211885611f4c565b815260209485019401612107565b509450611fbf9250505060208401611f86565b5f806040838503121561214a575f80fd5b823561215581611f38565b9150602083013561216581611f38565b809150509250929050565b6020808252600d908201526c24b73b30b634b21037bbb732b960991b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156109bb576109bb612197565b600181811c908216806121d257607f821691505b6020821081036121f057634e487b7160e01b5f52602260045260245ffd5b50919050565b80820281158282048414176109bb576109bb612197565b5f8261222757634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156109bb576109bb612197565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161226457612264612197565b5060010190565b5f6020828403121561227b575f80fd5b8151611d7681611f38565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156122d65783516001600160a01b03168352602093840193909201916001016122af565b50506001600160a01b03959095166060840152505060800152939250505056fea26469706673582212209422ed066349e838280f7cc3d34ab5d4758a25359f534febe07a1f22bda9a12864736f6c634300081a0033

Deployed Bytecode Sourcemap

14240:9684:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14600:36;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;14600:36:0;;;;;;;;18009:281;;;;;;;;;;-1:-1:-1;18009:281:0;;;;;:::i;:::-;;:::i;:::-;;9925:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10497:169::-;;;;;;;;;;-1:-1:-1;10497:169:0;;;;;:::i;:::-;;:::i;:::-;;;1782:14:1;;1775:22;1757:41;;1745:2;1730:18;10497:169:0;1617:187:1;10246:108:0;;;;;;;;;;-1:-1:-1;10334:12:0;;10246:108;;14753:38;;;;;;;;;;;;;;;;18914:235;;;;;;;;;;-1:-1:-1;18914:235:0;;;;;:::i;:::-;;:::i;11177:397::-;;;;;;;;;;-1:-1:-1;11177:397:0;;;;;:::i;:::-;;:::i;18298:288::-;;;;;;;;;;-1:-1:-1;18298:288:0;;;;;:::i;:::-;;:::i;14355:23::-;;;;;;;;;;-1:-1:-1;14355:23:0;;;;-1:-1:-1;;;;;14355:23:0;;;;;;-1:-1:-1;;;;;2971:32:1;;;2953:51;;2941:2;2926:18;14355:23:0;2807:203:1;10145:93:0;;;;;;;;;;-1:-1:-1;10145:93:0;;10228:2;3157:36:1;;3145:2;3130:18;10145:93:0;3015:184:1;15211:30:0;;;;;;;;;;;;;;;;14798:32;;;;;;;;;;;;;;;;11751:211;;;;;;;;;;-1:-1:-1;11751:211:0;;;;;:::i;:::-;;:::i;14643:31::-;;;;;;;;;;-1:-1:-1;14643:31:0;;;;;;;;15030:33;;;;;;;;;;-1:-1:-1;15030:33:0;;;;;;;;15178:26;;;;;;;;;;;;;;;;18592:111;;;;;;;;;;-1:-1:-1;18592:111:0;;;;;:::i;:::-;;:::i;14431:38::-;;;;;;;;;;;;;;;;17092:108;;;;;;;;;;-1:-1:-1;17092:108:0;;;;;:::i;:::-;;:::i;17570:93::-;;;;;;;;;;-1:-1:-1;17570:93:0;;;;;:::i;:::-;;:::i;10362:127::-;;;;;;;;;;-1:-1:-1;10362:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10463:18:0;10436:7;10463:18;;;:9;:18;;;;;;;10362:127;1233:103;;;;;;;;;;;;;:::i;17480:84::-;;;;;;;;;;;;;:::i;14683:30::-;;;;;;;;;;-1:-1:-1;14683:30:0;;;;;;;-1:-1:-1;;;;;14683:30:0;;;14391:33;;;;;;;;;;;;;;;;14908:47;;;;;;;;;;-1:-1:-1;14908:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;950:87;;;;;;;;;;-1:-1:-1;1023:6:0;;-1:-1:-1;;;;;1023:6:0;950:87;;14720:24;;;;;;;;;;-1:-1:-1;14720:24:0;;;;-1:-1:-1;;;;;14720:24:0;;;10033:104;;;;;;;;;;;;;:::i;11970:360::-;;;;;;;;;;-1:-1:-1;11970:360:0;;;;;:::i;:::-;;:::i;17669:332::-;;;;;;;;;;-1:-1:-1;17669:332:0;;;;;:::i;:::-;;:::i;11582:161::-;;;;;;;;;;-1:-1:-1;11582:161:0;;;;;:::i;:::-;;:::i;15248:24::-;;;;;;;;;;;;;;;;14560:33;;;;;;;;;;;;;;;;14964:57;;;;;;;;;;-1:-1:-1;14964:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15144:25;;;;;;;;;;;;;;;;18709:199;;;;;;;;;;-1:-1:-1;18709:199:0;;;;;:::i;:::-;;:::i;14312:36::-;;;;;;;;;;-1:-1:-1;14312:36:0;;;;-1:-1:-1;;;;;14312:36:0;;;14839:60;;;;;;;;;;-1:-1:-1;14839:60:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14476:35;;;;;;;;;;;;;;;;17344:128;;;;;;;;;;-1:-1:-1;17344:128:0;;;;;:::i;:::-;;:::i;17206:132::-;;;;;;;;;;-1:-1:-1;17206:132:0;;;;;:::i;:::-;;:::i;11018:151::-;;;;;;;;;;-1:-1:-1;11018:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;11134:18:0;;;11107:7;11134:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11018:151;15072:27;;;;;;;;;;;;;;;;15106:31;;;;;;;;;;;;;;;;1045:180;;;;;;;;;;-1:-1:-1;1045:180:0;;;;;:::i;:::-;;:::i;16936:150::-;;;;;;;;;;;;;:::i;14520:33::-;;;;;;;;;;-1:-1:-1;14520:33:0;;;;;;;;18009:281;1023:6;;-1:-1:-1;;;;;1023:6:0;466:10;881:23;873:49;;;;-1:-1:-1;;;873:49:0;;;;;;;:::i;:::-;;;;;;;;;18099:15:::1;:30:::0;;;18140:9:::1;:21:::0;;;18186:27:::1;18152:9:::0;18117:12;18186:27:::1;:::i;:::-;18172:11;:41:::0;;;18247:2:::1;-1:-1:-1::0;18232:17:0::1;18224:58;;;::::0;-1:-1:-1;;;18224:58:0;;6649:2:1;18224:58:0::1;::::0;::::1;6631:21:1::0;6688:2;6668:18;;;6661:30;6727;6707:18;;;6700:58;6775:18;;18224:58:0::1;6447:352:1::0;18224:58:0::1;18009:281:::0;;:::o;9925:100::-;9979:13;10012:5;10005:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9925:100;:::o;10497:169::-;10580:4;10597:39;466:10;10620:7;10629:6;10597:8;:39::i;:::-;-1:-1:-1;10654:4:0;10497:169;;;;;:::o;18914:235::-;1023:6;;-1:-1:-1;;;;;1023:6:0;466:10;881:23;873:49;;;;-1:-1:-1;;;873:49:0;;;;;;;:::i;:::-;19021:8:::1;::::0;-1:-1:-1;;;;;19021:8:0;;::::1;19013:16:::0;;::::1;::::0;19005:86:::1;;;::::0;-1:-1:-1;;;19005:86:0;;7391:2:1;19005:86:0::1;::::0;::::1;7373:21:1::0;7430:2;7410:18;;;7403:30;7469:34;7449:18;;;7442:62;7540:27;7520:18;;;7513:55;7585:19;;19005:86:0::1;7189:421:1::0;19005:86:0::1;-1:-1:-1::0;;;;;19102:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;19102:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18914:235::o;11177:397::-;11274:4;11291:27;11301:4;11307:2;11311:6;11291:9;:27::i;:::-;-1:-1:-1;;;;;11348:17:0;;11329:16;11348:17;;;:11;:17;;;;;;;;466:10;11348:31;;;;;;;;11398:18;;;;11390:60;;;;-1:-1:-1;;;11390:60:0;;7817:2:1;11390:60:0;;;7799:21:1;7856:2;7836:18;;;7829:30;7895:31;7875:18;;;7868:59;7944:18;;11390:60:0;7615:353:1;11390:60:0;11486:47;11495:4;466:10;11526:6;11515:8;:17;11486:8;:47::i;:::-;-1:-1:-1;11562:4:0;;11177:397;-1:-1:-1;;;;11177:397:0:o;18298:288::-;1023:6;;-1:-1:-1;;;;;1023:6:0;466:10;881:23;873:49;;;;-1:-1:-1;;;873:49:0;;;;;;;:::i;:::-;18389:16:::1;:31:::0;;;18431:10:::1;:22:::0;;;18479:29:::1;18444:9:::0;18408:12;18479:29:::1;:::i;:::-;18464:12;:44:::0;;;18543:2:::1;-1:-1:-1::0;18527:18:0::1;18519:59;;;::::0;-1:-1:-1;;;18519:59:0;;8175:2:1;18519:59:0::1;::::0;::::1;8157:21:1::0;8214:2;8194:18;;;8187:30;8253;8233:18;;;8226:58;8301:18;;18519:59:0::1;7973:352:1::0;11751:211:0;466:10;11837:4;11886:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11886:34:0;;;;;;;;;;11837:4;;11854:78;;11877:7;;11886:45;;11923:8;;11886:45;:::i;:::-;11854:8;:78::i;18592:111::-;1023:6;;-1:-1:-1;;;;;1023:6:0;466:10;881:23;873:49;;;;-1:-1:-1;;;873:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18671:15:0;;;::::1;;::::0;;;:9:::1;:15;::::0;;;;:24;;-1:-1:-1;;18671:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18592:111::o;17092:108::-;1023:6;;-1:-1:-1;;;;;1023:6:0;466:10;881:23;873:49;;;;-1:-1:-1;;;873:49:0;;;;;;;:::i;:::-;17164:21:::1;:28:::0;17092:108::o;17570:93::-;1023:6;;-1:-1:-1;;;;;1023:6:0;466:10;881:23;873:49;;;;-1:-1:-1;;;873:49:0;;;;;;;:::i;:::-;17634:11:::1;:21:::0;;-1:-1:-1;;17634:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17570:93::o;1233:103::-;1023:6;;-1:-1:-1;;;;;1023:6:0;466:10;881:23;873:49;;;;-1:-1:-1;;;873:49:0;;;;;;;:::i;:::-;1298:30:::1;1325:1;1298:18;:30::i;:::-;1233:103::o:0;17480:84::-;1023:6;;-1:-1:-1;;;;;1023:6:0;466:10;881:23;873:49;;;;-1:-1:-1;;;873:49:0;;;;;;;:::i;:::-;17534:14:::1;:22:::0;;-1:-1:-1;;17534:22:0::1;::::0;;17480:84::o;10033:104::-;10089:13;10122:7;10115:14;;;;;:::i;11970:360::-;466:10;12056:4;12092:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12092:34:0;;;;;;;;;;12145:20;;;;12137:64;;;;-1:-1:-1;;;12137:64:0;;8532:2:1;12137:64:0;;;8514:21:1;8571:2;8551:18;;;8544:30;8610:33;8590:18;;;8583:61;8661:18;;12137:64:0;8330:355:1;12137:64:0;12237:52;466:10;12260:7;12280:8;12269;:19;12237:8;:52::i;:::-;-1:-1:-1;12318:4:0;;11970:360;-1:-1:-1;;;11970:360:0:o;17669:332::-;1023:6;;-1:-1:-1;;;;;1023:6:0;466:10;881:23;873:49;;;;-1:-1:-1;;;873:49:0;;;;;;;:::i;:::-;17779:6:::1;17758:13;10334:12:::0;;;10246:108;17758:13:::1;:17;::::0;17774:1:::1;17758:17;:::i;:::-;17757:28;;;;:::i;:::-;17747:6;:38;;17739:104;;;::::0;-1:-1:-1;;;17739:104:0;;9287:2:1;17739:104:0::1;::::0;::::1;9269:21:1::0;9326:2;9306:18;;;9299:30;9365:34;9345:18;;;9338:62;-1:-1:-1;;;9416:18:1;;;9409:51;9477:19;;17739:104:0::1;9085:417:1::0;17739:104:0::1;17894:4;17873:13;10334:12:::0;;;10246:108;17873:13:::1;:17;::::0;17889:1:::1;17873:17;:::i;:::-;17872:26;;;;:::i;:::-;17862:6;:36;;17854:101;;;::::0;-1:-1:-1;;;17854:101:0;;9709:2:1;17854:101:0::1;::::0;::::1;9691:21:1::0;9748:2;9728:18;;;9721:30;9787:34;9767:18;;;9760:62;-1:-1:-1;;;9838:18:1;;;9831:50;9898:19;;17854:101:0::1;9507:416:1::0;17854:101:0::1;17966:18;:27:::0;17669:332::o;11582:161::-;11661:4;11678:35;466:10;11702:2;11706:6;11678:9;:35::i;18709:199::-;1023:6;;-1:-1:-1;;;;;1023:6:0;466:10;881:23;873:49;;;;-1:-1:-1;;;873:49:0;;;;;;;:::i;:::-;18807:9:::1;18802:99;18838:1;18825:5;:12;:14;;;;:::i;:::-;18820:1;:19;18802:99;;18883:6;18861:9;:19;18871:5;18877:1;18871:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18861:19:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18861:19:0;:28;;-1:-1:-1;;18861:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18841:3;::::1;::::0;::::1;:::i;:::-;;;;18802:99;;;;18709:199:::0;;:::o;17344:128::-;1023:6;;-1:-1:-1;;;;;1023:6:0;466:10;881:23;873:49;;;;-1:-1:-1;;;873:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17432:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;17432:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17344:128::o;17206:132::-;1023:6;;-1:-1:-1;;;;;1023:6:0;466:10;881:23;873:49;;;;-1:-1:-1;;;873:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17288:34:0;;;::::1;;::::0;;;:28:::1;:34;::::0;;;;:42;;-1:-1:-1;;17288:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17206:132::o;1045:180::-;1023:6;;-1:-1:-1;;;;;1023:6:0;466:10;881:23;873:49;;;;-1:-1:-1;;;873:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1134:22:0;::::1;1126:52;;;::::0;-1:-1:-1;;;1126:52:0;;10535:2:1;1126:52:0::1;::::0;::::1;10517:21:1::0;10574:2;10554:18;;;10547:30;-1:-1:-1;;;10593:18:1;;;10586:47;10650:18;;1126:52:0::1;10333:341:1::0;1126:52:0::1;1189:28;1208:8;1189:18;:28::i;:::-;1045:180:::0;:::o;16936:150::-;1023:6;;-1:-1:-1;;;;;1023:6:0;466:10;881:23;873:49;;;;-1:-1:-1;;;873:49:0;;;;;;;:::i;:::-;16987:13:::1;:20:::0;;17003:4:::1;-1:-1:-1::0;;16987:20:0;;::::1;::::0;::::1;::::0;;;17018:11:::1;:18:::0;;;;::::1;::::0;;::::1;::::0;;17066:12:::1;17047:18;:31:::0;16936:150::o;10674:336::-;-1:-1:-1;;;;;10776:19:0;;10768:62;;;;-1:-1:-1;;;10768:62:0;;10881:2:1;10768:62:0;;;10863:21:1;10920:2;10900:18;;;10893:30;10959:32;10939:18;;;10932:60;11009:18;;10768:62:0;10679:354:1;10768:62:0;-1:-1:-1;;;;;10849:21:0;;10841:66;;;;-1:-1:-1;;;10841:66:0;;11240:2:1;10841:66:0;;;11222:21:1;;;11259:18;;;11252:30;11318:34;11298:18;;;11291:62;11370:18;;10841:66:0;11038:356:1;10841:66:0;-1:-1:-1;;;;;10918:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10970:32;;160:25:1;;;10970:32:0;;133:18:1;10970:32:0;;;;;;;10674:336;;;:::o;20055:3264::-;-1:-1:-1;;;;;20187:18:0;;20179:58;;;;-1:-1:-1;;;20179:58:0;;11601:2:1;20179:58:0;;;11583:21:1;11640:2;11620:18;;;11613:30;11679:29;11659:18;;;11652:57;11726:18;;20179:58:0;11399:351:1;20179:58:0;-1:-1:-1;;;;;20256:16:0;;20248:54;;;;-1:-1:-1;;;20248:54:0;;11957:2:1;20248:54:0;;;11939:21:1;11996:2;11976:18;;;11969:30;12035:27;12015:18;;;12008:55;12080:18;;20248:54:0;11755:349:1;20248:54:0;-1:-1:-1;;;;;20322:15:0;;;;;;:9;:15;;;;;;;;20321:16;20313:57;;;;-1:-1:-1;;;20313:57:0;;12311:2:1;20313:57:0;;;12293:21:1;12350:2;12330:18;;;12323:30;12389;12369:18;;;12362:58;12437:18;;20313:57:0;12109:352:1;20313:57:0;-1:-1:-1;;;;;20390:13:0;;;;;;:9;:13;;;;;;;;20389:14;20381:57;;;;-1:-1:-1;;;20381:57:0;;12668:2:1;20381:57:0;;;12650:21:1;12707:2;12687:18;;;12680:30;12746:32;12726:18;;;12719:60;12796:18;;20381:57:0;12466:354:1;20381:57:0;20455:6;20465:1;20455:11;20451:93;;20483:28;20499:4;20505:2;20509:1;20483:15;:28::i;20451:93::-;20560:14;;;;20556:1078;;;1023:6;;-1:-1:-1;;;;;20595:15:0;;;1023:6;;20595:15;;;;:32;;-1:-1:-1;1023:6:0;;-1:-1:-1;;;;;20614:13:0;;;1023:6;;20614:13;;20595:32;:52;;;;-1:-1:-1;;;;;;20631:16:0;;;;20595:52;:77;;;;-1:-1:-1;;;;;;20651:21:0;;20665:6;20651:21;;20595:77;:90;;;;-1:-1:-1;20677:8:0;;;;20676:9;20595:90;20591:1032;;;20711:13;;;;20706:142;;-1:-1:-1;;;;;20757:21:0;;;;;;:15;:21;;;;;;;;;:44;;-1:-1:-1;;;;;;20782:19:0;;;;;;:15;:19;;;;;;;;20757:44;20749:79;;;;-1:-1:-1;;;20749:79:0;;13027:2:1;20749:79:0;;;13009:21:1;13066:2;13046:18;;;13039:30;-1:-1:-1;;;13085:18:1;;;13078:52;13147:18;;20749:79:0;12825:346:1;20749:79:0;-1:-1:-1;;;;;20872:31:0;;;;;;:25;:31;;;;;;;;:68;;;;-1:-1:-1;;;;;;20908:32:0;;;;;;:28;:32;;;;;;;;20907:33;20872:68;20868:740;;;20983:20;;20973:6;:30;;20965:96;;;;-1:-1:-1;;;20965:96:0;;13378:2:1;20965:96:0;;;13360:21:1;13417:2;13397:18;;;13390:30;13456:34;13436:18;;;13429:62;-1:-1:-1;;;13507:18:1;;;13500:51;13568:19;;20965:96:0;13176:417:1;20965:96:0;21118:23;;-1:-1:-1;;;;;10463:18:0;;10436:7;10463:18;;;:9;:18;;;;;;21092:22;;:6;:22;:::i;:::-;:49;;21084:81;;;;-1:-1:-1;;;21084:81:0;;13800:2:1;21084:81:0;;;13782:21:1;13839:2;13819:18;;;13812:30;-1:-1:-1;;;13858:18:1;;;13851:49;13917:18;;21084:81:0;13598:343:1;21084:81:0;20868:740;;;-1:-1:-1;;;;;21212:29:0;;;;;;:25;:29;;;;;;;;:68;;;;-1:-1:-1;;;;;;21246:34:0;;;;;;:28;:34;;;;;;;;21245:35;21212:68;21208:400;;;21323:20;;21313:6;:30;;21305:97;;;;-1:-1:-1;;;21305:97:0;;14148:2:1;21305:97:0;;;14130:21:1;14187:2;14167:18;;;14160:30;14226:34;14206:18;;;14199:62;-1:-1:-1;;;14277:18:1;;;14270:52;14339:19;;21305:97:0;13946:418:1;21208:400:0;-1:-1:-1;;;;;21450:32:0;;;;;;:28;:32;;;;;;;;21445:163;;21541:23;;-1:-1:-1;;;;;10463:18:0;;10436:7;10463:18;;;:9;:18;;;;;;21515:22;;:6;:22;:::i;:::-;:49;;21507:81;;;;-1:-1:-1;;;21507:81:0;;13800:2:1;21507:81:0;;;13782:21:1;13839:2;13819:18;;;13812:30;-1:-1:-1;;;13858:18:1;;;13851:49;13917:18;;21507:81:0;13598:343:1;21507:81:0;21685:4;21644:20;10463:18;;;:9;:18;;;;;;21733;;21766:11;;21717:34;;;;;21766:11;;:36;;;;;21795:7;21766:36;:63;;;;-1:-1:-1;21821:8:0;;;;21820:9;21766:63;:113;;;;-1:-1:-1;;;;;;21848:31:0;;;;;;:25;:31;;;;;;;;21847:32;21766:113;:153;;;;-1:-1:-1;;;;;;21898:21:0;;;;;;:15;:21;;;;;;;;21897:22;21766:153;:191;;;;-1:-1:-1;;;;;;21938:19:0;;;;;;:15;:19;;;;;;;;21937:20;21766:191;:264;;;;;22018:12;21993:21;;21974:18;;:40;;;;:::i;:::-;:56;;21766:264;21762:378;;;22057:8;:15;;-1:-1:-1;;22057:15:0;22068:4;22057:15;;;22087:10;:8;:10::i;:::-;22112:8;:16;;-1:-1:-1;;22112:16:0;;;21762:378;22164:8;;-1:-1:-1;;;;;22187:21:0;;22152:8;22187:21;;;:15;:21;;;;;;22164:8;;;;22163:9;;22187:21;;:44;;-1:-1:-1;;;;;;22212:19:0;;;;;;:15;:19;;;;;;;;22187:44;22183:74;;;-1:-1:-1;22252:5:0;22183:74;22270:12;22298:9;22326:3;22322:747;;;-1:-1:-1;;;;;22350:29:0;;;;;;:25;:29;;;;;;;;:49;;;;;22398:1;22383:12;;:16;22350:49;22346:595;;;22427:33;22456:3;22427:24;22438:12;;22427:6;:10;;:24;;;;:::i;:::-;:28;;:33::i;:::-;22420:40;;22522:12;;22508:10;;22501:4;:17;;;;:::i;:::-;22500:34;;;;:::i;:::-;22479:17;;:55;;;;;;;:::i;:::-;;;;-1:-1:-1;;22608:12:0;;22588:16;;22581:23;;:4;:23;:::i;:::-;22580:40;;;;:::i;:::-;22553:23;;:67;;;;;;;:::i;:::-;;;;-1:-1:-1;22346:595:0;;-1:-1:-1;22346:595:0;;-1:-1:-1;;;;;22659:31:0;;;;;;:25;:31;;;;;;;;:50;;;;;22708:1;22694:11;;:15;22659:50;22655:286;;;22737:32;22765:3;22737:23;22748:11;;22737:6;:10;;:23;;;;:::i;:32::-;22730:39;;22830:11;;22817:9;;22810:4;:16;;;;:::i;:::-;22809:32;;;;:::i;:::-;22788:17;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;22914:11:0;;22895:15;;22888:22;;:4;:22;:::i;:::-;22887:38;;;;:::i;:::-;22860:23;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;;22655:286:0;22959:8;;22955:73;;22986:42;23002:4;23016;23023;22986:15;:42::i;:::-;23043:14;23053:4;23043:14;;:::i;:::-;;;22322:747;23088:13;;;;23083:185;;23128:30;23154:3;23128:21;23139:9;;23128:6;:10;;:21;;;;:::i;:30::-;23121:37;;23177:42;23193:4;23207;23214;23177:15;:42::i;:::-;23238:14;23248:4;23238:14;;:::i;:::-;;;23083:185;23278:33;23294:4;23300:2;23304:6;23278:15;:33::i;:::-;20168:3151;;;;;20055:3264;;;:::o;1344:191::-;1437:6;;;-1:-1:-1;;;;;1454:17:0;;;-1:-1:-1;;;;;;1454:17:0;;;;;;;1487:40;;1437:6;;;1454:17;1437:6;;1487:40;;1418:16;;1487:40;1407:128;1344:191;:::o;13474:607::-;-1:-1:-1;;;;;13571:18:0;;13563:60;;;;-1:-1:-1;;;13563:60:0;;14571:2:1;13563:60:0;;;14553:21:1;14610:2;14590:18;;;14583:30;14649:31;14629:18;;;14622:59;14698:18;;13563:60:0;14369:353:1;13563:60:0;-1:-1:-1;;;;;13642:16:0;;13634:56;;;;-1:-1:-1;;;13634:56:0;;14929:2:1;13634:56:0;;;14911:21:1;14968:2;14948:18;;;14941:30;15007:29;14987:18;;;14980:57;15054:18;;13634:56:0;14727:351:1;13634:56:0;-1:-1:-1;;;;;13772:15:0;;13750:19;13772:15;;;:9;:15;;;;;;13806:21;;;;13798:66;;;;-1:-1:-1;;;13798:66:0;;15285:2:1;13798:66:0;;;15267:21:1;;;15304:18;;;15297:30;15363:34;15343:18;;;15336:62;15415:18;;13798:66:0;15083:356:1;13798:66:0;-1:-1:-1;;;;;13900:15:0;;;;;;;:9;:15;;;;;;13918:20;;;13900:38;;13960:13;;;;;;;;:23;;13932:6;;13900:15;13960:23;;13932:6;;13960:23;:::i;:::-;;;;;;;;14014:2;-1:-1:-1;;;;;13999:26:0;14008:4;-1:-1:-1;;;;;13999:26:0;;14018:6;13999:26;;;;160:25:1;;148:2;133:18;;14:177;13999:26:0;;;;;;;;13552:529;13474:607;;;:::o;19155:892::-;19194:12;19217:25;19271:17;;19245:23;;:43;;;;:::i;:::-;19340:4;19299:20;10463:18;;;:9;:18;;;;;;19217:71;;-1:-1:-1;19361:22:0;;;:43;;-1:-1:-1;19387:17:0;;19361:43;19357:69;;;19419:7;;;19155:892::o;19357:69::-;19457:18;;:22;;19478:1;19457:22;:::i;:::-;19442:12;:37;19438:106;;;19510:18;;:22;;19531:1;19510:22;:::i;:::-;19495:37;;19438:106;19581:21;19613:30;19630:12;19613:16;:30::i;:::-;19656:18;19677:41;:21;19703:14;19677:25;:41::i;:::-;19656:62;;19729:17;19749:56;19787:17;19749:33;19764:17;;19749:10;:14;;:33;;;;:::i;:56::-;19840:9;;19832:45;;19729:76;;-1:-1:-1;;;;;;19840:9:0;;19729:76;;19832:45;;;;19729:76;19840:9;19832:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19910:15:0;;19902:65;;19818:59;;-1:-1:-1;19910:15:0;;;-1:-1:-1;;;;;19910:15:0;;19940:21;;19902:65;;;;19940:21;19910:15;19902:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20006:1:0;19980:23;:27;;;20018:17;:21;-1:-1:-1;;;;;;;19155:892:0:o;1566:98::-;1624:7;1651:5;1655:1;1651;:5;:::i;:::-;1644:12;1566:98;-1:-1:-1;;;1566:98:0:o;1950:::-;2008:7;2035:5;2039:1;2035;:5;:::i;23360:559::-;23505:16;;;23519:1;23505:16;;;;;;;;23481:21;;23505:16;;;;;;;;;;-1:-1:-1;23505:16:0;23481:40;;23550:4;23532;23537:1;23532:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23532:23:0;;;:7;;;;;;;;;;:23;;;;23576:10;;:17;;;-1:-1:-1;;;23576:17:0;;;;:10;;;;;:15;;:17;;;;;23532:7;;23576:17;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23566:4;23571:1;23566:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23566:27:0;;;:7;;;;;;;;;:27;23638:10;;23606:52;;23623:4;;23638:10;23651:6;23606:8;:52::i;:::-;23697:10;;:214;;-1:-1:-1;;;23697:214:0;;-1:-1:-1;;;;;23697:10:0;;;;:61;;:214;;23773:6;;23697:10;;23838:4;;23865;;23885:15;;23697:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23410:509;23360:559;:::o;2595:98::-;2653:7;2680:5;2684:1;2680;:5;:::i;196:346:1:-;264:6;272;325:2;313:9;304:7;300:23;296:32;293:52;;;341:1;338;331:12;293:52;-1:-1:-1;;386:23:1;;;506:2;491:18;;;478:32;;-1:-1:-1;196:346:1:o;547:418::-;696:2;685:9;678:21;659:4;728:6;722:13;771:6;766:2;755:9;751:18;744:34;830:6;825:2;817:6;813:15;808:2;797:9;793:18;787:50;886:1;881:2;872:6;861:9;857:22;853:31;846:42;956:2;949;945:7;940:2;932:6;928:15;924:29;913:9;909:45;905:54;897:62;;;547:418;;;;:::o;970:131::-;-1:-1:-1;;;;;1045:31:1;;1035:42;;1025:70;;1091:1;1088;1081:12;1106:134;1174:20;;1203:31;1174:20;1203:31;:::i;:::-;1106:134;;;:::o;1245:367::-;1313:6;1321;1374:2;1362:9;1353:7;1349:23;1345:32;1342:52;;;1390:1;1387;1380:12;1342:52;1429:9;1416:23;1448:31;1473:5;1448:31;:::i;:::-;1498:5;1576:2;1561:18;;;;1548:32;;-1:-1:-1;;;1245:367:1:o;1809:160::-;1874:20;;1930:13;;1923:21;1913:32;;1903:60;;1959:1;1956;1949:12;1974:315;2039:6;2047;2100:2;2088:9;2079:7;2075:23;2071:32;2068:52;;;2116:1;2113;2106:12;2068:52;2155:9;2142:23;2174:31;2199:5;2174:31;:::i;:::-;2224:5;-1:-1:-1;2248:35:1;2279:2;2264:18;;2248:35;:::i;:::-;2238:45;;1974:315;;;;;:::o;2294:508::-;2371:6;2379;2387;2440:2;2428:9;2419:7;2415:23;2411:32;2408:52;;;2456:1;2453;2446:12;2408:52;2495:9;2482:23;2514:31;2539:5;2514:31;:::i;:::-;2564:5;-1:-1:-1;2621:2:1;2606:18;;2593:32;2634:33;2593:32;2634:33;:::i;:::-;2294:508;;2686:7;;-1:-1:-1;;;2766:2:1;2751:18;;;;2738:32;;2294:508::o;3204:226::-;3263:6;3316:2;3304:9;3295:7;3291:23;3287:32;3284:52;;;3332:1;3329;3322:12;3284:52;-1:-1:-1;3377:23:1;;3204:226;-1:-1:-1;3204:226:1:o;3435:180::-;3491:6;3544:2;3532:9;3523:7;3519:23;3515:32;3512:52;;;3560:1;3557;3550:12;3512:52;3583:26;3599:9;3583:26;:::i;3620:247::-;3679:6;3732:2;3720:9;3711:7;3707:23;3703:32;3700:52;;;3748:1;3745;3738:12;3700:52;3787:9;3774:23;3806:31;3831:5;3806:31;:::i;3872:127::-;3933:10;3928:3;3924:20;3921:1;3914:31;3964:4;3961:1;3954:15;3988:4;3985:1;3978:15;4004:1207;4094:6;4102;4155:2;4143:9;4134:7;4130:23;4126:32;4123:52;;;4171:1;4168;4161:12;4123:52;4211:9;4198:23;4244:18;4236:6;4233:30;4230:50;;;4276:1;4273;4266:12;4230:50;4299:22;;4352:4;4344:13;;4340:27;-1:-1:-1;4330:55:1;;4381:1;4378;4371:12;4330:55;4421:2;4408:16;4447:18;4439:6;4436:30;4433:56;;;4469:18;;:::i;:::-;4515:6;4512:1;4508:14;4551:2;4545:9;4614:2;4610:7;4605:2;4601;4597:11;4593:25;4585:6;4581:38;4685:6;4673:10;4670:22;4649:18;4637:10;4634:34;4631:62;4628:88;;;4696:18;;:::i;:::-;4732:2;4725:22;4782;;;4832:4;4864:11;;;4860:22;;;4782;4820:17;;4894:19;;;4891:39;;;4926:1;4923;4916:12;4891:39;4958:4;4954:2;4950:13;4939:24;;4972:152;4988:6;4983:3;4980:15;4972:152;;;5056:23;5075:3;5056:23;:::i;:::-;5044:36;;5109:4;5005:14;;;;5100;4972:152;;;-1:-1:-1;5143:6:1;-1:-1:-1;5168:37:1;;-1:-1:-1;;;5199:4:1;5184:20;;5168:37;:::i;5450:388::-;5518:6;5526;5579:2;5567:9;5558:7;5554:23;5550:32;5547:52;;;5595:1;5592;5585:12;5547:52;5634:9;5621:23;5653:31;5678:5;5653:31;:::i;:::-;5703:5;-1:-1:-1;5760:2:1;5745:18;;5732:32;5773:33;5732:32;5773:33;:::i;:::-;5825:7;5815:17;;;5450:388;;;;;:::o;5843:337::-;6045:2;6027:21;;;6084:2;6064:18;;;6057:30;-1:-1:-1;;;6118:2:1;6103:18;;6096:43;6171:2;6156:18;;5843:337::o;6185:127::-;6246:10;6241:3;6237:20;6234:1;6227:31;6277:4;6274:1;6267:15;6301:4;6298:1;6291:15;6317:125;6382:9;;;6403:10;;;6400:36;;;6416:18;;:::i;6804:380::-;6883:1;6879:12;;;;6926;;;6947:61;;7001:4;6993:6;6989:17;6979:27;;6947:61;7054:2;7046:6;7043:14;7023:18;7020:38;7017:161;;7100:10;7095:3;7091:20;7088:1;7081:31;7135:4;7132:1;7125:15;7163:4;7160:1;7153:15;7017:161;;6804:380;;;:::o;8690:168::-;8763:9;;;8794;;8811:15;;;8805:22;;8791:37;8781:71;;8832:18;;:::i;8863:217::-;8903:1;8929;8919:132;;8973:10;8968:3;8964:20;8961:1;8954:31;9008:4;9005:1;8998:15;9036:4;9033:1;9026:15;8919:132;-1:-1:-1;9065:9:1;;8863:217::o;9928:128::-;9995:9;;;10016:11;;;10013:37;;;10030:18;;:::i;10061:127::-;10122:10;10117:3;10113:20;10110:1;10103:31;10153:4;10150:1;10143:15;10177:4;10174:1;10167:15;10193:135;10232:3;10253:17;;;10250:43;;10273:18;;:::i;:::-;-1:-1:-1;10320:1:1;10309:13;;10193:135::o;15654:251::-;15724:6;15777:2;15765:9;15756:7;15752:23;15748:32;15745:52;;;15793:1;15790;15783:12;15745:52;15825:9;15819:16;15844:31;15869:5;15844:31;:::i;15910:959::-;16172:4;16220:3;16209:9;16205:19;16251:6;16240:9;16233:25;16294:6;16289:2;16278:9;16274:18;16267:34;16337:3;16332:2;16321:9;16317:18;16310:31;16361:6;16396;16390:13;16427:6;16419;16412:22;16465:3;16454:9;16450:19;16443:26;;16504:2;16496:6;16492:15;16478:29;;16525:1;16535:195;16549:6;16546:1;16543:13;16535:195;;;16614:13;;-1:-1:-1;;;;;16610:39:1;16598:52;;16679:2;16705:15;;;;16670:12;;;;16646:1;16564:9;16535:195;;;-1:-1:-1;;;;;;;16786:32:1;;;;16781:2;16766:18;;16759:60;-1:-1:-1;;16850:3:1;16835:19;16828:35;16747:3;15910:959;-1:-1:-1;;;15910:959:1:o

Swarm Source

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