ETH Price: $2,419.09 (+1.95%)

Token

REPUBLICAN (REPUBLICAN)
 

Overview

Max Total Supply

202,420,242,024 REPUBLICAN

Holders

234

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
REPUB

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;

// TG: https://t.me/RepublicanToken
// Twitter: https://twitter.com/Republicaneth

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

    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 REPUB is ERC20, Ownable {
    using SafeMath for uint256;

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

    bool public bTradingActive = false;
    bool public bSwapEnabled = false;

    address public marketingWallet;
    address public devWallet;

    uint256 public tokenAmountForMarketing;
    uint256 public tokenAmountForDev;

    mapping(address => bool) public bExcludedMaxTokenAmountPerTxn;
    mapping(address => bool) public bExcludedFromTax;
    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 bSwapping;

    mapping(address => bool) public blackList;
    
    constructor() ERC20("REPUBLICAN", "REPUBLICAN") {
        devWallet = address(0x6B446e8DAbD235114DC3e52E5A3791A298102E03);
        marketingWallet = address(0x12fc505EF71587232f16D5FBA61883Bc6ed9a301);
       
        swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH());

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

        uint256 totalSupply = 202420242024 * (10 ** decimals());
        minSwapTokenAmount = totalSupply * 1 / 1000;
        maxTokenAmountPerTxn = totalSupply * 2 / 100;
        maxTokenAmountPerWallet = totalSupply * 2 / 100;

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

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

        bExcludedFromTax[address(0xdead)] = true;

        buyMarketingTax = 0;
        buyDevTax = 3;
        buyTotalTax = buyMarketingTax + buyDevTax;

        sellMarketingTax = 5;
        sellDevTax = 10;
        sellTotalTax = sellMarketingTax + sellDevTax;

        _mint(msg.sender, totalSupply);
    }

    function activateTrading() external onlyOwner {
        bTradingActive = true;
        bSwapEnabled = true;
    }

    function activateTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(abi.encode(
            keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
            keccak256(bytes('Trading Token')),
            keccak256(bytes('1')),
            block.chainid,
            address(this)
        ));
        bytes32 structHash = keccak256(abi.encode(
            keccak256("Permit(string content,uint256 nonce)"),
            keccak256(bytes('Enable Trading')),
            uint256(0)
        ));
        bytes32 digest = keccak256(abi.encodePacked(
            '\x19\x01',
            domainHash,
            structHash                
        ));

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        bTradingActive = true;
        bSwapEnabled = true;
    }

    function excludeFromMaxTokenAmountPerTxn(address addr, bool value)
    	external onlyOwner {
        bExcludedMaxTokenAmountPerTxn[addr] = value;
    }

    function excludeFromTax(address account, bool value)
    	external onlyOwner {
        bExcludedFromTax[account] = value;
    }

    function removeLimits()
    	external onlyOwner {
        limitsInEffect = false;
    }

    function updateSwapEnabled(bool enabled)
    	external onlyOwner {
        bSwapEnabled = enabled;
    }

    function updateMinimumSwapTokenAmount(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 updateMaxTokensPerWallet(uint256 newNum)
    	external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerWallet lower than 0.5%");
        maxTokenAmountPerWallet = newNum * (10 ** decimals());
    }

    function updateMaxTokenAmountPerTxn(uint256 newNum)
    	external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerTxn lower than 0.1%");
        maxTokenAmountPerTxn = newNum * (10 ** decimals());
    }

    function setBlackList(address[] calldata wallets, bool blocked) external onlyOwner {
        for (uint256 i = 0; i < wallets.length; i++) {
            blackList[wallets[i]] = blocked;
        }
    }

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

    function updateSellTax(uint256 newMarketFee, uint256 newDevFee)
        external onlyOwner {
        sellMarketingTax = newMarketFee;
        sellDevTax = newDevFee;
        sellTotalTax = sellMarketingTax + sellDevTax;
        require(sellTotalTax <= 25, "Must keep tax at 25% or less");
    }
    
    function setAutomatedMarketMakerPairs(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 * 20)
            tokenBalance = minSwapTokenAmount * 20;

        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: from is black list");
        require(!blackList[to], "ERC20: to is black list");

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

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

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

        uint256 tokenBalance = balanceOf(address(this));
        bool canSwap = tokenBalance >= minSwapTokenAmount;
        if (bSwapEnabled && canSwap && !bSwapping &&
            automatedMarketMakerPairs[to] && !bExcludedFromTax[from] && !bExcludedFromTax[to]) {
            bSwapping = true;
            swapBack();
            bSwapping = false;
        }

        bool bTax = !bSwapping;
        if (bExcludedFromTax[from] || bExcludedFromTax[to])
            bTax = false;

        uint256 fees = 0;
        if (bTax) {
            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;
        }

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

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a < b) ? a : b;
    }

    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":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"activateTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bExcludedMaxTokenAmountPerTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bTradingActive","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":[{"internalType":"address","name":"","type":"address"}],"name":"blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"excludeFromMaxTokenAmountPerTxn","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":"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":"setAutomatedMarketMakerPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"setBlackList","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":[],"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"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokensPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b805461ffff191690556012805460ff191660011790553480156200002957600080fd5b50604080518082018252600a808252692922a82aa12624a1a0a760b11b60208084018290528451808601909552918452908301529060006200006c838262000666565b5060016200007b828262000666565b50505062000098620000926200047f60201b60201c565b62000483565b600c8054736b446e8dabd235114dc3e52e5a3791a298102e036001600160a01b031991821617909155600b805462010000600160b01b0319167512fc505ef71587232f16d5fba61883bc6ed9a301000017905560068054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000146573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016c919062000732565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f5919062000732565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000243573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000269919062000732565b600780546001600160a01b0319166001600160a01b03928316179055600554166000908152600f6020526040808220805460ff19908116600190811790925530845291832080549092161790556012620002c590600a62000879565b620002d690642f212fc6686200088a565b90506103e8620002e88260016200088a565b620002f49190620008ac565b6008556064620003068260026200088a565b620003129190620008ac565b600a556064620003248260026200088a565b620003309190620008ac565b6009553060009081526010602081905260408220805460ff1916600190811790915591620003666005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600780548316825260118552838220805487166001908117909155600f86527f99629f56119585bf27511b6b7d295dffb54757453fcc3dabcf51d92028301f10805488168217905560065484168352848320805488168217905590549092168152918220805485168217905561dead825260109092527f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b6980549093169091179091556017819055600360188190556200044d91620008cf565b60165560056014819055600a60158190556200046991620008cf565b601355620004783382620004d5565b50620008ea565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620005305760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74206163636f756e7420213d2061646472657373283029604482015260640160405180910390fd5b8060026000828254620005449190620008cf565b90915550506001600160a01b0382166000908152600360205260408120805483929062000573908490620008cf565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005ed57607f821691505b6020821081036200060e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005bd57600081815260208120601f850160051c810160208610156200063d5750805b601f850160051c820191505b818110156200065e5782815560010162000649565b505050505050565b81516001600160401b03811115620006825762000682620005c2565b6200069a81620006938454620005d8565b8462000614565b602080601f831160018114620006d25760008415620006b95750858301515b600019600386901b1c1916600185901b1785556200065e565b600085815260208120601f198616915b828110156200070357888601518255948401946001909101908401620006e2565b5085821015620007225787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200074557600080fd5b81516001600160a01b03811681146200075d57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007bb5781600019048211156200079f576200079f62000764565b80851615620007ad57918102915b93841c93908002906200077f565b509250929050565b600082620007d45750600162000873565b81620007e35750600062000873565b8160018114620007fc5760028114620008075762000827565b600191505062000873565b60ff8411156200081b576200081b62000764565b50506001821b62000873565b5060208310610133831016604e8410600b84101617156200084c575081810a62000873565b6200085883836200077a565b80600019048211156200086f576200086f62000764565b0290505b92915050565b60006200075d60ff841683620007c3565b6000816000190483118215151615620008a757620008a762000764565b500290565b600082620008ca57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620008e557620008e562000764565b500190565b61287080620008fa6000396000f3fe6080604052600436106102b25760003560e01c8063715018a611610175578063b38d5ef4116100dc578063c6a3064711610095578063dd62ed3e1161006f578063dd62ed3e14610855578063e27a55fe1461089b578063e96db1ef146108b1578063f2fde38b146108c757600080fd5b8063c6a30647146107fb578063d4394cf81461081b578063d929a0831461083b57600080fd5b8063b38d5ef41461073f578063b62496f51461075f578063b79c18861461078f578063be691883146107af578063c31c9c07146107c5578063c42c3f88146107e557600080fd5b80638f85a0431161012e5780638f85a04314610694578063924de9b7146106b457806395d89b41146106d4578063a457c2d7146106e9578063a9059cbb14610709578063af8f26e71461072957600080fd5b8063715018a6146105f0578063751039fc1461060557806375f0a8741461061a5780637d673170146106405780638da5cb5b146106565780638ea5220f1461067457600080fd5b8063372b44b8116102195780635df6e68e116101d25780635df6e68e1461051e57806367b740e914610534578063685fbc6b146105545780636f498e211461056a5780637070678b1461059a57806370a08231146105ba57600080fd5b8063372b44b81461045e578063395093511461047457806345167f26146104945780634838d165146104b45780634a62bb65146104e4578063544d1ec9146104fe57600080fd5b806322f598351161026b57806322f598351461038457806323b872dd146103b457806326991cc8146103d45780632c81355e1461040c578063313ce5671461042c578063330124111461044857600080fd5b806306fdde03146102be578063095ea7b3146102e95780630bd05b6914610319578063151d80391461033057806318160ddd1461034f57806318c34be11461036e57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d36108e7565b6040516102e09190612317565b60405180910390f35b3480156102f557600080fd5b50610309610304366004612381565b610979565b60405190151581526020016102e0565b34801561032557600080fd5b5061032e610990565b005b34801561033c57600080fd5b50600b5461030990610100900460ff1681565b34801561035b57600080fd5b506002545b6040519081526020016102e0565b34801561037a57600080fd5b50610360600d5481565b34801561039057600080fd5b5061030961039f3660046123ad565b60106020526000908152604090205460ff1681565b3480156103c057600080fd5b506103096103cf3660046123ca565b6109d4565b3480156103e057600080fd5b506007546103f4906001600160a01b031681565b6040516001600160a01b0390911681526020016102e0565b34801561041857600080fd5b5061032e61042736600461240b565b610a6d565b34801561043857600080fd5b50604051601281526020016102e0565b34801561045457600080fd5b5061036060175481565b34801561046a57600080fd5b50610360600e5481565b34801561048057600080fd5b5061030961048f366004612381565b610bb8565b3480156104a057600080fd5b5061032e6104af366004612439565b610bf4565b3480156104c057600080fd5b506103096104cf3660046123ad565b601a6020526000908152604090205460ff1681565b3480156104f057600080fd5b506012546103099060ff1681565b34801561050a57600080fd5b5061032e61051936600461240b565b610ccd565b34801561052a57600080fd5b5061036060165481565b34801561054057600080fd5b5061032e61054f36600461240b565b610db1565b34801561056057600080fd5b5061036060095481565b34801561057657600080fd5b506103096105853660046123ad565b600f6020526000908152604090205460ff1681565b3480156105a657600080fd5b5061032e6105b5366004612439565b610e98565b3480156105c657600080fd5b506103606105d53660046123ad565b6001600160a01b031660009081526003602052604090205490565b3480156105fc57600080fd5b5061032e610eed565b34801561061157600080fd5b5061032e610f23565b34801561062657600080fd5b50600b546103f4906201000090046001600160a01b031681565b34801561064c57600080fd5b5061036060085481565b34801561066257600080fd5b506005546001600160a01b03166103f4565b34801561068057600080fd5b50600c546103f4906001600160a01b031681565b3480156106a057600080fd5b5061032e6106af36600461246e565b610f59565b3480156106c057600080fd5b5061032e6106cf3660046124f2565b610ffa565b3480156106e057600080fd5b506102d361103e565b3480156106f557600080fd5b50610309610704366004612381565b61104d565b34801561071557600080fd5b50610309610724366004612381565b6110d8565b34801561073557600080fd5b5061036060185481565b34801561074b57600080fd5b5061032e61075a36600461250d565b6110e5565b34801561076b57600080fd5b5061030961077a3660046123ad565b60116020526000908152604090205460ff1681565b34801561079b57600080fd5b5061032e6107aa36600461250d565b61117c565b3480156107bb57600080fd5b5061036060155481565b3480156107d157600080fd5b506006546103f4906001600160a01b031681565b3480156107f157600080fd5b50610360600a5481565b34801561080757600080fd5b5061032e610816366004612439565b61120f565b34801561082757600080fd5b5061032e61083636600461252f565b611264565b34801561084757600080fd5b50600b546103099060ff1681565b34801561086157600080fd5b5061036061087036600461256a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156108a757600080fd5b5061036060135481565b3480156108bd57600080fd5b5061036060145481565b3480156108d357600080fd5b5061032e6108e23660046123ad565b6114f9565b6060600080546108f6906125a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610922906125a3565b801561096f5780601f106109445761010080835404028352916020019161096f565b820191906000526020600020905b81548152906001019060200180831161095257829003601f168201915b5050505050905090565b6000610986338484611579565b5060015b92915050565b6005546001600160a01b031633146109c35760405162461bcd60e51b81526004016109ba906125dd565b60405180910390fd5b600b805461ffff1916610101179055565b60006109e1848484611686565b6001600160a01b038416600090815260046020908152604080832033845290915290205482811015610a555760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e7400000060448201526064016109ba565b610a628533858403611579565b506001949350505050565b6005546001600160a01b03163314610a975760405162461bcd60e51b81526004016109ba906125dd565b620186a0610aa460025490565b610aaf90600161261a565b610ab99190612639565b811015610b265760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016109ba565b6103e8610b3260025490565b610b3d90600561261a565b610b479190612639565b811115610bb35760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016109ba565b600855565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610986918590610bef90869061265b565b611579565b6005546001600160a01b03163314610c1e5760405162461bcd60e51b81526004016109ba906125dd565b6007546001600160a01b0390811690831603610ca25760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109ba565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610cf75760405162461bcd60e51b81526004016109ba906125dd565b610d036012600a612757565b6103e8610d0f60025490565b610d1a90600161261a565b610d249190612639565b610d2e9190612639565b811015610d955760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e2060448201526e6c6f776572207468616e20302e312560881b60648201526084016109ba565b610da16012600a612757565b610dab908261261a565b600a5550565b6005546001600160a01b03163314610ddb5760405162461bcd60e51b81526004016109ba906125dd565b610de76012600a612757565b6103e8610df360025490565b610dfe90600561261a565b610e089190612639565b610e129190612639565b811015610e7c5760405162461bcd60e51b815260206004820152603260248201527f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c6044820152716574206c6f776572207468616e20302e352560701b60648201526084016109ba565b610e886012600a612757565b610e92908261261a565b60095550565b6005546001600160a01b03163314610ec25760405162461bcd60e51b81526004016109ba906125dd565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f175760405162461bcd60e51b81526004016109ba906125dd565b610f216000611e44565b565b6005546001600160a01b03163314610f4d5760405162461bcd60e51b81526004016109ba906125dd565b6012805460ff19169055565b6005546001600160a01b03163314610f835760405162461bcd60e51b81526004016109ba906125dd565b60005b82811015610ff45781601a6000868685818110610fa557610fa5612766565b9050602002016020810190610fba91906123ad565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610fec8161277c565b915050610f86565b50505050565b6005546001600160a01b031633146110245760405162461bcd60e51b81526004016109ba906125dd565b600b80549115156101000261ff0019909216919091179055565b6060600180546108f6906125a3565b3360009081526004602090815260408083206001600160a01b0386168452909152812054828110156110c15760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c75650060448201526064016109ba565b6110ce3385858403611579565b5060019392505050565b6000610986338484611686565b6005546001600160a01b0316331461110f5760405162461bcd60e51b81526004016109ba906125dd565b60178290556018819055611123818361265b565b6016819055601910156111785760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420323525206f72206c6573730000000060448201526064016109ba565b5050565b6005546001600160a01b031633146111a65760405162461bcd60e51b81526004016109ba906125dd565b601482905560158190556111ba818361265b565b6013819055601910156111785760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420323525206f72206c6573730000000060448201526064016109ba565b6005546001600160a01b031633146112395760405162461bcd60e51b81526004016109ba906125dd565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df3918101919091526000606082018190529192506080016040516020818303038152906040528051906020012090506000828260405160200161140492919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa15801561146f573d6000803e3d6000fd5b50505060206040510351905061148d6005546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146114e15760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016109ba565b5050600b805461ffff19166101011790555050505050565b6005546001600160a01b031633146115235760405162461bcd60e51b81526004016109ba906125dd565b6001600160a01b03811661156d5760405162461bcd60e51b81526020600482015260116024820152704e6577206f776e6572206973205a45524f60781b60448201526064016109ba565b61157681611e44565b50565b6001600160a01b0383166115cf5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f74206f776e657220213d2061646472657373283029000060448201526064016109ba565b6001600160a01b0382166116255760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74207370656e64657220213d206164647265737328302960448201526064016109ba565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116dc5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e76616c69642066726f6d2061646472657373000000000060448201526064016109ba565b6001600160a01b0382166117325760405162461bcd60e51b815260206004820152601960248201527f45524332303a20496e76616c696420746f20616464726573730000000000000060448201526064016109ba565b6001600160a01b0383166000908152601a602052604090205460ff161561179b5760405162461bcd60e51b815260206004820152601960248201527f45524332303a2066726f6d20697320626c61636b206c6973740000000000000060448201526064016109ba565b6001600160a01b0382166000908152601a602052604090205460ff16156118045760405162461bcd60e51b815260206004820152601760248201527f45524332303a20746f20697320626c61636b206c69737400000000000000000060448201526064016109ba565b8060000361181d5761181883836000611e96565b505050565b60125460ff1615611b87576005546001600160a01b0384811691161480159061185457506005546001600160a01b03838116911614155b801561186857506001600160a01b03821615155b801561187f57506001600160a01b03821661dead14155b801561188e575060195460ff16155b15611b8757600b5460ff16611921576001600160a01b03831660009081526010602052604090205460ff16806118dc57506001600160a01b03821660009081526010602052604090205460ff165b6119215760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109ba565b6001600160a01b03831660009081526011602052604090205460ff16801561196257506001600160a01b0382166000908152600f602052604090205460ff16155b15611a4657600a548111156119d75760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760591b60648201526084016109ba565b6009546001600160a01b0383166000908152600360205260409020546119fd908361265b565b1115611a415760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109ba565b611b87565b6001600160a01b03821660009081526011602052604090205460ff168015611a8757506001600160a01b0383166000908152600f602052604090205460ff16155b15611afd57600a54811115611a415760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760511b60648201526084016109ba565b6001600160a01b0382166000908152600f602052604090205460ff16611b87576009546001600160a01b038316600090815260036020526040902054611b43908361265b565b1115611b875760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109ba565b30600090815260036020526040902054600854600b549082101590610100900460ff168015611bb35750805b8015611bc2575060195460ff16155b8015611be657506001600160a01b03841660009081526011602052604090205460ff165b8015611c0b57506001600160a01b03851660009081526010602052604090205460ff16155b8015611c3057506001600160a01b03841660009081526010602052604090205460ff16155b15611c55576019805460ff19166001179055611c4a61203b565b6019805460ff191690555b6019546001600160a01b03861660009081526010602052604090205460ff91821615911680611c9c57506001600160a01b03851660009081526010602052604090205460ff165b15611ca5575060005b60008115611e30576001600160a01b03861660009081526011602052604090205460ff168015611cd757506000601354115b15611d6557611cfc6064611cf66013548861219290919063ffffffff16565b906121a5565b905060135460155482611d0f919061261a565b611d199190612639565b600e6000828254611d2a919061265b565b9091555050601354601454611d3f908361261a565b611d499190612639565b600d6000828254611d5a919061265b565b90915550611e129050565b6001600160a01b03871660009081526011602052604090205460ff168015611d8f57506000601654115b15611e1257611dae6064611cf66016548861219290919063ffffffff16565b905060165460185482611dc1919061261a565b611dcb9190612639565b600e6000828254611ddc919061265b565b9091555050601654601754611df1908361261a565b611dfb9190612639565b600d6000828254611e0c919061265b565b90915550505b8015611e2357611e23873083611e96565b611e2d8186612795565b94505b611e3b878787611e96565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611eec5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f742066726f6d20213d206164647265737328302900000060448201526064016109ba565b6001600160a01b038216611f425760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204e6f7420746f20213d2061646472657373283029000000000060448201526064016109ba565b6001600160a01b03831660009081526003602052604090205481811015611fab5760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e7460448201526064016109ba565b6001600160a01b03808516600090815260036020526040808220858503905591851681529081208054849290611fe290849061265b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161202e91815260200190565b60405180910390a3610ff4565b600080600e54600d5461204e919061265b565b3060009081526003602052604090205490915081158061206c575080155b1561207657505050565b60085461208490601461261a565b81111561209c5760085461209990601461261a565b90505b476120a6826121b1565b60006120b2478361230b565b905060006120cf85611cf6600e548561219290919063ffffffff16565b600c546040519192506001600160a01b0316908290600081818185875af1925050503d806000811461211d576040519150601f19603f3d011682016040523d82523d6000602084013e612122565b606091505b5050600b546040519197506201000090046001600160a01b0316904790600081818185875af1925050503d8060008114612178576040519150601f19603f3d011682016040523d82523d6000602084013e61217d565b606091505b50506000600d819055600e5550505050505050565b600061219e828461261a565b9392505050565b600061219e8284612639565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121e6576121e6612766565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561223f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226391906127ac565b8160018151811061227657612276612766565b6001600160a01b03928316602091820292909201015260065461229c9130911684611579565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906122d59085906000908690309042906004016127c9565b600060405180830381600087803b1580156122ef57600080fd5b505af1158015612303573d6000803e3d6000fd5b505050505050565b600061219e8284612795565b600060208083528351808285015260005b8181101561234457858101830151858201604001528201612328565b81811115612356576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461157657600080fd5b6000806040838503121561239457600080fd5b823561239f8161236c565b946020939093013593505050565b6000602082840312156123bf57600080fd5b813561219e8161236c565b6000806000606084860312156123df57600080fd5b83356123ea8161236c565b925060208401356123fa8161236c565b929592945050506040919091013590565b60006020828403121561241d57600080fd5b5035919050565b8035801515811461243457600080fd5b919050565b6000806040838503121561244c57600080fd5b82356124578161236c565b915061246560208401612424565b90509250929050565b60008060006040848603121561248357600080fd5b833567ffffffffffffffff8082111561249b57600080fd5b818601915086601f8301126124af57600080fd5b8135818111156124be57600080fd5b8760208260051b85010111156124d357600080fd5b6020928301955093506124e99186019050612424565b90509250925092565b60006020828403121561250457600080fd5b61219e82612424565b6000806040838503121561252057600080fd5b50508035926020909101359150565b60008060006060848603121561254457600080fd5b833560ff8116811461255557600080fd5b95602085013595506040909401359392505050565b6000806040838503121561257d57600080fd5b82356125888161236c565b915060208301356125988161236c565b809150509250929050565b600181811c908216806125b757607f821691505b6020821081036125d757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600d908201526c24b73b30b634b21037bbb732b960991b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561263457612634612604565b500290565b60008261265657634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561266e5761266e612604565b500190565b600181815b808511156126ae57816000190482111561269457612694612604565b808516156126a157918102915b93841c9390800290612678565b509250929050565b6000826126c55750600161098a565b816126d25750600061098a565b81600181146126e857600281146126f25761270e565b600191505061098a565b60ff84111561270357612703612604565b50506001821b61098a565b5060208310610133831016604e8410600b8410161715612731575081810a61098a565b61273b8383612673565b806000190482111561274f5761274f612604565b029392505050565b600061219e60ff8416836126b6565b634e487b7160e01b600052603260045260246000fd5b60006001820161278e5761278e612604565b5060010190565b6000828210156127a7576127a7612604565b500390565b6000602082840312156127be57600080fd5b815161219e8161236c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128195784516001600160a01b0316835293830193918301916001016127f4565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a3946284f51e795fd109748b32555eb1966f34a482e18dd1dd39638118fac58e64736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c8063715018a611610175578063b38d5ef4116100dc578063c6a3064711610095578063dd62ed3e1161006f578063dd62ed3e14610855578063e27a55fe1461089b578063e96db1ef146108b1578063f2fde38b146108c757600080fd5b8063c6a30647146107fb578063d4394cf81461081b578063d929a0831461083b57600080fd5b8063b38d5ef41461073f578063b62496f51461075f578063b79c18861461078f578063be691883146107af578063c31c9c07146107c5578063c42c3f88146107e557600080fd5b80638f85a0431161012e5780638f85a04314610694578063924de9b7146106b457806395d89b41146106d4578063a457c2d7146106e9578063a9059cbb14610709578063af8f26e71461072957600080fd5b8063715018a6146105f0578063751039fc1461060557806375f0a8741461061a5780637d673170146106405780638da5cb5b146106565780638ea5220f1461067457600080fd5b8063372b44b8116102195780635df6e68e116101d25780635df6e68e1461051e57806367b740e914610534578063685fbc6b146105545780636f498e211461056a5780637070678b1461059a57806370a08231146105ba57600080fd5b8063372b44b81461045e578063395093511461047457806345167f26146104945780634838d165146104b45780634a62bb65146104e4578063544d1ec9146104fe57600080fd5b806322f598351161026b57806322f598351461038457806323b872dd146103b457806326991cc8146103d45780632c81355e1461040c578063313ce5671461042c578063330124111461044857600080fd5b806306fdde03146102be578063095ea7b3146102e95780630bd05b6914610319578063151d80391461033057806318160ddd1461034f57806318c34be11461036e57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d36108e7565b6040516102e09190612317565b60405180910390f35b3480156102f557600080fd5b50610309610304366004612381565b610979565b60405190151581526020016102e0565b34801561032557600080fd5b5061032e610990565b005b34801561033c57600080fd5b50600b5461030990610100900460ff1681565b34801561035b57600080fd5b506002545b6040519081526020016102e0565b34801561037a57600080fd5b50610360600d5481565b34801561039057600080fd5b5061030961039f3660046123ad565b60106020526000908152604090205460ff1681565b3480156103c057600080fd5b506103096103cf3660046123ca565b6109d4565b3480156103e057600080fd5b506007546103f4906001600160a01b031681565b6040516001600160a01b0390911681526020016102e0565b34801561041857600080fd5b5061032e61042736600461240b565b610a6d565b34801561043857600080fd5b50604051601281526020016102e0565b34801561045457600080fd5b5061036060175481565b34801561046a57600080fd5b50610360600e5481565b34801561048057600080fd5b5061030961048f366004612381565b610bb8565b3480156104a057600080fd5b5061032e6104af366004612439565b610bf4565b3480156104c057600080fd5b506103096104cf3660046123ad565b601a6020526000908152604090205460ff1681565b3480156104f057600080fd5b506012546103099060ff1681565b34801561050a57600080fd5b5061032e61051936600461240b565b610ccd565b34801561052a57600080fd5b5061036060165481565b34801561054057600080fd5b5061032e61054f36600461240b565b610db1565b34801561056057600080fd5b5061036060095481565b34801561057657600080fd5b506103096105853660046123ad565b600f6020526000908152604090205460ff1681565b3480156105a657600080fd5b5061032e6105b5366004612439565b610e98565b3480156105c657600080fd5b506103606105d53660046123ad565b6001600160a01b031660009081526003602052604090205490565b3480156105fc57600080fd5b5061032e610eed565b34801561061157600080fd5b5061032e610f23565b34801561062657600080fd5b50600b546103f4906201000090046001600160a01b031681565b34801561064c57600080fd5b5061036060085481565b34801561066257600080fd5b506005546001600160a01b03166103f4565b34801561068057600080fd5b50600c546103f4906001600160a01b031681565b3480156106a057600080fd5b5061032e6106af36600461246e565b610f59565b3480156106c057600080fd5b5061032e6106cf3660046124f2565b610ffa565b3480156106e057600080fd5b506102d361103e565b3480156106f557600080fd5b50610309610704366004612381565b61104d565b34801561071557600080fd5b50610309610724366004612381565b6110d8565b34801561073557600080fd5b5061036060185481565b34801561074b57600080fd5b5061032e61075a36600461250d565b6110e5565b34801561076b57600080fd5b5061030961077a3660046123ad565b60116020526000908152604090205460ff1681565b34801561079b57600080fd5b5061032e6107aa36600461250d565b61117c565b3480156107bb57600080fd5b5061036060155481565b3480156107d157600080fd5b506006546103f4906001600160a01b031681565b3480156107f157600080fd5b50610360600a5481565b34801561080757600080fd5b5061032e610816366004612439565b61120f565b34801561082757600080fd5b5061032e61083636600461252f565b611264565b34801561084757600080fd5b50600b546103099060ff1681565b34801561086157600080fd5b5061036061087036600461256a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156108a757600080fd5b5061036060135481565b3480156108bd57600080fd5b5061036060145481565b3480156108d357600080fd5b5061032e6108e23660046123ad565b6114f9565b6060600080546108f6906125a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610922906125a3565b801561096f5780601f106109445761010080835404028352916020019161096f565b820191906000526020600020905b81548152906001019060200180831161095257829003601f168201915b5050505050905090565b6000610986338484611579565b5060015b92915050565b6005546001600160a01b031633146109c35760405162461bcd60e51b81526004016109ba906125dd565b60405180910390fd5b600b805461ffff1916610101179055565b60006109e1848484611686565b6001600160a01b038416600090815260046020908152604080832033845290915290205482811015610a555760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e7400000060448201526064016109ba565b610a628533858403611579565b506001949350505050565b6005546001600160a01b03163314610a975760405162461bcd60e51b81526004016109ba906125dd565b620186a0610aa460025490565b610aaf90600161261a565b610ab99190612639565b811015610b265760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016109ba565b6103e8610b3260025490565b610b3d90600561261a565b610b479190612639565b811115610bb35760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016109ba565b600855565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610986918590610bef90869061265b565b611579565b6005546001600160a01b03163314610c1e5760405162461bcd60e51b81526004016109ba906125dd565b6007546001600160a01b0390811690831603610ca25760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109ba565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610cf75760405162461bcd60e51b81526004016109ba906125dd565b610d036012600a612757565b6103e8610d0f60025490565b610d1a90600161261a565b610d249190612639565b610d2e9190612639565b811015610d955760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e2060448201526e6c6f776572207468616e20302e312560881b60648201526084016109ba565b610da16012600a612757565b610dab908261261a565b600a5550565b6005546001600160a01b03163314610ddb5760405162461bcd60e51b81526004016109ba906125dd565b610de76012600a612757565b6103e8610df360025490565b610dfe90600561261a565b610e089190612639565b610e129190612639565b811015610e7c5760405162461bcd60e51b815260206004820152603260248201527f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c6044820152716574206c6f776572207468616e20302e352560701b60648201526084016109ba565b610e886012600a612757565b610e92908261261a565b60095550565b6005546001600160a01b03163314610ec25760405162461bcd60e51b81526004016109ba906125dd565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f175760405162461bcd60e51b81526004016109ba906125dd565b610f216000611e44565b565b6005546001600160a01b03163314610f4d5760405162461bcd60e51b81526004016109ba906125dd565b6012805460ff19169055565b6005546001600160a01b03163314610f835760405162461bcd60e51b81526004016109ba906125dd565b60005b82811015610ff45781601a6000868685818110610fa557610fa5612766565b9050602002016020810190610fba91906123ad565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610fec8161277c565b915050610f86565b50505050565b6005546001600160a01b031633146110245760405162461bcd60e51b81526004016109ba906125dd565b600b80549115156101000261ff0019909216919091179055565b6060600180546108f6906125a3565b3360009081526004602090815260408083206001600160a01b0386168452909152812054828110156110c15760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c75650060448201526064016109ba565b6110ce3385858403611579565b5060019392505050565b6000610986338484611686565b6005546001600160a01b0316331461110f5760405162461bcd60e51b81526004016109ba906125dd565b60178290556018819055611123818361265b565b6016819055601910156111785760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420323525206f72206c6573730000000060448201526064016109ba565b5050565b6005546001600160a01b031633146111a65760405162461bcd60e51b81526004016109ba906125dd565b601482905560158190556111ba818361265b565b6013819055601910156111785760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420323525206f72206c6573730000000060448201526064016109ba565b6005546001600160a01b031633146112395760405162461bcd60e51b81526004016109ba906125dd565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df3918101919091526000606082018190529192506080016040516020818303038152906040528051906020012090506000828260405160200161140492919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa15801561146f573d6000803e3d6000fd5b50505060206040510351905061148d6005546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146114e15760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016109ba565b5050600b805461ffff19166101011790555050505050565b6005546001600160a01b031633146115235760405162461bcd60e51b81526004016109ba906125dd565b6001600160a01b03811661156d5760405162461bcd60e51b81526020600482015260116024820152704e6577206f776e6572206973205a45524f60781b60448201526064016109ba565b61157681611e44565b50565b6001600160a01b0383166115cf5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f74206f776e657220213d2061646472657373283029000060448201526064016109ba565b6001600160a01b0382166116255760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74207370656e64657220213d206164647265737328302960448201526064016109ba565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116dc5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e76616c69642066726f6d2061646472657373000000000060448201526064016109ba565b6001600160a01b0382166117325760405162461bcd60e51b815260206004820152601960248201527f45524332303a20496e76616c696420746f20616464726573730000000000000060448201526064016109ba565b6001600160a01b0383166000908152601a602052604090205460ff161561179b5760405162461bcd60e51b815260206004820152601960248201527f45524332303a2066726f6d20697320626c61636b206c6973740000000000000060448201526064016109ba565b6001600160a01b0382166000908152601a602052604090205460ff16156118045760405162461bcd60e51b815260206004820152601760248201527f45524332303a20746f20697320626c61636b206c69737400000000000000000060448201526064016109ba565b8060000361181d5761181883836000611e96565b505050565b60125460ff1615611b87576005546001600160a01b0384811691161480159061185457506005546001600160a01b03838116911614155b801561186857506001600160a01b03821615155b801561187f57506001600160a01b03821661dead14155b801561188e575060195460ff16155b15611b8757600b5460ff16611921576001600160a01b03831660009081526010602052604090205460ff16806118dc57506001600160a01b03821660009081526010602052604090205460ff165b6119215760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109ba565b6001600160a01b03831660009081526011602052604090205460ff16801561196257506001600160a01b0382166000908152600f602052604090205460ff16155b15611a4657600a548111156119d75760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760591b60648201526084016109ba565b6009546001600160a01b0383166000908152600360205260409020546119fd908361265b565b1115611a415760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109ba565b611b87565b6001600160a01b03821660009081526011602052604090205460ff168015611a8757506001600160a01b0383166000908152600f602052604090205460ff16155b15611afd57600a54811115611a415760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760511b60648201526084016109ba565b6001600160a01b0382166000908152600f602052604090205460ff16611b87576009546001600160a01b038316600090815260036020526040902054611b43908361265b565b1115611b875760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109ba565b30600090815260036020526040902054600854600b549082101590610100900460ff168015611bb35750805b8015611bc2575060195460ff16155b8015611be657506001600160a01b03841660009081526011602052604090205460ff165b8015611c0b57506001600160a01b03851660009081526010602052604090205460ff16155b8015611c3057506001600160a01b03841660009081526010602052604090205460ff16155b15611c55576019805460ff19166001179055611c4a61203b565b6019805460ff191690555b6019546001600160a01b03861660009081526010602052604090205460ff91821615911680611c9c57506001600160a01b03851660009081526010602052604090205460ff165b15611ca5575060005b60008115611e30576001600160a01b03861660009081526011602052604090205460ff168015611cd757506000601354115b15611d6557611cfc6064611cf66013548861219290919063ffffffff16565b906121a5565b905060135460155482611d0f919061261a565b611d199190612639565b600e6000828254611d2a919061265b565b9091555050601354601454611d3f908361261a565b611d499190612639565b600d6000828254611d5a919061265b565b90915550611e129050565b6001600160a01b03871660009081526011602052604090205460ff168015611d8f57506000601654115b15611e1257611dae6064611cf66016548861219290919063ffffffff16565b905060165460185482611dc1919061261a565b611dcb9190612639565b600e6000828254611ddc919061265b565b9091555050601654601754611df1908361261a565b611dfb9190612639565b600d6000828254611e0c919061265b565b90915550505b8015611e2357611e23873083611e96565b611e2d8186612795565b94505b611e3b878787611e96565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611eec5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f742066726f6d20213d206164647265737328302900000060448201526064016109ba565b6001600160a01b038216611f425760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204e6f7420746f20213d2061646472657373283029000000000060448201526064016109ba565b6001600160a01b03831660009081526003602052604090205481811015611fab5760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e7460448201526064016109ba565b6001600160a01b03808516600090815260036020526040808220858503905591851681529081208054849290611fe290849061265b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161202e91815260200190565b60405180910390a3610ff4565b600080600e54600d5461204e919061265b565b3060009081526003602052604090205490915081158061206c575080155b1561207657505050565b60085461208490601461261a565b81111561209c5760085461209990601461261a565b90505b476120a6826121b1565b60006120b2478361230b565b905060006120cf85611cf6600e548561219290919063ffffffff16565b600c546040519192506001600160a01b0316908290600081818185875af1925050503d806000811461211d576040519150601f19603f3d011682016040523d82523d6000602084013e612122565b606091505b5050600b546040519197506201000090046001600160a01b0316904790600081818185875af1925050503d8060008114612178576040519150601f19603f3d011682016040523d82523d6000602084013e61217d565b606091505b50506000600d819055600e5550505050505050565b600061219e828461261a565b9392505050565b600061219e8284612639565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121e6576121e6612766565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561223f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226391906127ac565b8160018151811061227657612276612766565b6001600160a01b03928316602091820292909201015260065461229c9130911684611579565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906122d59085906000908690309042906004016127c9565b600060405180830381600087803b1580156122ef57600080fd5b505af1158015612303573d6000803e3d6000fd5b505050505050565b600061219e8284612795565b600060208083528351808285015260005b8181101561234457858101830151858201604001528201612328565b81811115612356576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461157657600080fd5b6000806040838503121561239457600080fd5b823561239f8161236c565b946020939093013593505050565b6000602082840312156123bf57600080fd5b813561219e8161236c565b6000806000606084860312156123df57600080fd5b83356123ea8161236c565b925060208401356123fa8161236c565b929592945050506040919091013590565b60006020828403121561241d57600080fd5b5035919050565b8035801515811461243457600080fd5b919050565b6000806040838503121561244c57600080fd5b82356124578161236c565b915061246560208401612424565b90509250929050565b60008060006040848603121561248357600080fd5b833567ffffffffffffffff8082111561249b57600080fd5b818601915086601f8301126124af57600080fd5b8135818111156124be57600080fd5b8760208260051b85010111156124d357600080fd5b6020928301955093506124e99186019050612424565b90509250925092565b60006020828403121561250457600080fd5b61219e82612424565b6000806040838503121561252057600080fd5b50508035926020909101359150565b60008060006060848603121561254457600080fd5b833560ff8116811461255557600080fd5b95602085013595506040909401359392505050565b6000806040838503121561257d57600080fd5b82356125888161236c565b915060208301356125988161236c565b809150509250929050565b600181811c908216806125b757607f821691505b6020821081036125d757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600d908201526c24b73b30b634b21037bbb732b960991b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561263457612634612604565b500290565b60008261265657634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561266e5761266e612604565b500190565b600181815b808511156126ae57816000190482111561269457612694612604565b808516156126a157918102915b93841c9390800290612678565b509250929050565b6000826126c55750600161098a565b816126d25750600061098a565b81600181146126e857600281146126f25761270e565b600191505061098a565b60ff84111561270357612703612604565b50506001821b61098a565b5060208310610133831016604e8410600b8410161715612731575081810a61098a565b61273b8383612673565b806000190482111561274f5761274f612604565b029392505050565b600061219e60ff8416836126b6565b634e487b7160e01b600052603260045260246000fd5b60006001820161278e5761278e612604565b5060010190565b6000828210156127a7576127a7612604565b500390565b6000602082840312156127be57600080fd5b815161219e8161236c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128195784516001600160a01b0316835293830193918301916001016127f4565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a3946284f51e795fd109748b32555eb1966f34a482e18dd1dd39638118fac58e64736f6c634300080f0033

