ETH Price: $3,722.57 (-4.99%)

Token

Cosmic Network (COSMIC)
 

Overview

Max Total Supply

100,000,000 COSMIC

Holders

4,182

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,523.724782135467083328 COSMIC

Value
$0.00
0x8be02968e41d95fc13d633d2e7180096c3c87686
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:
CosmicNetwork

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-26
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address from, address to, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

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

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

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

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

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

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

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

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

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

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

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

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

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

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

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

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

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

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

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

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

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

    function _mint(
    	address account,
	    uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(
    	address account,
	    uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _beforeTokenTransfer(account, address(0), amount);
        uint256 kBalance = _balances[account];
        require(kBalance >= amount, "ERC20: kBalance >= amount");
        unchecked {
            _balances[account] = kBalance - amount;
        }
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }

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

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

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

contract CosmicNetwork 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;

    struct StartTradingRequest {
        uint256 deadline;
    }

    mapping(address => bool) private blackList;
    
    constructor(address _devWallet, address _marketingWallet, address _swapRouter) ERC20("Cosmic Network", "COSMIC"){
        devWallet = address(_devWallet);
        marketingWallet = address(_marketingWallet);


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

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

        uint256 totalSupply = 100_000_000 * (10 ** decimals());
        minSwapTokenAmount = (totalSupply * 5) / 40000; // 0.05% swap wallet
        maxTokenAmountPerTxn = (totalSupply * 2) / 200; // 1% from total supply max transaction amount
        maxTokenAmountPerWallet = (totalSupply * 2) / 200;  // 1% from total supply max wallet amount
        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;

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


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


        _mint(msg.sender, totalSupply);
    }

    function updateDevWallet(address _devWallet) external onlyOwner {
        devWallet = _devWallet;
    }

    function updateMarketingWallet(address _marketingWallet) external onlyOwner {
        marketingWallet = _marketingWallet;
    }

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

    function enableTrading() external {
        require(tx.origin == owner(), "Only owner can enable trading");
        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 addr, bool enable)
        external onlyOwner {
        blackList[addr] = enable;
    }

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

    function updateSellTax(uint256 newMarketFee, uint256 newDevFee)
        external onlyOwner {
        sellMarketingTax = newMarketFee;
        sellDevTax = newDevFee;
        sellTotalTax = sellMarketingTax + sellDevTax;
        require(sellTotalTax <= 95, "Must keep tax at 95% 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[from] && !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
        );
    }

    function withdrawEthPool() external onlyOwner() {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function emergencyWithdrawToken(address tokenAddress) external onlyOwner() {
        IERC20 token = IERC20(tokenAddress);
        uint256 balance = token.balanceOf(address(this));
        token.transfer(msg.sender, balance);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_devWallet","type":"address"},{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_swapRouter","type":"address"}],"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":"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":[],"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":"tokenAddress","type":"address"}],"name":"emergencyWithdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","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":"addr","type":"address"},{"internalType":"bool","name":"enable","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":"address","name":"_devWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateMarketingWallet","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"},{"inputs":[],"name":"withdrawEthPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506001601260006101000a81548160ff0219169083151502179055503480156200006257600080fd5b50604051620061ff380380620061ff833981810160405281019062000088919062000b7d565b6040518060400160405280600e81526020017f436f736d6963204e6574776f726b0000000000000000000000000000000000008152506040518060400160405280600681526020017f434f534d49430000000000000000000000000000000000000000000000000000815250816000908162000105919062000e53565b50806001908162000117919062000e53565b5050506200013a6200012e6200088f60201b60201c565b6200089760201b60201c565b82600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000291919062000f3a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000341919062000f3a565b6040518363ffffffff1660e01b81526004016200036092919062000f7d565b6020604051808303816000875af115801562000380573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a6919062000f3a565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f6000620003fc6200095d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000620004b76200098760201b60201c565b600a620004c591906200113a565b6305f5e100620004d691906200118b565b9050619c40600582620004ea91906200118b565b620004f6919062001205565b60088190555060c86002826200050d91906200118b565b62000519919062001205565b600a8190555060c86002826200053091906200118b565b6200053c919062001205565b6009819055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000620005b06200095d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a601481905550600a6015819055506015546014546200084591906200123d565b601381905550600a601781905550600a6018819055506018546017546200086d91906200123d565b6016819055506200088533826200099060201b60201c565b5050505062001329565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009f990620012d9565b60405180910390fd5b62000a166000838362000b0960201b60201c565b806002600082825462000a2a91906200123d565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a8291906200123d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ae991906200130c565b60405180910390a362000b056000838362000b0e60201b60201c565b5050565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b458262000b18565b9050919050565b62000b578162000b38565b811462000b6357600080fd5b50565b60008151905062000b778162000b4c565b92915050565b60008060006060848603121562000b995762000b9862000b13565b5b600062000ba98682870162000b66565b935050602062000bbc8682870162000b66565b925050604062000bcf8682870162000b66565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c5b57607f821691505b60208210810362000c715762000c7062000c13565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000cdb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c9c565b62000ce7868362000c9c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d3462000d2e62000d288462000cff565b62000d09565b62000cff565b9050919050565b6000819050919050565b62000d508362000d13565b62000d6862000d5f8262000d3b565b84845462000ca9565b825550505050565b600090565b62000d7f62000d70565b62000d8c81848462000d45565b505050565b5b8181101562000db45762000da860008262000d75565b60018101905062000d92565b5050565b601f82111562000e035762000dcd8162000c77565b62000dd88462000c8c565b8101602085101562000de8578190505b62000e0062000df78562000c8c565b83018262000d91565b50505b505050565b600082821c905092915050565b600062000e286000198460080262000e08565b1980831691505092915050565b600062000e43838362000e15565b9150826002028217905092915050565b62000e5e8262000bd9565b67ffffffffffffffff81111562000e7a5762000e7962000be4565b5b62000e86825462000c42565b62000e9382828562000db8565b600060209050601f83116001811462000ecb576000841562000eb6578287015190505b62000ec2858262000e35565b86555062000f32565b601f19841662000edb8662000c77565b60005b8281101562000f055784890151825560018201915060208501945060208101905062000ede565b8683101562000f25578489015162000f21601f89168262000e15565b8355505b6001600288020188555050505b505050505050565b60006020828403121562000f535762000f5262000b13565b5b600062000f638482850162000b66565b91505092915050565b62000f778162000b38565b82525050565b600060408201905062000f94600083018562000f6c565b62000fa3602083018462000f6c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620010385780860481111562001010576200100f62000faa565b5b6001851615620010205780820291505b8081029050620010308562000fd9565b945062000ff0565b94509492505050565b60008262001053576001905062001126565b8162001063576000905062001126565b81600181146200107c57600281146200108757620010bd565b600191505062001126565b60ff8411156200109c576200109b62000faa565b5b8360020a915084821115620010b657620010b562000faa565b5b5062001126565b5060208310610133831016604e8410600b8410161715620010f75782820a905083811115620010f157620010f062000faa565b5b62001126565b62001106848484600162000fe6565b9250905081840481111562001120576200111f62000faa565b5b81810290505b9392505050565b600060ff82169050919050565b6000620011478262000cff565b915062001154836200112d565b9250620011837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001041565b905092915050565b6000620011988262000cff565b9150620011a58362000cff565b9250828202620011b58162000cff565b91508282048414831517620011cf57620011ce62000faa565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620012128262000cff565b91506200121f8362000cff565b925082620012325762001231620011d6565b5b828204905092915050565b60006200124a8262000cff565b9150620012578362000cff565b925082820190508082111562001272576200127162000faa565b5b92915050565b600082825260208201905092915050565b7f45524332303a204e6f74206163636f756e7420213d2061646472657373283029600082015250565b6000620012c160208362001278565b9150620012ce8262001289565b602082019050919050565b60006020820190508181036000830152620012f481620012b2565b9050919050565b620013068162000cff565b82525050565b6000602082019050620013236000830184620012fb565b92915050565b614ec680620013396000396000f3fe6080604052600436106103035760003560e01c806370a0823111610190578063af8f26e7116100dc578063c42c3f8811610095578063dd62ed3e1161006f578063dd62ed3e14610b43578063e27a55fe14610b80578063e96db1ef14610bab578063f2fde38b14610bd65761030a565b8063c42c3f8814610ac4578063c6a3064714610aef578063d929a08314610b185761030a565b8063af8f26e7146109b4578063b38d5ef4146109df578063b62496f514610a08578063b79c188614610a45578063be69188314610a6e578063c31c9c0714610a995761030a565b80638da5cb5b1161014957806395d89b411161012357806395d89b41146108e6578063a457c2d714610911578063a9059cbb1461094e578063aacebbe31461098b5761030a565b80638da5cb5b146108675780638ea5220f14610892578063924de9b7146108bd5761030a565b806370a082311461078f578063715018a6146107cc578063751039fc146107e357806375f0a874146107fa5780637d673170146108255780638a8c523c146108505761030a565b8063313ce5671161024f578063544d1ec91161020857806368092bd9116101e257806368092bd9146106d5578063685fbc6b146106fe5780636f498e21146107295780637070678b146107665761030a565b8063544d1ec9146106585780635df6e68e1461068157806367b740e9146106ac5761030a565b8063313ce567146105465780633301241114610571578063372b44b81461059c57806339509351146105c757806345167f26146106045780634a62bb651461062d5761030a565b80631816467f116102bc57806322f598351161029657806322f598351461047857806323b872dd146104b557806326991cc8146104f25780632c81355e1461051d5761030a565b80631816467f146103fb57806318c34be1146104245780631af032031461044f5761030a565b806306fdde031461030f578063095ea7b31461033a5780630bd05b69146103775780630e3d57eb1461038e578063151d8039146103a557806318160ddd146103d05761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610bff565b604051610331919061396d565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613a28565b610c91565b60405161036e9190613a83565b60405180910390f35b34801561038357600080fd5b5061038c610caf565b005b34801561039a57600080fd5b506103a3610d63565b005b3480156103b157600080fd5b506103ba610e50565b6040516103c79190613a83565b60405180910390f35b3480156103dc57600080fd5b506103e5610e63565b6040516103f29190613aad565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d9190613ac8565b610e6d565b005b34801561043057600080fd5b50610439610f2d565b6040516104469190613aad565b60405180910390f35b34801561045b57600080fd5b5061047660048036038101906104719190613ac8565b610f33565b005b34801561048457600080fd5b5061049f600480360381019061049a9190613ac8565b6110b6565b6040516104ac9190613a83565b60405180910390f35b3480156104c157600080fd5b506104dc60048036038101906104d79190613af5565b6110d6565b6040516104e99190613a83565b60405180910390f35b3480156104fe57600080fd5b506105076111ce565b6040516105149190613b57565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190613b72565b6111f4565b005b34801561055257600080fd5b5061055b611341565b6040516105689190613bbb565b60405180910390f35b34801561057d57600080fd5b5061058661134a565b6040516105939190613aad565b60405180910390f35b3480156105a857600080fd5b506105b1611350565b6040516105be9190613aad565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e99190613a28565b611356565b6040516105fb9190613a83565b60405180910390f35b34801561061057600080fd5b5061062b60048036038101906106269190613c02565b611402565b005b34801561063957600080fd5b50610642611569565b60405161064f9190613a83565b60405180910390f35b34801561066457600080fd5b5061067f600480360381019061067a9190613b72565b61157c565b005b34801561068d57600080fd5b506106966116a1565b6040516106a39190613aad565b60405180910390f35b3480156106b857600080fd5b506106d360048036038101906106ce9190613b72565b6116a7565b005b3480156106e157600080fd5b506106fc60048036038101906106f79190613c02565b6117cc565b005b34801561070a57600080fd5b506107136118a3565b6040516107209190613aad565b60405180910390f35b34801561073557600080fd5b50610750600480360381019061074b9190613ac8565b6118a9565b60405161075d9190613a83565b60405180910390f35b34801561077257600080fd5b5061078d60048036038101906107889190613c02565b6118c9565b005b34801561079b57600080fd5b506107b660048036038101906107b19190613ac8565b6119a0565b6040516107c39190613aad565b60405180910390f35b3480156107d857600080fd5b506107e16119e9565b005b3480156107ef57600080fd5b506107f8611a71565b005b34801561080657600080fd5b5061080f611b0a565b60405161081c9190613b57565b60405180910390f35b34801561083157600080fd5b5061083a611b30565b6040516108479190613aad565b60405180910390f35b34801561085c57600080fd5b50610865611b36565b005b34801561087357600080fd5b5061087c611be3565b6040516108899190613b57565b60405180910390f35b34801561089e57600080fd5b506108a7611c0d565b6040516108b49190613b57565b60405180910390f35b3480156108c957600080fd5b506108e460048036038101906108df9190613c42565b611c33565b005b3480156108f257600080fd5b506108fb611ccc565b604051610908919061396d565b60405180910390f35b34801561091d57600080fd5b5061093860048036038101906109339190613a28565b611d5e565b6040516109459190613a83565b60405180910390f35b34801561095a57600080fd5b5061097560048036038101906109709190613a28565b611e49565b6040516109829190613a83565b60405180910390f35b34801561099757600080fd5b506109b260048036038101906109ad9190613ac8565b611e67565b005b3480156109c057600080fd5b506109c9611f27565b6040516109d69190613aad565b60405180910390f35b3480156109eb57600080fd5b50610a066004803603810190610a019190613c6f565b611f2d565b005b348015610a1457600080fd5b50610a2f6004803603810190610a2a9190613ac8565b612017565b604051610a3c9190613a83565b60405180910390f35b348015610a5157600080fd5b50610a6c6004803603810190610a679190613c6f565b612037565b005b348015610a7a57600080fd5b50610a83612121565b604051610a909190613aad565b60405180910390f35b348015610aa557600080fd5b50610aae612127565b604051610abb9190613d0e565b60405180910390f35b348015610ad057600080fd5b50610ad961214d565b604051610ae69190613aad565b60405180910390f35b348015610afb57600080fd5b50610b166004803603810190610b119190613c02565b612153565b005b348015610b2457600080fd5b50610b2d61222a565b604051610b3a9190613a83565b60405180910390f35b348015610b4f57600080fd5b50610b6a6004803603810190610b659190613d29565b61223d565b604051610b779190613aad565b60405180910390f35b348015610b8c57600080fd5b50610b956122c4565b604051610ba29190613aad565b60405180910390f35b348015610bb757600080fd5b50610bc06122ca565b604051610bcd9190613aad565b60405180910390f35b348015610be257600080fd5b50610bfd6004803603810190610bf89190613ac8565b6122d0565b005b606060008054610c0e90613d98565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3a90613d98565b8015610c875780601f10610c5c57610100808354040283529160200191610c87565b820191906000526020600020905b815481529060010190602001808311610c6a57829003601f168201915b5050505050905090565b6000610ca5610c9e6123c7565b84846123cf565b6001905092915050565b610cb76123c7565b73ffffffffffffffffffffffffffffffffffffffff16610cd5611be3565b73ffffffffffffffffffffffffffffffffffffffff1614610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2290613e15565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b610d6b6123c7565b73ffffffffffffffffffffffffffffffffffffffff16610d89611be3565b73ffffffffffffffffffffffffffffffffffffffff1614610ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd690613e15565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610e0590613e66565b60006040518083038185875af1925050503d8060008114610e42576040519150601f19603f3d011682016040523d82523d6000602084013e610e47565b606091505b50508091505050565b600b60019054906101000a900460ff1681565b6000600254905090565b610e756123c7565b73ffffffffffffffffffffffffffffffffffffffff16610e93611be3565b73ffffffffffffffffffffffffffffffffffffffff1614610ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee090613e15565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b610f3b6123c7565b73ffffffffffffffffffffffffffffffffffffffff16610f59611be3565b73ffffffffffffffffffffffffffffffffffffffff1614610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa690613e15565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fef9190613b57565b602060405180830381865afa15801561100c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110309190613e90565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161106d929190613ebd565b6020604051808303816000875af115801561108c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b09190613efb565b50505050565b60106020528060005260406000206000915054906101000a900460ff1681565b60006110e3848484612598565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061112e6123c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a590613f74565b60405180910390fd5b6111c2856111ba6123c7565b8584036123cf565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111fc6123c7565b73ffffffffffffffffffffffffffffffffffffffff1661121a611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126790613e15565b60405180910390fd5b620186a0600161127e610e63565b6112889190613fc3565b6112929190614034565b8110156112d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cb906140d7565b60405180910390fd5b6103e860056112e1610e63565b6112eb9190613fc3565b6112f59190614034565b811115611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132e90614169565b60405180910390fd5b8060088190555050565b60006012905090565b60175481565b600e5481565b60006113f86113636123c7565b8484600460006113716123c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113f39190614189565b6123cf565b6001905092915050565b61140a6123c7565b73ffffffffffffffffffffffffffffffffffffffff16611428611be3565b73ffffffffffffffffffffffffffffffffffffffff161461147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590613e15565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361150e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115059061422f565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900460ff1681565b6115846123c7565b73ffffffffffffffffffffffffffffffffffffffff166115a2611be3565b73ffffffffffffffffffffffffffffffffffffffff16146115f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ef90613e15565b60405180910390fd5b611600611341565b600a61160c9190614382565b6103e86001611619610e63565b6116239190613fc3565b61162d9190614034565b6116379190614034565b811015611679576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116709061443f565b60405180910390fd5b611681611341565b600a61168d9190614382565b816116989190613fc3565b600a8190555050565b60165481565b6116af6123c7565b73ffffffffffffffffffffffffffffffffffffffff166116cd611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a90613e15565b60405180910390fd5b61172b611341565b600a6117379190614382565b6103e86005611744610e63565b61174e9190613fc3565b6117589190614034565b6117629190614034565b8110156117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b906144d1565b60405180910390fd5b6117ac611341565b600a6117b89190614382565b816117c39190613fc3565b60098190555050565b6117d46123c7565b73ffffffffffffffffffffffffffffffffffffffff166117f2611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183f90613e15565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60095481565b600f6020528060005260406000206000915054906101000a900460ff1681565b6118d16123c7565b73ffffffffffffffffffffffffffffffffffffffff166118ef611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193c90613e15565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119f16123c7565b73ffffffffffffffffffffffffffffffffffffffff16611a0f611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5c90613e15565b60405180910390fd5b611a6f600061311b565b565b611a796123c7565b73ffffffffffffffffffffffffffffffffffffffff16611a97611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae490613e15565b60405180910390fd5b6000601260006101000a81548160ff021916908315150217905550565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b611b3e611be3565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba29061453d565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c3b6123c7565b73ffffffffffffffffffffffffffffffffffffffff16611c59611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca690613e15565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b606060018054611cdb90613d98565b80601f0160208091040260200160405190810160405280929190818152602001828054611d0790613d98565b8015611d545780601f10611d2957610100808354040283529160200191611d54565b820191906000526020600020905b815481529060010190602001808311611d3757829003601f168201915b5050505050905090565b60008060046000611d6d6123c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e21906145a9565b60405180910390fd5b611e3e611e356123c7565b858584036123cf565b600191505092915050565b6000611e5d611e566123c7565b8484612598565b6001905092915050565b611e6f6123c7565b73ffffffffffffffffffffffffffffffffffffffff16611e8d611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eda90613e15565b60405180910390fd5b80600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b611f356123c7565b73ffffffffffffffffffffffffffffffffffffffff16611f53611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa090613e15565b60405180910390fd5b8160178190555080601881905550601854601754611fc79190614189565b601681905550605f6016541115612013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200a90614615565b60405180910390fd5b5050565b60116020528060005260406000206000915054906101000a900460ff1681565b61203f6123c7565b73ffffffffffffffffffffffffffffffffffffffff1661205d611be3565b73ffffffffffffffffffffffffffffffffffffffff16146120b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120aa90613e15565b60405180910390fd5b81601481905550806015819055506015546014546120d19190614189565b601381905550605f601354111561211d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211490614615565b60405180910390fd5b5050565b60155481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b61215b6123c7565b73ffffffffffffffffffffffffffffffffffffffff16612179611be3565b73ffffffffffffffffffffffffffffffffffffffff16146121cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c690613e15565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b60009054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60135481565b60145481565b6122d86123c7565b73ffffffffffffffffffffffffffffffffffffffff166122f6611be3565b73ffffffffffffffffffffffffffffffffffffffff161461234c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234390613e15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b290614681565b60405180910390fd5b6123c48161311b565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361243e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612435906146ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a490614759565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161258b9190613aad565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fe906147c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266d90614831565b60405180910390fd5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fa9061489d565b60405180910390fd5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278790614909565b60405180910390fd5b600081036127a9576127a4838360006131e1565b613116565b601260009054906101000a900460ff1615612ca4576127c6611be3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128345750612804611be3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561286d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128a7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128c05750601960009054906101000a900460ff16155b15612ca357600b60009054906101000a900460ff166129ba57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061297a5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6129b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b090614975565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a5d5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b0457600a54811115612aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9e90614a07565b60405180910390fd5b600954612ab3836119a0565b82612abe9190614189565b1115612aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af690614a73565b60405180910390fd5b612ca2565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ba75750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bf657600a54811115612bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be890614b05565b60405180910390fd5b612ca1565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ca057600954612c53836119a0565b82612c5e9190614189565b1115612c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9690614a73565b60405180910390fd5b5b5b5b5b5b6000612caf306119a0565b905060006008548210159050600b60019054906101000a900460ff168015612cd45750805b8015612ced5750601960009054906101000a900460ff16155b8015612d435750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d995750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612def5750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e33576001601960006101000a81548160ff021916908315150217905550612e17613463565b6000601960006101000a81548160ff0219169083151502179055505b6000601960009054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ee95750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ef357600090505b6000811561310657601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f5657506000601354115b15612ff057612f836064612f756013548861364e90919063ffffffff16565b61366490919063ffffffff16565b905060135460155482612f969190613fc3565b612fa09190614034565b600e6000828254612fb19190614189565b9250508190555060135460145482612fc99190613fc3565b612fd39190614034565b600d6000828254612fe49190614189565b925050819055506130e2565b601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561304b57506000601654115b156130e157613078606461306a6016548861364e90919063ffffffff16565b61366490919063ffffffff16565b90506016546018548261308b9190613fc3565b6130959190614034565b600e60008282546130a69190614189565b92505081905550601654601754826130be9190613fc3565b6130c89190614034565b600d60008282546130d99190614189565b925050819055505b5b60008111156130f7576130f68730836131e1565b5b80856131039190614b25565b94505b6131118787876131e1565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324790614ba5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036132bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132b690614c11565b60405180910390fd5b6132ca83838361367a565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334890614c7d565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133e69190614189565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161344a9190613aad565b60405180910390a361345d84848461367f565b50505050565b600080600e54600d546134769190614189565b90506000613483306119a0565b905060008214806134945750600081145b156134a15750505061364c565b60146008546134b09190613fc3565b8111156134c95760146008546134c69190613fc3565b90505b60004790506134d782613684565b60006134ec82476138c790919063ffffffff16565b9050600061351785613509600e548561364e90919063ffffffff16565b61366490919063ffffffff16565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161355f90613e66565b60006040518083038185875af1925050503d806000811461359c576040519150601f19603f3d011682016040523d82523d6000602084013e6135a1565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516135ed90613e66565b60006040518083038185875af1925050503d806000811461362a576040519150601f19603f3d011682016040523d82523d6000602084013e61362f565b606091505b5050809650506000600d819055506000600e819055505050505050505b565b6000818361365c9190613fc3565b905092915050565b600081836136729190614034565b905092915050565b505050565b505050565b6000600267ffffffffffffffff8111156136a1576136a0614c9d565b5b6040519080825280602002602001820160405280156136cf5781602001602082028036833780820191505090505b50905030816000815181106136e7576136e6614ccc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561378e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137b29190614d10565b816001815181106137c6576137c5614ccc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061382d30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123cf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613891959493929190614e36565b600060405180830381600087803b1580156138ab57600080fd5b505af11580156138bf573d6000803e3d6000fd5b505050505050565b600081836138d59190614b25565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139175780820151818401526020810190506138fc565b60008484015250505050565b6000601f19601f8301169050919050565b600061393f826138dd565b61394981856138e8565b93506139598185602086016138f9565b61396281613923565b840191505092915050565b600060208201905081810360008301526139878184613934565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139bf82613994565b9050919050565b6139cf816139b4565b81146139da57600080fd5b50565b6000813590506139ec816139c6565b92915050565b6000819050919050565b613a05816139f2565b8114613a1057600080fd5b50565b600081359050613a22816139fc565b92915050565b60008060408385031215613a3f57613a3e61398f565b5b6000613a4d858286016139dd565b9250506020613a5e85828601613a13565b9150509250929050565b60008115159050919050565b613a7d81613a68565b82525050565b6000602082019050613a986000830184613a74565b92915050565b613aa7816139f2565b82525050565b6000602082019050613ac26000830184613a9e565b92915050565b600060208284031215613ade57613add61398f565b5b6000613aec848285016139dd565b91505092915050565b600080600060608486031215613b0e57613b0d61398f565b5b6000613b1c868287016139dd565b9350506020613b2d868287016139dd565b9250506040613b3e86828701613a13565b9150509250925092565b613b51816139b4565b82525050565b6000602082019050613b6c6000830184613b48565b92915050565b600060208284031215613b8857613b8761398f565b5b6000613b9684828501613a13565b91505092915050565b600060ff82169050919050565b613bb581613b9f565b82525050565b6000602082019050613bd06000830184613bac565b92915050565b613bdf81613a68565b8114613bea57600080fd5b50565b600081359050613bfc81613bd6565b92915050565b60008060408385031215613c1957613c1861398f565b5b6000613c27858286016139dd565b9250506020613c3885828601613bed565b9150509250929050565b600060208284031215613c5857613c5761398f565b5b6000613c6684828501613bed565b91505092915050565b60008060408385031215613c8657613c8561398f565b5b6000613c9485828601613a13565b9250506020613ca585828601613a13565b9150509250929050565b6000819050919050565b6000613cd4613ccf613cca84613994565b613caf565b613994565b9050919050565b6000613ce682613cb9565b9050919050565b6000613cf882613cdb565b9050919050565b613d0881613ced565b82525050565b6000602082019050613d236000830184613cff565b92915050565b60008060408385031215613d4057613d3f61398f565b5b6000613d4e858286016139dd565b9250506020613d5f858286016139dd565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613db057607f821691505b602082108103613dc357613dc2613d69565b5b50919050565b7f496e76616c6964206f776e657200000000000000000000000000000000000000600082015250565b6000613dff600d836138e8565b9150613e0a82613dc9565b602082019050919050565b60006020820190508181036000830152613e2e81613df2565b9050919050565b600081905092915050565b50565b6000613e50600083613e35565b9150613e5b82613e40565b600082019050919050565b6000613e7182613e43565b9150819050919050565b600081519050613e8a816139fc565b92915050565b600060208284031215613ea657613ea561398f565b5b6000613eb484828501613e7b565b91505092915050565b6000604082019050613ed26000830185613b48565b613edf6020830184613a9e565b9392505050565b600081519050613ef581613bd6565b92915050565b600060208284031215613f1157613f1061398f565b5b6000613f1f84828501613ee6565b91505092915050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e74000000600082015250565b6000613f5e601d836138e8565b9150613f6982613f28565b602082019050919050565b60006020820190508181036000830152613f8d81613f51565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613fce826139f2565b9150613fd9836139f2565b9250828202613fe7816139f2565b91508282048414831517613ffe57613ffd613f94565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061403f826139f2565b915061404a836139f2565b92508261405a57614059614005565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006140c16035836138e8565b91506140cc82614065565b604082019050919050565b600060208201905081810360008301526140f0816140b4565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006141536034836138e8565b915061415e826140f7565b604082019050919050565b6000602082019050818103600083015261418281614146565b9050919050565b6000614194826139f2565b915061419f836139f2565b92508282019050808211156141b7576141b6613f94565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006142196039836138e8565b9150614224826141bd565b604082019050919050565b600060208201905081810360008301526142488161420c565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156142a65780860481111561428257614281613f94565b5b60018516156142915780820291505b808102905061429f8561424f565b9450614266565b94509492505050565b6000826142bf576001905061437b565b816142cd576000905061437b565b81600181146142e357600281146142ed5761431c565b600191505061437b565b60ff8411156142ff576142fe613f94565b5b8360020a91508482111561431657614315613f94565b5b5061437b565b5060208310610133831016604e8410600b84101617156143515782820a90508381111561434c5761434b613f94565b5b61437b565b61435e848484600161425c565b9250905081840481111561437557614374613f94565b5b81810290505b9392505050565b600061438d826139f2565b915061439883613b9f565b92506143c57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846142af565b905092915050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e2060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614429602f836138e8565b9150614434826143cd565b604082019050919050565b600060208201905081810360008301526144588161441c565b9050919050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c60008201527f6574206c6f776572207468616e20302e35250000000000000000000000000000602082015250565b60006144bb6032836138e8565b91506144c68261445f565b604082019050919050565b600060208201905081810360008301526144ea816144ae565b9050919050565b7f4f6e6c79206f776e65722063616e20656e61626c652074726164696e67000000600082015250565b6000614527601d836138e8565b9150614532826144f1565b602082019050919050565b600060208201905081810360008301526145568161451a565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c756500600082015250565b6000614593601f836138e8565b915061459e8261455d565b602082019050919050565b600060208201905081810360008301526145c281614586565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c65737300000000600082015250565b60006145ff601c836138e8565b915061460a826145c9565b602082019050919050565b6000602082019050818103600083015261462e816145f2565b9050919050565b7f4e6577206f776e6572206973205a45524f000000000000000000000000000000600082015250565b600061466b6011836138e8565b915061467682614635565b602082019050919050565b6000602082019050818103600083015261469a8161465e565b9050919050565b7f45524332303a204e6f74206f776e657220213d20616464726573732830290000600082015250565b60006146d7601e836138e8565b91506146e2826146a1565b602082019050919050565b60006020820190508181036000830152614706816146ca565b9050919050565b7f45524332303a204e6f74207370656e64657220213d2061646472657373283029600082015250565b60006147436020836138e8565b915061474e8261470d565b602082019050919050565b6000602082019050818103600083015261477281614736565b9050919050565b7f45524332303a20496e76616c69642066726f6d20616464726573730000000000600082015250565b60006147af601b836138e8565b91506147ba82614779565b602082019050919050565b600060208201905081810360008301526147de816147a2565b9050919050565b7f45524332303a20496e76616c696420746f206164647265737300000000000000600082015250565b600061481b6019836138e8565b9150614826826147e5565b602082019050919050565b6000602082019050818103600083015261484a8161480e565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c69737400000000000000600082015250565b60006148876019836138e8565b915061489282614851565b602082019050919050565b600060208201905081810360008301526148b68161487a565b9050919050565b7f45524332303a20746f20697320626c61636b206c697374000000000000000000600082015250565b60006148f36017836138e8565b91506148fe826148bd565b602082019050919050565b60006020820190508181036000830152614922816148e6565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061495f6016836138e8565b915061496a82614929565b602082019050919050565b6000602082019050818103600083015261498e81614952565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178546f6b656e416d6f756e7450657254786e2e0000000000000000000000602082015250565b60006149f16035836138e8565b91506149fc82614995565b604082019050919050565b60006020820190508181036000830152614a20816149e4565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614a5d6013836138e8565b9150614a6882614a27565b602082019050919050565b60006020820190508181036000830152614a8c81614a50565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d6178546f6b656e416d6f756e7450657254786e2e00000000000000000000602082015250565b6000614aef6036836138e8565b9150614afa82614a93565b604082019050919050565b60006020820190508181036000830152614b1e81614ae2565b9050919050565b6000614b30826139f2565b9150614b3b836139f2565b9250828203905081811115614b5357614b52613f94565b5b92915050565b7f45524332303a204e6f742066726f6d20213d2061646472657373283029000000600082015250565b6000614b8f601d836138e8565b9150614b9a82614b59565b602082019050919050565b60006020820190508181036000830152614bbe81614b82565b9050919050565b7f45524332303a204e6f7420746f20213d20616464726573732830290000000000600082015250565b6000614bfb601b836138e8565b9150614c0682614bc5565b602082019050919050565b60006020820190508181036000830152614c2a81614bee565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e74600082015250565b6000614c676020836138e8565b9150614c7282614c31565b602082019050919050565b60006020820190508181036000830152614c9681614c5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614d0a816139c6565b92915050565b600060208284031215614d2657614d2561398f565b5b6000614d3484828501614cfb565b91505092915050565b6000819050919050565b6000614d62614d5d614d5884614d3d565b613caf565b6139f2565b9050919050565b614d7281614d47565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614dad816139b4565b82525050565b6000614dbf8383614da4565b60208301905092915050565b6000602082019050919050565b6000614de382614d78565b614ded8185614d83565b9350614df883614d94565b8060005b83811015614e29578151614e108882614db3565b9750614e1b83614dcb565b925050600181019050614dfc565b5085935050505092915050565b600060a082019050614e4b6000830188613a9e565b614e586020830187614d69565b8181036040830152614e6a8186614dd8565b9050614e796060830185613b48565b614e866080830184613a9e565b969550505050505056fea26469706673582212209f1025d522610a0ba5716fd5d9e120c0ab4d360dbad7982b28d5a25d00fb648764736f6c63430008110033000000000000000000000000176841cf6c8cf6f0cbc7f08f47b1e630e159dbae000000000000000000000000176841cf6c8cf6f0cbc7f08f47b1e630e159dbae0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106103035760003560e01c806370a0823111610190578063af8f26e7116100dc578063c42c3f8811610095578063dd62ed3e1161006f578063dd62ed3e14610b43578063e27a55fe14610b80578063e96db1ef14610bab578063f2fde38b14610bd65761030a565b8063c42c3f8814610ac4578063c6a3064714610aef578063d929a08314610b185761030a565b8063af8f26e7146109b4578063b38d5ef4146109df578063b62496f514610a08578063b79c188614610a45578063be69188314610a6e578063c31c9c0714610a995761030a565b80638da5cb5b1161014957806395d89b411161012357806395d89b41146108e6578063a457c2d714610911578063a9059cbb1461094e578063aacebbe31461098b5761030a565b80638da5cb5b146108675780638ea5220f14610892578063924de9b7146108bd5761030a565b806370a082311461078f578063715018a6146107cc578063751039fc146107e357806375f0a874146107fa5780637d673170146108255780638a8c523c146108505761030a565b8063313ce5671161024f578063544d1ec91161020857806368092bd9116101e257806368092bd9146106d5578063685fbc6b146106fe5780636f498e21146107295780637070678b146107665761030a565b8063544d1ec9146106585780635df6e68e1461068157806367b740e9146106ac5761030a565b8063313ce567146105465780633301241114610571578063372b44b81461059c57806339509351146105c757806345167f26146106045780634a62bb651461062d5761030a565b80631816467f116102bc57806322f598351161029657806322f598351461047857806323b872dd146104b557806326991cc8146104f25780632c81355e1461051d5761030a565b80631816467f146103fb57806318c34be1146104245780631af032031461044f5761030a565b806306fdde031461030f578063095ea7b31461033a5780630bd05b69146103775780630e3d57eb1461038e578063151d8039146103a557806318160ddd146103d05761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610bff565b604051610331919061396d565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613a28565b610c91565b60405161036e9190613a83565b60405180910390f35b34801561038357600080fd5b5061038c610caf565b005b34801561039a57600080fd5b506103a3610d63565b005b3480156103b157600080fd5b506103ba610e50565b6040516103c79190613a83565b60405180910390f35b3480156103dc57600080fd5b506103e5610e63565b6040516103f29190613aad565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d9190613ac8565b610e6d565b005b34801561043057600080fd5b50610439610f2d565b6040516104469190613aad565b60405180910390f35b34801561045b57600080fd5b5061047660048036038101906104719190613ac8565b610f33565b005b34801561048457600080fd5b5061049f600480360381019061049a9190613ac8565b6110b6565b6040516104ac9190613a83565b60405180910390f35b3480156104c157600080fd5b506104dc60048036038101906104d79190613af5565b6110d6565b6040516104e99190613a83565b60405180910390f35b3480156104fe57600080fd5b506105076111ce565b6040516105149190613b57565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190613b72565b6111f4565b005b34801561055257600080fd5b5061055b611341565b6040516105689190613bbb565b60405180910390f35b34801561057d57600080fd5b5061058661134a565b6040516105939190613aad565b60405180910390f35b3480156105a857600080fd5b506105b1611350565b6040516105be9190613aad565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e99190613a28565b611356565b6040516105fb9190613a83565b60405180910390f35b34801561061057600080fd5b5061062b60048036038101906106269190613c02565b611402565b005b34801561063957600080fd5b50610642611569565b60405161064f9190613a83565b60405180910390f35b34801561066457600080fd5b5061067f600480360381019061067a9190613b72565b61157c565b005b34801561068d57600080fd5b506106966116a1565b6040516106a39190613aad565b60405180910390f35b3480156106b857600080fd5b506106d360048036038101906106ce9190613b72565b6116a7565b005b3480156106e157600080fd5b506106fc60048036038101906106f79190613c02565b6117cc565b005b34801561070a57600080fd5b506107136118a3565b6040516107209190613aad565b60405180910390f35b34801561073557600080fd5b50610750600480360381019061074b9190613ac8565b6118a9565b60405161075d9190613a83565b60405180910390f35b34801561077257600080fd5b5061078d60048036038101906107889190613c02565b6118c9565b005b34801561079b57600080fd5b506107b660048036038101906107b19190613ac8565b6119a0565b6040516107c39190613aad565b60405180910390f35b3480156107d857600080fd5b506107e16119e9565b005b3480156107ef57600080fd5b506107f8611a71565b005b34801561080657600080fd5b5061080f611b0a565b60405161081c9190613b57565b60405180910390f35b34801561083157600080fd5b5061083a611b30565b6040516108479190613aad565b60405180910390f35b34801561085c57600080fd5b50610865611b36565b005b34801561087357600080fd5b5061087c611be3565b6040516108899190613b57565b60405180910390f35b34801561089e57600080fd5b506108a7611c0d565b6040516108b49190613b57565b60405180910390f35b3480156108c957600080fd5b506108e460048036038101906108df9190613c42565b611c33565b005b3480156108f257600080fd5b506108fb611ccc565b604051610908919061396d565b60405180910390f35b34801561091d57600080fd5b5061093860048036038101906109339190613a28565b611d5e565b6040516109459190613a83565b60405180910390f35b34801561095a57600080fd5b5061097560048036038101906109709190613a28565b611e49565b6040516109829190613a83565b60405180910390f35b34801561099757600080fd5b506109b260048036038101906109ad9190613ac8565b611e67565b005b3480156109c057600080fd5b506109c9611f27565b6040516109d69190613aad565b60405180910390f35b3480156109eb57600080fd5b50610a066004803603810190610a019190613c6f565b611f2d565b005b348015610a1457600080fd5b50610a2f6004803603810190610a2a9190613ac8565b612017565b604051610a3c9190613a83565b60405180910390f35b348015610a5157600080fd5b50610a6c6004803603810190610a679190613c6f565b612037565b005b348015610a7a57600080fd5b50610a83612121565b604051610a909190613aad565b60405180910390f35b348015610aa557600080fd5b50610aae612127565b604051610abb9190613d0e565b60405180910390f35b348015610ad057600080fd5b50610ad961214d565b604051610ae69190613aad565b60405180910390f35b348015610afb57600080fd5b50610b166004803603810190610b119190613c02565b612153565b005b348015610b2457600080fd5b50610b2d61222a565b604051610b3a9190613a83565b60405180910390f35b348015610b4f57600080fd5b50610b6a6004803603810190610b659190613d29565b61223d565b604051610b779190613aad565b60405180910390f35b348015610b8c57600080fd5b50610b956122c4565b604051610ba29190613aad565b60405180910390f35b348015610bb757600080fd5b50610bc06122ca565b604051610bcd9190613aad565b60405180910390f35b348015610be257600080fd5b50610bfd6004803603810190610bf89190613ac8565b6122d0565b005b606060008054610c0e90613d98565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3a90613d98565b8015610c875780601f10610c5c57610100808354040283529160200191610c87565b820191906000526020600020905b815481529060010190602001808311610c6a57829003601f168201915b5050505050905090565b6000610ca5610c9e6123c7565b84846123cf565b6001905092915050565b610cb76123c7565b73ffffffffffffffffffffffffffffffffffffffff16610cd5611be3565b73ffffffffffffffffffffffffffffffffffffffff1614610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2290613e15565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b610d6b6123c7565b73ffffffffffffffffffffffffffffffffffffffff16610d89611be3565b73ffffffffffffffffffffffffffffffffffffffff1614610ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd690613e15565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610e0590613e66565b60006040518083038185875af1925050503d8060008114610e42576040519150601f19603f3d011682016040523d82523d6000602084013e610e47565b606091505b50508091505050565b600b60019054906101000a900460ff1681565b6000600254905090565b610e756123c7565b73ffffffffffffffffffffffffffffffffffffffff16610e93611be3565b73ffffffffffffffffffffffffffffffffffffffff1614610ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee090613e15565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b610f3b6123c7565b73ffffffffffffffffffffffffffffffffffffffff16610f59611be3565b73ffffffffffffffffffffffffffffffffffffffff1614610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa690613e15565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fef9190613b57565b602060405180830381865afa15801561100c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110309190613e90565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161106d929190613ebd565b6020604051808303816000875af115801561108c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b09190613efb565b50505050565b60106020528060005260406000206000915054906101000a900460ff1681565b60006110e3848484612598565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061112e6123c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a590613f74565b60405180910390fd5b6111c2856111ba6123c7565b8584036123cf565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111fc6123c7565b73ffffffffffffffffffffffffffffffffffffffff1661121a611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126790613e15565b60405180910390fd5b620186a0600161127e610e63565b6112889190613fc3565b6112929190614034565b8110156112d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cb906140d7565b60405180910390fd5b6103e860056112e1610e63565b6112eb9190613fc3565b6112f59190614034565b811115611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132e90614169565b60405180910390fd5b8060088190555050565b60006012905090565b60175481565b600e5481565b60006113f86113636123c7565b8484600460006113716123c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113f39190614189565b6123cf565b6001905092915050565b61140a6123c7565b73ffffffffffffffffffffffffffffffffffffffff16611428611be3565b73ffffffffffffffffffffffffffffffffffffffff161461147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590613e15565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361150e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115059061422f565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900460ff1681565b6115846123c7565b73ffffffffffffffffffffffffffffffffffffffff166115a2611be3565b73ffffffffffffffffffffffffffffffffffffffff16146115f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ef90613e15565b60405180910390fd5b611600611341565b600a61160c9190614382565b6103e86001611619610e63565b6116239190613fc3565b61162d9190614034565b6116379190614034565b811015611679576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116709061443f565b60405180910390fd5b611681611341565b600a61168d9190614382565b816116989190613fc3565b600a8190555050565b60165481565b6116af6123c7565b73ffffffffffffffffffffffffffffffffffffffff166116cd611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a90613e15565b60405180910390fd5b61172b611341565b600a6117379190614382565b6103e86005611744610e63565b61174e9190613fc3565b6117589190614034565b6117629190614034565b8110156117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b906144d1565b60405180910390fd5b6117ac611341565b600a6117b89190614382565b816117c39190613fc3565b60098190555050565b6117d46123c7565b73ffffffffffffffffffffffffffffffffffffffff166117f2611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183f90613e15565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60095481565b600f6020528060005260406000206000915054906101000a900460ff1681565b6118d16123c7565b73ffffffffffffffffffffffffffffffffffffffff166118ef611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193c90613e15565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119f16123c7565b73ffffffffffffffffffffffffffffffffffffffff16611a0f611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5c90613e15565b60405180910390fd5b611a6f600061311b565b565b611a796123c7565b73ffffffffffffffffffffffffffffffffffffffff16611a97611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae490613e15565b60405180910390fd5b6000601260006101000a81548160ff021916908315150217905550565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b611b3e611be3565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba29061453d565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c3b6123c7565b73ffffffffffffffffffffffffffffffffffffffff16611c59611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca690613e15565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b606060018054611cdb90613d98565b80601f0160208091040260200160405190810160405280929190818152602001828054611d0790613d98565b8015611d545780601f10611d2957610100808354040283529160200191611d54565b820191906000526020600020905b815481529060010190602001808311611d3757829003601f168201915b5050505050905090565b60008060046000611d6d6123c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e21906145a9565b60405180910390fd5b611e3e611e356123c7565b858584036123cf565b600191505092915050565b6000611e5d611e566123c7565b8484612598565b6001905092915050565b611e6f6123c7565b73ffffffffffffffffffffffffffffffffffffffff16611e8d611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eda90613e15565b60405180910390fd5b80600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b611f356123c7565b73ffffffffffffffffffffffffffffffffffffffff16611f53611be3565b73ffffffffffffffffffffffffffffffffffffffff1614611fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa090613e15565b60405180910390fd5b8160178190555080601881905550601854601754611fc79190614189565b601681905550605f6016541115612013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200a90614615565b60405180910390fd5b5050565b60116020528060005260406000206000915054906101000a900460ff1681565b61203f6123c7565b73ffffffffffffffffffffffffffffffffffffffff1661205d611be3565b73ffffffffffffffffffffffffffffffffffffffff16146120b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120aa90613e15565b60405180910390fd5b81601481905550806015819055506015546014546120d19190614189565b601381905550605f601354111561211d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211490614615565b60405180910390fd5b5050565b60155481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b61215b6123c7565b73ffffffffffffffffffffffffffffffffffffffff16612179611be3565b73ffffffffffffffffffffffffffffffffffffffff16146121cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c690613e15565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b60009054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60135481565b60145481565b6122d86123c7565b73ffffffffffffffffffffffffffffffffffffffff166122f6611be3565b73ffffffffffffffffffffffffffffffffffffffff161461234c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234390613e15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b290614681565b60405180910390fd5b6123c48161311b565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361243e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612435906146ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a490614759565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161258b9190613aad565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fe906147c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266d90614831565b60405180910390fd5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fa9061489d565b60405180910390fd5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278790614909565b60405180910390fd5b600081036127a9576127a4838360006131e1565b613116565b601260009054906101000a900460ff1615612ca4576127c6611be3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128345750612804611be3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561286d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128a7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128c05750601960009054906101000a900460ff16155b15612ca357600b60009054906101000a900460ff166129ba57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061297a5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6129b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b090614975565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a5d5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b0457600a54811115612aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9e90614a07565b60405180910390fd5b600954612ab3836119a0565b82612abe9190614189565b1115612aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af690614a73565b60405180910390fd5b612ca2565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ba75750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bf657600a54811115612bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be890614b05565b60405180910390fd5b612ca1565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ca057600954612c53836119a0565b82612c5e9190614189565b1115612c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9690614a73565b60405180910390fd5b5b5b5b5b5b6000612caf306119a0565b905060006008548210159050600b60019054906101000a900460ff168015612cd45750805b8015612ced5750601960009054906101000a900460ff16155b8015612d435750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d995750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612def5750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e33576001601960006101000a81548160ff021916908315150217905550612e17613463565b6000601960006101000a81548160ff0219169083151502179055505b6000601960009054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ee95750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ef357600090505b6000811561310657601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f5657506000601354115b15612ff057612f836064612f756013548861364e90919063ffffffff16565b61366490919063ffffffff16565b905060135460155482612f969190613fc3565b612fa09190614034565b600e6000828254612fb19190614189565b9250508190555060135460145482612fc99190613fc3565b612fd39190614034565b600d6000828254612fe49190614189565b925050819055506130e2565b601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561304b57506000601654115b156130e157613078606461306a6016548861364e90919063ffffffff16565b61366490919063ffffffff16565b90506016546018548261308b9190613fc3565b6130959190614034565b600e60008282546130a69190614189565b92505081905550601654601754826130be9190613fc3565b6130c89190614034565b600d60008282546130d99190614189565b925050819055505b5b60008111156130f7576130f68730836131e1565b5b80856131039190614b25565b94505b6131118787876131e1565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324790614ba5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036132bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132b690614c11565b60405180910390fd5b6132ca83838361367a565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334890614c7d565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133e69190614189565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161344a9190613aad565b60405180910390a361345d84848461367f565b50505050565b600080600e54600d546134769190614189565b90506000613483306119a0565b905060008214806134945750600081145b156134a15750505061364c565b60146008546134b09190613fc3565b8111156134c95760146008546134c69190613fc3565b90505b60004790506134d782613684565b60006134ec82476138c790919063ffffffff16565b9050600061351785613509600e548561364e90919063ffffffff16565b61366490919063ffffffff16565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161355f90613e66565b60006040518083038185875af1925050503d806000811461359c576040519150601f19603f3d011682016040523d82523d6000602084013e6135a1565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516135ed90613e66565b60006040518083038185875af1925050503d806000811461362a576040519150601f19603f3d011682016040523d82523d6000602084013e61362f565b606091505b5050809650506000600d819055506000600e819055505050505050505b565b6000818361365c9190613fc3565b905092915050565b600081836136729190614034565b905092915050565b505050565b505050565b6000600267ffffffffffffffff8111156136a1576136a0614c9d565b5b6040519080825280602002602001820160405280156136cf5781602001602082028036833780820191505090505b50905030816000815181106136e7576136e6614ccc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561378e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137b29190614d10565b816001815181106137c6576137c5614ccc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061382d30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123cf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613891959493929190614e36565b600060405180830381600087803b1580156138ab57600080fd5b505af11580156138bf573d6000803e3d6000fd5b505050505050565b600081836138d59190614b25565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139175780820151818401526020810190506138fc565b60008484015250505050565b6000601f19601f8301169050919050565b600061393f826138dd565b61394981856138e8565b93506139598185602086016138f9565b61396281613923565b840191505092915050565b600060208201905081810360008301526139878184613934565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139bf82613994565b9050919050565b6139cf816139b4565b81146139da57600080fd5b50565b6000813590506139ec816139c6565b92915050565b6000819050919050565b613a05816139f2565b8114613a1057600080fd5b50565b600081359050613a22816139fc565b92915050565b60008060408385031215613a3f57613a3e61398f565b5b6000613a4d858286016139dd565b9250506020613a5e85828601613a13565b9150509250929050565b60008115159050919050565b613a7d81613a68565b82525050565b6000602082019050613a986000830184613a74565b92915050565b613aa7816139f2565b82525050565b6000602082019050613ac26000830184613a9e565b92915050565b600060208284031215613ade57613add61398f565b5b6000613aec848285016139dd565b91505092915050565b600080600060608486031215613b0e57613b0d61398f565b5b6000613b1c868287016139dd565b9350506020613b2d868287016139dd565b9250506040613b3e86828701613a13565b9150509250925092565b613b51816139b4565b82525050565b6000602082019050613b6c6000830184613b48565b92915050565b600060208284031215613b8857613b8761398f565b5b6000613b9684828501613a13565b91505092915050565b600060ff82169050919050565b613bb581613b9f565b82525050565b6000602082019050613bd06000830184613bac565b92915050565b613bdf81613a68565b8114613bea57600080fd5b50565b600081359050613bfc81613bd6565b92915050565b60008060408385031215613c1957613c1861398f565b5b6000613c27858286016139dd565b9250506020613c3885828601613bed565b9150509250929050565b600060208284031215613c5857613c5761398f565b5b6000613c6684828501613bed565b91505092915050565b60008060408385031215613c8657613c8561398f565b5b6000613c9485828601613a13565b9250506020613ca585828601613a13565b9150509250929050565b6000819050919050565b6000613cd4613ccf613cca84613994565b613caf565b613994565b9050919050565b6000613ce682613cb9565b9050919050565b6000613cf882613cdb565b9050919050565b613d0881613ced565b82525050565b6000602082019050613d236000830184613cff565b92915050565b60008060408385031215613d4057613d3f61398f565b5b6000613d4e858286016139dd565b9250506020613d5f858286016139dd565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613db057607f821691505b602082108103613dc357613dc2613d69565b5b50919050565b7f496e76616c6964206f776e657200000000000000000000000000000000000000600082015250565b6000613dff600d836138e8565b9150613e0a82613dc9565b602082019050919050565b60006020820190508181036000830152613e2e81613df2565b9050919050565b600081905092915050565b50565b6000613e50600083613e35565b9150613e5b82613e40565b600082019050919050565b6000613e7182613e43565b9150819050919050565b600081519050613e8a816139fc565b92915050565b600060208284031215613ea657613ea561398f565b5b6000613eb484828501613e7b565b91505092915050565b6000604082019050613ed26000830185613b48565b613edf6020830184613a9e565b9392505050565b600081519050613ef581613bd6565b92915050565b600060208284031215613f1157613f1061398f565b5b6000613f1f84828501613ee6565b91505092915050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e74000000600082015250565b6000613f5e601d836138e8565b9150613f6982613f28565b602082019050919050565b60006020820190508181036000830152613f8d81613f51565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613fce826139f2565b9150613fd9836139f2565b9250828202613fe7816139f2565b91508282048414831517613ffe57613ffd613f94565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061403f826139f2565b915061404a836139f2565b92508261405a57614059614005565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006140c16035836138e8565b91506140cc82614065565b604082019050919050565b600060208201905081810360008301526140f0816140b4565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006141536034836138e8565b915061415e826140f7565b604082019050919050565b6000602082019050818103600083015261418281614146565b9050919050565b6000614194826139f2565b915061419f836139f2565b92508282019050808211156141b7576141b6613f94565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006142196039836138e8565b9150614224826141bd565b604082019050919050565b600060208201905081810360008301526142488161420c565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156142a65780860481111561428257614281613f94565b5b60018516156142915780820291505b808102905061429f8561424f565b9450614266565b94509492505050565b6000826142bf576001905061437b565b816142cd576000905061437b565b81600181146142e357600281146142ed5761431c565b600191505061437b565b60ff8411156142ff576142fe613f94565b5b8360020a91508482111561431657614315613f94565b5b5061437b565b5060208310610133831016604e8410600b84101617156143515782820a90508381111561434c5761434b613f94565b5b61437b565b61435e848484600161425c565b9250905081840481111561437557614374613f94565b5b81810290505b9392505050565b600061438d826139f2565b915061439883613b9f565b92506143c57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846142af565b905092915050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e2060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614429602f836138e8565b9150614434826143cd565b604082019050919050565b600060208201905081810360008301526144588161441c565b9050919050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c60008201527f6574206c6f776572207468616e20302e35250000000000000000000000000000602082015250565b60006144bb6032836138e8565b91506144c68261445f565b604082019050919050565b600060208201905081810360008301526144ea816144ae565b9050919050565b7f4f6e6c79206f776e65722063616e20656e61626c652074726164696e67000000600082015250565b6000614527601d836138e8565b9150614532826144f1565b602082019050919050565b600060208201905081810360008301526145568161451a565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c756500600082015250565b6000614593601f836138e8565b915061459e8261455d565b602082019050919050565b600060208201905081810360008301526145c281614586565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c65737300000000600082015250565b60006145ff601c836138e8565b915061460a826145c9565b602082019050919050565b6000602082019050818103600083015261462e816145f2565b9050919050565b7f4e6577206f776e6572206973205a45524f000000000000000000000000000000600082015250565b600061466b6011836138e8565b915061467682614635565b602082019050919050565b6000602082019050818103600083015261469a8161465e565b9050919050565b7f45524332303a204e6f74206f776e657220213d20616464726573732830290000600082015250565b60006146d7601e836138e8565b91506146e2826146a1565b602082019050919050565b60006020820190508181036000830152614706816146ca565b9050919050565b7f45524332303a204e6f74207370656e64657220213d2061646472657373283029600082015250565b60006147436020836138e8565b915061474e8261470d565b602082019050919050565b6000602082019050818103600083015261477281614736565b9050919050565b7f45524332303a20496e76616c69642066726f6d20616464726573730000000000600082015250565b60006147af601b836138e8565b91506147ba82614779565b602082019050919050565b600060208201905081810360008301526147de816147a2565b9050919050565b7f45524332303a20496e76616c696420746f206164647265737300000000000000600082015250565b600061481b6019836138e8565b9150614826826147e5565b602082019050919050565b6000602082019050818103600083015261484a8161480e565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c69737400000000000000600082015250565b60006148876019836138e8565b915061489282614851565b602082019050919050565b600060208201905081810360008301526148b68161487a565b9050919050565b7f45524332303a20746f20697320626c61636b206c697374000000000000000000600082015250565b60006148f36017836138e8565b91506148fe826148bd565b602082019050919050565b60006020820190508181036000830152614922816148e6565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061495f6016836138e8565b915061496a82614929565b602082019050919050565b6000602082019050818103600083015261498e81614952565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178546f6b656e416d6f756e7450657254786e2e0000000000000000000000602082015250565b60006149f16035836138e8565b91506149fc82614995565b604082019050919050565b60006020820190508181036000830152614a20816149e4565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614a5d6013836138e8565b9150614a6882614a27565b602082019050919050565b60006020820190508181036000830152614a8c81614a50565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d6178546f6b656e416d6f756e7450657254786e2e00000000000000000000602082015250565b6000614aef6036836138e8565b9150614afa82614a93565b604082019050919050565b60006020820190508181036000830152614b1e81614ae2565b9050919050565b6000614b30826139f2565b9150614b3b836139f2565b9250828203905081811115614b5357614b52613f94565b5b92915050565b7f45524332303a204e6f742066726f6d20213d2061646472657373283029000000600082015250565b6000614b8f601d836138e8565b9150614b9a82614b59565b602082019050919050565b60006020820190508181036000830152614bbe81614b82565b9050919050565b7f45524332303a204e6f7420746f20213d20616464726573732830290000000000600082015250565b6000614bfb601b836138e8565b9150614c0682614bc5565b602082019050919050565b60006020820190508181036000830152614c2a81614bee565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e74600082015250565b6000614c676020836138e8565b9150614c7282614c31565b602082019050919050565b60006020820190508181036000830152614c9681614c5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614d0a816139c6565b92915050565b600060208284031215614d2657614d2561398f565b5b6000614d3484828501614cfb565b91505092915050565b6000819050919050565b6000614d62614d5d614d5884614d3d565b613caf565b6139f2565b9050919050565b614d7281614d47565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614dad816139b4565b82525050565b6000614dbf8383614da4565b60208301905092915050565b6000602082019050919050565b6000614de382614d78565b614ded8185614d83565b9350614df883614d94565b8060005b83811015614e29578151614e108882614db3565b9750614e1b83614dcb565b925050600181019050614dfc565b5085935050505092915050565b600060a082019050614e4b6000830188613a9e565b614e586020830187614d69565b8181036040830152614e6a8186614dd8565b9050614e796060830185613b48565b614e866080830184613a9e565b969550505050505056fea26469706673582212209f1025d522610a0ba5716fd5d9e120c0ab4d360dbad7982b28d5a25d00fb648764736f6c63430008110033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000176841cf6c8cf6f0cbc7f08f47b1e630e159dbae000000000000000000000000176841cf6c8cf6f0cbc7f08f47b1e630e159dbae0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : _devWallet (address): 0x176841Cf6c8cf6f0cbc7F08f47b1E630e159dBaE
Arg [1] : _marketingWallet (address): 0x176841Cf6c8cf6f0cbc7F08f47b1E630e159dBaE
Arg [2] : _swapRouter (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000176841cf6c8cf6f0cbc7f08f47b1e630e159dbae
Arg [1] : 000000000000000000000000176841cf6c8cf6f0cbc7f08f47b1e630e159dbae
Arg [2] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

13947:10626:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9632:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10204:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16884:116;;;;;;;;;;;;;:::i;:::-;;24165:161;;;;;;;;;;;;;:::i;:::-;;14279:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9953:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16634:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14390:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24334:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14546:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10884:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14073:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17708:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9852:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14850:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14435:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11458:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19378:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14669:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18356:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14817:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18068:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18640:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14149:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14476:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17193:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10069:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;942:103;;;;;;;;;;;;;:::i;:::-;;17493:90;;;;;;;;;;;;;:::i;:::-;;14320:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14109:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17008:177;;;;;;;;;;;;;:::i;:::-;;659:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14357:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17593:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9740:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11677:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11289:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16747:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14887:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18768:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14603:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19066:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14783:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14030:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14194:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17355:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14238:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10725:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14711:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14745:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;754:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9632:100;9686:13;9719:5;9712:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9632:100;:::o;10204:169::-;10287:4;10304:39;10313:12;:10;:12::i;:::-;10327:7;10336:6;10304:8;:39::i;:::-;10361:4;10354:11;;10204:169;;;;:::o;16884:116::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;16958:4:::1;16941:14;;:21;;;;;;;;;;;;;;;;;;16988:4;16973:12;;:19;;;;;;;;;;;;;;;;;;16884:116::o:0;24165:161::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;24224:12:::1;24268:10;24260:24;;24292:21;24260:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24247:71;;;;;24213:113;24165:161::o:0;14279:32::-;;;;;;;;;;;;;:::o;9953:108::-;10014:7;10041:12;;10034:19;;9953:108;:::o;16634:105::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;16721:10:::1;16709:9;;:22;;;;;;;;;;;;;;;;;;16634:105:::0;:::o;14390:38::-;;;;:::o;24334:234::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;24420:12:::1;24442;24420:35;;24466:15;24484:5;:15;;;24508:4;24484:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24466:48;;24525:5;:14;;;24540:10;24552:7;24525:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24409:159;;24334:234:::0;:::o;14546:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;10884:397::-;10981:4;10998:27;11008:4;11014:2;11018:6;10998:9;:27::i;:::-;11036:16;11055:11;:17;11067:4;11055:17;;;;;;;;;;;;;;;:31;11073:12;:10;:12::i;:::-;11055:31;;;;;;;;;;;;;;;;11036:50;;11117:6;11105:8;:18;;11097:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11193:47;11202:4;11208:12;:10;:12::i;:::-;11233:6;11222:8;:17;11193:8;:47::i;:::-;11269:4;11262:11;;;10884:397;;;;;:::o;14073:23::-;;;;;;;;;;;;;:::o;17708:352::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17838:6:::1;17833:1;17817:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17816:28;;;;:::i;:::-;17806:6;:38;;17798:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;17953:4;17948:1;17932:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17931:26;;;;:::i;:::-;17921:6;:36;;17913:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;18046:6;18025:18;:27;;;;17708:352:::0;:::o;9852:93::-;9910:5;9935:2;9928:9;;9852:93;:::o;14850:30::-;;;;:::o;14435:32::-;;;;:::o;11458:211::-;11544:4;11561:78;11570:12;:10;:12::i;:::-;11584:7;11630:8;11593:11;:25;11605:12;:10;:12::i;:::-;11593:25;;;;;;;;;;;;;;;:34;11619:7;11593:34;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;11561:8;:78::i;:::-;11657:4;11650:11;;11458:211;;;;:::o;19378:247::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19497:8:::1;;;;;;;;;;;19489:16;;:4;:16;;::::0;19481:86:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19612:5;19578:25;:31;19604:4;19578:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19378:247:::0;;:::o;14669:33::-;;;;;;;;;;;;;:::o;18356:276::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18500:10:::1;:8;:10::i;:::-;18494:2;:16;;;;:::i;:::-;18485:4;18480:1;18464:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18463:26;;;;:::i;:::-;18462:49;;;;:::i;:::-;18452:6;:59;;18444:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;18613:10;:8;:10::i;:::-;18607:2;:16;;;;:::i;:::-;18597:6;:27;;;;:::i;:::-;18574:20;:50;;;;18356:276:::0;:::o;14817:26::-;;;;:::o;18068:280::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18210:10:::1;:8;:10::i;:::-;18204:2;:16;;;;:::i;:::-;18195:4;18190:1;18174:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18173:26;;;;:::i;:::-;18172:49;;;;:::i;:::-;18162:6;:59;;18154:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;18329:10;:8;:10::i;:::-;18323:2;:16;;;;:::i;:::-;18313:6;:27;;;;:::i;:::-;18287:23;:53;;;;18068:280:::0;:::o;18640:120::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18746:6:::1;18728:9;:15;18738:4;18728:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;18640:120:::0;;:::o;14149:38::-;;;;:::o;14476:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;17193:154::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17334:5:::1;17296:29;:35;17326:4;17296:35;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;17193:154:::0;;:::o;10069:127::-;10143:7;10170:9;:18;10180:7;10170:18;;;;;;;;;;;;;;;;10163:25;;10069:127;;;:::o;942:103::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1007:30:::1;1034:1;1007:18;:30::i;:::-;942:103::o:0;17493:90::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17570:5:::1;17553:14;;:22;;;;;;;;;;;;;;;;;;17493:90::o:0;14320:30::-;;;;;;;;;;;;;:::o;14109:33::-;;;;:::o;17008:177::-;17074:7;:5;:7::i;:::-;17061:20;;:9;:20;;;17053:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;17143:4;17126:14;;:21;;;;;;;;;;;;;;;;;;17173:4;17158:12;;:19;;;;;;;;;;;;;;;;;;17008:177::o;659:87::-;705:7;732:6;;;;;;;;;;;725:13;;659:87;:::o;14357:24::-;;;;;;;;;;;;;:::o;17593:107::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17685:7:::1;17670:12;;:22;;;;;;;;;;;;;;;;;;17593:107:::0;:::o;9740:104::-;9796:13;9829:7;9822:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9740:104;:::o;11677:360::-;11763:4;11780:16;11799:11;:25;11811:12;:10;:12::i;:::-;11799:25;;;;;;;;;;;;;;;:34;11825:7;11799:34;;;;;;;;;;;;;;;;11780:53;;11864:8;11852;:20;;11844:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11944:52;11953:12;:10;:12::i;:::-;11967:7;11987:8;11976;:19;11944:8;:52::i;:::-;12025:4;12018:11;;;11677:360;;;;:::o;11289:161::-;11368:4;11385:35;11395:12;:10;:12::i;:::-;11409:2;11413:6;11385:9;:35::i;:::-;11438:4;11431:11;;11289:161;;;;:::o;16747:129::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;16852:16:::1;16834:15;;:34;;;;;;;;;;;;;;;;;;16747:129:::0;:::o;14887:24::-;;;;:::o;18768:290::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18885:12:::1;18867:15;:30;;;;18920:9;18908;:21;;;;18972:9;;18954:15;;:27;;;;:::i;:::-;18940:11;:41;;;;19015:2;19000:11;;:17;;18992:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;18768:290:::0;;:::o;14603:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;19066:300::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19188:12:::1;19169:16;:31;;;;19224:9;19211:10;:22;;;;19278:10;;19259:16;;:29;;;;:::i;:::-;19244:12;:44;;;;19323:2;19307:12;;:18;;19299:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;19066:300:::0;;:::o;14783:25::-;;;;:::o;14030:36::-;;;;;;;;;;;;;:::o;14194:35::-;;;;:::o;17355:130::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17472:5:::1;17444:16;:25;17461:7;17444:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;17355:130:::0;;:::o;14238:34::-;;;;;;;;;;;;;:::o;10725:151::-;10814:7;10841:11;:18;10853:5;10841:18;;;;;;;;;;;;;;;:27;10860:7;10841:27;;;;;;;;;;;;;;;;10834:34;;10725:151;;;;:::o;14711:27::-;;;;:::o;14745:31::-;;;;:::o;754:180::-;601:12;:10;:12::i;:::-;590:23;;:7;:5;:7::i;:::-;:23;;;582:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;863:1:::1;843:22;;:8;:22;;::::0;835:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;898:28;917:8;898:18;:28::i;:::-;754:180:::0;:::o;96:98::-;149:7;176:10;169:17;;96:98;:::o;10381:336::-;10500:1;10483:19;;:5;:19;;;10475:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10575:1;10556:21;;:7;:21;;;10548:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10655:6;10625:11;:18;10637:5;10625:18;;;;;;;;;;;;;;;:27;10644:7;10625:27;;;;;;;;;;;;;;;:36;;;;10693:7;10677:32;;10686:5;10677:32;;;10702:6;10677:32;;;;;;:::i;:::-;;;;;;;;10381:336;;;:::o;20525:2913::-;20673:1;20657:18;;:4;:18;;;20649:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;20740:1;20726:16;;:2;:16;;;20718:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;20792:9;:15;20802:4;20792:15;;;;;;;;;;;;;;;;;;;;;;;;;20791:16;20783:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;20857:9;:13;20867:2;20857:13;;;;;;;;;;;;;;;;;;;;;;;;;20856:14;20848:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;20925:1;20915:6;:11;20911:93;;20943:28;20959:4;20965:2;20969:1;20943:15;:28::i;:::-;20986:7;;20911:93;21020:14;;;;;;;;;;;21016:1085;;;21063:7;:5;:7::i;:::-;21055:15;;:4;:15;;;;:32;;;;;21080:7;:5;:7::i;:::-;21074:13;;:2;:13;;;;21055:32;:52;;;;;21105:1;21091:16;;:2;:16;;;;21055:52;:77;;;;;21125:6;21111:21;;:2;:21;;;;21055:77;:91;;;;;21137:9;;;;;;;;;;;21136:10;21055:91;21051:1039;;;21172:14;;;;;;;;;;;21167:145;;21219:16;:22;21236:4;21219:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;21245:16;:20;21262:2;21245:20;;;;;;;;;;;;;;;;;;;;;;;;;21219:46;21211:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;21167:145;21336:25;:31;21362:4;21336:31;;;;;;;;;;;;;;;;;;;;;;;;;:69;;;;;21372:29;:33;21402:2;21372:33;;;;;;;;;;;;;;;;;;;;;;;;;21371:34;21336:69;21332:743;;;21448:20;;21438:6;:30;;21430:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;21583:23;;21566:13;21576:2;21566:9;:13::i;:::-;21557:6;:22;;;;:::i;:::-;:49;;21549:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;21332:743;;;21677:25;:29;21703:2;21677:29;;;;;;;;;;;;;;;;;;;;;;;;;:69;;;;;21711:29;:35;21741:4;21711:35;;;;;;;;;;;;;;;;;;;;;;;;;21710:36;21677:69;21673:402;;;21789:20;;21779:6;:30;;21771:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;21673:402;;;21916:29;:33;21946:2;21916:33;;;;;;;;;;;;;;;;;;;;;;;;;21911:164;;22008:23;;21991:13;22001:2;21991:9;:13::i;:::-;21982:6;:22;;;;:::i;:::-;:49;;21974:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;21911:164;21673:402;21332:743;21051:1039;21016:1085;22113:20;22136:24;22154:4;22136:9;:24::i;:::-;22113:47;;22171:12;22202:18;;22186:12;:34;;22171:49;;22235:12;;;;;;;;;;;:23;;;;;22251:7;22235:23;:37;;;;;22263:9;;;;;;;;;;;22262:10;22235:37;:86;;;;;22290:25;:31;22316:4;22290:31;;;;;;;;;;;;;;;;;;;;;;;;;22289:32;22235:86;:113;;;;;22326:16;:22;22343:4;22326:22;;;;;;;;;;;;;;;;;;;;;;;;;22325:23;22235:113;:138;;;;;22353:16;:20;22370:2;22353:20;;;;;;;;;;;;;;;;;;;;;;;;;22352:21;22235:138;22231:244;;;22402:4;22390:9;;:16;;;;;;;;;;;;;;;;;;22421:10;:8;:10::i;:::-;22458:5;22446:9;;:17;;;;;;;;;;;;;;;;;;22231:244;22487:9;22500;;;;;;;;;;;22499:10;22487:22;;22524:16;:22;22541:4;22524:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;22550:16;:20;22567:2;22550:20;;;;;;;;;;;;;;;;;;;;;;;;;22524:46;22520:77;;;22592:5;22585:12;;22520:77;22610:12;22641:4;22637:748;;;22666:25;:29;22692:2;22666:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;22714:1;22699:12;;:16;22666:49;22662:595;;;22743:33;22772:3;22743:24;22754:12;;22743:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;22736:40;;22838:12;;22824:10;;22817:4;:17;;;;:::i;:::-;22816:34;;;;:::i;:::-;22795:17;;:55;;;;;;;:::i;:::-;;;;;;;;22924:12;;22904:16;;22897:4;:23;;;;:::i;:::-;22896:40;;;;:::i;:::-;22869:23;;:67;;;;;;;:::i;:::-;;;;;;;;22662:595;;;22975:25;:31;23001:4;22975:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23024:1;23010:11;;:15;22975:50;22971:286;;;23053:32;23081:3;23053:23;23064:11;;23053:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;23046:39;;23146:11;;23133:9;;23126:4;:16;;;;:::i;:::-;23125:32;;;;:::i;:::-;23104:17;;:53;;;;;;;:::i;:::-;;;;;;;;23230:11;;23211:15;;23204:4;:22;;;;:::i;:::-;23203:38;;;;:::i;:::-;23176:23;;:65;;;;;;;:::i;:::-;;;;;;;;22971:286;22662:595;23282:1;23275:4;:8;23271:73;;;23302:42;23318:4;23332;23339;23302:15;:42::i;:::-;23271:73;23369:4;23359:14;;;;;:::i;:::-;;;22637:748;23397:33;23413:4;23419:2;23423:6;23397:15;:33::i;:::-;20638:2800;;;;20525:2913;;;;:::o;1053:191::-;1127:16;1146:6;;;;;;;;;;;1127:25;;1172:8;1163:6;;:17;;;;;;;;;;;;;;;;;;1227:8;1196:40;;1217:8;1196:40;;;;;;;;;;;;1116:128;1053:191;:::o;13181:607::-;13294:1;13278:18;;:4;:18;;;13270:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13363:1;13349:16;;:2;:16;;;13341:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13408:38;13429:4;13435:2;13439:6;13408:20;:38::i;:::-;13457:19;13479:9;:15;13489:4;13479:15;;;;;;;;;;;;;;;;13457:37;;13528:6;13513:11;:21;;13505:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13639:6;13625:11;:20;13607:9;:15;13617:4;13607:15;;;;;;;;;;;;;;;:38;;;;13684:6;13667:9;:13;13677:2;13667:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;13721:2;13706:26;;13715:4;13706:26;;;13725:6;13706:26;;;;;;:::i;:::-;;;;;;;;13743:37;13763:4;13769:2;13773:6;13743:19;:37::i;:::-;13259:529;13181:607;;;:::o;19633:884::-;19672:12;19695:25;19749:17;;19723:23;;:43;;;;:::i;:::-;19695:71;;19777:20;19800:24;19818:4;19800:9;:24::i;:::-;19777:47;;19862:1;19841:17;:22;:43;;;;19883:1;19867:12;:17;19841:43;19837:69;;;19899:7;;;;;19837:69;19958:2;19937:18;;:23;;;;:::i;:::-;19922:12;:38;19918:95;;;20011:2;19990:18;;:23;;;;:::i;:::-;19975:38;;19918:95;20026:22;20051:21;20026:46;;20083:30;20100:12;20083:16;:30::i;:::-;20126:18;20147:41;20173:14;20147:21;:25;;:41;;;;:::i;:::-;20126:62;;20199:17;20219:56;20257:17;20219:33;20234:17;;20219:10;:14;;:33;;;;:::i;:::-;:37;;:56;;;;:::i;:::-;20199:76;;20310:9;;;;;;;;;;;20302:23;;20333:9;20302:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20288:59;;;;;20380:15;;;;;;;;;;;20372:29;;20410:21;20372:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20358:79;;;;;20476:1;20450:23;:27;;;;20508:1;20488:17;:21;;;;19661:856;;;;;;19633:884;:::o;1275:98::-;1333:7;1364:1;1360;:5;;;;:::i;:::-;1353:12;;1275:98;;;;:::o;1659:::-;1717:7;1748:1;1744;:5;;;;:::i;:::-;1737:12;;1659:98;;;;:::o;13048:125::-;;;;:::o;13796:144::-;;;;:::o;23598:559::-;23719:21;23757:1;23743:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23719:40;;23788:4;23770;23775:1;23770:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23814:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23804:4;23809:1;23804:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;23844:52;23861:4;23876:10;;;;;;;;;;;23889:6;23844:8;:52::i;:::-;23935:10;;;;;;;;;;;:61;;;24011:6;24032:1;24076:4;24103;24123:15;23935:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23648:509;23598:559;:::o;2304:98::-;2362:7;2393:1;2389;:5;;;;:::i;:::-;2382:12;;2304:98;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:118::-;4845:24;4863:5;4845:24;:::i;:::-;4840:3;4833:37;4758:118;;:::o;4882:222::-;4975:4;5013:2;5002:9;4998:18;4990:26;;5026:71;5094:1;5083:9;5079:17;5070:6;5026:71;:::i;:::-;4882:222;;;;:::o;5110:329::-;5169:6;5218:2;5206:9;5197:7;5193:23;5189:32;5186:119;;;5224:79;;:::i;:::-;5186:119;5344:1;5369:53;5414:7;5405:6;5394:9;5390:22;5369:53;:::i;:::-;5359:63;;5315:117;5110:329;;;;:::o;5445:86::-;5480:7;5520:4;5513:5;5509:16;5498:27;;5445:86;;;:::o;5537:112::-;5620:22;5636:5;5620:22;:::i;:::-;5615:3;5608:35;5537:112;;:::o;5655:214::-;5744:4;5782:2;5771:9;5767:18;5759:26;;5795:67;5859:1;5848:9;5844:17;5835:6;5795:67;:::i;:::-;5655:214;;;;:::o;5875:116::-;5945:21;5960:5;5945:21;:::i;:::-;5938:5;5935:32;5925:60;;5981:1;5978;5971:12;5925:60;5875:116;:::o;5997:133::-;6040:5;6078:6;6065:20;6056:29;;6094:30;6118:5;6094:30;:::i;:::-;5997:133;;;;:::o;6136:468::-;6201:6;6209;6258:2;6246:9;6237:7;6233:23;6229:32;6226:119;;;6264:79;;:::i;:::-;6226:119;6384:1;6409:53;6454:7;6445:6;6434:9;6430:22;6409:53;:::i;:::-;6399:63;;6355:117;6511:2;6537:50;6579:7;6570:6;6559:9;6555:22;6537:50;:::i;:::-;6527:60;;6482:115;6136:468;;;;;:::o;6610:323::-;6666:6;6715:2;6703:9;6694:7;6690:23;6686:32;6683:119;;;6721:79;;:::i;:::-;6683:119;6841:1;6866:50;6908:7;6899:6;6888:9;6884:22;6866:50;:::i;:::-;6856:60;;6812:114;6610:323;;;;:::o;6939:474::-;7007:6;7015;7064:2;7052:9;7043:7;7039:23;7035:32;7032:119;;;7070:79;;:::i;:::-;7032:119;7190:1;7215:53;7260:7;7251:6;7240:9;7236:22;7215:53;:::i;:::-;7205:63;;7161:117;7317:2;7343:53;7388:7;7379:6;7368:9;7364:22;7343:53;:::i;:::-;7333:63;;7288:118;6939:474;;;;;:::o;7419:60::-;7447:3;7468:5;7461:12;;7419:60;;;:::o;7485:142::-;7535:9;7568:53;7586:34;7595:24;7613:5;7595:24;:::i;:::-;7586:34;:::i;:::-;7568:53;:::i;:::-;7555:66;;7485:142;;;:::o;7633:126::-;7683:9;7716:37;7747:5;7716:37;:::i;:::-;7703:50;;7633:126;;;:::o;7765:152::-;7841:9;7874:37;7905:5;7874:37;:::i;:::-;7861:50;;7765:152;;;:::o;7923:183::-;8036:63;8093:5;8036:63;:::i;:::-;8031:3;8024:76;7923:183;;:::o;8112:274::-;8231:4;8269:2;8258:9;8254:18;8246:26;;8282:97;8376:1;8365:9;8361:17;8352:6;8282:97;:::i;:::-;8112:274;;;;:::o;8392:474::-;8460:6;8468;8517:2;8505:9;8496:7;8492:23;8488:32;8485:119;;;8523:79;;:::i;:::-;8485:119;8643:1;8668:53;8713:7;8704:6;8693:9;8689:22;8668:53;:::i;:::-;8658:63;;8614:117;8770:2;8796:53;8841:7;8832:6;8821:9;8817:22;8796:53;:::i;:::-;8786:63;;8741:118;8392:474;;;;;:::o;8872:180::-;8920:77;8917:1;8910:88;9017:4;9014:1;9007:15;9041:4;9038:1;9031:15;9058:320;9102:6;9139:1;9133:4;9129:12;9119:22;;9186:1;9180:4;9176:12;9207:18;9197:81;;9263:4;9255:6;9251:17;9241:27;;9197:81;9325:2;9317:6;9314:14;9294:18;9291:38;9288:84;;9344:18;;:::i;:::-;9288:84;9109:269;9058:320;;;:::o;9384:163::-;9524:15;9520:1;9512:6;9508:14;9501:39;9384:163;:::o;9553:366::-;9695:3;9716:67;9780:2;9775:3;9716:67;:::i;:::-;9709:74;;9792:93;9881:3;9792:93;:::i;:::-;9910:2;9905:3;9901:12;9894:19;;9553:366;;;:::o;9925:419::-;10091:4;10129:2;10118:9;10114:18;10106:26;;10178:9;10172:4;10168:20;10164:1;10153:9;10149:17;10142:47;10206:131;10332:4;10206:131;:::i;:::-;10198:139;;9925:419;;;:::o;10350:147::-;10451:11;10488:3;10473:18;;10350:147;;;;:::o;10503:114::-;;:::o;10623:398::-;10782:3;10803:83;10884:1;10879:3;10803:83;:::i;:::-;10796:90;;10895:93;10984:3;10895:93;:::i;:::-;11013:1;11008:3;11004:11;10997:18;;10623:398;;;:::o;11027:379::-;11211:3;11233:147;11376:3;11233:147;:::i;:::-;11226:154;;11397:3;11390:10;;11027:379;;;:::o;11412:143::-;11469:5;11500:6;11494:13;11485:22;;11516:33;11543:5;11516:33;:::i;:::-;11412:143;;;;:::o;11561:351::-;11631:6;11680:2;11668:9;11659:7;11655:23;11651:32;11648:119;;;11686:79;;:::i;:::-;11648:119;11806:1;11831:64;11887:7;11878:6;11867:9;11863:22;11831:64;:::i;:::-;11821:74;;11777:128;11561:351;;;;:::o;11918:332::-;12039:4;12077:2;12066:9;12062:18;12054:26;;12090:71;12158:1;12147:9;12143:17;12134:6;12090:71;:::i;:::-;12171:72;12239:2;12228:9;12224:18;12215:6;12171:72;:::i;:::-;11918:332;;;;;:::o;12256:137::-;12310:5;12341:6;12335:13;12326:22;;12357:30;12381:5;12357:30;:::i;:::-;12256:137;;;;:::o;12399:345::-;12466:6;12515:2;12503:9;12494:7;12490:23;12486:32;12483:119;;;12521:79;;:::i;:::-;12483:119;12641:1;12666:61;12719:7;12710:6;12699:9;12695:22;12666:61;:::i;:::-;12656:71;;12612:125;12399:345;;;;:::o;12750:179::-;12890:31;12886:1;12878:6;12874:14;12867:55;12750:179;:::o;12935:366::-;13077:3;13098:67;13162:2;13157:3;13098:67;:::i;:::-;13091:74;;13174:93;13263:3;13174:93;:::i;:::-;13292:2;13287:3;13283:12;13276:19;;12935:366;;;:::o;13307:419::-;13473:4;13511:2;13500:9;13496:18;13488:26;;13560:9;13554:4;13550:20;13546:1;13535:9;13531:17;13524:47;13588:131;13714:4;13588:131;:::i;:::-;13580:139;;13307:419;;;:::o;13732:180::-;13780:77;13777:1;13770:88;13877:4;13874:1;13867:15;13901:4;13898:1;13891:15;13918:410;13958:7;13981:20;13999:1;13981:20;:::i;:::-;13976:25;;14015:20;14033:1;14015:20;:::i;:::-;14010:25;;14070:1;14067;14063:9;14092:30;14110:11;14092:30;:::i;:::-;14081:41;;14271:1;14262:7;14258:15;14255:1;14252:22;14232:1;14225:9;14205:83;14182:139;;14301:18;;:::i;:::-;14182:139;13966:362;13918:410;;;;:::o;14334:180::-;14382:77;14379:1;14372:88;14479:4;14476:1;14469:15;14503:4;14500:1;14493:15;14520:185;14560:1;14577:20;14595:1;14577:20;:::i;:::-;14572:25;;14611:20;14629:1;14611:20;:::i;:::-;14606:25;;14650:1;14640:35;;14655:18;;:::i;:::-;14640:35;14697:1;14694;14690:9;14685:14;;14520:185;;;;:::o;14711:240::-;14851:34;14847:1;14839:6;14835:14;14828:58;14920:23;14915:2;14907:6;14903:15;14896:48;14711:240;:::o;14957:366::-;15099:3;15120:67;15184:2;15179:3;15120:67;:::i;:::-;15113:74;;15196:93;15285:3;15196:93;:::i;:::-;15314:2;15309:3;15305:12;15298:19;;14957:366;;;:::o;15329:419::-;15495:4;15533:2;15522:9;15518:18;15510:26;;15582:9;15576:4;15572:20;15568:1;15557:9;15553:17;15546:47;15610:131;15736:4;15610:131;:::i;:::-;15602:139;;15329:419;;;:::o;15754:239::-;15894:34;15890:1;15882:6;15878:14;15871:58;15963:22;15958:2;15950:6;15946:15;15939:47;15754:239;:::o;15999:366::-;16141:3;16162:67;16226:2;16221:3;16162:67;:::i;:::-;16155:74;;16238:93;16327:3;16238:93;:::i;:::-;16356:2;16351:3;16347:12;16340:19;;15999:366;;;:::o;16371:419::-;16537:4;16575:2;16564:9;16560:18;16552:26;;16624:9;16618:4;16614:20;16610:1;16599:9;16595:17;16588:47;16652:131;16778:4;16652:131;:::i;:::-;16644:139;;16371:419;;;:::o;16796:191::-;16836:3;16855:20;16873:1;16855:20;:::i;:::-;16850:25;;16889:20;16907:1;16889:20;:::i;:::-;16884:25;;16932:1;16929;16925:9;16918:16;;16953:3;16950:1;16947:10;16944:36;;;16960:18;;:::i;:::-;16944:36;16796:191;;;;:::o;16993:244::-;17133:34;17129:1;17121:6;17117:14;17110:58;17202:27;17197:2;17189:6;17185:15;17178:52;16993:244;:::o;17243:366::-;17385:3;17406:67;17470:2;17465:3;17406:67;:::i;:::-;17399:74;;17482:93;17571:3;17482:93;:::i;:::-;17600:2;17595:3;17591:12;17584:19;;17243:366;;;:::o;17615:419::-;17781:4;17819:2;17808:9;17804:18;17796:26;;17868:9;17862:4;17858:20;17854:1;17843:9;17839:17;17832:47;17896:131;18022:4;17896:131;:::i;:::-;17888:139;;17615:419;;;:::o;18040:102::-;18082:8;18129:5;18126:1;18122:13;18101:34;;18040:102;;;:::o;18148:848::-;18209:5;18216:4;18240:6;18231:15;;18264:5;18255:14;;18278:712;18299:1;18289:8;18286:15;18278:712;;;18394:4;18389:3;18385:14;18379:4;18376:24;18373:50;;;18403:18;;:::i;:::-;18373:50;18453:1;18443:8;18439:16;18436:451;;;18868:4;18861:5;18857:16;18848:25;;18436:451;18918:4;18912;18908:15;18900:23;;18948:32;18971:8;18948:32;:::i;:::-;18936:44;;18278:712;;;18148:848;;;;;;;:::o;19002:1073::-;19056:5;19247:8;19237:40;;19268:1;19259:10;;19270:5;;19237:40;19296:4;19286:36;;19313:1;19304:10;;19315:5;;19286:36;19382:4;19430:1;19425:27;;;;19466:1;19461:191;;;;19375:277;;19425:27;19443:1;19434:10;;19445:5;;;19461:191;19506:3;19496:8;19493:17;19490:43;;;19513:18;;:::i;:::-;19490:43;19562:8;19559:1;19555:16;19546:25;;19597:3;19590:5;19587:14;19584:40;;;19604:18;;:::i;:::-;19584:40;19637:5;;;19375:277;;19761:2;19751:8;19748:16;19742:3;19736:4;19733:13;19729:36;19711:2;19701:8;19698:16;19693:2;19687:4;19684:12;19680:35;19664:111;19661:246;;;19817:8;19811:4;19807:19;19798:28;;19852:3;19845:5;19842:14;19839:40;;;19859:18;;:::i;:::-;19839:40;19892:5;;19661:246;19932:42;19970:3;19960:8;19954:4;19951:1;19932:42;:::i;:::-;19917:57;;;;20006:4;20001:3;19997:14;19990:5;19987:25;19984:51;;;20015:18;;:::i;:::-;19984:51;20064:4;20057:5;20053:16;20044:25;;19002:1073;;;;;;:::o;20081:281::-;20139:5;20163:23;20181:4;20163:23;:::i;:::-;20155:31;;20207:25;20223:8;20207:25;:::i;:::-;20195:37;;20251:104;20288:66;20278:8;20272:4;20251:104;:::i;:::-;20242:113;;20081:281;;;;:::o;20368:234::-;20508:34;20504:1;20496:6;20492:14;20485:58;20577:17;20572:2;20564:6;20560:15;20553:42;20368:234;:::o;20608:366::-;20750:3;20771:67;20835:2;20830:3;20771:67;:::i;:::-;20764:74;;20847:93;20936:3;20847:93;:::i;:::-;20965:2;20960:3;20956:12;20949:19;;20608:366;;;:::o;20980:419::-;21146:4;21184:2;21173:9;21169:18;21161:26;;21233:9;21227:4;21223:20;21219:1;21208:9;21204:17;21197:47;21261:131;21387:4;21261:131;:::i;:::-;21253:139;;20980:419;;;:::o;21405:237::-;21545:34;21541:1;21533:6;21529:14;21522:58;21614:20;21609:2;21601:6;21597:15;21590:45;21405:237;:::o;21648:366::-;21790:3;21811:67;21875:2;21870:3;21811:67;:::i;:::-;21804:74;;21887:93;21976:3;21887:93;:::i;:::-;22005:2;22000:3;21996:12;21989:19;;21648:366;;;:::o;22020:419::-;22186:4;22224:2;22213:9;22209:18;22201:26;;22273:9;22267:4;22263:20;22259:1;22248:9;22244:17;22237:47;22301:131;22427:4;22301:131;:::i;:::-;22293:139;;22020:419;;;:::o;22445:179::-;22585:31;22581:1;22573:6;22569:14;22562:55;22445:179;:::o;22630:366::-;22772:3;22793:67;22857:2;22852:3;22793:67;:::i;:::-;22786:74;;22869:93;22958:3;22869:93;:::i;:::-;22987:2;22982:3;22978:12;22971:19;;22630:366;;;:::o;23002:419::-;23168:4;23206:2;23195:9;23191:18;23183:26;;23255:9;23249:4;23245:20;23241:1;23230:9;23226:17;23219:47;23283:131;23409:4;23283:131;:::i;:::-;23275:139;;23002:419;;;:::o;23427:181::-;23567:33;23563:1;23555:6;23551:14;23544:57;23427:181;:::o;23614:366::-;23756:3;23777:67;23841:2;23836:3;23777:67;:::i;:::-;23770:74;;23853:93;23942:3;23853:93;:::i;:::-;23971:2;23966:3;23962:12;23955:19;;23614:366;;;:::o;23986:419::-;24152:4;24190:2;24179:9;24175:18;24167:26;;24239:9;24233:4;24229:20;24225:1;24214:9;24210:17;24203:47;24267:131;24393:4;24267:131;:::i;:::-;24259:139;;23986:419;;;:::o;24411:178::-;24551:30;24547:1;24539:6;24535:14;24528:54;24411:178;:::o;24595:366::-;24737:3;24758:67;24822:2;24817:3;24758:67;:::i;:::-;24751:74;;24834:93;24923:3;24834:93;:::i;:::-;24952:2;24947:3;24943:12;24936:19;;24595:366;;;:::o;24967:419::-;25133:4;25171:2;25160:9;25156:18;25148:26;;25220:9;25214:4;25210:20;25206:1;25195:9;25191:17;25184:47;25248:131;25374:4;25248:131;:::i;:::-;25240:139;;24967:419;;;:::o;25392:167::-;25532:19;25528:1;25520:6;25516:14;25509:43;25392:167;:::o;25565:366::-;25707:3;25728:67;25792:2;25787:3;25728:67;:::i;:::-;25721:74;;25804:93;25893:3;25804:93;:::i;:::-;25922:2;25917:3;25913:12;25906:19;;25565:366;;;:::o;25937:419::-;26103:4;26141:2;26130:9;26126:18;26118:26;;26190:9;26184:4;26180:20;26176:1;26165:9;26161:17;26154:47;26218:131;26344:4;26218:131;:::i;:::-;26210:139;;25937:419;;;:::o;26362:180::-;26502:32;26498:1;26490:6;26486:14;26479:56;26362:180;:::o;26548:366::-;26690:3;26711:67;26775:2;26770:3;26711:67;:::i;:::-;26704:74;;26787:93;26876:3;26787:93;:::i;:::-;26905:2;26900:3;26896:12;26889:19;;26548:366;;;:::o;26920:419::-;27086:4;27124:2;27113:9;27109:18;27101:26;;27173:9;27167:4;27163:20;27159:1;27148:9;27144:17;27137:47;27201:131;27327:4;27201:131;:::i;:::-;27193:139;;26920:419;;;:::o;27345:182::-;27485:34;27481:1;27473:6;27469:14;27462:58;27345:182;:::o;27533:366::-;27675:3;27696:67;27760:2;27755:3;27696:67;:::i;:::-;27689:74;;27772:93;27861:3;27772:93;:::i;:::-;27890:2;27885:3;27881:12;27874:19;;27533:366;;;:::o;27905:419::-;28071:4;28109:2;28098:9;28094:18;28086:26;;28158:9;28152:4;28148:20;28144:1;28133:9;28129:17;28122:47;28186:131;28312:4;28186:131;:::i;:::-;28178:139;;27905:419;;;:::o;28330:177::-;28470:29;28466:1;28458:6;28454:14;28447:53;28330:177;:::o;28513:366::-;28655:3;28676:67;28740:2;28735:3;28676:67;:::i;:::-;28669:74;;28752:93;28841:3;28752:93;:::i;:::-;28870:2;28865:3;28861:12;28854:19;;28513:366;;;:::o;28885:419::-;29051:4;29089:2;29078:9;29074:18;29066:26;;29138:9;29132:4;29128:20;29124:1;29113:9;29109:17;29102:47;29166:131;29292:4;29166:131;:::i;:::-;29158:139;;28885:419;;;:::o;29310:175::-;29450:27;29446:1;29438:6;29434:14;29427:51;29310:175;:::o;29491:366::-;29633:3;29654:67;29718:2;29713:3;29654:67;:::i;:::-;29647:74;;29730:93;29819:3;29730:93;:::i;:::-;29848:2;29843:3;29839:12;29832:19;;29491:366;;;:::o;29863:419::-;30029:4;30067:2;30056:9;30052:18;30044:26;;30116:9;30110:4;30106:20;30102:1;30091:9;30087:17;30080:47;30144:131;30270:4;30144:131;:::i;:::-;30136:139;;29863:419;;;:::o;30288:175::-;30428:27;30424:1;30416:6;30412:14;30405:51;30288:175;:::o;30469:366::-;30611:3;30632:67;30696:2;30691:3;30632:67;:::i;:::-;30625:74;;30708:93;30797:3;30708:93;:::i;:::-;30826:2;30821:3;30817:12;30810:19;;30469:366;;;:::o;30841:419::-;31007:4;31045:2;31034:9;31030:18;31022:26;;31094:9;31088:4;31084:20;31080:1;31069:9;31065:17;31058:47;31122:131;31248:4;31122:131;:::i;:::-;31114:139;;30841:419;;;:::o;31266:173::-;31406:25;31402:1;31394:6;31390:14;31383:49;31266:173;:::o;31445:366::-;31587:3;31608:67;31672:2;31667:3;31608:67;:::i;:::-;31601:74;;31684:93;31773:3;31684:93;:::i;:::-;31802:2;31797:3;31793:12;31786:19;;31445:366;;;:::o;31817:419::-;31983:4;32021:2;32010:9;32006:18;31998:26;;32070:9;32064:4;32060:20;32056:1;32045:9;32041:17;32034:47;32098:131;32224:4;32098:131;:::i;:::-;32090:139;;31817:419;;;:::o;32242:172::-;32382:24;32378:1;32370:6;32366:14;32359:48;32242:172;:::o;32420:366::-;32562:3;32583:67;32647:2;32642:3;32583:67;:::i;:::-;32576:74;;32659:93;32748:3;32659:93;:::i;:::-;32777:2;32772:3;32768:12;32761:19;;32420:366;;;:::o;32792:419::-;32958:4;32996:2;32985:9;32981:18;32973:26;;33045:9;33039:4;33035:20;33031:1;33020:9;33016:17;33009:47;33073:131;33199:4;33073:131;:::i;:::-;33065:139;;32792:419;;;:::o;33217:240::-;33357:34;33353:1;33345:6;33341:14;33334:58;33426:23;33421:2;33413:6;33409:15;33402:48;33217:240;:::o;33463:366::-;33605:3;33626:67;33690:2;33685:3;33626:67;:::i;:::-;33619:74;;33702:93;33791:3;33702:93;:::i;:::-;33820:2;33815:3;33811:12;33804:19;;33463:366;;;:::o;33835:419::-;34001:4;34039:2;34028:9;34024:18;34016:26;;34088:9;34082:4;34078:20;34074:1;34063:9;34059:17;34052:47;34116:131;34242:4;34116:131;:::i;:::-;34108:139;;33835:419;;;:::o;34260:169::-;34400:21;34396:1;34388:6;34384:14;34377:45;34260:169;:::o;34435:366::-;34577:3;34598:67;34662:2;34657:3;34598:67;:::i;:::-;34591:74;;34674:93;34763:3;34674:93;:::i;:::-;34792:2;34787:3;34783:12;34776:19;;34435:366;;;:::o;34807:419::-;34973:4;35011:2;35000:9;34996:18;34988:26;;35060:9;35054:4;35050:20;35046:1;35035:9;35031:17;35024:47;35088:131;35214:4;35088:131;:::i;:::-;35080:139;;34807:419;;;:::o;35232:241::-;35372:34;35368:1;35360:6;35356:14;35349:58;35441:24;35436:2;35428:6;35424:15;35417:49;35232:241;:::o;35479:366::-;35621:3;35642:67;35706:2;35701:3;35642:67;:::i;:::-;35635:74;;35718:93;35807:3;35718:93;:::i;:::-;35836:2;35831:3;35827:12;35820:19;;35479:366;;;:::o;35851:419::-;36017:4;36055:2;36044:9;36040:18;36032:26;;36104:9;36098:4;36094:20;36090:1;36079:9;36075:17;36068:47;36132:131;36258:4;36132:131;:::i;:::-;36124:139;;35851:419;;;:::o;36276:194::-;36316:4;36336:20;36354:1;36336:20;:::i;:::-;36331:25;;36370:20;36388:1;36370:20;:::i;:::-;36365:25;;36414:1;36411;36407:9;36399:17;;36438:1;36432:4;36429:11;36426:37;;;36443:18;;:::i;:::-;36426:37;36276:194;;;;:::o;36476:179::-;36616:31;36612:1;36604:6;36600:14;36593:55;36476:179;:::o;36661:366::-;36803:3;36824:67;36888:2;36883:3;36824:67;:::i;:::-;36817:74;;36900:93;36989:3;36900:93;:::i;:::-;37018:2;37013:3;37009:12;37002:19;;36661:366;;;:::o;37033:419::-;37199:4;37237:2;37226:9;37222:18;37214:26;;37286:9;37280:4;37276:20;37272:1;37261:9;37257:17;37250:47;37314:131;37440:4;37314:131;:::i;:::-;37306:139;;37033:419;;;:::o;37458:177::-;37598:29;37594:1;37586:6;37582:14;37575:53;37458:177;:::o;37641:366::-;37783:3;37804:67;37868:2;37863:3;37804:67;:::i;:::-;37797:74;;37880:93;37969:3;37880:93;:::i;:::-;37998:2;37993:3;37989:12;37982:19;;37641:366;;;:::o;38013:419::-;38179:4;38217:2;38206:9;38202:18;38194:26;;38266:9;38260:4;38256:20;38252:1;38241:9;38237:17;38230:47;38294:131;38420:4;38294:131;:::i;:::-;38286:139;;38013:419;;;:::o;38438:182::-;38578:34;38574:1;38566:6;38562:14;38555:58;38438:182;:::o;38626:366::-;38768:3;38789:67;38853:2;38848:3;38789:67;:::i;:::-;38782:74;;38865:93;38954:3;38865:93;:::i;:::-;38983:2;38978:3;38974:12;38967:19;;38626:366;;;:::o;38998:419::-;39164:4;39202:2;39191:9;39187:18;39179:26;;39251:9;39245:4;39241:20;39237:1;39226:9;39222:17;39215:47;39279:131;39405:4;39279:131;:::i;:::-;39271:139;;38998:419;;;:::o;39423:180::-;39471:77;39468:1;39461:88;39568:4;39565:1;39558:15;39592:4;39589:1;39582:15;39609:180;39657:77;39654:1;39647:88;39754:4;39751:1;39744:15;39778:4;39775:1;39768:15;39795:143;39852:5;39883:6;39877:13;39868:22;;39899:33;39926:5;39899:33;:::i;:::-;39795:143;;;;:::o;39944:351::-;40014:6;40063:2;40051:9;40042:7;40038:23;40034:32;40031:119;;;40069:79;;:::i;:::-;40031:119;40189:1;40214:64;40270:7;40261:6;40250:9;40246:22;40214:64;:::i;:::-;40204:74;;40160:128;39944:351;;;;:::o;40301:85::-;40346:7;40375:5;40364:16;;40301:85;;;:::o;40392:158::-;40450:9;40483:61;40501:42;40510:32;40536:5;40510:32;:::i;:::-;40501:42;:::i;:::-;40483:61;:::i;:::-;40470:74;;40392:158;;;:::o;40556:147::-;40651:45;40690:5;40651:45;:::i;:::-;40646:3;40639:58;40556:147;;:::o;40709:114::-;40776:6;40810:5;40804:12;40794:22;;40709:114;;;:::o;40829:184::-;40928:11;40962:6;40957:3;40950:19;41002:4;40997:3;40993:14;40978:29;;40829:184;;;;:::o;41019:132::-;41086:4;41109:3;41101:11;;41139:4;41134:3;41130:14;41122:22;;41019:132;;;:::o;41157:108::-;41234:24;41252:5;41234:24;:::i;:::-;41229:3;41222:37;41157:108;;:::o;41271:179::-;41340:10;41361:46;41403:3;41395:6;41361:46;:::i;:::-;41439:4;41434:3;41430:14;41416:28;;41271:179;;;;:::o;41456:113::-;41526:4;41558;41553:3;41549:14;41541:22;;41456:113;;;:::o;41605:732::-;41724:3;41753:54;41801:5;41753:54;:::i;:::-;41823:86;41902:6;41897:3;41823:86;:::i;:::-;41816:93;;41933:56;41983:5;41933:56;:::i;:::-;42012:7;42043:1;42028:284;42053:6;42050:1;42047:13;42028:284;;;42129:6;42123:13;42156:63;42215:3;42200:13;42156:63;:::i;:::-;42149:70;;42242:60;42295:6;42242:60;:::i;:::-;42232:70;;42088:224;42075:1;42072;42068:9;42063:14;;42028:284;;;42032:14;42328:3;42321:10;;41729:608;;;41605:732;;;;:::o;42343:831::-;42606:4;42644:3;42633:9;42629:19;42621:27;;42658:71;42726:1;42715:9;42711:17;42702:6;42658:71;:::i;:::-;42739:80;42815:2;42804:9;42800:18;42791:6;42739:80;:::i;:::-;42866:9;42860:4;42856:20;42851:2;42840:9;42836:18;42829:48;42894:108;42997:4;42988:6;42894:108;:::i;:::-;42886:116;;43012:72;43080:2;43069:9;43065:18;43056:6;43012:72;:::i;:::-;43094:73;43162:3;43151:9;43147:19;43138:6;43094:73;:::i;:::-;42343:831;;;;;;;;:::o

Swarm Source

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