ETH Price: $3,353.11 (+2.76%)
 

Overview

Max Total Supply

1,000,000,000 MAI

Holders

78

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.360644885366879368 MAI

Value
$0.00
0x427ed9e9ec977d2a377491ea8f0b546d2269eb5c
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:
MapsAI

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*
    https://t.me/MapsAI
*/

pragma solidity 0.8.10;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    function 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 recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract ERC20 is Context, IERC20 {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;
    uint8 private _decimals; 
    string private _name;
    string private _symbol;

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

    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 _decimals;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

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

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

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract MapsAI is ERC20, Ownable {
    IUniswapV2Router02 private immutable uniswapV2Router;
    IUniswapV2Router02 private immutable shibaswapRouter;

    address public immutable uniswapV2Pair;
    address public immutable shibaswapPair;

    bool private swapping;

    address public sniperDevelopment;
    address public sniperOwner; 

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

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

    uint256 public buyTotalFees;
    uint256 public buyLiquidityFee;
    uint256 public buyMarketingFee;

    uint256 public sellTotalFees;
    uint256 public sellLiquidityFee;
    uint256 public sellMarketingFee;

	uint256 public liquidityTokens;
    uint256 public marketingTokens;
    uint256 public tradingActiveBlock; 

    uint8 private DECIMALS = 18;

    // exclude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public AMM;

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

    constructor() ERC20("MapsAI", "MAI", DECIMALS) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        IUniswapV2Router02 _shibaswapRouter = IUniswapV2Router02(
            0x03f7724180AA6b939894B5Ca4314783B0b36b329
        );

        sniperDevelopment = address(0x1771C168E1adb47B216D597290E430d82cAAD757); 
        sniperOwner = address(0x1771C168E1adb47B216D597290E430d82cAAD757);

        uint256 _buyLiquidityFee = 0;
        uint256 _buyMarketingFee = 10;

        uint256 _sellLiquidityFee = 0;
        uint256 _sellMarketingFee = 40;

        uint256 totalSupply = 1 * 1e9 * 10**DECIMALS;

        maxTransactionAmount = 1 * 1e7 * 10**DECIMALS;
        maxWallet = 1 * 1e7 * 10**DECIMALS;

        swapTokensAtAmount = (totalSupply * 10) / 10000; 

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

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        excludeFromMaxTransaction(address(_shibaswapRouter), true);
        shibaswapRouter = _shibaswapRouter;

        shibaswapPair = IUniswapV2Factory(_shibaswapRouter.factory())
            .createPair(address(this), _shibaswapRouter.WETH());
        excludeFromMaxTransaction(address(shibaswapPair), true);
        _setAutomatedMarketMakerPair(address(shibaswapPair), true);

        buyLiquidityFee = _buyLiquidityFee;
        buyMarketingFee = _buyMarketingFee;
        buyTotalFees = buyLiquidityFee + buyMarketingFee;

        sellLiquidityFee = _sellLiquidityFee;
        sellMarketingFee = _sellMarketingFee;
        sellTotalFees = sellLiquidityFee + sellMarketingFee;

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

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function openTrading() external onlyOwner {
        tradingActive = true;
        swapBack = true;
        tradingActiveBlock = block.number;
    }

    function setFees(uint256 _buyLiquidityFee, uint256 _buyMarketingFee, uint256 _sellLiquidityFee, uint256 _sellMarketingFee) external onlyOwner {
        buyLiquidityFee = _buyLiquidityFee;
        buyMarketingFee = _buyMarketingFee;
        buyTotalFees = buyLiquidityFee + buyMarketingFee;

        sellLiquidityFee = _sellLiquidityFee;
        sellMarketingFee = _sellMarketingFee;
        sellTotalFees = sellLiquidityFee + sellMarketingFee;
    } 

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

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        swapTokensAtAmount = newAmount;
        return true;
    }
	
    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapBack(bool on) external onlyOwner {
        swapBack = on;
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

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

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

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            doSwap();

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {

            // on sell
            if (AMM[to] && sellTotalFees > 0) {
                fees = amount * sellTotalFees / 100;
                liquidityTokens += (fees * sellLiquidityFee) / sellTotalFees;
                marketingTokens += (fees * sellMarketingFee) / sellTotalFees;                
            }
            // on buy
            else if (AMM[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                liquidityTokens += (fees * buyLiquidityFee) / buyTotalFees;
                marketingTokens += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

    function swapTokens(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            sniperDevelopment,
            block.timestamp
        );
    }

    function doSwap() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = liquidityTokens + marketingTokens;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

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

        // Halve the amount of liquidity tokens
        uint256 tokensForLiquidity = (contractBalance * liquidityTokens) / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance - tokensForLiquidity;

        uint256 initialETHBalance = address(this).balance;

        swapTokens(amountToSwapForETH);

        uint256 ethBalance = address(this).balance - initialETHBalance;
	
        uint256 ethMarketing = ethBalance * marketingTokens / totalTokensToSwap;
        uint256 ethForOwner = ethMarketing * 3 / 10;

        uint256 ethLiquidity = ethBalance - ethMarketing;

        liquidityTokens = 0;
        marketingTokens = 0;

        if (tokensForLiquidity > 0 && ethLiquidity > 0) {
            addLiquidity(tokensForLiquidity, ethLiquidity);
        }
        //there will be no leftover eth in the contract 
        (success, ) = address(sniperOwner).call{value: ethForOwner}("");
        (success, ) = address(sniperDevelopment).call{value: address(this).balance}("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[{"internalType":"address","name":"","type":"address"}],"name":"AMM","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shibaswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sniperDevelopment","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sniperOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapBack","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"on","type":"bool"}],"name":"updateSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6101006040526001600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff0219169083151502179055506000600c60026101000a81548160ff0219169083151502179055506012601660006101000a81548160ff021916908360ff1602179055503480156200007f57600080fd5b506040518060400160405280600681526020017f4d617073414900000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4d41490000000000000000000000000000000000000000000000000000000000815250601660009054906101000a900460ff1682600490805190602001906200011492919062000d66565b5081600590805190602001906200012d92919062000d66565b5080600360006101000a81548160ff021916908360ff1602179055505050506200016c620001606200082660201b60201c565b6200082e60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060007303f7724180aa6b939894b5ca4314783b0b36b3299050731771c168e1adb47b216d597290e430d82caad757600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731771c168e1adb47b216d597290e430d82caad757600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600080600a9050600080602890506000601660009054906101000a900460ff16600a62000276919062000fb0565b633b9aca0062000287919062001001565b9050601660009054906101000a900460ff16600a620002a7919062000fb0565b62989680620002b7919062001001565b600981905550601660009054906101000a900460ff16600a620002db919062000fb0565b62989680620002eb919062001001565b600b81905550612710600a8262000303919062001001565b6200030f919062001091565b600a8190555062000328876001620008f460201b60201c565b8673ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ce919062001133565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308973ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000436573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045c919062001133565b6040518363ffffffff1660e01b81526004016200047b92919062001176565b6020604051808303816000875af11580156200049b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c1919062001133565b73ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250506200050960c0516001620008f460201b60201c565b6200051e60c0516001620009de60201b60201c565b62000531866001620008f460201b60201c565b8573ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508573ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d7919062001133565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308873ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200063f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000665919062001133565b6040518363ffffffff1660e01b81526004016200068492919062001176565b6020604051808303816000875af1158015620006a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006ca919062001133565b73ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff16815250506200071260e0516001620008f460201b60201c565b6200072760e0516001620009de60201b60201c565b84600e8190555083600f81905550600f54600e54620007479190620011a3565b600d8190555082601181905550816012819055506012546011546200076d9190620011a3565b601081905550620007956200078762000a7f60201b60201c565b600162000aa960201b60201c565b620007a830600162000aa960201b60201c565b620007bd61dead600162000aa960201b60201c565b620007df620007d162000a7f60201b60201c565b6001620008f460201b60201c565b620007f2306001620008f460201b60201c565b6200080761dead6001620008f460201b60201c565b62000819338262000be360201b60201c565b50505050505050620013c2565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620009046200082660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200092a62000a7f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000983576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200097a9062001261565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000ab96200082660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000adf62000a7f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000b38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b2f9062001261565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000bd79190620012a0565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000c56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c4d906200130d565b60405180910390fd5b62000c6a6000838362000d5c60201b60201c565b806002600082825462000c7e9190620011a3565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000cd59190620011a3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000d3c919062001340565b60405180910390a362000d586000838362000d6160201b60201c565b5050565b505050565b505050565b82805462000d74906200138c565b90600052602060002090601f01602090048101928262000d98576000855562000de4565b82601f1062000db357805160ff191683800117855562000de4565b8280016001018555821562000de4579182015b8281111562000de357825182559160200191906001019062000dc6565b5b50905062000df3919062000df7565b5090565b5b8082111562000e1257600081600090555060010162000df8565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ea45780860481111562000e7c5762000e7b62000e16565b5b600185161562000e8c5780820291505b808102905062000e9c8562000e45565b945062000e5c565b94509492505050565b60008262000ebf576001905062000f92565b8162000ecf576000905062000f92565b816001811462000ee8576002811462000ef35762000f29565b600191505062000f92565b60ff84111562000f085762000f0762000e16565b5b8360020a91508482111562000f225762000f2162000e16565b5b5062000f92565b5060208310610133831016604e8410600b841016171562000f635782820a90508381111562000f5d5762000f5c62000e16565b5b62000f92565b62000f72848484600162000e52565b9250905081840481111562000f8c5762000f8b62000e16565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000fbd8262000f99565b915062000fca8362000fa3565b925062000ff97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ead565b905092915050565b60006200100e8262000f99565b91506200101b8362000f99565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001057576200105662000e16565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200109e8262000f99565b9150620010ab8362000f99565b925082620010be57620010bd62001062565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010fb82620010ce565b9050919050565b6200110d81620010ee565b81146200111957600080fd5b50565b6000815190506200112d8162001102565b92915050565b6000602082840312156200114c576200114b620010c9565b5b60006200115c848285016200111c565b91505092915050565b6200117081620010ee565b82525050565b60006040820190506200118d600083018562001165565b6200119c602083018462001165565b9392505050565b6000620011b08262000f99565b9150620011bd8362000f99565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620011f557620011f462000e16565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200124960208362001200565b9150620012568262001211565b602082019050919050565b600060208201905081810360008301526200127c816200123a565b9050919050565b60008115159050919050565b6200129a8162001283565b82525050565b6000602082019050620012b760008301846200128f565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620012f5601f8362001200565b91506200130282620012bd565b602082019050919050565b600060208201905081810360008301526200132881620012e6565b9050919050565b6200133a8162000f99565b82525050565b60006020820190506200135760008301846200132f565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620013a557607f821691505b60208210811415620013bc57620013bb6200135d565b5b50919050565b60805160a05160c05160e051613f926200141c60003960006111dc015260008181610d2a015261131401526000505060008181612c1601528181612cf701528181612d1e01528181612dba0152612de10152613f926000f3fe60806040526004361061026b5760003560e01c80638b27306d11610144578063c9567bf9116100b6578063e2f456051161007a578063e2f456051461096d578063ee40166e14610998578063f11a24d3146109c3578063f2fde38b146109ee578063f637434214610a17578063f8b45b0514610a4257610272565b8063c9567bf914610874578063d257b34f1461088b578063d65d7886146108c8578063d85ba06314610905578063dd62ed3e1461093057610272565b80639a7a23d6116101085780639a7a23d614610752578063a457c2d71461077b578063a9059cbb146107b8578063bbc0c742146107f5578063c024666814610820578063c8c8ebe41461084957610272565b80638b27306d1461067b5780638da5cb5b146106a6578063910a8e95146106d157806392136913146106fc57806395d89b411461072757610272565b80634fbee193116101dd57806370a08231116101a157806370a082311461057f578063715018a6146105bc57806371e65840146105d3578063751039fc146105fc5780637571336a146106275780637bce5a041461065057610272565b80634fbee193146104985780636a486a8e146104d55780636ac5eeee146105005780636c027fd61461052b5780636fcba3771461055657610272565b8063313ce5671161022f578063313ce5671461038457806338f7a867146103af57806339509351146103da57806349bd5a5e146104175780634a62bb65146104425780634b8ce6021461046d57610272565b806306fdde0314610277578063095ea7b3146102a257806310d5de53146102df57806318160ddd1461031c57806323b872dd1461034757610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a6d565b6040516102999190612f49565b60405180910390f35b3480156102ae57600080fd5b506102c960048036038101906102c49190613004565b610aff565b6040516102d6919061305f565b60405180910390f35b3480156102eb57600080fd5b506103066004803603810190610301919061307a565b610b1d565b604051610313919061305f565b60405180910390f35b34801561032857600080fd5b50610331610b3d565b60405161033e91906130b6565b60405180910390f35b34801561035357600080fd5b5061036e600480360381019061036991906130d1565b610b47565b60405161037b919061305f565b60405180910390f35b34801561039057600080fd5b50610399610c3f565b6040516103a69190613140565b60405180910390f35b3480156103bb57600080fd5b506103c4610c56565b6040516103d1919061316a565b60405180910390f35b3480156103e657600080fd5b5061040160048036038101906103fc9190613004565b610c7c565b60405161040e919061305f565b60405180910390f35b34801561042357600080fd5b5061042c610d28565b604051610439919061316a565b60405180910390f35b34801561044e57600080fd5b50610457610d4c565b604051610464919061305f565b60405180910390f35b34801561047957600080fd5b50610482610d5f565b60405161048f91906130b6565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba919061307a565b610d65565b6040516104cc919061305f565b60405180910390f35b3480156104e157600080fd5b506104ea610dbb565b6040516104f791906130b6565b60405180910390f35b34801561050c57600080fd5b50610515610dc1565b604051610522919061305f565b60405180910390f35b34801561053757600080fd5b50610540610dd4565b60405161054d919061316a565b60405180910390f35b34801561056257600080fd5b5061057d60048036038101906105789190613185565b610dfa565b005b34801561058b57600080fd5b506105a660048036038101906105a1919061307a565b610ec4565b6040516105b391906130b6565b60405180910390f35b3480156105c857600080fd5b506105d1610f0c565b005b3480156105df57600080fd5b506105fa60048036038101906105f59190613218565b610f94565b005b34801561060857600080fd5b5061061161102d565b60405161061e919061305f565b60405180910390f35b34801561063357600080fd5b5061064e60048036038101906106499190613245565b6110cd565b005b34801561065c57600080fd5b506106656111a4565b60405161067291906130b6565b60405180910390f35b34801561068757600080fd5b506106906111aa565b60405161069d91906130b6565b60405180910390f35b3480156106b257600080fd5b506106bb6111b0565b6040516106c8919061316a565b60405180910390f35b3480156106dd57600080fd5b506106e66111da565b6040516106f3919061316a565b60405180910390f35b34801561070857600080fd5b506107116111fe565b60405161071e91906130b6565b60405180910390f35b34801561073357600080fd5b5061073c611204565b6040516107499190612f49565b60405180910390f35b34801561075e57600080fd5b5061077960048036038101906107749190613245565b611296565b005b34801561078757600080fd5b506107a2600480360381019061079d9190613004565b6113af565b6040516107af919061305f565b60405180910390f35b3480156107c457600080fd5b506107df60048036038101906107da9190613004565b61149a565b6040516107ec919061305f565b60405180910390f35b34801561080157600080fd5b5061080a6114b8565b604051610817919061305f565b60405180910390f35b34801561082c57600080fd5b5061084760048036038101906108429190613245565b6114cb565b005b34801561085557600080fd5b5061085e6115f0565b60405161086b91906130b6565b60405180910390f35b34801561088057600080fd5b506108896115f6565b005b34801561089757600080fd5b506108b260048036038101906108ad9190613285565b6116b1565b6040516108bf919061305f565b60405180910390f35b3480156108d457600080fd5b506108ef60048036038101906108ea919061307a565b61173f565b6040516108fc919061305f565b60405180910390f35b34801561091157600080fd5b5061091a61175f565b60405161092791906130b6565b60405180910390f35b34801561093c57600080fd5b50610957600480360381019061095291906132b2565b611765565b60405161096491906130b6565b60405180910390f35b34801561097957600080fd5b506109826117ec565b60405161098f91906130b6565b60405180910390f35b3480156109a457600080fd5b506109ad6117f2565b6040516109ba91906130b6565b60405180910390f35b3480156109cf57600080fd5b506109d86117f8565b6040516109e591906130b6565b60405180910390f35b3480156109fa57600080fd5b50610a156004803603810190610a10919061307a565b6117fe565b005b348015610a2357600080fd5b50610a2c6118f6565b604051610a3991906130b6565b60405180910390f35b348015610a4e57600080fd5b50610a576118fc565b604051610a6491906130b6565b60405180910390f35b606060048054610a7c90613321565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa890613321565b8015610af55780601f10610aca57610100808354040283529160200191610af5565b820191906000526020600020905b815481529060010190602001808311610ad857829003601f168201915b5050505050905090565b6000610b13610b0c611902565b848461190a565b6001905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b6000610b54848484611ad5565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b9f611902565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c16906133c5565b60405180910390fd5b610c3385610c2b611902565b85840361190a565b60019150509392505050565b6000600360009054906101000a900460ff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d1e610c89611902565b848460016000610c97611902565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d199190613414565b61190a565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c60009054906101000a900460ff1681565b60135481565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60105481565b600c60029054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e02611902565b73ffffffffffffffffffffffffffffffffffffffff16610e206111b0565b73ffffffffffffffffffffffffffffffffffffffff1614610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d906134b6565b60405180910390fd5b83600e8190555082600f81905550600f54600e54610e949190613414565b600d819055508160118190555080601281905550601254601154610eb89190613414565b60108190555050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f14611902565b73ffffffffffffffffffffffffffffffffffffffff16610f326111b0565b73ffffffffffffffffffffffffffffffffffffffff1614610f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7f906134b6565b60405180910390fd5b610f926000612525565b565b610f9c611902565b73ffffffffffffffffffffffffffffffffffffffff16610fba6111b0565b73ffffffffffffffffffffffffffffffffffffffff1614611010576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611007906134b6565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b6000611037611902565b73ffffffffffffffffffffffffffffffffffffffff166110556111b0565b73ffffffffffffffffffffffffffffffffffffffff16146110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a2906134b6565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506001905090565b6110d5611902565b73ffffffffffffffffffffffffffffffffffffffff166110f36111b0565b73ffffffffffffffffffffffffffffffffffffffff1614611149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611140906134b6565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b60145481565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60125481565b60606005805461121390613321565b80601f016020809104026020016040519081016040528092919081815260200182805461123f90613321565b801561128c5780601f106112615761010080835404028352916020019161128c565b820191906000526020600020905b81548152906001019060200180831161126f57829003601f168201915b5050505050905090565b61129e611902565b73ffffffffffffffffffffffffffffffffffffffff166112bc6111b0565b73ffffffffffffffffffffffffffffffffffffffff1614611312576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611309906134b6565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139890613548565b60405180910390fd5b6113ab82826125eb565b5050565b600080600160006113be611902565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561147b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611472906135da565b60405180910390fd5b61148f611486611902565b8585840361190a565b600191505092915050565b60006114ae6114a7611902565b8484611ad5565b6001905092915050565b600c60019054906101000a900460ff1681565b6114d3611902565b73ffffffffffffffffffffffffffffffffffffffff166114f16111b0565b73ffffffffffffffffffffffffffffffffffffffff1614611547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153e906134b6565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516115e4919061305f565b60405180910390a25050565b60095481565b6115fe611902565b73ffffffffffffffffffffffffffffffffffffffff1661161c6111b0565b73ffffffffffffffffffffffffffffffffffffffff1614611672576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611669906134b6565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff02191690831515021790555043601581905550565b60006116bb611902565b73ffffffffffffffffffffffffffffffffffffffff166116d96111b0565b73ffffffffffffffffffffffffffffffffffffffff161461172f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611726906134b6565b60405180910390fd5b81600a8190555060019050919050565b60196020528060005260406000206000915054906101000a900460ff1681565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b60155481565b600e5481565b611806611902565b73ffffffffffffffffffffffffffffffffffffffff166118246111b0565b73ffffffffffffffffffffffffffffffffffffffff161461187a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611871906134b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e19061366c565b60405180910390fd5b6118f381612525565b50565b60115481565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561197a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611971906136fe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e190613790565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ac891906130b6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c90613822565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bac906138b4565b60405180910390fd5b6000811415611bcf57611bca8383600061268c565b612520565b600c60009054906101000a900460ff16156120ca57611bec6111b0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c5a5750611c2a6111b0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c935750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ccd575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ce65750600660149054906101000a900460ff16155b156120c957600c60019054906101000a900460ff16611de057601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611da05750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd690613920565b60405180910390fd5b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e835750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f2a57600954811115611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec4906139b2565b60405180910390fd5b600b54611ed983610ec4565b82611ee49190613414565b1115611f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1c90613a1e565b60405180910390fd5b6120c8565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611fcd5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561201c57600954811115612017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200e90613ab0565b60405180910390fd5b6120c7565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120c657600b5461207983610ec4565b826120849190613414565b11156120c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bc90613a1e565b60405180910390fd5b5b5b5b5b5b60006120d530610ec4565b90506000600a5482101590508080156120fa5750600c60029054906101000a900460ff165b80156121135750600660149054906101000a900460ff16155b80156121695750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121bf5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122155750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612259576001600660146101000a81548160ff02191690831515021790555061223d61290d565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061230f5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561231957600090505b6000811561251057601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561237c57506000601054115b15612408576064601054866123919190613ad0565b61239b9190613b59565b9050601054601154826123ae9190613ad0565b6123b89190613b59565b601360008282546123c99190613414565b92505081905550601054601254826123e19190613ad0565b6123eb9190613b59565b601460008282546123fc9190613414565b925050819055506124ec565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561246357506000600d54115b156124eb576064600d54866124789190613ad0565b6124829190613b59565b9050600d54600e54826124959190613ad0565b61249f9190613b59565b601360008282546124b09190613414565b92505081905550600d54600f54826124c89190613ad0565b6124d29190613b59565b601460008282546124e39190613414565b925050819055505b5b60008111156125015761250087308361268c565b5b808561250d9190613b8a565b94505b61251b87878761268c565b505050505b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f390613822565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561276c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612763906138b4565b60405180910390fd5b612777838383612b6d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156127fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f490613c30565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128909190613414565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128f491906130b6565b60405180910390a3612907848484612b72565b50505050565b600061291830610ec4565b9050600060145460135461292c9190613414565b905060008083148061293e5750600082145b1561294b57505050612b6b565b6014600a5461295a9190613ad0565b831115612973576014600a546129709190613ad0565b92505b6000600283601354866129869190613ad0565b6129909190613b59565b61299a9190613b59565b9050600081856129aa9190613b8a565b905060004790506129ba82612b77565b600081476129c89190613b8a565b9050600086601454836129db9190613ad0565b6129e59190613b59565b90506000600a6003836129f89190613ad0565b612a029190613b59565b905060008284612a129190613b8a565b905060006013819055506000601481905550600087118015612a345750600081115b15612a4457612a438782612db4565b5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612a8a90613c81565b60006040518083038185875af1925050503d8060008114612ac7576040519150601f19603f3d011682016040523d82523d6000602084013e612acc565b606091505b505080985050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612b1890613c81565b60006040518083038185875af1925050503d8060008114612b55576040519150601f19603f3d011682016040523d82523d6000602084013e612b5a565b606091505b505080985050505050505050505050505b565b505050565b505050565b6000600267ffffffffffffffff811115612b9457612b93613c96565b5b604051908082528060200260200182016040528015612bc25781602001602082028036833780820191505090505b5090503081600081518110612bda57612bd9613cc5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca39190613d09565b81600181518110612cb757612cb6613cc5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d1c307f00000000000000000000000000000000000000000000000000000000000000008461190a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d7e959493929190613e39565b600060405180830381600087803b158015612d9857600080fd5b505af1158015612dac573d6000803e3d6000fd5b505050505050565b612ddf307f00000000000000000000000000000000000000000000000000000000000000008461190a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612e6696959493929190613e93565b60606040518083038185885af1158015612e84573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ea99190613f09565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612eea578082015181840152602081019050612ecf565b83811115612ef9576000848401525b50505050565b6000601f19601f8301169050919050565b6000612f1b82612eb0565b612f258185612ebb565b9350612f35818560208601612ecc565b612f3e81612eff565b840191505092915050565b60006020820190508181036000830152612f638184612f10565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f9b82612f70565b9050919050565b612fab81612f90565b8114612fb657600080fd5b50565b600081359050612fc881612fa2565b92915050565b6000819050919050565b612fe181612fce565b8114612fec57600080fd5b50565b600081359050612ffe81612fd8565b92915050565b6000806040838503121561301b5761301a612f6b565b5b600061302985828601612fb9565b925050602061303a85828601612fef565b9150509250929050565b60008115159050919050565b61305981613044565b82525050565b60006020820190506130746000830184613050565b92915050565b6000602082840312156130905761308f612f6b565b5b600061309e84828501612fb9565b91505092915050565b6130b081612fce565b82525050565b60006020820190506130cb60008301846130a7565b92915050565b6000806000606084860312156130ea576130e9612f6b565b5b60006130f886828701612fb9565b935050602061310986828701612fb9565b925050604061311a86828701612fef565b9150509250925092565b600060ff82169050919050565b61313a81613124565b82525050565b60006020820190506131556000830184613131565b92915050565b61316481612f90565b82525050565b600060208201905061317f600083018461315b565b92915050565b6000806000806080858703121561319f5761319e612f6b565b5b60006131ad87828801612fef565b94505060206131be87828801612fef565b93505060406131cf87828801612fef565b92505060606131e087828801612fef565b91505092959194509250565b6131f581613044565b811461320057600080fd5b50565b600081359050613212816131ec565b92915050565b60006020828403121561322e5761322d612f6b565b5b600061323c84828501613203565b91505092915050565b6000806040838503121561325c5761325b612f6b565b5b600061326a85828601612fb9565b925050602061327b85828601613203565b9150509250929050565b60006020828403121561329b5761329a612f6b565b5b60006132a984828501612fef565b91505092915050565b600080604083850312156132c9576132c8612f6b565b5b60006132d785828601612fb9565b92505060206132e885828601612fb9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061333957607f821691505b6020821081141561334d5761334c6132f2565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006133af602883612ebb565b91506133ba82613353565b604082019050919050565b600060208201905081810360008301526133de816133a2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061341f82612fce565b915061342a83612fce565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561345f5761345e6133e5565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134a0602083612ebb565b91506134ab8261346a565b602082019050919050565b600060208201905081810360008301526134cf81613493565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f414d4d0000000000000000000000000000000000000000000000000000000000602082015250565b6000613532602383612ebb565b915061353d826134d6565b604082019050919050565b6000602082019050818103600083015261356181613525565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006135c4602583612ebb565b91506135cf82613568565b604082019050919050565b600060208201905081810360008301526135f3816135b7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613656602683612ebb565b9150613661826135fa565b604082019050919050565b6000602082019050818103600083015261368581613649565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006136e8602483612ebb565b91506136f38261368c565b604082019050919050565b60006020820190508181036000830152613717816136db565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061377a602283612ebb565b91506137858261371e565b604082019050919050565b600060208201905081810360008301526137a98161376d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061380c602583612ebb565b9150613817826137b0565b604082019050919050565b6000602082019050818103600083015261383b816137ff565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061389e602383612ebb565b91506138a982613842565b604082019050919050565b600060208201905081810360008301526138cd81613891565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061390a601683612ebb565b9150613915826138d4565b602082019050919050565b60006020820190508181036000830152613939816138fd565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061399c603583612ebb565b91506139a782613940565b604082019050919050565b600060208201905081810360008301526139cb8161398f565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613a08601383612ebb565b9150613a13826139d2565b602082019050919050565b60006020820190508181036000830152613a37816139fb565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613a9a603683612ebb565b9150613aa582613a3e565b604082019050919050565b60006020820190508181036000830152613ac981613a8d565b9050919050565b6000613adb82612fce565b9150613ae683612fce565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b1f57613b1e6133e5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b6482612fce565b9150613b6f83612fce565b925082613b7f57613b7e613b2a565b5b828204905092915050565b6000613b9582612fce565b9150613ba083612fce565b925082821015613bb357613bb26133e5565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613c1a602683612ebb565b9150613c2582613bbe565b604082019050919050565b60006020820190508181036000830152613c4981613c0d565b9050919050565b600081905092915050565b50565b6000613c6b600083613c50565b9150613c7682613c5b565b600082019050919050565b6000613c8c82613c5e565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d0381612fa2565b92915050565b600060208284031215613d1f57613d1e612f6b565b5b6000613d2d84828501613cf4565b91505092915050565b6000819050919050565b6000819050919050565b6000613d65613d60613d5b84613d36565b613d40565b612fce565b9050919050565b613d7581613d4a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613db081612f90565b82525050565b6000613dc28383613da7565b60208301905092915050565b6000602082019050919050565b6000613de682613d7b565b613df08185613d86565b9350613dfb83613d97565b8060005b83811015613e2c578151613e138882613db6565b9750613e1e83613dce565b925050600181019050613dff565b5085935050505092915050565b600060a082019050613e4e60008301886130a7565b613e5b6020830187613d6c565b8181036040830152613e6d8186613ddb565b9050613e7c606083018561315b565b613e8960808301846130a7565b9695505050505050565b600060c082019050613ea8600083018961315b565b613eb560208301886130a7565b613ec26040830187613d6c565b613ecf6060830186613d6c565b613edc608083018561315b565b613ee960a08301846130a7565b979650505050505050565b600081519050613f0381612fd8565b92915050565b600080600060608486031215613f2257613f21612f6b565b5b6000613f3086828701613ef4565b9350506020613f4186828701613ef4565b9250506040613f5286828701613ef4565b915050925092509256fea264697066735822122013f731d502eba6841eb281bd994af7ada56ba1dd24af90505acd6e1e12e7f52764736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c80638b27306d11610144578063c9567bf9116100b6578063e2f456051161007a578063e2f456051461096d578063ee40166e14610998578063f11a24d3146109c3578063f2fde38b146109ee578063f637434214610a17578063f8b45b0514610a4257610272565b8063c9567bf914610874578063d257b34f1461088b578063d65d7886146108c8578063d85ba06314610905578063dd62ed3e1461093057610272565b80639a7a23d6116101085780639a7a23d614610752578063a457c2d71461077b578063a9059cbb146107b8578063bbc0c742146107f5578063c024666814610820578063c8c8ebe41461084957610272565b80638b27306d1461067b5780638da5cb5b146106a6578063910a8e95146106d157806392136913146106fc57806395d89b411461072757610272565b80634fbee193116101dd57806370a08231116101a157806370a082311461057f578063715018a6146105bc57806371e65840146105d3578063751039fc146105fc5780637571336a146106275780637bce5a041461065057610272565b80634fbee193146104985780636a486a8e146104d55780636ac5eeee146105005780636c027fd61461052b5780636fcba3771461055657610272565b8063313ce5671161022f578063313ce5671461038457806338f7a867146103af57806339509351146103da57806349bd5a5e146104175780634a62bb65146104425780634b8ce6021461046d57610272565b806306fdde0314610277578063095ea7b3146102a257806310d5de53146102df57806318160ddd1461031c57806323b872dd1461034757610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a6d565b6040516102999190612f49565b60405180910390f35b3480156102ae57600080fd5b506102c960048036038101906102c49190613004565b610aff565b6040516102d6919061305f565b60405180910390f35b3480156102eb57600080fd5b506103066004803603810190610301919061307a565b610b1d565b604051610313919061305f565b60405180910390f35b34801561032857600080fd5b50610331610b3d565b60405161033e91906130b6565b60405180910390f35b34801561035357600080fd5b5061036e600480360381019061036991906130d1565b610b47565b60405161037b919061305f565b60405180910390f35b34801561039057600080fd5b50610399610c3f565b6040516103a69190613140565b60405180910390f35b3480156103bb57600080fd5b506103c4610c56565b6040516103d1919061316a565b60405180910390f35b3480156103e657600080fd5b5061040160048036038101906103fc9190613004565b610c7c565b60405161040e919061305f565b60405180910390f35b34801561042357600080fd5b5061042c610d28565b604051610439919061316a565b60405180910390f35b34801561044e57600080fd5b50610457610d4c565b604051610464919061305f565b60405180910390f35b34801561047957600080fd5b50610482610d5f565b60405161048f91906130b6565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba919061307a565b610d65565b6040516104cc919061305f565b60405180910390f35b3480156104e157600080fd5b506104ea610dbb565b6040516104f791906130b6565b60405180910390f35b34801561050c57600080fd5b50610515610dc1565b604051610522919061305f565b60405180910390f35b34801561053757600080fd5b50610540610dd4565b60405161054d919061316a565b60405180910390f35b34801561056257600080fd5b5061057d60048036038101906105789190613185565b610dfa565b005b34801561058b57600080fd5b506105a660048036038101906105a1919061307a565b610ec4565b6040516105b391906130b6565b60405180910390f35b3480156105c857600080fd5b506105d1610f0c565b005b3480156105df57600080fd5b506105fa60048036038101906105f59190613218565b610f94565b005b34801561060857600080fd5b5061061161102d565b60405161061e919061305f565b60405180910390f35b34801561063357600080fd5b5061064e60048036038101906106499190613245565b6110cd565b005b34801561065c57600080fd5b506106656111a4565b60405161067291906130b6565b60405180910390f35b34801561068757600080fd5b506106906111aa565b60405161069d91906130b6565b60405180910390f35b3480156106b257600080fd5b506106bb6111b0565b6040516106c8919061316a565b60405180910390f35b3480156106dd57600080fd5b506106e66111da565b6040516106f3919061316a565b60405180910390f35b34801561070857600080fd5b506107116111fe565b60405161071e91906130b6565b60405180910390f35b34801561073357600080fd5b5061073c611204565b6040516107499190612f49565b60405180910390f35b34801561075e57600080fd5b5061077960048036038101906107749190613245565b611296565b005b34801561078757600080fd5b506107a2600480360381019061079d9190613004565b6113af565b6040516107af919061305f565b60405180910390f35b3480156107c457600080fd5b506107df60048036038101906107da9190613004565b61149a565b6040516107ec919061305f565b60405180910390f35b34801561080157600080fd5b5061080a6114b8565b604051610817919061305f565b60405180910390f35b34801561082c57600080fd5b5061084760048036038101906108429190613245565b6114cb565b005b34801561085557600080fd5b5061085e6115f0565b60405161086b91906130b6565b60405180910390f35b34801561088057600080fd5b506108896115f6565b005b34801561089757600080fd5b506108b260048036038101906108ad9190613285565b6116b1565b6040516108bf919061305f565b60405180910390f35b3480156108d457600080fd5b506108ef60048036038101906108ea919061307a565b61173f565b6040516108fc919061305f565b60405180910390f35b34801561091157600080fd5b5061091a61175f565b60405161092791906130b6565b60405180910390f35b34801561093c57600080fd5b50610957600480360381019061095291906132b2565b611765565b60405161096491906130b6565b60405180910390f35b34801561097957600080fd5b506109826117ec565b60405161098f91906130b6565b60405180910390f35b3480156109a457600080fd5b506109ad6117f2565b6040516109ba91906130b6565b60405180910390f35b3480156109cf57600080fd5b506109d86117f8565b6040516109e591906130b6565b60405180910390f35b3480156109fa57600080fd5b50610a156004803603810190610a10919061307a565b6117fe565b005b348015610a2357600080fd5b50610a2c6118f6565b604051610a3991906130b6565b60405180910390f35b348015610a4e57600080fd5b50610a576118fc565b604051610a6491906130b6565b60405180910390f35b606060048054610a7c90613321565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa890613321565b8015610af55780601f10610aca57610100808354040283529160200191610af5565b820191906000526020600020905b815481529060010190602001808311610ad857829003601f168201915b5050505050905090565b6000610b13610b0c611902565b848461190a565b6001905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b6000610b54848484611ad5565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b9f611902565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c16906133c5565b60405180910390fd5b610c3385610c2b611902565b85840361190a565b60019150509392505050565b6000600360009054906101000a900460ff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d1e610c89611902565b848460016000610c97611902565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d199190613414565b61190a565b6001905092915050565b7f000000000000000000000000e33d0c4cc2a694e9637002da628d94af860cf82381565b600c60009054906101000a900460ff1681565b60135481565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60105481565b600c60029054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e02611902565b73ffffffffffffffffffffffffffffffffffffffff16610e206111b0565b73ffffffffffffffffffffffffffffffffffffffff1614610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d906134b6565b60405180910390fd5b83600e8190555082600f81905550600f54600e54610e949190613414565b600d819055508160118190555080601281905550601254601154610eb89190613414565b60108190555050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f14611902565b73ffffffffffffffffffffffffffffffffffffffff16610f326111b0565b73ffffffffffffffffffffffffffffffffffffffff1614610f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7f906134b6565b60405180910390fd5b610f926000612525565b565b610f9c611902565b73ffffffffffffffffffffffffffffffffffffffff16610fba6111b0565b73ffffffffffffffffffffffffffffffffffffffff1614611010576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611007906134b6565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b6000611037611902565b73ffffffffffffffffffffffffffffffffffffffff166110556111b0565b73ffffffffffffffffffffffffffffffffffffffff16146110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a2906134b6565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506001905090565b6110d5611902565b73ffffffffffffffffffffffffffffffffffffffff166110f36111b0565b73ffffffffffffffffffffffffffffffffffffffff1614611149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611140906134b6565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b60145481565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000229c26937c29d78fbb93eadd514559c791c3979481565b60125481565b60606005805461121390613321565b80601f016020809104026020016040519081016040528092919081815260200182805461123f90613321565b801561128c5780601f106112615761010080835404028352916020019161128c565b820191906000526020600020905b81548152906001019060200180831161126f57829003601f168201915b5050505050905090565b61129e611902565b73ffffffffffffffffffffffffffffffffffffffff166112bc6111b0565b73ffffffffffffffffffffffffffffffffffffffff1614611312576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611309906134b6565b60405180910390fd5b7f000000000000000000000000e33d0c4cc2a694e9637002da628d94af860cf82373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139890613548565b60405180910390fd5b6113ab82826125eb565b5050565b600080600160006113be611902565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561147b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611472906135da565b60405180910390fd5b61148f611486611902565b8585840361190a565b600191505092915050565b60006114ae6114a7611902565b8484611ad5565b6001905092915050565b600c60019054906101000a900460ff1681565b6114d3611902565b73ffffffffffffffffffffffffffffffffffffffff166114f16111b0565b73ffffffffffffffffffffffffffffffffffffffff1614611547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153e906134b6565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516115e4919061305f565b60405180910390a25050565b60095481565b6115fe611902565b73ffffffffffffffffffffffffffffffffffffffff1661161c6111b0565b73ffffffffffffffffffffffffffffffffffffffff1614611672576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611669906134b6565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff02191690831515021790555043601581905550565b60006116bb611902565b73ffffffffffffffffffffffffffffffffffffffff166116d96111b0565b73ffffffffffffffffffffffffffffffffffffffff161461172f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611726906134b6565b60405180910390fd5b81600a8190555060019050919050565b60196020528060005260406000206000915054906101000a900460ff1681565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b60155481565b600e5481565b611806611902565b73ffffffffffffffffffffffffffffffffffffffff166118246111b0565b73ffffffffffffffffffffffffffffffffffffffff161461187a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611871906134b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e19061366c565b60405180910390fd5b6118f381612525565b50565b60115481565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561197a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611971906136fe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e190613790565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ac891906130b6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c90613822565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bac906138b4565b60405180910390fd5b6000811415611bcf57611bca8383600061268c565b612520565b600c60009054906101000a900460ff16156120ca57611bec6111b0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c5a5750611c2a6111b0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c935750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ccd575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ce65750600660149054906101000a900460ff16155b156120c957600c60019054906101000a900460ff16611de057601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611da05750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd690613920565b60405180910390fd5b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e835750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f2a57600954811115611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec4906139b2565b60405180910390fd5b600b54611ed983610ec4565b82611ee49190613414565b1115611f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1c90613a1e565b60405180910390fd5b6120c8565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611fcd5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561201c57600954811115612017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200e90613ab0565b60405180910390fd5b6120c7565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120c657600b5461207983610ec4565b826120849190613414565b11156120c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bc90613a1e565b60405180910390fd5b5b5b5b5b5b60006120d530610ec4565b90506000600a5482101590508080156120fa5750600c60029054906101000a900460ff165b80156121135750600660149054906101000a900460ff16155b80156121695750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121bf5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122155750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612259576001600660146101000a81548160ff02191690831515021790555061223d61290d565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061230f5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561231957600090505b6000811561251057601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561237c57506000601054115b15612408576064601054866123919190613ad0565b61239b9190613b59565b9050601054601154826123ae9190613ad0565b6123b89190613b59565b601360008282546123c99190613414565b92505081905550601054601254826123e19190613ad0565b6123eb9190613b59565b601460008282546123fc9190613414565b925050819055506124ec565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561246357506000600d54115b156124eb576064600d54866124789190613ad0565b6124829190613b59565b9050600d54600e54826124959190613ad0565b61249f9190613b59565b601360008282546124b09190613414565b92505081905550600d54600f54826124c89190613ad0565b6124d29190613b59565b601460008282546124e39190613414565b925050819055505b5b60008111156125015761250087308361268c565b5b808561250d9190613b8a565b94505b61251b87878761268c565b505050505b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f390613822565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561276c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612763906138b4565b60405180910390fd5b612777838383612b6d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156127fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f490613c30565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128909190613414565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128f491906130b6565b60405180910390a3612907848484612b72565b50505050565b600061291830610ec4565b9050600060145460135461292c9190613414565b905060008083148061293e5750600082145b1561294b57505050612b6b565b6014600a5461295a9190613ad0565b831115612973576014600a546129709190613ad0565b92505b6000600283601354866129869190613ad0565b6129909190613b59565b61299a9190613b59565b9050600081856129aa9190613b8a565b905060004790506129ba82612b77565b600081476129c89190613b8a565b9050600086601454836129db9190613ad0565b6129e59190613b59565b90506000600a6003836129f89190613ad0565b612a029190613b59565b905060008284612a129190613b8a565b905060006013819055506000601481905550600087118015612a345750600081115b15612a4457612a438782612db4565b5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612a8a90613c81565b60006040518083038185875af1925050503d8060008114612ac7576040519150601f19603f3d011682016040523d82523d6000602084013e612acc565b606091505b505080985050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612b1890613c81565b60006040518083038185875af1925050503d8060008114612b55576040519150601f19603f3d011682016040523d82523d6000602084013e612b5a565b606091505b505080985050505050505050505050505b565b505050565b505050565b6000600267ffffffffffffffff811115612b9457612b93613c96565b5b604051908082528060200260200182016040528015612bc25781602001602082028036833780820191505090505b5090503081600081518110612bda57612bd9613cc5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca39190613d09565b81600181518110612cb757612cb6613cc5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d1c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461190a565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d7e959493929190613e39565b600060405180830381600087803b158015612d9857600080fd5b505af1158015612dac573d6000803e3d6000fd5b505050505050565b612ddf307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461190a565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612e6696959493929190613e93565b60606040518083038185885af1158015612e84573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ea99190613f09565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612eea578082015181840152602081019050612ecf565b83811115612ef9576000848401525b50505050565b6000601f19601f8301169050919050565b6000612f1b82612eb0565b612f258185612ebb565b9350612f35818560208601612ecc565b612f3e81612eff565b840191505092915050565b60006020820190508181036000830152612f638184612f10565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f9b82612f70565b9050919050565b612fab81612f90565b8114612fb657600080fd5b50565b600081359050612fc881612fa2565b92915050565b6000819050919050565b612fe181612fce565b8114612fec57600080fd5b50565b600081359050612ffe81612fd8565b92915050565b6000806040838503121561301b5761301a612f6b565b5b600061302985828601612fb9565b925050602061303a85828601612fef565b9150509250929050565b60008115159050919050565b61305981613044565b82525050565b60006020820190506130746000830184613050565b92915050565b6000602082840312156130905761308f612f6b565b5b600061309e84828501612fb9565b91505092915050565b6130b081612fce565b82525050565b60006020820190506130cb60008301846130a7565b92915050565b6000806000606084860312156130ea576130e9612f6b565b5b60006130f886828701612fb9565b935050602061310986828701612fb9565b925050604061311a86828701612fef565b9150509250925092565b600060ff82169050919050565b61313a81613124565b82525050565b60006020820190506131556000830184613131565b92915050565b61316481612f90565b82525050565b600060208201905061317f600083018461315b565b92915050565b6000806000806080858703121561319f5761319e612f6b565b5b60006131ad87828801612fef565b94505060206131be87828801612fef565b93505060406131cf87828801612fef565b92505060606131e087828801612fef565b91505092959194509250565b6131f581613044565b811461320057600080fd5b50565b600081359050613212816131ec565b92915050565b60006020828403121561322e5761322d612f6b565b5b600061323c84828501613203565b91505092915050565b6000806040838503121561325c5761325b612f6b565b5b600061326a85828601612fb9565b925050602061327b85828601613203565b9150509250929050565b60006020828403121561329b5761329a612f6b565b5b60006132a984828501612fef565b91505092915050565b600080604083850312156132c9576132c8612f6b565b5b60006132d785828601612fb9565b92505060206132e885828601612fb9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061333957607f821691505b6020821081141561334d5761334c6132f2565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006133af602883612ebb565b91506133ba82613353565b604082019050919050565b600060208201905081810360008301526133de816133a2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061341f82612fce565b915061342a83612fce565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561345f5761345e6133e5565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134a0602083612ebb565b91506134ab8261346a565b602082019050919050565b600060208201905081810360008301526134cf81613493565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f414d4d0000000000000000000000000000000000000000000000000000000000602082015250565b6000613532602383612ebb565b915061353d826134d6565b604082019050919050565b6000602082019050818103600083015261356181613525565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006135c4602583612ebb565b91506135cf82613568565b604082019050919050565b600060208201905081810360008301526135f3816135b7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613656602683612ebb565b9150613661826135fa565b604082019050919050565b6000602082019050818103600083015261368581613649565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006136e8602483612ebb565b91506136f38261368c565b604082019050919050565b60006020820190508181036000830152613717816136db565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061377a602283612ebb565b91506137858261371e565b604082019050919050565b600060208201905081810360008301526137a98161376d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061380c602583612ebb565b9150613817826137b0565b604082019050919050565b6000602082019050818103600083015261383b816137ff565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061389e602383612ebb565b91506138a982613842565b604082019050919050565b600060208201905081810360008301526138cd81613891565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061390a601683612ebb565b9150613915826138d4565b602082019050919050565b60006020820190508181036000830152613939816138fd565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061399c603583612ebb565b91506139a782613940565b604082019050919050565b600060208201905081810360008301526139cb8161398f565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613a08601383612ebb565b9150613a13826139d2565b602082019050919050565b60006020820190508181036000830152613a37816139fb565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613a9a603683612ebb565b9150613aa582613a3e565b604082019050919050565b60006020820190508181036000830152613ac981613a8d565b9050919050565b6000613adb82612fce565b9150613ae683612fce565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b1f57613b1e6133e5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b6482612fce565b9150613b6f83612fce565b925082613b7f57613b7e613b2a565b5b828204905092915050565b6000613b9582612fce565b9150613ba083612fce565b925082821015613bb357613bb26133e5565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613c1a602683612ebb565b9150613c2582613bbe565b604082019050919050565b60006020820190508181036000830152613c4981613c0d565b9050919050565b600081905092915050565b50565b6000613c6b600083613c50565b9150613c7682613c5b565b600082019050919050565b6000613c8c82613c5e565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d0381612fa2565b92915050565b600060208284031215613d1f57613d1e612f6b565b5b6000613d2d84828501613cf4565b91505092915050565b6000819050919050565b6000819050919050565b6000613d65613d60613d5b84613d36565b613d40565b612fce565b9050919050565b613d7581613d4a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613db081612f90565b82525050565b6000613dc28383613da7565b60208301905092915050565b6000602082019050919050565b6000613de682613d7b565b613df08185613d86565b9350613dfb83613d97565b8060005b83811015613e2c578151613e138882613db6565b9750613e1e83613dce565b925050600181019050613dff565b5085935050505092915050565b600060a082019050613e4e60008301886130a7565b613e5b6020830187613d6c565b8181036040830152613e6d8186613ddb565b9050613e7c606083018561315b565b613e8960808301846130a7565b9695505050505050565b600060c082019050613ea8600083018961315b565b613eb560208301886130a7565b613ec26040830187613d6c565b613ecf6060830186613d6c565b613edc608083018561315b565b613ee960a08301846130a7565b979650505050505050565b600081519050613f0381612fd8565b92915050565b600080600060608486031215613f2257613f21612f6b565b5b6000613f3086828701613ef4565b9350506020613f4186828701613ef4565b9250506040613f5286828701613ef4565b915050925092509256fea264697066735822122013f731d502eba6841eb281bd994af7ada56ba1dd24af90505acd6e1e12e7f52764736f6c634300080a0033

Deployed Bytecode Sourcemap

12324:12208:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2678:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3599:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13399:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3006:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3776:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2898:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12646:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4276:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12485:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12797:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13134:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18250:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13024:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12877;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12607:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16385:457;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3122:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;807:103;;;;;;;;;;;;;:::i;:::-;;17504:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16851:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17241:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12985:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13171;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;584:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12530:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13097:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2786:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17786:282;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4499:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3257:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12837:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17596:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12682:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16226:151;;;;;;;;;;;;;:::i;:::-;;17042:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13620:35;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12914:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3440:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12724:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13208;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12948:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;918:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13059:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12764:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2678:100;2732:13;2765:5;2758:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2678:100;:::o;3599:169::-;3682:4;3699:39;3708:12;:10;:12::i;:::-;3722:7;3731:6;3699:8;:39::i;:::-;3756:4;3749:11;;3599:169;;;;:::o;13399:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;3006:108::-;3067:7;3094:12;;3087:19;;3006:108;:::o;3776:492::-;3916:4;3933:36;3943:6;3951:9;3962:6;3933:9;:36::i;:::-;3982:24;4009:11;:19;4021:6;4009:19;;;;;;;;;;;;;;;:33;4029:12;:10;:12::i;:::-;4009:33;;;;;;;;;;;;;;;;3982:60;;4081:6;4061:16;:26;;4053:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4168:57;4177:6;4185:12;:10;:12::i;:::-;4218:6;4199:16;:25;4168:8;:57::i;:::-;4256:4;4249:11;;;3776:492;;;;;:::o;2898:100::-;2956:5;2981:9;;;;;;;;;;;2974:16;;2898:100;:::o;12646:26::-;;;;;;;;;;;;;:::o;4276:215::-;4364:4;4381:80;4390:12;:10;:12::i;:::-;4404:7;4450:10;4413:11;:25;4425:12;:10;:12::i;:::-;4413:25;;;;;;;;;;;;;;;:34;4439:7;4413:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4381:8;:80::i;:::-;4479:4;4472:11;;4276:215;;;;:::o;12485:38::-;;;:::o;12797:33::-;;;;;;;;;;;;;:::o;13134:30::-;;;;:::o;18250:126::-;18316:4;18340:19;:28;18360:7;18340:28;;;;;;;;;;;;;;;;;;;;;;;;;18333:35;;18250:126;;;:::o;13024:28::-;;;;:::o;12877:::-;;;;;;;;;;;;;:::o;12607:32::-;;;;;;;;;;;;;:::o;16385:457::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16556:16:::1;16538:15;:34;;;;16601:16;16583:15;:34;;;;16661:15;;16643;;:33;;;;:::i;:::-;16628:12;:48;;;;16708:17;16689:16;:36;;;;16755:17;16736:16;:36;;;;16818:16;;16799;;:35;;;;:::i;:::-;16783:13;:51;;;;16385:457:::0;;;;:::o;3122:127::-;3196:7;3223:9;:18;3233:7;3223:18;;;;;;;;;;;;;;;;3216:25;;3122:127;;;:::o;807:103::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;872:30:::1;899:1;872:18;:30::i;:::-;807:103::o:0;17504:84::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17578:2:::1;17567:8;;:13;;;;;;;;;;;;;;;;;;17504:84:::0;:::o;16851:121::-;16903:4;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16937:5:::1;16920:14;;:22;;;;;;;;;;;;;;;;;;16960:4;16953:11;;16851:121:::0;:::o;17241:167::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17396:4:::1;17354:31;:39;17386:6;17354:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17241:167:::0;;:::o;12985:30::-;;;;:::o;13171:::-;;;;:::o;584:87::-;630:7;657:6;;;;;;;;;;;650:13;;584:87;:::o;12530:38::-;;;:::o;13097:31::-;;;;:::o;2786:104::-;2842:13;2875:7;2868:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2786:104;:::o;17786:282::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17930:13:::1;17922:21;;:4;:21;;;;17900:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;18019:41;18048:4;18054:5;18019:28;:41::i;:::-;17786:282:::0;;:::o;4499:413::-;4592:4;4609:24;4636:11;:25;4648:12;:10;:12::i;:::-;4636:25;;;;;;;;;;;;;;;:34;4662:7;4636:34;;;;;;;;;;;;;;;;4609:61;;4709:15;4689:16;:35;;4681:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4802:67;4811:12;:10;:12::i;:::-;4825:7;4853:15;4834:16;:34;4802:8;:67::i;:::-;4900:4;4893:11;;;4499:413;;;;:::o;3257:175::-;3343:4;3360:42;3370:12;:10;:12::i;:::-;3384:9;3395:6;3360:9;:42::i;:::-;3420:4;3413:11;;3257:175;;;;:::o;12837:33::-;;;;;;;;;;;;;:::o;17596:182::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17712:8:::1;17681:19;:28;17701:7;17681:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17752:7;17736:34;;;17761:8;17736:34;;;;;;:::i;:::-;;;;;;;;17596:182:::0;;:::o;12682:35::-;;;;:::o;16226:151::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16295:4:::1;16279:13;;:20;;;;;;;;;;;;;;;;;;16321:4;16310:8;;:15;;;;;;;;;;;;;;;;;;16357:12;16336:18;:33;;;;16226:151::o:0;17042:190::-;17150:4;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17193:9:::1;17172:18;:30;;;;17220:4;17213:11;;17042:190:::0;;;:::o;13620:35::-;;;;;;;;;;;;;;;;;;;;;;:::o;12914:27::-;;;;:::o;3440:151::-;3529:7;3556:11;:18;3568:5;3556:18;;;;;;;;;;;;;;;:27;3575:7;3556:27;;;;;;;;;;;;;;;;3549:34;;3440:151;;;;:::o;12724:33::-;;;;:::o;13208:::-;;;;:::o;12948:30::-;;;;:::o;918:201::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1027:1:::1;1007:22;;:8;:22;;;;999:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1083:28;1102:8;1083:18;:28::i;:::-;918:201:::0;:::o;13059:31::-;;;;:::o;12764:24::-;;;;:::o;130:98::-;183:7;210:10;203:17;;130:98;:::o;6667:380::-;6820:1;6803:19;;:5;:19;;;;6795:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6901:1;6882:21;;:7;:21;;;;6874:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6985:6;6955:11;:18;6967:5;6955:18;;;;;;;;;;;;;;;:27;6974:7;6955:27;;;;;;;;;;;;;;;:36;;;;7023:7;7007:32;;7016:5;7007:32;;;7032:6;7007:32;;;;;;:::i;:::-;;;;;;;;6667:380;;;:::o;18384:3665::-;18532:1;18516:18;;:4;:18;;;;18508:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18609:1;18595:16;;:2;:16;;;;18587:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18678:1;18668:6;:11;18664:93;;;18696:28;18712:4;18718:2;18722:1;18696:15;:28::i;:::-;18739:7;;18664:93;18773:14;;;;;;;;;;;18769:1650;;;18834:7;:5;:7::i;:::-;18826:15;;:4;:15;;;;:49;;;;;18868:7;:5;:7::i;:::-;18862:13;;:2;:13;;;;18826:49;:86;;;;;18910:1;18896:16;;:2;:16;;;;18826:86;:128;;;;;18947:6;18933:21;;:2;:21;;;;18826:128;:158;;;;;18976:8;;;;;;;;;;;18975:9;18826:158;18804:1604;;;19024:13;;;;;;;;;;;19019:223;;19096:19;:25;19116:4;19096:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19125:19;:23;19145:2;19125:23;;;;;;;;;;;;;;;;;;;;;;;;;19096:52;19062:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;19019:223;19316:3;:9;19320:4;19316:9;;;;;;;;;;;;;;;;;;;;;;;;;:70;;;;;19351:31;:35;19383:2;19351:35;;;;;;;;;;;;;;;;;;;;;;;;;19350:36;19316:70;19290:1103;;;19473:20;;19463:6;:30;;19429:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;19681:9;;19664:13;19674:2;19664:9;:13::i;:::-;19655:6;:22;;;;:::i;:::-;:35;;19621:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;19290:1103;;;19859:3;:7;19863:2;19859:7;;;;;;;;;;;;;;;;;;;;;;;;;:70;;;;;19892:31;:37;19924:4;19892:37;;;;;;;;;;;;;;;;;;;;;;;;;19891:38;19859:70;19833:560;;;20016:20;;20006:6;:30;;19972:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;19833:560;;;20173:31;:35;20205:2;20173:35;;;;;;;;;;;;;;;;;;;;;;;;;20168:225;;20293:9;;20276:13;20286:2;20276:9;:13::i;:::-;20267:6;:22;;;;:::i;:::-;:35;;20233:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;20168:225;19833:560;19290:1103;18804:1604;18769:1650;20431:28;20462:24;20480:4;20462:9;:24::i;:::-;20431:55;;20499:12;20538:18;;20514:20;:42;;20499:57;;20587:7;:32;;;;;20611:8;;;;;;;;;;;20587:32;:58;;;;;20637:8;;;;;;;;;;;20636:9;20587:58;:85;;;;;20663:3;:9;20667:4;20663:9;;;;;;;;;;;;;;;;;;;;;;;;;20662:10;20587:85;:128;;;;;20690:19;:25;20710:4;20690:25;;;;;;;;;;;;;;;;;;;;;;;;;20689:26;20587:128;:169;;;;;20733:19;:23;20753:2;20733:23;;;;;;;;;;;;;;;;;;;;;;;;;20732:24;20587:169;20569:299;;;20794:4;20783:8;;:15;;;;;;;;;;;;;;;;;;20815:8;:6;:8::i;:::-;20851:5;20840:8;;:16;;;;;;;;;;;;;;;;;;20569:299;20880:12;20896:8;;;;;;;;;;;20895:9;20880:24;;21006:19;:25;21026:4;21006:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21035:19;:23;21055:2;21035:23;;;;;;;;;;;;;;;;;;;;;;;;;21006:52;21002:100;;;21085:5;21075:15;;21002:100;21114:12;21219:7;21215:781;;;21273:3;:7;21277:2;21273:7;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;;21300:1;21284:13;;:17;21273:28;21269:578;;;21354:3;21338:13;;21329:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;21322:35;;21423:13;;21403:16;;21396:4;:23;;;;:::i;:::-;21395:41;;;;:::i;:::-;21376:15;;:60;;;;;;;:::i;:::-;;;;;;;;21502:13;;21482:16;;21475:4;:23;;;;:::i;:::-;21474:41;;;;:::i;:::-;21455:15;;:60;;;;;;;:::i;:::-;;;;;;;;21269:578;;;21593:3;:9;21597:4;21593:9;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;;21621:1;21606:12;;:16;21593:29;21589:258;;;21674:3;21659:12;;21650:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;21643:34;;21742:12;;21723:15;;21716:4;:22;;;;:::i;:::-;21715:39;;;;:::i;:::-;21696:15;;:58;;;;;;;:::i;:::-;;;;;;;;21819:12;;21800:15;;21793:4;:22;;;;:::i;:::-;21792:39;;;;:::i;:::-;21773:15;;:58;;;;;;;:::i;:::-;;;;;;;;21589:258;21269:578;21874:1;21867:4;:8;21863:91;;;21896:42;21912:4;21926;21933;21896:15;:42::i;:::-;21863:91;21980:4;21970:14;;;;;:::i;:::-;;;21215:781;22008:33;22024:4;22030:2;22034:6;22008:15;:33::i;:::-;18497:3552;;;;18384:3665;;;;:::o;1125:191::-;1199:16;1218:6;;;;;;;;;;;1199:25;;1244:8;1235:6;;:17;;;;;;;;;;;;;;;;;;1299:8;1268:40;;1289:8;1268:40;;;;;;;;;;;;1188:128;1125:191;:::o;18076:166::-;18171:5;18159:3;:9;18163:4;18159:9;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;18228:5;18194:40;;18222:4;18194:40;;;;;;;;;;;;18076:166;;:::o;4920:733::-;5078:1;5060:20;;:6;:20;;;;5052:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5162:1;5141:23;;:9;:23;;;;5133:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5217:47;5238:6;5246:9;5257:6;5217:20;:47::i;:::-;5277:21;5301:9;:17;5311:6;5301:17;;;;;;;;;;;;;;;;5277:41;;5354:6;5337:13;:23;;5329:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5475:6;5459:13;:22;5439:9;:17;5449:6;5439:17;;;;;;;;;;;;;;;:42;;;;5527:6;5503:9;:20;5513:9;5503:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5568:9;5551:35;;5560:6;5551:35;;;5579:6;5551:35;;;;;;:::i;:::-;;;;;;;;5599:46;5619:6;5627:9;5638:6;5599:19;:46::i;:::-;5041:612;4920:733;;;:::o;23092:1437::-;23129:23;23155:24;23173:4;23155:9;:24::i;:::-;23129:50;;23190:25;23236:15;;23218;;:33;;;;:::i;:::-;23190:61;;23262:12;23310:1;23291:15;:20;:46;;;;23336:1;23315:17;:22;23291:46;23287:85;;;23354:7;;;;;23287:85;23427:2;23406:18;;:23;;;;:::i;:::-;23388:15;:41;23384:115;;;23485:2;23464:18;;:23;;;;:::i;:::-;23446:41;;23384:115;23560:26;23647:1;23627:17;23608:15;;23590;:33;;;;:::i;:::-;23589:55;;;;:::i;:::-;:59;;;;:::i;:::-;23560:88;;23659:26;23706:18;23688:15;:36;;;;:::i;:::-;23659:65;;23737:25;23765:21;23737:49;;23799:30;23810:18;23799:10;:30::i;:::-;23842:18;23887:17;23863:21;:41;;;;:::i;:::-;23842:62;;23918:20;23972:17;23954:15;;23941:10;:28;;;;:::i;:::-;:48;;;;:::i;:::-;23918:71;;24000:19;24041:2;24037:1;24022:12;:16;;;;:::i;:::-;:21;;;;:::i;:::-;24000:43;;24056:20;24092:12;24079:10;:25;;;;:::i;:::-;24056:48;;24135:1;24117:15;:19;;;;24165:1;24147:15;:19;;;;24204:1;24183:18;:22;:42;;;;;24224:1;24209:12;:16;24183:42;24179:121;;;24242:46;24255:18;24275:12;24242;:46::i;:::-;24179:121;24390:11;;;;;;;;;;;24382:25;;24415:11;24382:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24368:63;;;;;24464:17;;;;;;;;;;;24456:31;;24495:21;24456:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24442:79;;;;;23118:1411;;;;;;;;;;23092:1437;:::o;7055:125::-;;;;:::o;7188:124::-;;;;:::o;22057:496::-;22117:21;22155:1;22141:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22117:40;;22186:4;22168;22173:1;22168:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22212:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22202:4;22207:1;22202:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;22247:62;22264:4;22279:15;22297:11;22247:8;:62::i;:::-;22348:15;:66;;;22429:11;22455:1;22472:4;22499;22519:15;22348:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22106:447;22057:496;:::o;22561:523::-;22709:62;22726:4;22741:15;22759:11;22709:8;:62::i;:::-;22814:15;:31;;;22853:9;22886:4;22906:11;22932:1;22975;23018:17;;;;;;;;;;;23050:15;22814:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22561:523;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:619::-;4258:6;4266;4274;4323:2;4311:9;4302:7;4298:23;4294:32;4291:119;;;4329:79;;:::i;:::-;4291:119;4449:1;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;:::i;:::-;4464:63;;4420:117;4576:2;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4547:118;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4181:619;;;;;:::o;4806:86::-;4841:7;4881:4;4874:5;4870:16;4859:27;;4806:86;;;:::o;4898:112::-;4981:22;4997:5;4981:22;:::i;:::-;4976:3;4969:35;4898:112;;:::o;5016:214::-;5105:4;5143:2;5132:9;5128:18;5120:26;;5156:67;5220:1;5209:9;5205:17;5196:6;5156:67;:::i;:::-;5016:214;;;;:::o;5236:118::-;5323:24;5341:5;5323:24;:::i;:::-;5318:3;5311:37;5236:118;;:::o;5360:222::-;5453:4;5491:2;5480:9;5476:18;5468:26;;5504:71;5572:1;5561:9;5557:17;5548:6;5504:71;:::i;:::-;5360:222;;;;:::o;5588:765::-;5674:6;5682;5690;5698;5747:3;5735:9;5726:7;5722:23;5718:33;5715:120;;;5754:79;;:::i;:::-;5715:120;5874:1;5899:53;5944:7;5935:6;5924:9;5920:22;5899:53;:::i;:::-;5889:63;;5845:117;6001:2;6027:53;6072:7;6063:6;6052:9;6048:22;6027:53;:::i;:::-;6017:63;;5972:118;6129:2;6155:53;6200:7;6191:6;6180:9;6176:22;6155:53;:::i;:::-;6145:63;;6100:118;6257:2;6283:53;6328:7;6319:6;6308:9;6304:22;6283:53;:::i;:::-;6273:63;;6228:118;5588:765;;;;;;;:::o;6359:116::-;6429:21;6444:5;6429:21;:::i;:::-;6422:5;6419:32;6409:60;;6465:1;6462;6455:12;6409:60;6359:116;:::o;6481:133::-;6524:5;6562:6;6549:20;6540:29;;6578:30;6602:5;6578:30;:::i;:::-;6481:133;;;;:::o;6620:323::-;6676:6;6725:2;6713:9;6704:7;6700:23;6696:32;6693:119;;;6731:79;;:::i;:::-;6693:119;6851:1;6876:50;6918:7;6909:6;6898:9;6894:22;6876:50;:::i;:::-;6866:60;;6822:114;6620:323;;;;:::o;6949:468::-;7014:6;7022;7071:2;7059:9;7050:7;7046:23;7042:32;7039:119;;;7077:79;;:::i;:::-;7039:119;7197:1;7222:53;7267:7;7258:6;7247:9;7243:22;7222:53;:::i;:::-;7212:63;;7168:117;7324:2;7350:50;7392:7;7383:6;7372:9;7368:22;7350:50;:::i;:::-;7340:60;;7295:115;6949:468;;;;;:::o;7423:329::-;7482:6;7531:2;7519:9;7510:7;7506:23;7502:32;7499:119;;;7537:79;;:::i;:::-;7499:119;7657:1;7682:53;7727:7;7718:6;7707:9;7703:22;7682:53;:::i;:::-;7672:63;;7628:117;7423:329;;;;:::o;7758:474::-;7826:6;7834;7883:2;7871:9;7862:7;7858:23;7854:32;7851:119;;;7889:79;;:::i;:::-;7851:119;8009:1;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7980:117;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7758:474;;;;;:::o;8238:180::-;8286:77;8283:1;8276:88;8383:4;8380:1;8373:15;8407:4;8404:1;8397:15;8424:320;8468:6;8505:1;8499:4;8495:12;8485:22;;8552:1;8546:4;8542:12;8573:18;8563:81;;8629:4;8621:6;8617:17;8607:27;;8563:81;8691:2;8683:6;8680:14;8660:18;8657:38;8654:84;;;8710:18;;:::i;:::-;8654:84;8475:269;8424:320;;;:::o;8750:227::-;8890:34;8886:1;8878:6;8874:14;8867:58;8959:10;8954:2;8946:6;8942:15;8935:35;8750:227;:::o;8983:366::-;9125:3;9146:67;9210:2;9205:3;9146:67;:::i;:::-;9139:74;;9222:93;9311:3;9222:93;:::i;:::-;9340:2;9335:3;9331:12;9324:19;;8983:366;;;:::o;9355:419::-;9521:4;9559:2;9548:9;9544:18;9536:26;;9608:9;9602:4;9598:20;9594:1;9583:9;9579:17;9572:47;9636:131;9762:4;9636:131;:::i;:::-;9628:139;;9355:419;;;:::o;9780:180::-;9828:77;9825:1;9818:88;9925:4;9922:1;9915:15;9949:4;9946:1;9939:15;9966:305;10006:3;10025:20;10043:1;10025:20;:::i;:::-;10020:25;;10059:20;10077:1;10059:20;:::i;:::-;10054:25;;10213:1;10145:66;10141:74;10138:1;10135:81;10132:107;;;10219:18;;:::i;:::-;10132:107;10263:1;10260;10256:9;10249:16;;9966:305;;;;:::o;10277:182::-;10417:34;10413:1;10405:6;10401:14;10394:58;10277:182;:::o;10465:366::-;10607:3;10628:67;10692:2;10687:3;10628:67;:::i;:::-;10621:74;;10704:93;10793:3;10704:93;:::i;:::-;10822:2;10817:3;10813:12;10806:19;;10465:366;;;:::o;10837:419::-;11003:4;11041:2;11030:9;11026:18;11018:26;;11090:9;11084:4;11080:20;11076:1;11065:9;11061:17;11054:47;11118:131;11244:4;11118:131;:::i;:::-;11110:139;;10837:419;;;:::o;11262:222::-;11402:34;11398:1;11390:6;11386:14;11379:58;11471:5;11466:2;11458:6;11454:15;11447:30;11262:222;:::o;11490:366::-;11632:3;11653:67;11717:2;11712:3;11653:67;:::i;:::-;11646:74;;11729:93;11818:3;11729:93;:::i;:::-;11847:2;11842:3;11838:12;11831:19;;11490:366;;;:::o;11862:419::-;12028:4;12066:2;12055:9;12051:18;12043:26;;12115:9;12109:4;12105:20;12101:1;12090:9;12086:17;12079:47;12143:131;12269:4;12143:131;:::i;:::-;12135:139;;11862:419;;;:::o;12287:224::-;12427:34;12423:1;12415:6;12411:14;12404:58;12496:7;12491:2;12483:6;12479:15;12472:32;12287:224;:::o;12517:366::-;12659:3;12680:67;12744:2;12739:3;12680:67;:::i;:::-;12673:74;;12756:93;12845:3;12756:93;:::i;:::-;12874:2;12869:3;12865:12;12858:19;;12517:366;;;:::o;12889:419::-;13055:4;13093:2;13082:9;13078:18;13070:26;;13142:9;13136:4;13132:20;13128:1;13117:9;13113:17;13106:47;13170:131;13296:4;13170:131;:::i;:::-;13162:139;;12889:419;;;:::o;13314:225::-;13454:34;13450:1;13442:6;13438:14;13431:58;13523:8;13518:2;13510:6;13506:15;13499:33;13314:225;:::o;13545:366::-;13687:3;13708:67;13772:2;13767:3;13708:67;:::i;:::-;13701:74;;13784:93;13873:3;13784:93;:::i;:::-;13902:2;13897:3;13893:12;13886:19;;13545:366;;;:::o;13917:419::-;14083:4;14121:2;14110:9;14106:18;14098:26;;14170:9;14164:4;14160:20;14156:1;14145:9;14141:17;14134:47;14198:131;14324:4;14198:131;:::i;:::-;14190:139;;13917:419;;;:::o;14342:223::-;14482:34;14478:1;14470:6;14466:14;14459:58;14551:6;14546:2;14538:6;14534:15;14527:31;14342:223;:::o;14571:366::-;14713:3;14734:67;14798:2;14793:3;14734:67;:::i;:::-;14727:74;;14810:93;14899:3;14810:93;:::i;:::-;14928:2;14923:3;14919:12;14912:19;;14571:366;;;:::o;14943:419::-;15109:4;15147:2;15136:9;15132:18;15124:26;;15196:9;15190:4;15186:20;15182:1;15171:9;15167:17;15160:47;15224:131;15350:4;15224:131;:::i;:::-;15216:139;;14943:419;;;:::o;15368:221::-;15508:34;15504:1;15496:6;15492:14;15485:58;15577:4;15572:2;15564:6;15560:15;15553:29;15368:221;:::o;15595:366::-;15737:3;15758:67;15822:2;15817:3;15758:67;:::i;:::-;15751:74;;15834:93;15923:3;15834:93;:::i;:::-;15952:2;15947:3;15943:12;15936:19;;15595:366;;;:::o;15967:419::-;16133:4;16171:2;16160:9;16156:18;16148:26;;16220:9;16214:4;16210:20;16206:1;16195:9;16191:17;16184:47;16248:131;16374:4;16248:131;:::i;:::-;16240:139;;15967:419;;;:::o;16392:224::-;16532:34;16528:1;16520:6;16516:14;16509:58;16601:7;16596:2;16588:6;16584:15;16577:32;16392:224;:::o;16622:366::-;16764:3;16785:67;16849:2;16844:3;16785:67;:::i;:::-;16778:74;;16861:93;16950:3;16861:93;:::i;:::-;16979:2;16974:3;16970:12;16963:19;;16622:366;;;:::o;16994:419::-;17160:4;17198:2;17187:9;17183:18;17175:26;;17247:9;17241:4;17237:20;17233:1;17222:9;17218:17;17211:47;17275:131;17401:4;17275:131;:::i;:::-;17267:139;;16994:419;;;:::o;17419:222::-;17559:34;17555:1;17547:6;17543:14;17536:58;17628:5;17623:2;17615:6;17611:15;17604:30;17419:222;:::o;17647:366::-;17789:3;17810:67;17874:2;17869:3;17810:67;:::i;:::-;17803:74;;17886:93;17975:3;17886:93;:::i;:::-;18004:2;17999:3;17995:12;17988:19;;17647:366;;;:::o;18019:419::-;18185:4;18223:2;18212:9;18208:18;18200:26;;18272:9;18266:4;18262:20;18258:1;18247:9;18243:17;18236:47;18300:131;18426:4;18300:131;:::i;:::-;18292:139;;18019:419;;;:::o;18444:172::-;18584:24;18580:1;18572:6;18568:14;18561:48;18444:172;:::o;18622:366::-;18764:3;18785:67;18849:2;18844:3;18785:67;:::i;:::-;18778:74;;18861:93;18950:3;18861:93;:::i;:::-;18979:2;18974:3;18970:12;18963:19;;18622:366;;;:::o;18994:419::-;19160:4;19198:2;19187:9;19183:18;19175:26;;19247:9;19241:4;19237:20;19233:1;19222:9;19218:17;19211:47;19275:131;19401:4;19275:131;:::i;:::-;19267:139;;18994:419;;;:::o;19419:240::-;19559:34;19555:1;19547:6;19543:14;19536:58;19628:23;19623:2;19615:6;19611:15;19604:48;19419:240;:::o;19665:366::-;19807:3;19828:67;19892:2;19887:3;19828:67;:::i;:::-;19821:74;;19904:93;19993:3;19904:93;:::i;:::-;20022:2;20017:3;20013:12;20006:19;;19665:366;;;:::o;20037:419::-;20203:4;20241:2;20230:9;20226:18;20218:26;;20290:9;20284:4;20280:20;20276:1;20265:9;20261:17;20254:47;20318:131;20444:4;20318:131;:::i;:::-;20310:139;;20037:419;;;:::o;20462:169::-;20602:21;20598:1;20590:6;20586:14;20579:45;20462:169;:::o;20637:366::-;20779:3;20800:67;20864:2;20859:3;20800:67;:::i;:::-;20793:74;;20876:93;20965:3;20876:93;:::i;:::-;20994:2;20989:3;20985:12;20978:19;;20637:366;;;:::o;21009:419::-;21175:4;21213:2;21202:9;21198:18;21190:26;;21262:9;21256:4;21252:20;21248:1;21237:9;21233:17;21226:47;21290:131;21416:4;21290:131;:::i;:::-;21282:139;;21009:419;;;:::o;21434:241::-;21574:34;21570:1;21562:6;21558:14;21551:58;21643:24;21638:2;21630:6;21626:15;21619:49;21434:241;:::o;21681:366::-;21823:3;21844:67;21908:2;21903:3;21844:67;:::i;:::-;21837:74;;21920:93;22009:3;21920:93;:::i;:::-;22038:2;22033:3;22029:12;22022:19;;21681:366;;;:::o;22053:419::-;22219:4;22257:2;22246:9;22242:18;22234:26;;22306:9;22300:4;22296:20;22292:1;22281:9;22277:17;22270:47;22334:131;22460:4;22334:131;:::i;:::-;22326:139;;22053:419;;;:::o;22478:348::-;22518:7;22541:20;22559:1;22541:20;:::i;:::-;22536:25;;22575:20;22593:1;22575:20;:::i;:::-;22570:25;;22763:1;22695:66;22691:74;22688:1;22685:81;22680:1;22673:9;22666:17;22662:105;22659:131;;;22770:18;;:::i;:::-;22659:131;22818:1;22815;22811:9;22800:20;;22478:348;;;;:::o;22832:180::-;22880:77;22877:1;22870:88;22977:4;22974:1;22967:15;23001:4;22998:1;22991:15;23018:185;23058:1;23075:20;23093:1;23075:20;:::i;:::-;23070:25;;23109:20;23127:1;23109:20;:::i;:::-;23104:25;;23148:1;23138:35;;23153:18;;:::i;:::-;23138:35;23195:1;23192;23188:9;23183:14;;23018:185;;;;:::o;23209:191::-;23249:4;23269:20;23287:1;23269:20;:::i;:::-;23264:25;;23303:20;23321:1;23303:20;:::i;:::-;23298:25;;23342:1;23339;23336:8;23333:34;;;23347:18;;:::i;:::-;23333:34;23392:1;23389;23385:9;23377:17;;23209:191;;;;:::o;23406:225::-;23546:34;23542:1;23534:6;23530:14;23523:58;23615:8;23610:2;23602:6;23598:15;23591:33;23406:225;:::o;23637:366::-;23779:3;23800:67;23864:2;23859:3;23800:67;:::i;:::-;23793:74;;23876:93;23965:3;23876:93;:::i;:::-;23994:2;23989:3;23985:12;23978:19;;23637:366;;;:::o;24009:419::-;24175:4;24213:2;24202:9;24198:18;24190:26;;24262:9;24256:4;24252:20;24248:1;24237:9;24233:17;24226:47;24290:131;24416:4;24290:131;:::i;:::-;24282:139;;24009:419;;;:::o;24434:147::-;24535:11;24572:3;24557:18;;24434:147;;;;:::o;24587:114::-;;:::o;24707:398::-;24866:3;24887:83;24968:1;24963:3;24887:83;:::i;:::-;24880:90;;24979:93;25068:3;24979:93;:::i;:::-;25097:1;25092:3;25088:11;25081:18;;24707:398;;;:::o;25111:379::-;25295:3;25317:147;25460:3;25317:147;:::i;:::-;25310:154;;25481:3;25474:10;;25111:379;;;:::o;25496:180::-;25544:77;25541:1;25534:88;25641:4;25638:1;25631:15;25665:4;25662:1;25655:15;25682:180;25730:77;25727:1;25720:88;25827:4;25824:1;25817:15;25851:4;25848:1;25841:15;25868:143;25925:5;25956:6;25950:13;25941:22;;25972:33;25999:5;25972:33;:::i;:::-;25868:143;;;;:::o;26017:351::-;26087:6;26136:2;26124:9;26115:7;26111:23;26107:32;26104:119;;;26142:79;;:::i;:::-;26104:119;26262:1;26287:64;26343:7;26334:6;26323:9;26319:22;26287:64;:::i;:::-;26277:74;;26233:128;26017:351;;;;:::o;26374:85::-;26419:7;26448:5;26437:16;;26374:85;;;:::o;26465:60::-;26493:3;26514:5;26507:12;;26465:60;;;:::o;26531:158::-;26589:9;26622:61;26640:42;26649:32;26675:5;26649:32;:::i;:::-;26640:42;:::i;:::-;26622:61;:::i;:::-;26609:74;;26531:158;;;:::o;26695:147::-;26790:45;26829:5;26790:45;:::i;:::-;26785:3;26778:58;26695:147;;:::o;26848:114::-;26915:6;26949:5;26943:12;26933:22;;26848:114;;;:::o;26968:184::-;27067:11;27101:6;27096:3;27089:19;27141:4;27136:3;27132:14;27117:29;;26968:184;;;;:::o;27158:132::-;27225:4;27248:3;27240:11;;27278:4;27273:3;27269:14;27261:22;;27158:132;;;:::o;27296:108::-;27373:24;27391:5;27373:24;:::i;:::-;27368:3;27361:37;27296:108;;:::o;27410:179::-;27479:10;27500:46;27542:3;27534:6;27500:46;:::i;:::-;27578:4;27573:3;27569:14;27555:28;;27410:179;;;;:::o;27595:113::-;27665:4;27697;27692:3;27688:14;27680:22;;27595:113;;;:::o;27744:732::-;27863:3;27892:54;27940:5;27892:54;:::i;:::-;27962:86;28041:6;28036:3;27962:86;:::i;:::-;27955:93;;28072:56;28122:5;28072:56;:::i;:::-;28151:7;28182:1;28167:284;28192:6;28189:1;28186:13;28167:284;;;28268:6;28262:13;28295:63;28354:3;28339:13;28295:63;:::i;:::-;28288:70;;28381:60;28434:6;28381:60;:::i;:::-;28371:70;;28227:224;28214:1;28211;28207:9;28202:14;;28167:284;;;28171:14;28467:3;28460:10;;27868:608;;;27744:732;;;;:::o;28482:831::-;28745:4;28783:3;28772:9;28768:19;28760:27;;28797:71;28865:1;28854:9;28850:17;28841:6;28797:71;:::i;:::-;28878:80;28954:2;28943:9;28939:18;28930:6;28878:80;:::i;:::-;29005:9;28999:4;28995:20;28990:2;28979:9;28975:18;28968:48;29033:108;29136:4;29127:6;29033:108;:::i;:::-;29025:116;;29151:72;29219:2;29208:9;29204:18;29195:6;29151:72;:::i;:::-;29233:73;29301:3;29290:9;29286:19;29277:6;29233:73;:::i;:::-;28482:831;;;;;;;;:::o;29319:807::-;29568:4;29606:3;29595:9;29591:19;29583:27;;29620:71;29688:1;29677:9;29673:17;29664:6;29620:71;:::i;:::-;29701:72;29769:2;29758:9;29754:18;29745:6;29701:72;:::i;:::-;29783:80;29859:2;29848:9;29844:18;29835:6;29783:80;:::i;:::-;29873;29949:2;29938:9;29934:18;29925:6;29873:80;:::i;:::-;29963:73;30031:3;30020:9;30016:19;30007:6;29963:73;:::i;:::-;30046;30114:3;30103:9;30099:19;30090:6;30046:73;:::i;:::-;29319:807;;;;;;;;;:::o;30132:143::-;30189:5;30220:6;30214:13;30205:22;;30236:33;30263:5;30236:33;:::i;:::-;30132:143;;;;:::o;30281:663::-;30369:6;30377;30385;30434:2;30422:9;30413:7;30409:23;30405:32;30402:119;;;30440:79;;:::i;:::-;30402:119;30560:1;30585:64;30641:7;30632:6;30621:9;30617:22;30585:64;:::i;:::-;30575:74;;30531:128;30698:2;30724:64;30780:7;30771:6;30760:9;30756:22;30724:64;:::i;:::-;30714:74;;30669:129;30837:2;30863:64;30919:7;30910:6;30899:9;30895:22;30863:64;:::i;:::-;30853:74;;30808:129;30281:663;;;;;:::o

Swarm Source

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