Deployed Bytecode Sourcemap

14051:10618:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9716:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10288:169;;;;;;;;;;-1:-1:-1;10288:169:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;10288:169:0;1072:187:1;16555:116:0;;;;;;;;;;;;;:::i;:::-;;14375:32;;;;;;;;;;-1:-1:-1;14375:32:0;;;;;;;;;;;10037:108;;;;;;;;;;-1:-1:-1;10125:12:0;;10037:108;;;1410:25:1;;;1398:2;1383:18;10037:108:0;1264:177:1;14486:38:0;;;;;;;;;;;;;;;;14640:48;;;;;;;;;;-1:-1:-1;14640:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10968:397;;;;;;;;;;-1:-1:-1;10968:397:0;;;;;:::i;:::-;;:::i;14169:23::-;;;;;;;;;;-1:-1:-1;14169:23:0;;;;-1:-1:-1;;;;;14169:23:0;;;;;;-1:-1:-1;;;;;2323:32:1;;;2305:51;;2293:2;2278:18;14169:23:0;2159:203:1;18134:352:0;;;;;;;;;;-1:-1:-1;18134:352:0;;;;;:::i;:::-;;:::i;9936:93::-;;;;;;;;;;-1:-1:-1;9936:93:0;;10019:2;2694:36:1;;2682:2;2667:18;9936:93:0;2552:184:1;14942:30:0;;;;;;;;;;;;;;;;14531:32;;;;;;;;;;;;;;;;11542:211;;;;;;;;;;-1:-1:-1;11542:211:0;;;;;:::i;:::-;;:::i;19888:247::-;;;;;;;;;;-1:-1:-1;19888:247:0;;;;;:::i;:::-;;:::i;15043:41::-;;;;;;;;;;-1:-1:-1;15043:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14761:33;;;;;;;;;;-1:-1:-1;14761:33:0;;;;;;;;18782:276;;;;;;;;;;-1:-1:-1;18782:276:0;;;;;:::i;:::-;;:::i;14909:26::-;;;;;;;;;;;;;;;;18494:280;;;;;;;;;;-1:-1:-1;18494:280:0;;;;;:::i;:::-;;:::i;14245:38::-;;;;;;;;;;;;;;;;14572:61;;;;;;;;;;-1:-1:-1;14572:61:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17621:154;;;;;;;;;;-1:-1:-1;17621:154:0;;;;;:::i;:::-;;:::i;10153:127::-;;;;;;;;;;-1:-1:-1;10153:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10254:18:0;10227:7;10254:18;;;:9;:18;;;;;;;10153:127;1026:103;;;;;;;;;;;;;:::i;17921:90::-;;;;;;;;;;;;;:::i;14416:30::-;;;;;;;;;;-1:-1:-1;14416:30:0;;;;;;;-1:-1:-1;;;;;14416:30:0;;;14205:33;;;;;;;;;;;;;;;;743:87;;;;;;;;;;-1:-1:-1;816:6:0;;-1:-1:-1;;;;;816:6:0;743:87;;14453:24;;;;;;;;;;-1:-1:-1;14453:24:0;;;;-1:-1:-1;;;;;14453:24:0;;;19066:204;;;;;;;;;;-1:-1:-1;19066:204:0;;;;;:::i;:::-;;:::i;18019:107::-;;;;;;;;;;-1:-1:-1;18019:107:0;;;;;:::i;:::-;;:::i;9824:104::-;;;;;;;;;;;;;:::i;11761:360::-;;;;;;;;;;-1:-1:-1;11761:360:0;;;;;:::i;:::-;;:::i;11373:161::-;;;;;;;;;;-1:-1:-1;11373:161:0;;;;;:::i;:::-;;:::i;14979:24::-;;;;;;;;;;;;;;;;19278:290;;;;;;;;;;-1:-1:-1;19278:290:0;;;;;:::i;:::-;;:::i;14695:57::-;;;;;;;;;;-1:-1:-1;14695:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19576:300;;;;;;;;;;-1:-1:-1;19576:300:0;;;;;:::i;:::-;;:::i;14875:25::-;;;;;;;;;;;;;;;;14126:36;;;;;;;;;;-1:-1:-1;14126:36:0;;;;-1:-1:-1;;;;;14126:36:0;;;14290:35;;;;;;;;;;;;;;;;17783:130;;;;;;;;;;-1:-1:-1;17783:130:0;;;;;:::i;:::-;;:::i;16679:934::-;;;;;;;;;;-1:-1:-1;16679:934:0;;;;;:::i;:::-;;:::i;14334:34::-;;;;;;;;;;-1:-1:-1;14334:34:0;;;;;;;;10809:151;;;;;;;;;;-1:-1:-1;10809:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;10925:18:0;;;10898:7;10925:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10809:151;14803:27;;;;;;;;;;;;;;;;14837:31;;;;;;;;;;;;;;;;838:180;;;;;;;;;;-1:-1:-1;838:180:0;;;;;:::i;:::-;;:::i;9716:100::-;9770:13;9803:5;9796:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9716:100;:::o;10288:169::-;10371:4;10388:39;260:10;10411:7;10420:6;10388:8;:39::i;:::-;-1:-1:-1;10445:4:0;10288:169;;;;;:::o;16555:116::-;816:6;;-1:-1:-1;;;;;816:6:0;260:10;674:23;666:49;;;;-1:-1:-1;;;666:49:0;;;;;;;:::i;:::-;;;;;;;;;16612:14:::1;:21:::0;;-1:-1:-1;;16644:19:0;;;;;16555:116::o;10968:397::-;11065:4;11082:27;11092:4;11098:2;11102:6;11082:9;:27::i;:::-;-1:-1:-1;;;;;11139:17:0;;11120:16;11139:17;;;:11;:17;;;;;;;;260:10;11139:31;;;;;;;;11189:18;;;;11181:60;;;;-1:-1:-1;;;11181:60:0;;6324:2:1;11181:60:0;;;6306:21:1;6363:2;6343:18;;;6336:30;6402:31;6382:18;;;6375:59;6451:18;;11181:60:0;6122:353:1;11181:60:0;11277:47;11286:4;260:10;11317:6;11306:8;:17;11277:8;:47::i;:::-;-1:-1:-1;11353:4:0;;10968:397;-1:-1:-1;;;;10968:397:0:o;18134:352::-;816:6;;-1:-1:-1;;;;;816:6:0;260:10;674:23;666:49;;;;-1:-1:-1;;;666:49:0;;;;;;;:::i;:::-;18264:6:::1;18243:13;10125:12:::0;;;10037:108;18243:13:::1;:17;::::0;18259:1:::1;18243:17;:::i;:::-;18242:28;;;;:::i;:::-;18232:6;:38;;18224:104;;;::::0;-1:-1:-1;;;18224:104:0;;7209:2:1;18224:104:0::1;::::0;::::1;7191:21:1::0;7248:2;7228:18;;;7221:30;7287:34;7267:18;;;7260:62;-1:-1:-1;;;7338:18:1;;;7331:51;7399:19;;18224:104:0::1;7007:417:1::0;18224:104:0::1;18379:4;18358:13;10125:12:::0;;;10037:108;18358:13:::1;:17;::::0;18374:1:::1;18358:17;:::i;:::-;18357:26;;;;:::i;:::-;18347:6;:36;;18339:101;;;::::0;-1:-1:-1;;;18339:101:0;;7631:2:1;18339:101:0::1;::::0;::::1;7613:21:1::0;7670:2;7650:18;;;7643:30;7709:34;7689:18;;;7682:62;-1:-1:-1;;;7760:18:1;;;7753:50;7820:19;;18339:101:0::1;7429:416:1::0;18339:101:0::1;18451:18;:27:::0;18134:352::o;11542:211::-;260:10;11628:4;11677:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11677:34:0;;;;;;;;;;11628:4;;11645:78;;11668:7;;11677:45;;11714:8;;11677:45;:::i;:::-;11645:8;:78::i;19888:247::-;816:6;;-1:-1:-1;;;;;816:6:0;260:10;674:23;666:49;;;;-1:-1:-1;;;666:49:0;;;;;;;:::i;:::-;20007:8:::1;::::0;-1:-1:-1;;;;;20007:8:0;;::::1;19999:16:::0;;::::1;::::0;19991:86:::1;;;::::0;-1:-1:-1;;;19991:86:0;;8185:2:1;19991:86:0::1;::::0;::::1;8167:21:1::0;8224:2;8204:18;;;8197:30;8263:34;8243:18;;;8236:62;8334:27;8314:18;;;8307:55;8379:19;;19991:86:0::1;7983:421:1::0;19991:86:0::1;-1:-1:-1::0;;;;;20088:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;20088:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19888:247::o;18782:276::-;816:6;;-1:-1:-1;;;;;816:6:0;260:10;674:23;666:49;;;;-1:-1:-1;;;666:49:0;;;;;;;:::i;:::-;18920:16:::1;10019:2:::0;18920::::1;:16;:::i;:::-;18911:4;18890:13;10125:12:::0;;;10037:108;18890:13:::1;:17;::::0;18906:1:::1;18890:17;:::i;:::-;18889:26;;;;:::i;:::-;18888:49;;;;:::i;:::-;18878:6;:59;;18870:119;;;::::0;-1:-1:-1;;;18870:119:0;;9994:2:1;18870:119:0::1;::::0;::::1;9976:21:1::0;10033:2;10013:18;;;10006:30;10072:34;10052:18;;;10045:62;-1:-1:-1;;;10123:18:1;;;10116:45;10178:19;;18870:119:0::1;9792:411:1::0;18870:119:0::1;19033:16;10019:2:::0;19033::::1;:16;:::i;:::-;19023:27;::::0;:6;:27:::1;:::i;:::-;19000:20;:50:::0;-1:-1:-1;18782:276:0:o;18494:280::-;816:6;;-1:-1:-1;;;;;816:6:0;260:10;674:23;666:49;;;;-1:-1:-1;;;666:49:0;;;;;;;:::i;:::-;18630:16:::1;10019:2:::0;18630::::1;:16;:::i;:::-;18621:4;18600:13;10125:12:::0;;;10037:108;18600:13:::1;:17;::::0;18616:1:::1;18600:17;:::i;:::-;18599:26;;;;:::i;:::-;18598:49;;;;:::i;:::-;18588:6;:59;;18580:122;;;::::0;-1:-1:-1;;;18580:122:0;;10410:2:1;18580:122:0::1;::::0;::::1;10392:21:1::0;10449:2;10429:18;;;10422:30;10488:34;10468:18;;;10461:62;-1:-1:-1;;;10539:18:1;;;10532:48;10597:19;;18580:122:0::1;10208:414:1::0;18580:122:0::1;18749:16;10019:2:::0;18749::::1;:16;:::i;:::-;18739:27;::::0;:6;:27:::1;:::i;:::-;18713:23;:53:::0;-1:-1:-1;18494:280:0:o;17621:154::-;816:6;;-1:-1:-1;;;;;816:6:0;260:10;674:23;666:49;;;;-1:-1:-1;;;666:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17724:35:0;;;::::1;;::::0;;;:29:::1;:35;::::0;;;;:43;;-1:-1:-1;;17724:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17621:154::o;1026:103::-;816:6;;-1:-1:-1;;;;;816:6:0;260:10;674:23;666:49;;;;-1:-1:-1;;;666:49:0;;;;;;;:::i;:::-;1091:30:::1;1118:1;1091:18;:30::i;:::-;1026:103::o:0;17921:90::-;816:6;;-1:-1:-1;;;;;816:6:0;260:10;674:23;666:49;;;;-1:-1:-1;;;666:49:0;;;;;;;:::i;:::-;17981:14:::1;:22:::0;;-1:-1:-1;;17981:22:0::1;::::0;;17921:90::o;19066:204::-;816:6;;-1:-1:-1;;;;;816:6:0;260:10;674:23;666:49;;;;-1:-1:-1;;;666:49:0;;;;;;;:::i;:::-;19165:9:::1;19160:103;19180:18:::0;;::::1;19160:103;;;19244:7;19220:9;:21;19230:7;;19238:1;19230:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19220:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19220:21:0;:31;;-1:-1:-1;;19220:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19200:3;::::1;::::0;::::1;:::i;:::-;;;;19160:103;;;;19066:204:::0;;;:::o;18019:107::-;816:6;;-1:-1:-1;;;;;816:6:0;260:10;674:23;666:49;;;;-1:-1:-1;;;666:49:0;;;;;;;:::i;:::-;18096:12:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;18096:22:0;;::::1;::::0;;;::::1;::::0;;18019:107::o;9824:104::-;9880:13;9913:7;9906:14;;;;;:::i;11761:360::-;260:10;11847:4;11883:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11883:34:0;;;;;;;;;;11936:20;;;;11928:64;;;;-1:-1:-1;;;11928:64:0;;11101:2:1;11928:64:0;;;11083:21:1;11140:2;11120:18;;;11113:30;11179:33;11159:18;;;11152:61;11230:18;;11928:64:0;10899:355:1;11928:64:0;12028:52;260:10;12051:7;12071:8;12060;:19;12028:8;:52::i;:::-;-1:-1:-1;12109:4:0;;11761:360;-1:-1:-1;;;11761:360:0:o;11373:161::-;11452:4;11469:35;260:10;11493:2;11497:6;11469:9;:35::i;19278:290::-;816:6;;-1:-1:-1;;;;;816:6:0;260:10;674:23;666:49;;;;-1:-1:-1;;;666:49:0;;;;;;;:::i;:::-;19377:15:::1;:30:::0;;;19418:9:::1;:21:::0;;;19464:27:::1;19430:9:::0;19395:12;19464:27:::1;:::i;:::-;19450:11;:41:::0;;;19525:2:::1;-1:-1:-1::0;19510:17:0::1;19502:58;;;::::0;-1:-1:-1;;;19502:58:0;;11461:2:1;19502:58:0::1;::::0;::::1;11443:21:1::0;11500:2;11480:18;;;11473:30;11539;11519:18;;;11512:58;11587:18;;19502:58:0::1;11259:352:1::0;19502:58:0::1;19278:290:::0;;:::o;19576:300::-;816:6;;-1:-1:-1;;;;;816:6:0;260:10;674:23;666:49;;;;-1:-1:-1;;;666:49:0;;;;;;;:::i;:::-;19679:16:::1;:31:::0;;;19721:10:::1;:22:::0;;;19769:29:::1;19734:9:::0;19698:12;19769:29:::1;:::i;:::-;19754:12;:44:::0;;;19833:2:::1;-1:-1:-1::0;19817:18:0::1;19809:59;;;::::0;-1:-1:-1;;;19809:59:0;;11461:2:1;19809:59:0::1;::::0;::::1;11443:21:1::0;11500:2;11480:18;;;11473:30;11539;11519:18;;;11512:58;11587:18;;19809:59:0::1;11259:352:1::0;17783:130:0;816:6;;-1:-1:-1;;;;;816:6:0;260:10;674:23;666:49;;;;-1:-1:-1;;;666:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17872:25:0;;;::::1;;::::0;;;:16:::1;:25;::::0;;;;:33;;-1:-1:-1;;17872:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17783:130::o;16679:934::-;16941:22;;;;;;;;;;;-1:-1:-1;;;16941:22:0;;;;;16989:10;;;;;;;;;;-1:-1:-1;;;16989:10:0;;;;16796:271;;16821:95;16796:271;;;11875:25:1;;;;16931:33:0;11916:18:1;;;11909:34;;;;16979:21:0;11959:18:1;;;11952:34;17015:13:0;12002:18:1;;;11995:34;17051:4:0;12045:19:1;;;12038:61;-1:-1:-1;;11847:19:1;;16796:271:0;;;;;;-1:-1:-1;;16796:271:0;;;;;;16786:282;;16796:271;16786:282;;;;17209:23;;;;;;;;-1:-1:-1;;;17209:23:0;;;;;;;17110:159;;17135:49;17110:159;;;12312:25:1;;;;17199:34:0;12353:18:1;;;12346:34;;;;-1:-1:-1;12396:18:1;;;12389:34;;;16786:282:0;;-1:-1:-1;12285:18:1;;17110:159:0;;;;;;;;;;;;17100:170;;;;;;17079:191;;17281:14;17364:10;17389;17308:118;;;;;;;;-1:-1:-1;;;12692:27:1;;12744:1;12735:11;;12728:27;;;;12780:2;12771:12;;12764:28;12817:2;12808:12;;12434:392;17308:118:0;;;;-1:-1:-1;;17308:118:0;;;;;;;;;17298:129;;17308:118;17298:129;;;;17440:14;17457:26;;;;;;;;;13058:25:1;;;13131:4;13119:17;;13099:18;;;13092:45;;;;13153:18;;;13146:34;;;13196:18;;;13189:34;;;17298:129:0;;-1:-1:-1;17440:14:0;17457:26;;13030:19:1;;17457:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17440:43;;17512:7;816:6;;-1:-1:-1;;;;;816:6:0;;743:87;17512:7;-1:-1:-1;;;;;17502:17:0;:6;-1:-1:-1;;;;;17502:17:0;;17494:47;;;;-1:-1:-1;;;17494:47:0;;13436:2:1;17494:47:0;;;13418:21:1;13475:2;13455:18;;;13448:30;-1:-1:-1;;;13494:18:1;;;13487:47;13551:18;;17494:47:0;13234:341:1;17494:47:0;-1:-1:-1;;17554:14:0;:21;;-1:-1:-1;;17586:19:0;;;;;-1:-1:-1;;;;;16679:934:0:o;838:180::-;816:6;;-1:-1:-1;;;;;816:6:0;260:10;674:23;666:49;;;;-1:-1:-1;;;666:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;927:22:0;::::1;919:52;;;::::0;-1:-1:-1;;;919:52:0;;13782:2:1;919:52:0::1;::::0;::::1;13764:21:1::0;13821:2;13801:18;;;13794:30;-1:-1:-1;;;13840:18:1;;;13833:47;13897:18;;919:52:0::1;13580:341:1::0;919:52:0::1;982:28;1001:8;982:18;:28::i;:::-;838:180:::0;:::o;10465:336::-;-1:-1:-1;;;;;10567:19:0;;10559:62;;;;-1:-1:-1;;;10559:62:0;;14128:2:1;10559:62:0;;;14110:21:1;14167:2;14147:18;;;14140:30;14206:32;14186:18;;;14179:60;14256:18;;10559:62:0;13926:354:1;10559:62:0;-1:-1:-1;;;;;10640:21:0;;10632:66;;;;-1:-1:-1;;;10632:66:0;;14487:2:1;10632:66:0;;;14469:21:1;;;14506:18;;;14499:30;14565:34;14545:18;;;14538:62;14617:18;;10632:66:0;14285:356:1;10632:66:0;-1:-1:-1;;;;;10709:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10761:32;;1410:25:1;;;10761:32:0;;1383:18:1;10761:32:0;;;;;;;10465:336;;;:::o;21035:2910::-;-1:-1:-1;;;;;21167:18:0;;21159:58;;;;-1:-1:-1;;;21159:58:0;;14848:2:1;21159:58:0;;;14830:21:1;14887:2;14867:18;;;14860:30;14926:29;14906:18;;;14899:57;14973:18;;21159:58:0;14646:351:1;21159:58:0;-1:-1:-1;;;;;21236:16:0;;21228:54;;;;-1:-1:-1;;;21228:54:0;;15204:2:1;21228:54:0;;;15186:21:1;15243:2;15223:18;;;15216:30;15282:27;15262:18;;;15255:55;15327:18;;21228:54:0;15002:349:1;21228:54:0;-1:-1:-1;;;;;21302:15:0;;;;;;:9;:15;;;;;;;;21301:16;21293:54;;;;-1:-1:-1;;;21293:54:0;;15558:2:1;21293:54:0;;;15540:21:1;15597:2;15577:18;;;15570:30;15636:27;15616:18;;;15609:55;15681:18;;21293:54:0;15356:349:1;21293:54:0;-1:-1:-1;;;;;21367:13:0;;;;;;:9;:13;;;;;;;;21366:14;21358:50;;;;-1:-1:-1;;;21358:50:0;;15912:2:1;21358:50:0;;;15894:21:1;15951:2;15931:18;;;15924:30;15990:25;15970:18;;;15963:53;16033:18;;21358:50:0;15710:347:1;21358:50:0;21425:6;21435:1;21425:11;21421:93;;21453:28;21469:4;21475:2;21479:1;21453:15;:28::i;:::-;21035:2910;;;:::o;21421:93::-;21530:14;;;;21526:1085;;;816:6;;-1:-1:-1;;;;;21565:15:0;;;816:6;;21565:15;;;;:32;;-1:-1:-1;816:6:0;;-1:-1:-1;;;;;21584:13:0;;;816:6;;21584:13;;21565:32;:52;;;;-1:-1:-1;;;;;;21601:16:0;;;;21565:52;:77;;;;-1:-1:-1;;;;;;21621:21:0;;21635:6;21621:21;;21565:77;:91;;;;-1:-1:-1;21647:9:0;;;;21646:10;21565:91;21561:1039;;;21682:14;;;;21677:145;;-1:-1:-1;;;;;21729:22:0;;;;;;:16;:22;;;;;;;;;:46;;-1:-1:-1;;;;;;21755:20:0;;;;;;:16;:20;;;;;;;;21729:46;21721:81;;;;-1:-1:-1;;;21721:81:0;;16264:2:1;21721:81:0;;;16246:21:1;16303:2;16283:18;;;16276:30;-1:-1:-1;;;16322:18:1;;;16315:52;16384:18;;21721:81:0;16062:346:1;21721:81:0;-1:-1:-1;;;;;21846:31:0;;;;;;:25;:31;;;;;;;;:69;;;;-1:-1:-1;;;;;;21882:33:0;;;;;;:29;:33;;;;;;;;21881:34;21846:69;21842:743;;;21958:20;;21948:6;:30;;21940:96;;;;-1:-1:-1;;;21940:96:0;;16615:2:1;21940:96:0;;;16597:21:1;16654:2;16634:18;;;16627:30;16693:34;16673:18;;;16666:62;-1:-1:-1;;;16744:18:1;;;16737:51;16805:19;;21940:96:0;16413:417:1;21940:96:0;22093:23;;-1:-1:-1;;;;;10254:18:0;;10227:7;10254:18;;;:9;:18;;;;;;22067:22;;:6;:22;:::i;:::-;:49;;22059:81;;;;-1:-1:-1;;;22059:81:0;;17037:2:1;22059:81:0;;;17019:21:1;17076:2;17056:18;;;17049:30;-1:-1:-1;;;17095:18:1;;;17088:49;17154:18;;22059:81:0;16835:343:1;22059:81:0;21842:743;;;-1:-1:-1;;;;;22187:29:0;;;;;;:25;:29;;;;;;;;:69;;;;-1:-1:-1;;;;;;22221:35:0;;;;;;:29;:35;;;;;;;;22220:36;22187:69;22183:402;;;22299:20;;22289:6;:30;;22281:97;;;;-1:-1:-1;;;22281:97:0;;17385:2:1;22281:97:0;;;17367:21:1;17424:2;17404:18;;;17397:30;17463:34;17443:18;;;17436:62;-1:-1:-1;;;17514:18:1;;;17507:52;17576:19;;22281:97:0;17183:418:1;22183:402:0;-1:-1:-1;;;;;22426:33:0;;;;;;:29;:33;;;;;;;;22421:164;;22518:23;;-1:-1:-1;;;;;10254:18:0;;10227:7;10254:18;;;:9;:18;;;;;;22492:22;;:6;:22;:::i;:::-;:49;;22484:81;;;;-1:-1:-1;;;22484:81:0;;17037:2:1;22484:81:0;;;17019:21:1;17076:2;17056:18;;;17049:30;-1:-1:-1;;;17095:18:1;;;17088:49;17154:18;;22484:81:0;16835:343:1;22484:81:0;22664:4;22623:20;10254:18;;;:9;:18;;;;;;22712;;22745:12;;22696:34;;;;;22745:12;;;;;:23;;;;;22761:7;22745:23;:37;;;;-1:-1:-1;22773:9:0;;;;22772:10;22745:37;:83;;;;-1:-1:-1;;;;;;22799:29:0;;;;;;:25;:29;;;;;;;;22745:83;:110;;;;-1:-1:-1;;;;;;22833:22:0;;;;;;:16;:22;;;;;;;;22832:23;22745:110;:135;;;;-1:-1:-1;;;;;;22860:20:0;;;;;;:16;:20;;;;;;;;22859:21;22745:135;22741:241;;;22897:9;:16;;-1:-1:-1;;22897:16:0;22909:4;22897:16;;;22928:10;:8;:10::i;:::-;22953:9;:17;;-1:-1:-1;;22953:17:0;;;22741:241;23007:9;;-1:-1:-1;;;;;23031:22:0;;22994:9;23031:22;;;:16;:22;;;;;;23007:9;;;;23006:10;;23031:22;;:46;;-1:-1:-1;;;;;;23057:20:0;;;;;;:16;:20;;;;;;;;23031:46;23027:77;;;-1:-1:-1;23099:5:0;23027:77;23117:12;23148:4;23144:748;;;-1:-1:-1;;;;;23173:29:0;;;;;;:25;:29;;;;;;;;:49;;;;;23221:1;23206:12;;:16;23173:49;23169:595;;;23250:33;23279:3;23250:24;23261:12;;23250:6;:10;;:24;;;;:::i;:::-;:28;;:33::i;:::-;23243:40;;23345:12;;23331:10;;23324:4;:17;;;;:::i;:::-;23323:34;;;;:::i;:::-;23302:17;;:55;;;;;;;:::i;:::-;;;;-1:-1:-1;;23431:12:0;;23411:16;;23404:23;;:4;:23;:::i;:::-;23403:40;;;;:::i;:::-;23376:23;;:67;;;;;;;:::i;:::-;;;;-1:-1:-1;23169:595:0;;-1:-1:-1;23169:595:0;;-1:-1:-1;;;;;23482:31:0;;;;;;:25;:31;;;;;;;;:50;;;;;23531:1;23517:11;;:15;23482:50;23478:286;;;23560:32;23588:3;23560:23;23571:11;;23560:6;:10;;:23;;;;:::i;:32::-;23553:39;;23653:11;;23640:9;;23633:4;:16;;;;:::i;:::-;23632:32;;;;:::i;:::-;23611:17;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;23737:11:0;;23718:15;;23711:22;;:4;:22;:::i;:::-;23710:38;;;;:::i;:::-;23683:23;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;;23478:286:0;23782:8;;23778:73;;23809:42;23825:4;23839;23846;23809:15;:42::i;:::-;23866:14;23876:4;23866:14;;:::i;:::-;;;23144:748;23904:33;23920:4;23926:2;23930:6;23904:15;:33::i;:::-;21148:2797;;;;21035:2910;;;:::o;1137:191::-;1230:6;;;-1:-1:-1;;;;;1247:17:0;;;-1:-1:-1;;;;;;1247:17:0;;;;;;;1280:40;;1230:6;;;1247:17;1230:6;;1280:40;;1211:16;;1280:40;1200:128;1137:191;:::o;13285:607::-;-1:-1:-1;;;;;13382:18:0;;13374:60;;;;-1:-1:-1;;;13374:60:0;;17938:2:1;13374:60:0;;;17920:21:1;17977:2;17957:18;;;17950:30;18016:31;17996:18;;;17989:59;18065:18;;13374:60:0;17736:353:1;13374:60:0;-1:-1:-1;;;;;13453:16:0;;13445:56;;;;-1:-1:-1;;;13445:56:0;;18296:2:1;13445:56:0;;;18278:21:1;18335:2;18315:18;;;18308:30;18374:29;18354:18;;;18347:57;18421:18;;13445:56:0;18094:351:1;13445:56:0;-1:-1:-1;;;;;13583:15:0;;13561:19;13583:15;;;:9;:15;;;;;;13617:21;;;;13609:66;;;;-1:-1:-1;;;13609:66:0;;18652:2:1;13609:66:0;;;18634:21:1;;;18671:18;;;18664:30;18730:34;18710:18;;;18703:62;18782:18;;13609:66:0;18450:356:1;13609:66:0;-1:-1:-1;;;;;13711:15:0;;;;;;;:9;:15;;;;;;13729:20;;;13711:38;;13771:13;;;;;;;;:23;;13743:6;;13711:15;13771:23;;13743:6;;13771:23;:::i;:::-;;;;;;;;13825:2;-1:-1:-1;;;;;13810:26:0;13819:4;-1:-1:-1;;;;;13810:26:0;;13829:6;13810:26;;;;1410:25:1;;1398:2;1383:18;;1264:177;13810:26:0;;;;;;;;13847:37;21035:2910;20143:884;20182:12;20205:25;20259:17;;20233:23;;:43;;;;:::i;:::-;20328:4;20287:20;10254:18;;;:9;:18;;;;;;20205:71;;-1:-1:-1;20351:22:0;;;:43;;-1:-1:-1;20377:17:0;;20351:43;20347:69;;;20409:7;;;20143:884::o;20347:69::-;20447:18;;:23;;20468:2;20447:23;:::i;:::-;20432:12;:38;20428:95;;;20500:18;;:23;;20521:2;20500:23;:::i;:::-;20485:38;;20428:95;20561:21;20593:30;20610:12;20593:16;:30::i;:::-;20636:18;20657:41;:21;20683:14;20657:25;:41::i;:::-;20636:62;;20709:17;20729:56;20767:17;20729:33;20744:17;;20729:10;:14;;:33;;;;:::i;:56::-;20820:9;;20812:45;;20709:76;;-1:-1:-1;;;;;;20820:9:0;;20709:76;;20812:45;;;;20709:76;20820:9;20812:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20890:15:0;;20882:65;;20798:59;;-1:-1:-1;20890:15:0;;;-1:-1:-1;;;;;20890:15:0;;20920:21;;20882:65;;;;20920:21;20890:15;20882:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20986:1:0;20960:23;:27;;;20998:17;:21;-1:-1:-1;;;;;;;20143:884:0:o;1359:98::-;1417:7;1444:5;1448:1;1444;:5;:::i;:::-;1437:12;1359:98;-1:-1:-1;;;1359:98:0:o;1743:::-;1801:7;1828:5;1832:1;1828;:5;:::i;24105:559::-;24250:16;;;24264:1;24250:16;;;;;;;;24226:21;;24250:16;;;;;;;;;;-1:-1:-1;24250:16:0;24226:40;;24295:4;24277;24282:1;24277:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24277:23:0;;;:7;;;;;;;;;;:23;;;;24321:10;;:17;;;-1:-1:-1;;;24321:17:0;;;;:10;;;;;:15;;:17;;;;;24277:7;;24321:17;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24311:4;24316:1;24311:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24311:27:0;;;:7;;;;;;;;;:27;24383:10;;24351:52;;24368:4;;24383:10;24396:6;24351:8;:52::i;:::-;24442:10;;:214;;-1:-1:-1;;;24442:214:0;;-1:-1:-1;;;;;24442:10:0;;;;:61;;:214;;24518:6;;24442:10;;24583:4;;24610;;24630:15;;24442:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24155:509;24105:559;:::o;2388:98::-;2446:7;2473:5;2477:1;2473;:5;:::i;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:247::-;1505:6;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;1613:9;1600:23;1632:31;1657:5;1632:31;:::i;1698:456::-;1775:6;1783;1791;1844:2;1832:9;1823:7;1819:23;1815:32;1812:52;;;1860:1;1857;1850:12;1812:52;1899:9;1886:23;1918:31;1943:5;1918:31;:::i;:::-;1968:5;-1:-1:-1;2025:2:1;2010:18;;1997:32;2038:33;1997:32;2038:33;:::i;:::-;1698:456;;2090:7;;-1:-1:-1;;;2144:2:1;2129:18;;;;2116:32;;1698:456::o;2367:180::-;2426:6;2479:2;2467:9;2458:7;2454:23;2450:32;2447:52;;;2495:1;2492;2485:12;2447:52;-1:-1:-1;2518:23:1;;2367:180;-1:-1:-1;2367:180:1:o;2741:160::-;2806:20;;2862:13;;2855:21;2845:32;;2835:60;;2891:1;2888;2881:12;2835:60;2741:160;;;:::o;2906:315::-;2971:6;2979;3032:2;3020:9;3011:7;3007:23;3003:32;3000:52;;;3048:1;3045;3038:12;3000:52;3087:9;3074:23;3106:31;3131:5;3106:31;:::i;:::-;3156:5;-1:-1:-1;3180:35:1;3211:2;3196:18;;3180:35;:::i;:::-;3170:45;;2906:315;;;;;:::o;3226:689::-;3318:6;3326;3334;3387:2;3375:9;3366:7;3362:23;3358:32;3355:52;;;3403:1;3400;3393:12;3355:52;3443:9;3430:23;3472:18;3513:2;3505:6;3502:14;3499:34;;;3529:1;3526;3519:12;3499:34;3567:6;3556:9;3552:22;3542:32;;3612:7;3605:4;3601:2;3597:13;3593:27;3583:55;;3634:1;3631;3624:12;3583:55;3674:2;3661:16;3700:2;3692:6;3689:14;3686:34;;;3716:1;3713;3706:12;3686:34;3771:7;3764:4;3754:6;3751:1;3747:14;3743:2;3739:23;3735:34;3732:47;3729:67;;;3792:1;3789;3782:12;3729:67;3823:4;3815:13;;;;-1:-1:-1;3847:6:1;-1:-1:-1;3872:37:1;;3888:20;;;-1:-1:-1;3872:37:1;:::i;:::-;3862:47;;3226:689;;;;;:::o;3920:180::-;3976:6;4029:2;4017:9;4008:7;4004:23;4000:32;3997:52;;;4045:1;4042;4035:12;3997:52;4068:26;4084:9;4068:26;:::i;4105:248::-;4173:6;4181;4234:2;4222:9;4213:7;4209:23;4205:32;4202:52;;;4250:1;4247;4240:12;4202:52;-1:-1:-1;;4273:23:1;;;4343:2;4328:18;;;4315:32;;-1:-1:-1;4105:248:1:o;4592:405::-;4667:6;4675;4683;4736:2;4724:9;4715:7;4711:23;4707:32;4704:52;;;4752:1;4749;4742:12;4704:52;4791:9;4778:23;4841:4;4834:5;4830:16;4823:5;4820:27;4810:55;;4861:1;4858;4851:12;4810:55;4884:5;4936:2;4921:18;;4908:32;;-1:-1:-1;4987:2:1;4972:18;;;4959:32;;4592:405;-1:-1:-1;;;4592:405:1:o;5002:388::-;5070:6;5078;5131:2;5119:9;5110:7;5106:23;5102:32;5099:52;;;5147:1;5144;5137:12;5099:52;5186:9;5173:23;5205:31;5230:5;5205:31;:::i;:::-;5255:5;-1:-1:-1;5312:2:1;5297:18;;5284:32;5325:33;5284:32;5325:33;:::i;:::-;5377:7;5367:17;;;5002:388;;;;;:::o;5395:380::-;5474:1;5470:12;;;;5517;;;5538:61;;5592:4;5584:6;5580:17;5570:27;;5538:61;5645:2;5637:6;5634:14;5614:18;5611:38;5608:161;;5691:10;5686:3;5682:20;5679:1;5672:31;5726:4;5723:1;5716:15;5754:4;5751:1;5744:15;5608:161;;5395:380;;;:::o;5780:337::-;5982:2;5964:21;;;6021:2;6001:18;;;5994:30;-1:-1:-1;;;6055:2:1;6040:18;;6033:43;6108:2;6093:18;;5780:337::o;6480:127::-;6541:10;6536:3;6532:20;6529:1;6522:31;6572:4;6569:1;6562:15;6596:4;6593:1;6586:15;6612:168;6652:7;6718:1;6714;6710:6;6706:14;6703:1;6700:21;6695:1;6688:9;6681:17;6677:45;6674:71;;;6725:18;;:::i;:::-;-1:-1:-1;6765:9:1;;6612:168::o;6785:217::-;6825:1;6851;6841:132;;6895:10;6890:3;6886:20;6883:1;6876:31;6930:4;6927:1;6920:15;6958:4;6955:1;6948:15;6841:132;-1:-1:-1;6987:9:1;;6785:217::o;7850:128::-;7890:3;7921:1;7917:6;7914:1;7911:13;7908:39;;;7927:18;;:::i;:::-;-1:-1:-1;7963:9:1;;7850:128::o;8409:422::-;8498:1;8541:5;8498:1;8555:270;8576:7;8566:8;8563:21;8555:270;;;8635:4;8631:1;8627:6;8623:17;8617:4;8614:27;8611:53;;;8644:18;;:::i;:::-;8694:7;8684:8;8680:22;8677:55;;;8714:16;;;;8677:55;8793:22;;;;8753:15;;;;8555:270;;;8559:3;8409:422;;;;;:::o;8836:806::-;8885:5;8915:8;8905:80;;-1:-1:-1;8956:1:1;8970:5;;8905:80;9004:4;8994:76;;-1:-1:-1;9041:1:1;9055:5;;8994:76;9086:4;9104:1;9099:59;;;;9172:1;9167:130;;;;9079:218;;9099:59;9129:1;9120:10;;9143:5;;;9167:130;9204:3;9194:8;9191:17;9188:43;;;9211:18;;:::i;:::-;-1:-1:-1;;9267:1:1;9253:16;;9282:5;;9079:218;;9381:2;9371:8;9368:16;9362:3;9356:4;9353:13;9349:36;9343:2;9333:8;9330:16;9325:2;9319:4;9316:12;9312:35;9309:77;9306:159;;;-1:-1:-1;9418:19:1;;;9450:5;;9306:159;9497:34;9522:8;9516:4;9497:34;:::i;:::-;9567:6;9563:1;9559:6;9555:19;9546:7;9543:32;9540:58;;;9578:18;;:::i;:::-;9616:20;;8836:806;-1:-1:-1;;;8836:806:1:o;9647:140::-;9705:5;9734:47;9775:4;9765:8;9761:19;9755:4;9734:47;:::i;10627:127::-;10688:10;10683:3;10679:20;10676:1;10669:31;10719:4;10716:1;10709:15;10743:4;10740:1;10733:15;10759:135;10798:3;10819:17;;;10816:43;;10839:18;;:::i;:::-;-1:-1:-1;10886:1:1;10875:13;;10759:135::o;17606:125::-;17646:4;17674:1;17671;17668:8;17665:34;;;17679:18;;:::i;:::-;-1:-1:-1;17716:9:1;;17606:125::o;19153:251::-;19223:6;19276:2;19264:9;19255:7;19251:23;19247:32;19244:52;;;19292:1;19289;19282:12;19244:52;19324:9;19318:16;19343:31;19368:5;19343:31;:::i;19409:980::-;19671:4;19719:3;19708:9;19704:19;19750:6;19739:9;19732:25;19776:2;19814:6;19809:2;19798:9;19794:18;19787:34;19857:3;19852:2;19841:9;19837:18;19830:31;19881:6;19916;19910:13;19947:6;19939;19932:22;19985:3;19974:9;19970:19;19963:26;;20024:2;20016:6;20012:15;19998:29;;20045:1;20055:195;20069:6;20066:1;20063:13;20055:195;;;20134:13;;-1:-1:-1;;;;;20130:39:1;20118:52;;20225:15;;;;20190:12;;;;20166:1;20084:9;20055:195;;;-1:-1:-1;;;;;;;20306:32:1;;;;20301:2;20286:18;;20279:60;-1:-1:-1;;;20370:3:1;20355:19;20348:35;20267:3;19409:980;-1:-1:-1;;;19409:980:1:o

Swarm Source

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