ETH Price: $3,254.00 (+2.47%)
Gas: 2 Gwei

Token

Nintai Koneko (NINTAI)
 

Overview

Max Total Supply

1,000,000,000 NINTAI

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
18,493,213.385980982496164338 NINTAI

Value
$0.00
0x297f7075a4fd55dffebe9f0d564d0681b4604917
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:
NINTAI

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/*
Nintai Koneko~
During the Sengoku Era, 
there was a small white cat named Nintai. 
Nintai grew up in an environment that everyone disliked him except for one of the sensei that he stumbled upon, 
admired Nintai's characteristics and decided to train him to be the first Shinobi Koneko. 

Telegram: https://t.me/nintaieth
Twitter: https://twitter.com/NintaiETH
*/


// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, 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);
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

    function renounceOwnership(bool confirmRenounce)
        external
        virtual
        onlyOwner
    {
        require(confirmRenounce, "Please confirm renounce!");
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface ILpPair {
    function sync() external;
}

interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);
}

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

contract NINTAI is ERC20, Ownable {
    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWallet;

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public operationsAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active

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

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;
    
    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;

    /******************/

    // exlcude 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 automatedMarketMakerPairs;

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

    event EnabledTrading();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedOperationsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("Nintai Koneko", "NINTAI") {
        address newOwner = msg.sender; // can leave alone if owner is deployer.

        address _dexRouter;
        _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Uniswap V2
        // initialize router
        dexRouter = IDexRouter(_dexRouter);

        // create pair
        lpPair = IDexFactory(dexRouter.factory()).createPair(
            address(this),
            dexRouter.WETH()
        );
        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 1_000_000_000 * 1e18;

        maxBuyAmount = (totalSupply * 20) / 1000; // 2%
        maxSellAmount = (totalSupply * 20) / 1000; // 2%
        maxWallet = (totalSupply * 20) / 1000; // 2%
        swapTokensAtAmount = (totalSupply * 2) / 10000; // 0.02 %

        buyOperationsFee = 5;
        buyLiquidityFee = 5;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;


        sellOperationsFee = 20; // increased sell tax at launch
        sellLiquidityFee = 5;
        sellTotalFees = sellOperationsFee + sellLiquidityFee;

        operationsAddress = address(owner());

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(operationsAddress), true);
        _excludeFromMaxTransaction(address(dexRouter), true);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(operationsAddress), true);
        excludeFromFees(address(dexRouter), true);


    
        _createInitialSupply(newOwner, totalSupply); // Tokens for liquidity
        transferOwnership(newOwner);
    }

    receive() external payable {}

    function enableTrading() public onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        emit EnabledTrading();
    }


    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }

    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 25) / 10000) / 1e18,
            "Cannot set max buy amount lower than 0.25%"
        );
        require(
            newNum <= ((totalSupply() * 2) / 100) / 1e18,
            "Cannot set buy sell amount higher than 2%"
        );
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 25) / 10000) / 1e18,
            "Cannot set max sell amount lower than 0.25%"
        );
        require(
            newNum <= ((totalSupply() * 2) / 100) / 1e18,
            "Cannot set max sell amount higher than 2%"
        );
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set max wallet amount lower than 0.5%"
        );
        require(
            newNum <= ((totalSupply() * 2) / 100) / 1e18,
            "Cannot set max wallet amount higher than 2%"
        );
        maxWallet = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWallet);
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtTokenAmount(uint256 newAmount) external onlyOwner {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 1) / 1000,
            "Swap amount cannot be higher than 0.1% total supply."
        );
        swapTokensAtAmount = newAmount;
    }

    function _excludeFromMaxTransaction(address updAds, bool isExcluded)
        private
    {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        external
        onlyOwner
    {
        if (!isEx) {
            require(
                updAds != lpPair,
                "Cannot remove uniswap pair from max txn"
            );
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        external
        onlyOwner
    {
        require(
            pair != lpPair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );
        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

     function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee)
        external
        onlyOwner
    {
        buyOperationsFee = _operationsFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;
        require(buyTotalFees <= 10, "Must keep fees at 10% or less");
    }

    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee)
        external
        onlyOwner
    {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee;
        require(sellTotalFees <= 35, "Must keep fees at 35% or less");
    }

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

    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");
        require(amount > 0, "amount must be greater than 0");

        if (!tradingActive) {
            require(
                _isExcludedFromFees[from] || _isExcludedFromFees[to],
                "Trading is not active."
            );
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0xdead) &&
                !_isExcludedFromFees[from] &&
                !_isExcludedFromFees[to]
            ) {
                if (transferDelayEnabled) {
                    if (to != address(dexRouter) && to != address(lpPair)) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number - 2 &&
                                _holderLastTransferTimestamp[to] <
                                block.number - 2,
                            "_transfer:: Transfer Delay enabled.  Try again later."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxBuyAmount,
                        "Buy transfer amount exceeds the max buy."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max Wallet Exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxSellAmount,
                        "Sell transfer amount exceeds the max sell."
                    );
                    assert(
                        !_isExcludedMaxTransactionAmount[address(0xdead)]
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max Wallet Exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap && swapEnabled && !swapping && automatedMarketMakerPairs[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 100;
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForOperations +=
                    (fees * sellOperationsFee) /
                    sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = (amount * buyTotalFees) / 100;
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForOperations += (fees * buyOperationsFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

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

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

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

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations;

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

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

        bool success;

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

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForOperations = (ethBalance * tokensForOperations) /
            (totalTokensToSwap - (tokensForLiquidity / 2));

        ethForLiquidity -= ethForOperations;

        tokensForLiquidity = 0;
        tokensForOperations = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

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

    function saveForeignToken(address _token, address _to)
        external
        onlyOwner
        returns (bool _sent)
    {
        require(_token != address(0), "_token address cannot be 0");
        require(
            _token != address(this) || !tradingActive,
            "Can't withdraw native tokens while trading is active"
        );
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}(
            ""
        );
    }

    function updateOperationsWallet(address _operationsAddress)
        external
        onlyOwner
    {
        require(
            _operationsAddress != address(0),
            "_operationsAddress address cannot be 0"
        );
        operationsAddress = payable(_operationsAddress);
        emit UpdatedOperationsAddress(_operationsAddress);
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(
            balanceOf(address(this)) >= swapTokensAtAmount,
            "Can only swap when token amount is at or higher than restriction"
        );
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

    // remove limits after token is stable
    function removeMaxLimits() external onlyOwner {
        limitsInEffect = false;
    }

}

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":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","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":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","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":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"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":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","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":"operationsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"confirmRenounce","type":"bool"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"saveForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","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":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"updateOperationsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600d556001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff0219169083151502179055506001601060006101000a81548160ff0219169083151502179055503480156200008257600080fd5b506040518060400160405280600d81526020017f4e696e746169204b6f6e656b6f000000000000000000000000000000000000008152506040518060400160405280600681526020017f4e494e5441490000000000000000000000000000000000000000000000000000815250816003908162000100919062000f80565b50806004908162000112919062000f80565b5050506000620001276200071a60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000293573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b99190620010d1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000343573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003699190620010d1565b6040518363ffffffff1660e01b81526004016200038892919062001114565b6020604051808303816000875af1158015620003a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ce9190620010d1565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000443600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200072260201b60201c565b62000478600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007b860201b60201c565b60006b033b2e3c9fd0803ce800000090506103e86014826200049b919062001170565b620004a79190620011ea565b6006819055506103e8601482620004bf919062001170565b620004cb9190620011ea565b6007819055506103e8601482620004e3919062001170565b620004ef9190620011ea565b60088190555061271060028262000507919062001170565b620005139190620011ea565b600b81905550600560128190555060056013819055506013546012546200053b919062001222565b6011819055506014601581905550600560168190555060165460155462000563919062001222565b601481905550620005796200086b60201b60201c565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005cc8360016200072260201b60201c565b620005df3060016200072260201b60201c565b62000614600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200072260201b60201c565b62000649600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200072260201b60201c565b6200065c8360016200089560201b60201c565b6200066f3060016200089560201b60201c565b6200068461dead60016200089560201b60201c565b620006b9600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200089560201b60201c565b620006ee600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200089560201b60201c565b620007008382620009e260201b60201c565b620007118362000b3260201b60201c565b5050506200147f565b600033905090565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051620007ac9291906200127a565b60405180910390a15050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200082182826200072260201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008a56200071a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000937576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092e9062001308565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009d691906200132a565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a4b9062001397565b60405180910390fd5b806002600082825462000a68919062001222565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000abf919062001222565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b269190620013ca565b60405180910390a35050565b62000b426200071a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000bd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bcb9062001308565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000c46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c3d906200145d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d8857607f821691505b60208210810362000d9e5762000d9d62000d40565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000dc9565b62000e14868362000dc9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000e6162000e5b62000e558462000e2c565b62000e36565b62000e2c565b9050919050565b6000819050919050565b62000e7d8362000e40565b62000e9562000e8c8262000e68565b84845462000dd6565b825550505050565b600090565b62000eac62000e9d565b62000eb981848462000e72565b505050565b5b8181101562000ee15762000ed560008262000ea2565b60018101905062000ebf565b5050565b601f82111562000f305762000efa8162000da4565b62000f058462000db9565b8101602085101562000f15578190505b62000f2d62000f248562000db9565b83018262000ebe565b50505b505050565b600082821c905092915050565b600062000f556000198460080262000f35565b1980831691505092915050565b600062000f70838362000f42565b9150826002028217905092915050565b62000f8b8262000d06565b67ffffffffffffffff81111562000fa75762000fa662000d11565b5b62000fb3825462000d6f565b62000fc082828562000ee5565b600060209050601f83116001811462000ff8576000841562000fe3578287015190505b62000fef858262000f62565b8655506200105f565b601f198416620010088662000da4565b60005b8281101562001032578489015182556001820191506020850194506020810190506200100b565b868310156200105257848901516200104e601f89168262000f42565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062001099826200106c565b9050919050565b620010ab816200108c565b8114620010b757600080fd5b50565b600081519050620010cb81620010a0565b92915050565b600060208284031215620010ea57620010e962001067565b5b6000620010fa84828501620010ba565b91505092915050565b6200110e816200108c565b82525050565b60006040820190506200112b600083018562001103565b6200113a602083018462001103565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200117d8262000e2c565b91506200118a8362000e2c565b92508282026200119a8162000e2c565b91508282048414831517620011b457620011b362001141565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011f78262000e2c565b9150620012048362000e2c565b925082620012175762001216620011bb565b5b828204905092915050565b60006200122f8262000e2c565b91506200123c8362000e2c565b925082820190508082111562001257576200125662001141565b5b92915050565b60008115159050919050565b62001274816200125d565b82525050565b600060408201905062001291600083018562001103565b620012a0602083018462001269565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620012f0602083620012a7565b9150620012fd82620012b8565b602082019050919050565b600060208201905081810360008301526200132381620012e1565b9050919050565b600060208201905062001341600083018462001269565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200137f601f83620012a7565b91506200138c8262001347565b602082019050919050565b60006020820190508181036000830152620013b28162001370565b9050919050565b620013c48162000e2c565b82525050565b6000602082019050620013e16000830184620013b9565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062001445602683620012a7565b91506200145282620013e7565b604082019050919050565b60006020820190508181036000830152620014788162001436565b9050919050565b615f23806200148f6000396000f3fe6080604052600436106103035760003560e01c80638da5cb5b11610190578063dd62ed3e116100dc578063f2fde38b11610095578063f6a78e171161006f578063f6a78e1714610b59578063f8b45b0514610b70578063fa6c092914610b9b578063fb002c9714610bd85761030a565b8063f2fde38b14610aee578063f5648a4f14610b17578063f637434214610b2e5761030a565b8063dd62ed3e146109ee578063e2f4560514610a2b578063e884f26014610a56578063ea4cfe1214610a6d578063ee40166e14610a98578063f11a24d314610ac35761030a565b8063bbc0c74211610149578063c85e9fc611610123578063c85e9fc614610946578063c876d0b91461096f578063d85ba0631461099a578063dc3f0d0f146109c55761030a565b8063bbc0c742146108c9578063c0246668146108f4578063c18bc1951461091d5761030a565b80638da5cb5b1461079357806395d89b41146107be5780639a7a23d6146107e9578063a457c2d714610812578063a9059cbb1461084f578063b62496f51461088c5761030a565b80634a62bb651161024f5780636a486a8e116102085780637571336a116101e25780637571336a146106ff5780637e926b4b1461072857806388e765ff146107515780638a8c523c1461077c5761030a565b80636a486a8e1461066c5780636ddd17131461069757806370a08231146106c25761030a565b80634a62bb65146105805780634f77f6c0146105ab57806351f205e4146105d65780635a139dd4146105ed57806366ca9b831461061857806366d602ae146106415761030a565b80631a8145bb116102bc57806330d5d18d1161029657806330d5d18d146104c4578063313ce567146104ed5780633950935114610518578063452ed4f1146105555761030a565b80631a8145bb1461043357806323b872dd1461045e5780632be32b611461049b5761030a565b806302dbd8f81461030f57806306fdde03146103385780630758d92414610363578063095ea7b31461038e57806310d5de53146103cb57806318160ddd146104085761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b5061033660048036038101906103319190614395565b610c03565b005b34801561034457600080fd5b5061034d610d08565b60405161035a9190614465565b60405180910390f35b34801561036f57600080fd5b50610378610d9a565b6040516103859190614506565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b0919061455f565b610dc0565b6040516103c291906145ba565b60405180910390f35b3480156103d757600080fd5b506103f260048036038101906103ed91906145d5565b610dde565b6040516103ff91906145ba565b60405180910390f35b34801561041457600080fd5b5061041d610dfe565b60405161042a9190614611565b60405180910390f35b34801561043f57600080fd5b50610448610e08565b6040516104559190614611565b60405180910390f35b34801561046a57600080fd5b506104856004803603810190610480919061462c565b610e0e565b60405161049291906145ba565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd919061467f565b610f06565b005b3480156104d057600080fd5b506104eb60048036038101906104e691906145d5565b6110de565b005b3480156104f957600080fd5b5061050261126b565b60405161050f91906146c8565b60405180910390f35b34801561052457600080fd5b5061053f600480360381019061053a919061455f565b611274565b60405161054c91906145ba565b60405180910390f35b34801561056157600080fd5b5061056a611320565b60405161057791906146f2565b60405180910390f35b34801561058c57600080fd5b50610595611346565b6040516105a291906145ba565b60405180910390f35b3480156105b757600080fd5b506105c0611359565b6040516105cd9190614611565b60405180910390f35b3480156105e257600080fd5b506105eb61135f565b005b3480156105f957600080fd5b506106026114ba565b60405161060f9190614611565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190614395565b6114c0565b005b34801561064d57600080fd5b506106566115c5565b6040516106639190614611565b60405180910390f35b34801561067857600080fd5b506106816115cb565b60405161068e9190614611565b60405180910390f35b3480156106a357600080fd5b506106ac6115d1565b6040516106b991906145ba565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e491906145d5565b6115e4565b6040516106f69190614611565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614739565b61162c565b005b34801561073457600080fd5b5061074f600480360381019061074a9190614779565b6117b4565b005b34801561075d57600080fd5b5061076661194d565b6040516107739190614611565b60405180910390f35b34801561078857600080fd5b50610791611953565b005b34801561079f57600080fd5b506107a8611aa5565b6040516107b591906146f2565b60405180910390f35b3480156107ca57600080fd5b506107d3611acf565b6040516107e09190614465565b60405180910390f35b3480156107f557600080fd5b50610810600480360381019061080b9190614739565b611b61565b005b34801561081e57600080fd5b506108396004803603810190610834919061455f565b611cdc565b60405161084691906145ba565b60405180910390f35b34801561085b57600080fd5b506108766004803603810190610871919061455f565b611dc7565b60405161088391906145ba565b60405180910390f35b34801561089857600080fd5b506108b360048036038101906108ae91906145d5565b611de5565b6040516108c091906145ba565b60405180910390f35b3480156108d557600080fd5b506108de611e05565b6040516108eb91906145ba565b60405180910390f35b34801561090057600080fd5b5061091b60048036038101906109169190614739565b611e18565b005b34801561092957600080fd5b50610944600480360381019061093f919061467f565b611f58565b005b34801561095257600080fd5b5061096d6004803603810190610968919061467f565b612130565b005b34801561097b57600080fd5b50610984612298565b60405161099191906145ba565b60405180910390f35b3480156109a657600080fd5b506109af6122ab565b6040516109bc9190614611565b60405180910390f35b3480156109d157600080fd5b506109ec60048036038101906109e7919061467f565b6122b1565b005b3480156109fa57600080fd5b50610a156004803603810190610a1091906147a6565b612489565b604051610a229190614611565b60405180910390f35b348015610a3757600080fd5b50610a40612510565b604051610a4d9190614611565b60405180910390f35b348015610a6257600080fd5b50610a6b612516565b005b348015610a7957600080fd5b50610a826125ca565b604051610a8f91906146f2565b60405180910390f35b348015610aa457600080fd5b50610aad6125f0565b604051610aba9190614611565b60405180910390f35b348015610acf57600080fd5b50610ad86125f6565b604051610ae59190614611565b60405180910390f35b348015610afa57600080fd5b50610b156004803603810190610b1091906145d5565b6125fc565b005b348015610b2357600080fd5b50610b2c6127c2565b005b348015610b3a57600080fd5b50610b436128ca565b604051610b509190614611565b60405180910390f35b348015610b6557600080fd5b50610b6e6128d0565b005b348015610b7c57600080fd5b50610b85612984565b604051610b929190614611565b60405180910390f35b348015610ba757600080fd5b50610bc26004803603810190610bbd91906147a6565b61298a565b604051610bcf91906145ba565b60405180910390f35b348015610be457600080fd5b50610bed612c57565b604051610bfa9190614611565b60405180910390f35b610c0b612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9190614832565b60405180910390fd5b8160158190555080601681905550601654601554610cb89190614881565b60148190555060236014541115610d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfb90614901565b60405180910390fd5b5050565b606060038054610d1790614950565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4390614950565b8015610d905780601f10610d6557610100808354040283529160200191610d90565b820191906000526020600020905b815481529060010190602001808311610d7357829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610dd4610dcd612c5d565b8484612c65565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60185481565b6000610e1b848484612e2e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e66612c5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edd906149f3565b60405180910390fd5b610efa85610ef2612c5d565b858403612c65565b60019150509392505050565b610f0e612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9490614832565b60405180910390fd5b670de0b6b3a76400006127106019610fb3610dfe565b610fbd9190614a13565b610fc79190614a84565b610fd19190614a84565b811015611013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100a90614b27565b60405180910390fd5b670de0b6b3a764000060646002611028610dfe565b6110329190614a13565b61103c9190614a84565b6110469190614a84565b811115611088576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107f90614bb9565b60405180910390fd5b670de0b6b3a76400008161109c9190614a13565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de410096006546040516110d39190614611565b60405180910390a150565b6110e6612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c90614832565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db90614c4b565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298260405160405180910390a250565b60006012905090565b6000611316611281612c5d565b84846001600061128f612c5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113119190614881565b612c65565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900460ff1681565b60155481565b611367612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ed90614832565b60405180910390fd5b600b54611402306115e4565b1015611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a90614cdd565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550611466613ad2565b6000600a60146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb32426040516114b09190614611565b60405180910390a1565b60125481565b6114c8612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e90614832565b60405180910390fd5b81601281905550806013819055506013546012546115759190614881565b601181905550600a60115411156115c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b890614d49565b60405180910390fd5b5050565b60075481565b60145481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611634612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ba90614832565b60405180910390fd5b8061175957600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f90614ddb565b60405180910390fd5b5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6117bc612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461184b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184290614832565b60405180910390fd5b8061188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188290614e47565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60065481565b61195b612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e190614832565b60405180910390fd5b600e60019054906101000a900460ff1615611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3190614eb3565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff02191690831515021790555043600d819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611ade90614950565b80601f0160208091040260200160405190810160405280929190818152602001828054611b0a90614950565b8015611b575780601f10611b2c57610100808354040283529160200191611b57565b820191906000526020600020905b815481529060010190602001808311611b3a57829003601f168201915b5050505050905090565b611b69612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bef90614832565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7f90614f45565b60405180910390fd5b611c928282613c8a565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008060016000611ceb612c5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9f90614fd7565b60405180910390fd5b611dbc611db3612c5d565b85858403612c65565b600191505092915050565b6000611ddb611dd4612c5d565b8484612e2e565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b611e20612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea690614832565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f4c91906145ba565b60405180910390a25050565b611f60612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe690614832565b60405180910390fd5b670de0b6b3a76400006103e86005612005610dfe565b61200f9190614a13565b6120199190614a84565b6120239190614a84565b811015612065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205c90615069565b60405180910390fd5b670de0b6b3a76400006064600261207a610dfe565b6120849190614a13565b61208e9190614a84565b6120989190614a84565b8111156120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d1906150fb565b60405180910390fd5b670de0b6b3a7640000816120ee9190614a13565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516121259190614611565b60405180910390a150565b612138612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121be90614832565b60405180910390fd5b620186a060016121d5610dfe565b6121df9190614a13565b6121e99190614a84565b81101561222b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122229061518d565b60405180910390fd5b6103e86001612238610dfe565b6122429190614a13565b61224c9190614a84565b81111561228e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122859061521f565b60405180910390fd5b80600b8190555050565b601060009054906101000a900460ff1681565b60115481565b6122b9612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233f90614832565b60405180910390fd5b670de0b6b3a7640000612710601961235e610dfe565b6123689190614a13565b6123729190614a84565b61237c9190614a84565b8110156123be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b5906152b1565b60405180910390fd5b670de0b6b3a7640000606460026123d3610dfe565b6123dd9190614a13565b6123e79190614a84565b6123f19190614a84565b811115612433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242a90615343565b60405180910390fd5b670de0b6b3a7640000816124479190614a13565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e60075460405161247e9190614611565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b61251e612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a490614832565b60405180910390fd5b6000601060006101000a81548160ff021916908315150217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60135481565b612604612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268a90614832565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f9906153d5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6127ca612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285090614832565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161287f90615426565b60006040518083038185875af1925050503d80600081146128bc576040519150601f19603f3d011682016040523d82523d6000602084013e6128c1565b606091505b50508091505050565b60165481565b6128d8612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295e90614832565b60405180910390fd5b6000600e60006101000a81548160ff021916908315150217905550565b60085481565b6000612994612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1a90614832565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8990615487565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580612ada5750600e60019054906101000a900460ff16155b612b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1090615519565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b5491906146f2565b602060405180830381865afa158015612b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b95919061554e565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401612bd292919061557b565b6020604051808303816000875af1158015612bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1591906155b9565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051612c4892919061557b565b60405180910390a15092915050565b60175481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccb90615658565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3a906156ea565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e219190614611565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e949061577c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f039061580e565b60405180910390fd5b60008111612f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f469061587a565b60405180910390fd5b600e60019054906101000a900460ff1661304457601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130045750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303a906158e6565b60405180910390fd5b5b600e60009054906101000a900460ff161561373457613061611aa5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130cf575061309f611aa5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613109575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561315f5750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131b55750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561373357601060009054906101000a900460ff16156133ed57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561327b5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156133ec5760024361328d9190615906565b600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410801561332457506002436132e29190615906565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b613363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335a906159ac565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134905750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613537576006548111156134da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134d190615a3e565b60405180910390fd5b6008546134e6836115e4565b826134f19190614881565b1115613532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352990615aaa565b60405180910390fd5b613732565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135da5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561368657600754811115613624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361b90615b3c565b60405180910390fd5b601a600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561368157613680615b5c565b5b613731565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613730576008546136e3836115e4565b826136ee9190614881565b111561372f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372690615aaa565b60405180910390fd5b5b5b5b5b5b600061373f306115e4565b90506000600b5482101590508080156137645750600e60029054906101000a900460ff165b801561377d5750600a60149054906101000a900460ff16155b80156137d25750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613816576001600a60146101000a81548160ff0219169083151502179055506137fa613ad2565b6000600a60146101000a81548160ff0219169083151502179055505b600060019050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138bd5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138c757600090505b60008115613abe57601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561392a57506000601454115b156139b65760646014548661393f9190614a13565b6139499190614a84565b90506014546016548261395c9190614a13565b6139669190614a84565b601860008282546139779190614881565b925050819055506014546015548261398f9190614a13565b6139999190614a84565b601760008282546139aa9190614881565b92505081905550613a9a565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a1157506000601154115b15613a9957606460115486613a269190614a13565b613a309190614a84565b905060115460135482613a439190614a13565b613a4d9190614a84565b60186000828254613a5e9190614881565b9250508190555060115460125482613a769190614a13565b613a809190614a84565b60176000828254613a919190614881565b925050819055505b5b6000811115613aaf57613aae873083613d35565b5b8085613abb9190615906565b94505b613ac9878787613d35565b50505050505050565b6000613add306115e4565b90506000601754601854613af19190614881565b90506000821480613b025750600081145b15613b0e575050613c88565b600a600b54613b1d9190614a13565b821115613b3657600a600b54613b339190614a13565b91505b60008060028360185486613b4a9190614a13565b613b549190614a84565b613b5e9190614a84565b9050613b748185613b6f9190615906565b613f9e565b6000479050600081905060006002601854613b8f9190614a84565b86613b9a9190615906565b60175484613ba89190614a13565b613bb29190614a84565b90508082613bc09190615906565b915060006018819055506000601781905550600084118015613be25750600082115b15613bf257613bf184836141e1565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613c3890615426565b60006040518083038185875af1925050503d8060008114613c75576040519150601f19603f3d011682016040523d82523d6000602084013e613c7a565b606091505b505080955050505050505050505b565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613ceb82826142c6565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d9b9061577c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e0a9061580e565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e9090615bfd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f2c9190614881565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f909190614611565b60405180910390a350505050565b6000600267ffffffffffffffff811115613fbb57613fba615c1d565b5b604051908082528060200260200182016040528015613fe95781602001602082028036833780820191505090505b509050308160008151811061400157614000615c4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140cc9190615c90565b816001815181106140e0576140df615c4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061414730600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612c65565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016141ab959493929190615db6565b600060405180830381600087803b1580156141c557600080fd5b505af11580156141d9573d6000803e3d6000fd5b505050505050565b61420e30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612c65565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061425a611aa5565b426040518863ffffffff1660e01b815260040161427c96959493929190615e10565b60606040518083038185885af115801561429a573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906142bf9190615e71565b5050505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746828260405161434e929190615ec4565b60405180910390a15050565b600080fd5b6000819050919050565b6143728161435f565b811461437d57600080fd5b50565b60008135905061438f81614369565b92915050565b600080604083850312156143ac576143ab61435a565b5b60006143ba85828601614380565b92505060206143cb85828601614380565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561440f5780820151818401526020810190506143f4565b60008484015250505050565b6000601f19601f8301169050919050565b6000614437826143d5565b61444181856143e0565b93506144518185602086016143f1565b61445a8161441b565b840191505092915050565b6000602082019050818103600083015261447f818461442c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006144cc6144c76144c284614487565b6144a7565b614487565b9050919050565b60006144de826144b1565b9050919050565b60006144f0826144d3565b9050919050565b614500816144e5565b82525050565b600060208201905061451b60008301846144f7565b92915050565b600061452c82614487565b9050919050565b61453c81614521565b811461454757600080fd5b50565b60008135905061455981614533565b92915050565b600080604083850312156145765761457561435a565b5b60006145848582860161454a565b925050602061459585828601614380565b9150509250929050565b60008115159050919050565b6145b48161459f565b82525050565b60006020820190506145cf60008301846145ab565b92915050565b6000602082840312156145eb576145ea61435a565b5b60006145f98482850161454a565b91505092915050565b61460b8161435f565b82525050565b60006020820190506146266000830184614602565b92915050565b6000806000606084860312156146455761464461435a565b5b60006146538682870161454a565b93505060206146648682870161454a565b925050604061467586828701614380565b9150509250925092565b6000602082840312156146955761469461435a565b5b60006146a384828501614380565b91505092915050565b600060ff82169050919050565b6146c2816146ac565b82525050565b60006020820190506146dd60008301846146b9565b92915050565b6146ec81614521565b82525050565b600060208201905061470760008301846146e3565b92915050565b6147168161459f565b811461472157600080fd5b50565b6000813590506147338161470d565b92915050565b600080604083850312156147505761474f61435a565b5b600061475e8582860161454a565b925050602061476f85828601614724565b9150509250929050565b60006020828403121561478f5761478e61435a565b5b600061479d84828501614724565b91505092915050565b600080604083850312156147bd576147bc61435a565b5b60006147cb8582860161454a565b92505060206147dc8582860161454a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061481c6020836143e0565b9150614827826147e6565b602082019050919050565b6000602082019050818103600083015261484b8161480f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061488c8261435f565b91506148978361435f565b92508282019050808211156148af576148ae614852565b5b92915050565b7f4d757374206b656570206665657320617420333525206f72206c657373000000600082015250565b60006148eb601d836143e0565b91506148f6826148b5565b602082019050919050565b6000602082019050818103600083015261491a816148de565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061496857607f821691505b60208210810361497b5761497a614921565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006149dd6028836143e0565b91506149e882614981565b604082019050919050565b60006020820190508181036000830152614a0c816149d0565b9050919050565b6000614a1e8261435f565b9150614a298361435f565b9250828202614a378161435f565b91508282048414831517614a4e57614a4d614852565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a8f8261435f565b9150614a9a8361435f565b925082614aaa57614aa9614a55565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e32352500000000000000000000000000000000000000000000602082015250565b6000614b11602a836143e0565b9150614b1c82614ab5565b604082019050919050565b60006020820190508181036000830152614b4081614b04565b9050919050565b7f43616e6e6f7420736574206275792073656c6c20616d6f756e7420686967686560008201527f72207468616e2032250000000000000000000000000000000000000000000000602082015250565b6000614ba36029836143e0565b9150614bae82614b47565b604082019050919050565b60006020820190508181036000830152614bd281614b96565b9050919050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b6000614c356026836143e0565b9150614c4082614bd9565b604082019050919050565b60006020820190508181036000830152614c6481614c28565b9050919050565b7f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060008201527f6973206174206f7220686967686572207468616e207265737472696374696f6e602082015250565b6000614cc76040836143e0565b9150614cd282614c6b565b604082019050919050565b60006020820190508181036000830152614cf681614cba565b9050919050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000614d33601d836143e0565b9150614d3e82614cfd565b602082019050919050565b60006020820190508181036000830152614d6281614d26565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614dc56027836143e0565b9150614dd082614d69565b604082019050919050565b60006020820190508181036000830152614df481614db8565b9050919050565b7f506c6561736520636f6e6669726d2072656e6f756e6365210000000000000000600082015250565b6000614e316018836143e0565b9150614e3c82614dfb565b602082019050919050565b60006020820190508181036000830152614e6081614e24565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614e9d6017836143e0565b9150614ea882614e67565b602082019050919050565b60006020820190508181036000830152614ecc81614e90565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614f2f6039836143e0565b9150614f3a82614ed3565b604082019050919050565b60006020820190508181036000830152614f5e81614f22565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614fc16025836143e0565b9150614fcc82614f65565b604082019050919050565b60006020820190508181036000830152614ff081614fb4565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e35250000000000000000000000000000000000000000602082015250565b6000615053602c836143e0565b915061505e82614ff7565b604082019050919050565b6000602082019050818103600083015261508281615046565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e742068696760008201527f686572207468616e203225000000000000000000000000000000000000000000602082015250565b60006150e5602b836143e0565b91506150f082615089565b604082019050919050565b60006020820190508181036000830152615114816150d8565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006151776035836143e0565b91506151828261511b565b604082019050919050565b600060208201905081810360008301526151a68161516a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b60006152096034836143e0565b9150615214826151ad565b604082019050919050565b60006020820190508181036000830152615238816151fc565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e323525000000000000000000000000000000000000000000602082015250565b600061529b602b836143e0565b91506152a68261523f565b604082019050919050565b600060208201905081810360008301526152ca8161528e565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e7420686967686560008201527f72207468616e2032250000000000000000000000000000000000000000000000602082015250565b600061532d6029836143e0565b9150615338826152d1565b604082019050919050565b6000602082019050818103600083015261535c81615320565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006153bf6026836143e0565b91506153ca82615363565b604082019050919050565b600060208201905081810360008301526153ee816153b2565b9050919050565b600081905092915050565b50565b60006154106000836153f5565b915061541b82615400565b600082019050919050565b600061543182615403565b9150819050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000615471601a836143e0565b915061547c8261543b565b602082019050919050565b600060208201905081810360008301526154a081615464565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e732077686960008201527f6c652074726164696e6720697320616374697665000000000000000000000000602082015250565b60006155036034836143e0565b915061550e826154a7565b604082019050919050565b60006020820190508181036000830152615532816154f6565b9050919050565b60008151905061554881614369565b92915050565b6000602082840312156155645761556361435a565b5b600061557284828501615539565b91505092915050565b600060408201905061559060008301856146e3565b61559d6020830184614602565b9392505050565b6000815190506155b38161470d565b92915050565b6000602082840312156155cf576155ce61435a565b5b60006155dd848285016155a4565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006156426024836143e0565b915061564d826155e6565b604082019050919050565b6000602082019050818103600083015261567181615635565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006156d46022836143e0565b91506156df82615678565b604082019050919050565b60006020820190508181036000830152615703816156c7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006157666025836143e0565b91506157718261570a565b604082019050919050565b6000602082019050818103600083015261579581615759565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006157f86023836143e0565b91506158038261579c565b604082019050919050565b60006020820190508181036000830152615827816157eb565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000615864601d836143e0565b915061586f8261582e565b602082019050919050565b6000602082019050818103600083015261589381615857565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006158d06016836143e0565b91506158db8261589a565b602082019050919050565b600060208201905081810360008301526158ff816158c3565b9050919050565b60006159118261435f565b915061591c8361435f565b925082820390508181111561593457615933614852565b5b92915050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b60006159966035836143e0565b91506159a18261593a565b604082019050919050565b600060208201905081810360008301526159c581615989565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615a286028836143e0565b9150615a33826159cc565b604082019050919050565b60006020820190508181036000830152615a5781615a1b565b9050919050565b7f4d61782057616c6c657420457863656564656400000000000000000000000000600082015250565b6000615a946013836143e0565b9150615a9f82615a5e565b602082019050919050565b60006020820190508181036000830152615ac381615a87565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615b26602a836143e0565b9150615b3182615aca565b604082019050919050565b60006020820190508181036000830152615b5581615b19565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615be76026836143e0565b9150615bf282615b8b565b604082019050919050565b60006020820190508181036000830152615c1681615bda565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615c8a81614533565b92915050565b600060208284031215615ca657615ca561435a565b5b6000615cb484828501615c7b565b91505092915050565b6000819050919050565b6000615ce2615cdd615cd884615cbd565b6144a7565b61435f565b9050919050565b615cf281615cc7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d2d81614521565b82525050565b6000615d3f8383615d24565b60208301905092915050565b6000602082019050919050565b6000615d6382615cf8565b615d6d8185615d03565b9350615d7883615d14565b8060005b83811015615da9578151615d908882615d33565b9750615d9b83615d4b565b925050600181019050615d7c565b5085935050505092915050565b600060a082019050615dcb6000830188614602565b615dd86020830187615ce9565b8181036040830152615dea8186615d58565b9050615df960608301856146e3565b615e066080830184614602565b9695505050505050565b600060c082019050615e2560008301896146e3565b615e326020830188614602565b615e3f6040830187615ce9565b615e4c6060830186615ce9565b615e5960808301856146e3565b615e6660a0830184614602565b979650505050505050565b600080600060608486031215615e8a57615e8961435a565b5b6000615e9886828701615539565b9350506020615ea986828701615539565b9250506040615eba86828701615539565b9150509250925092565b6000604082019050615ed960008301856146e3565b615ee660208301846145ab565b939250505056fea264697066735822122045f52c8ecc1e20cf6a51144e13f063d365cfb1b817be32d4f9720cefd2709f4064736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103035760003560e01c80638da5cb5b11610190578063dd62ed3e116100dc578063f2fde38b11610095578063f6a78e171161006f578063f6a78e1714610b59578063f8b45b0514610b70578063fa6c092914610b9b578063fb002c9714610bd85761030a565b8063f2fde38b14610aee578063f5648a4f14610b17578063f637434214610b2e5761030a565b8063dd62ed3e146109ee578063e2f4560514610a2b578063e884f26014610a56578063ea4cfe1214610a6d578063ee40166e14610a98578063f11a24d314610ac35761030a565b8063bbc0c74211610149578063c85e9fc611610123578063c85e9fc614610946578063c876d0b91461096f578063d85ba0631461099a578063dc3f0d0f146109c55761030a565b8063bbc0c742146108c9578063c0246668146108f4578063c18bc1951461091d5761030a565b80638da5cb5b1461079357806395d89b41146107be5780639a7a23d6146107e9578063a457c2d714610812578063a9059cbb1461084f578063b62496f51461088c5761030a565b80634a62bb651161024f5780636a486a8e116102085780637571336a116101e25780637571336a146106ff5780637e926b4b1461072857806388e765ff146107515780638a8c523c1461077c5761030a565b80636a486a8e1461066c5780636ddd17131461069757806370a08231146106c25761030a565b80634a62bb65146105805780634f77f6c0146105ab57806351f205e4146105d65780635a139dd4146105ed57806366ca9b831461061857806366d602ae146106415761030a565b80631a8145bb116102bc57806330d5d18d1161029657806330d5d18d146104c4578063313ce567146104ed5780633950935114610518578063452ed4f1146105555761030a565b80631a8145bb1461043357806323b872dd1461045e5780632be32b611461049b5761030a565b806302dbd8f81461030f57806306fdde03146103385780630758d92414610363578063095ea7b31461038e57806310d5de53146103cb57806318160ddd146104085761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b5061033660048036038101906103319190614395565b610c03565b005b34801561034457600080fd5b5061034d610d08565b60405161035a9190614465565b60405180910390f35b34801561036f57600080fd5b50610378610d9a565b6040516103859190614506565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b0919061455f565b610dc0565b6040516103c291906145ba565b60405180910390f35b3480156103d757600080fd5b506103f260048036038101906103ed91906145d5565b610dde565b6040516103ff91906145ba565b60405180910390f35b34801561041457600080fd5b5061041d610dfe565b60405161042a9190614611565b60405180910390f35b34801561043f57600080fd5b50610448610e08565b6040516104559190614611565b60405180910390f35b34801561046a57600080fd5b506104856004803603810190610480919061462c565b610e0e565b60405161049291906145ba565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd919061467f565b610f06565b005b3480156104d057600080fd5b506104eb60048036038101906104e691906145d5565b6110de565b005b3480156104f957600080fd5b5061050261126b565b60405161050f91906146c8565b60405180910390f35b34801561052457600080fd5b5061053f600480360381019061053a919061455f565b611274565b60405161054c91906145ba565b60405180910390f35b34801561056157600080fd5b5061056a611320565b60405161057791906146f2565b60405180910390f35b34801561058c57600080fd5b50610595611346565b6040516105a291906145ba565b60405180910390f35b3480156105b757600080fd5b506105c0611359565b6040516105cd9190614611565b60405180910390f35b3480156105e257600080fd5b506105eb61135f565b005b3480156105f957600080fd5b506106026114ba565b60405161060f9190614611565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190614395565b6114c0565b005b34801561064d57600080fd5b506106566115c5565b6040516106639190614611565b60405180910390f35b34801561067857600080fd5b506106816115cb565b60405161068e9190614611565b60405180910390f35b3480156106a357600080fd5b506106ac6115d1565b6040516106b991906145ba565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e491906145d5565b6115e4565b6040516106f69190614611565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614739565b61162c565b005b34801561073457600080fd5b5061074f600480360381019061074a9190614779565b6117b4565b005b34801561075d57600080fd5b5061076661194d565b6040516107739190614611565b60405180910390f35b34801561078857600080fd5b50610791611953565b005b34801561079f57600080fd5b506107a8611aa5565b6040516107b591906146f2565b60405180910390f35b3480156107ca57600080fd5b506107d3611acf565b6040516107e09190614465565b60405180910390f35b3480156107f557600080fd5b50610810600480360381019061080b9190614739565b611b61565b005b34801561081e57600080fd5b506108396004803603810190610834919061455f565b611cdc565b60405161084691906145ba565b60405180910390f35b34801561085b57600080fd5b506108766004803603810190610871919061455f565b611dc7565b60405161088391906145ba565b60405180910390f35b34801561089857600080fd5b506108b360048036038101906108ae91906145d5565b611de5565b6040516108c091906145ba565b60405180910390f35b3480156108d557600080fd5b506108de611e05565b6040516108eb91906145ba565b60405180910390f35b34801561090057600080fd5b5061091b60048036038101906109169190614739565b611e18565b005b34801561092957600080fd5b50610944600480360381019061093f919061467f565b611f58565b005b34801561095257600080fd5b5061096d6004803603810190610968919061467f565b612130565b005b34801561097b57600080fd5b50610984612298565b60405161099191906145ba565b60405180910390f35b3480156109a657600080fd5b506109af6122ab565b6040516109bc9190614611565b60405180910390f35b3480156109d157600080fd5b506109ec60048036038101906109e7919061467f565b6122b1565b005b3480156109fa57600080fd5b50610a156004803603810190610a1091906147a6565b612489565b604051610a229190614611565b60405180910390f35b348015610a3757600080fd5b50610a40612510565b604051610a4d9190614611565b60405180910390f35b348015610a6257600080fd5b50610a6b612516565b005b348015610a7957600080fd5b50610a826125ca565b604051610a8f91906146f2565b60405180910390f35b348015610aa457600080fd5b50610aad6125f0565b604051610aba9190614611565b60405180910390f35b348015610acf57600080fd5b50610ad86125f6565b604051610ae59190614611565b60405180910390f35b348015610afa57600080fd5b50610b156004803603810190610b1091906145d5565b6125fc565b005b348015610b2357600080fd5b50610b2c6127c2565b005b348015610b3a57600080fd5b50610b436128ca565b604051610b509190614611565b60405180910390f35b348015610b6557600080fd5b50610b6e6128d0565b005b348015610b7c57600080fd5b50610b85612984565b604051610b929190614611565b60405180910390f35b348015610ba757600080fd5b50610bc26004803603810190610bbd91906147a6565b61298a565b604051610bcf91906145ba565b60405180910390f35b348015610be457600080fd5b50610bed612c57565b604051610bfa9190614611565b60405180910390f35b610c0b612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9190614832565b60405180910390fd5b8160158190555080601681905550601654601554610cb89190614881565b60148190555060236014541115610d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfb90614901565b60405180910390fd5b5050565b606060038054610d1790614950565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4390614950565b8015610d905780601f10610d6557610100808354040283529160200191610d90565b820191906000526020600020905b815481529060010190602001808311610d7357829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610dd4610dcd612c5d565b8484612c65565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60185481565b6000610e1b848484612e2e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e66612c5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edd906149f3565b60405180910390fd5b610efa85610ef2612c5d565b858403612c65565b60019150509392505050565b610f0e612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9490614832565b60405180910390fd5b670de0b6b3a76400006127106019610fb3610dfe565b610fbd9190614a13565b610fc79190614a84565b610fd19190614a84565b811015611013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100a90614b27565b60405180910390fd5b670de0b6b3a764000060646002611028610dfe565b6110329190614a13565b61103c9190614a84565b6110469190614a84565b811115611088576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107f90614bb9565b60405180910390fd5b670de0b6b3a76400008161109c9190614a13565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de410096006546040516110d39190614611565b60405180910390a150565b6110e6612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c90614832565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db90614c4b565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298260405160405180910390a250565b60006012905090565b6000611316611281612c5d565b84846001600061128f612c5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113119190614881565b612c65565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900460ff1681565b60155481565b611367612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ed90614832565b60405180910390fd5b600b54611402306115e4565b1015611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a90614cdd565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550611466613ad2565b6000600a60146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb32426040516114b09190614611565b60405180910390a1565b60125481565b6114c8612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e90614832565b60405180910390fd5b81601281905550806013819055506013546012546115759190614881565b601181905550600a60115411156115c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b890614d49565b60405180910390fd5b5050565b60075481565b60145481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611634612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ba90614832565b60405180910390fd5b8061175957600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f90614ddb565b60405180910390fd5b5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6117bc612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461184b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184290614832565b60405180910390fd5b8061188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188290614e47565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60065481565b61195b612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e190614832565b60405180910390fd5b600e60019054906101000a900460ff1615611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3190614eb3565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff02191690831515021790555043600d819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611ade90614950565b80601f0160208091040260200160405190810160405280929190818152602001828054611b0a90614950565b8015611b575780601f10611b2c57610100808354040283529160200191611b57565b820191906000526020600020905b815481529060010190602001808311611b3a57829003601f168201915b5050505050905090565b611b69612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bef90614832565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7f90614f45565b60405180910390fd5b611c928282613c8a565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008060016000611ceb612c5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9f90614fd7565b60405180910390fd5b611dbc611db3612c5d565b85858403612c65565b600191505092915050565b6000611ddb611dd4612c5d565b8484612e2e565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b611e20612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea690614832565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f4c91906145ba565b60405180910390a25050565b611f60612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe690614832565b60405180910390fd5b670de0b6b3a76400006103e86005612005610dfe565b61200f9190614a13565b6120199190614a84565b6120239190614a84565b811015612065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205c90615069565b60405180910390fd5b670de0b6b3a76400006064600261207a610dfe565b6120849190614a13565b61208e9190614a84565b6120989190614a84565b8111156120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d1906150fb565b60405180910390fd5b670de0b6b3a7640000816120ee9190614a13565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516121259190614611565b60405180910390a150565b612138612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121be90614832565b60405180910390fd5b620186a060016121d5610dfe565b6121df9190614a13565b6121e99190614a84565b81101561222b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122229061518d565b60405180910390fd5b6103e86001612238610dfe565b6122429190614a13565b61224c9190614a84565b81111561228e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122859061521f565b60405180910390fd5b80600b8190555050565b601060009054906101000a900460ff1681565b60115481565b6122b9612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233f90614832565b60405180910390fd5b670de0b6b3a7640000612710601961235e610dfe565b6123689190614a13565b6123729190614a84565b61237c9190614a84565b8110156123be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b5906152b1565b60405180910390fd5b670de0b6b3a7640000606460026123d3610dfe565b6123dd9190614a13565b6123e79190614a84565b6123f19190614a84565b811115612433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242a90615343565b60405180910390fd5b670de0b6b3a7640000816124479190614a13565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e60075460405161247e9190614611565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b61251e612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a490614832565b60405180910390fd5b6000601060006101000a81548160ff021916908315150217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60135481565b612604612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268a90614832565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f9906153d5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6127ca612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285090614832565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161287f90615426565b60006040518083038185875af1925050503d80600081146128bc576040519150601f19603f3d011682016040523d82523d6000602084013e6128c1565b606091505b50508091505050565b60165481565b6128d8612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295e90614832565b60405180910390fd5b6000600e60006101000a81548160ff021916908315150217905550565b60085481565b6000612994612c5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1a90614832565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8990615487565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580612ada5750600e60019054906101000a900460ff16155b612b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1090615519565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b5491906146f2565b602060405180830381865afa158015612b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b95919061554e565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401612bd292919061557b565b6020604051808303816000875af1158015612bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1591906155b9565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051612c4892919061557b565b60405180910390a15092915050565b60175481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccb90615658565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3a906156ea565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e219190614611565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e949061577c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f039061580e565b60405180910390fd5b60008111612f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f469061587a565b60405180910390fd5b600e60019054906101000a900460ff1661304457601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130045750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303a906158e6565b60405180910390fd5b5b600e60009054906101000a900460ff161561373457613061611aa5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130cf575061309f611aa5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613109575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561315f5750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131b55750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561373357601060009054906101000a900460ff16156133ed57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561327b5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156133ec5760024361328d9190615906565b600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410801561332457506002436132e29190615906565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b613363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335a906159ac565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134905750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613537576006548111156134da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134d190615a3e565b60405180910390fd5b6008546134e6836115e4565b826134f19190614881565b1115613532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352990615aaa565b60405180910390fd5b613732565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135da5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561368657600754811115613624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361b90615b3c565b60405180910390fd5b601a600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561368157613680615b5c565b5b613731565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613730576008546136e3836115e4565b826136ee9190614881565b111561372f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372690615aaa565b60405180910390fd5b5b5b5b5b5b600061373f306115e4565b90506000600b5482101590508080156137645750600e60029054906101000a900460ff165b801561377d5750600a60149054906101000a900460ff16155b80156137d25750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613816576001600a60146101000a81548160ff0219169083151502179055506137fa613ad2565b6000600a60146101000a81548160ff0219169083151502179055505b600060019050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138bd5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138c757600090505b60008115613abe57601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561392a57506000601454115b156139b65760646014548661393f9190614a13565b6139499190614a84565b90506014546016548261395c9190614a13565b6139669190614a84565b601860008282546139779190614881565b925050819055506014546015548261398f9190614a13565b6139999190614a84565b601760008282546139aa9190614881565b92505081905550613a9a565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a1157506000601154115b15613a9957606460115486613a269190614a13565b613a309190614a84565b905060115460135482613a439190614a13565b613a4d9190614a84565b60186000828254613a5e9190614881565b9250508190555060115460125482613a769190614a13565b613a809190614a84565b60176000828254613a919190614881565b925050819055505b5b6000811115613aaf57613aae873083613d35565b5b8085613abb9190615906565b94505b613ac9878787613d35565b50505050505050565b6000613add306115e4565b90506000601754601854613af19190614881565b90506000821480613b025750600081145b15613b0e575050613c88565b600a600b54613b1d9190614a13565b821115613b3657600a600b54613b339190614a13565b91505b60008060028360185486613b4a9190614a13565b613b549190614a84565b613b5e9190614a84565b9050613b748185613b6f9190615906565b613f9e565b6000479050600081905060006002601854613b8f9190614a84565b86613b9a9190615906565b60175484613ba89190614a13565b613bb29190614a84565b90508082613bc09190615906565b915060006018819055506000601781905550600084118015613be25750600082115b15613bf257613bf184836141e1565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613c3890615426565b60006040518083038185875af1925050503d8060008114613c75576040519150601f19603f3d011682016040523d82523d6000602084013e613c7a565b606091505b505080955050505050505050505b565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613ceb82826142c6565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d9b9061577c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e0a9061580e565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e9090615bfd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f2c9190614881565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f909190614611565b60405180910390a350505050565b6000600267ffffffffffffffff811115613fbb57613fba615c1d565b5b604051908082528060200260200182016040528015613fe95781602001602082028036833780820191505090505b509050308160008151811061400157614000615c4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140cc9190615c90565b816001815181106140e0576140df615c4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061414730600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612c65565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016141ab959493929190615db6565b600060405180830381600087803b1580156141c557600080fd5b505af11580156141d9573d6000803e3d6000fd5b505050505050565b61420e30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612c65565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061425a611aa5565b426040518863ffffffff1660e01b815260040161427c96959493929190615e10565b60606040518083038185885af115801561429a573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906142bf9190615e71565b5050505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746828260405161434e929190615ec4565b60405180910390a15050565b600080fd5b6000819050919050565b6143728161435f565b811461437d57600080fd5b50565b60008135905061438f81614369565b92915050565b600080604083850312156143ac576143ab61435a565b5b60006143ba85828601614380565b92505060206143cb85828601614380565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561440f5780820151818401526020810190506143f4565b60008484015250505050565b6000601f19601f8301169050919050565b6000614437826143d5565b61444181856143e0565b93506144518185602086016143f1565b61445a8161441b565b840191505092915050565b6000602082019050818103600083015261447f818461442c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006144cc6144c76144c284614487565b6144a7565b614487565b9050919050565b60006144de826144b1565b9050919050565b60006144f0826144d3565b9050919050565b614500816144e5565b82525050565b600060208201905061451b60008301846144f7565b92915050565b600061452c82614487565b9050919050565b61453c81614521565b811461454757600080fd5b50565b60008135905061455981614533565b92915050565b600080604083850312156145765761457561435a565b5b60006145848582860161454a565b925050602061459585828601614380565b9150509250929050565b60008115159050919050565b6145b48161459f565b82525050565b60006020820190506145cf60008301846145ab565b92915050565b6000602082840312156145eb576145ea61435a565b5b60006145f98482850161454a565b91505092915050565b61460b8161435f565b82525050565b60006020820190506146266000830184614602565b92915050565b6000806000606084860312156146455761464461435a565b5b60006146538682870161454a565b93505060206146648682870161454a565b925050604061467586828701614380565b9150509250925092565b6000602082840312156146955761469461435a565b5b60006146a384828501614380565b91505092915050565b600060ff82169050919050565b6146c2816146ac565b82525050565b60006020820190506146dd60008301846146b9565b92915050565b6146ec81614521565b82525050565b600060208201905061470760008301846146e3565b92915050565b6147168161459f565b811461472157600080fd5b50565b6000813590506147338161470d565b92915050565b600080604083850312156147505761474f61435a565b5b600061475e8582860161454a565b925050602061476f85828601614724565b9150509250929050565b60006020828403121561478f5761478e61435a565b5b600061479d84828501614724565b91505092915050565b600080604083850312156147bd576147bc61435a565b5b60006147cb8582860161454a565b92505060206147dc8582860161454a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061481c6020836143e0565b9150614827826147e6565b602082019050919050565b6000602082019050818103600083015261484b8161480f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061488c8261435f565b91506148978361435f565b92508282019050808211156148af576148ae614852565b5b92915050565b7f4d757374206b656570206665657320617420333525206f72206c657373000000600082015250565b60006148eb601d836143e0565b91506148f6826148b5565b602082019050919050565b6000602082019050818103600083015261491a816148de565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061496857607f821691505b60208210810361497b5761497a614921565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006149dd6028836143e0565b91506149e882614981565b604082019050919050565b60006020820190508181036000830152614a0c816149d0565b9050919050565b6000614a1e8261435f565b9150614a298361435f565b9250828202614a378161435f565b91508282048414831517614a4e57614a4d614852565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a8f8261435f565b9150614a9a8361435f565b925082614aaa57614aa9614a55565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e32352500000000000000000000000000000000000000000000602082015250565b6000614b11602a836143e0565b9150614b1c82614ab5565b604082019050919050565b60006020820190508181036000830152614b4081614b04565b9050919050565b7f43616e6e6f7420736574206275792073656c6c20616d6f756e7420686967686560008201527f72207468616e2032250000000000000000000000000000000000000000000000602082015250565b6000614ba36029836143e0565b9150614bae82614b47565b604082019050919050565b60006020820190508181036000830152614bd281614b96565b9050919050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b6000614c356026836143e0565b9150614c4082614bd9565b604082019050919050565b60006020820190508181036000830152614c6481614c28565b9050919050565b7f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060008201527f6973206174206f7220686967686572207468616e207265737472696374696f6e602082015250565b6000614cc76040836143e0565b9150614cd282614c6b565b604082019050919050565b60006020820190508181036000830152614cf681614cba565b9050919050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000614d33601d836143e0565b9150614d3e82614cfd565b602082019050919050565b60006020820190508181036000830152614d6281614d26565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614dc56027836143e0565b9150614dd082614d69565b604082019050919050565b60006020820190508181036000830152614df481614db8565b9050919050565b7f506c6561736520636f6e6669726d2072656e6f756e6365210000000000000000600082015250565b6000614e316018836143e0565b9150614e3c82614dfb565b602082019050919050565b60006020820190508181036000830152614e6081614e24565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614e9d6017836143e0565b9150614ea882614e67565b602082019050919050565b60006020820190508181036000830152614ecc81614e90565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614f2f6039836143e0565b9150614f3a82614ed3565b604082019050919050565b60006020820190508181036000830152614f5e81614f22565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614fc16025836143e0565b9150614fcc82614f65565b604082019050919050565b60006020820190508181036000830152614ff081614fb4565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e35250000000000000000000000000000000000000000602082015250565b6000615053602c836143e0565b915061505e82614ff7565b604082019050919050565b6000602082019050818103600083015261508281615046565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e742068696760008201527f686572207468616e203225000000000000000000000000000000000000000000602082015250565b60006150e5602b836143e0565b91506150f082615089565b604082019050919050565b60006020820190508181036000830152615114816150d8565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006151776035836143e0565b91506151828261511b565b604082019050919050565b600060208201905081810360008301526151a68161516a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b60006152096034836143e0565b9150615214826151ad565b604082019050919050565b60006020820190508181036000830152615238816151fc565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e323525000000000000000000000000000000000000000000602082015250565b600061529b602b836143e0565b91506152a68261523f565b604082019050919050565b600060208201905081810360008301526152ca8161528e565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e7420686967686560008201527f72207468616e2032250000000000000000000000000000000000000000000000602082015250565b600061532d6029836143e0565b9150615338826152d1565b604082019050919050565b6000602082019050818103600083015261535c81615320565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006153bf6026836143e0565b91506153ca82615363565b604082019050919050565b600060208201905081810360008301526153ee816153b2565b9050919050565b600081905092915050565b50565b60006154106000836153f5565b915061541b82615400565b600082019050919050565b600061543182615403565b9150819050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000615471601a836143e0565b915061547c8261543b565b602082019050919050565b600060208201905081810360008301526154a081615464565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e732077686960008201527f6c652074726164696e6720697320616374697665000000000000000000000000602082015250565b60006155036034836143e0565b915061550e826154a7565b604082019050919050565b60006020820190508181036000830152615532816154f6565b9050919050565b60008151905061554881614369565b92915050565b6000602082840312156155645761556361435a565b5b600061557284828501615539565b91505092915050565b600060408201905061559060008301856146e3565b61559d6020830184614602565b9392505050565b6000815190506155b38161470d565b92915050565b6000602082840312156155cf576155ce61435a565b5b60006155dd848285016155a4565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006156426024836143e0565b915061564d826155e6565b604082019050919050565b6000602082019050818103600083015261567181615635565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006156d46022836143e0565b91506156df82615678565b604082019050919050565b60006020820190508181036000830152615703816156c7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006157666025836143e0565b91506157718261570a565b604082019050919050565b6000602082019050818103600083015261579581615759565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006157f86023836143e0565b91506158038261579c565b604082019050919050565b60006020820190508181036000830152615827816157eb565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000615864601d836143e0565b915061586f8261582e565b602082019050919050565b6000602082019050818103600083015261589381615857565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006158d06016836143e0565b91506158db8261589a565b602082019050919050565b600060208201905081810360008301526158ff816158c3565b9050919050565b60006159118261435f565b915061591c8361435f565b925082820390508181111561593457615933614852565b5b92915050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b60006159966035836143e0565b91506159a18261593a565b604082019050919050565b600060208201905081810360008301526159c581615989565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615a286028836143e0565b9150615a33826159cc565b604082019050919050565b60006020820190508181036000830152615a5781615a1b565b9050919050565b7f4d61782057616c6c657420457863656564656400000000000000000000000000600082015250565b6000615a946013836143e0565b9150615a9f82615a5e565b602082019050919050565b60006020820190508181036000830152615ac381615a87565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615b26602a836143e0565b9150615b3182615aca565b604082019050919050565b60006020820190508181036000830152615b5581615b19565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615be76026836143e0565b9150615bf282615b8b565b604082019050919050565b60006020820190508181036000830152615c1681615bda565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615c8a81614533565b92915050565b600060208284031215615ca657615ca561435a565b5b6000615cb484828501615c7b565b91505092915050565b6000819050919050565b6000615ce2615cdd615cd884615cbd565b6144a7565b61435f565b9050919050565b615cf281615cc7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d2d81614521565b82525050565b6000615d3f8383615d24565b60208301905092915050565b6000602082019050919050565b6000615d6382615cf8565b615d6d8185615d03565b9350615d7883615d14565b8060005b83811015615da9578151615d908882615d33565b9750615d9b83615d4b565b925050600181019050615d7c565b5085935050505092915050565b600060a082019050615dcb6000830188614602565b615dd86020830187615ce9565b8181036040830152615dea8186615d58565b9050615df960608301856146e3565b615e066080830184614602565b9695505050505050565b600060c082019050615e2560008301896146e3565b615e326020830188614602565b615e3f6040830187615ce9565b615e4c6060830186615ce9565b615e5960808301856146e3565b615e6660a0830184614602565b979650505050505050565b600080600060608486031215615e8a57615e8961435a565b5b6000615e9886828701615539565b9350506020615ea986828701615539565b9250506040615eba86828701615539565b9150509250925092565b6000604082019050615ed960008301856146e3565b615ee660208301846145ab565b939250505056fea264697066735822122045f52c8ecc1e20cf6a51144e13f063d365cfb1b817be32d4f9720cefd2709f4064736f6c63430008110033

Deployed Bytecode Sourcemap

11058:17093:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19084:344;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4410:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11201:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5465:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12253:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4731:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12071:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5683:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15651:459;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27247:359;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4630:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6220:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11235:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11455:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11951:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27658:349;;;;;;;;;;;;;:::i;:::-;;11835:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18739:337;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11133:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11916;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11535:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4847:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17791:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8941:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11099:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15235:247;;;;;;;;;;;;;:::i;:::-;;8727:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4518:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18133:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6525:482;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5032:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12474:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11495:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19436:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16590:461;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17121:433;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11753:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11801:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16118:464;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5256:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11293:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15545:98;;;;;;;;;;;;;:::i;:::-;;11335:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11376:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11873:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9214:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27054:185;;;;;;;;;;;;;:::i;:::-;;11990:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28059:87;;;;;;;;;;;;;:::i;:::-;;11168:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26421:563;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12030:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19084:344;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19228:14:::1;19208:17;:34;;;;19272:13;19253:16;:32;;;;19332:16;;19312:17;;:36;;;;:::i;:::-;19296:13;:52;;;;19384:2;19367:13;;:19;;19359:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;19084:344:::0;;:::o;4410:100::-;4464:13;4497:5;4490:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4410:100;:::o;11201:27::-;;;;;;;;;;;;;:::o;5465:210::-;5584:4;5606:39;5615:12;:10;:12::i;:::-;5629:7;5638:6;5606:8;:39::i;:::-;5663:4;5656:11;;5465:210;;;;:::o;12253:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;4731:108::-;4792:7;4819:12;;4812:19;;4731:108;:::o;12071:33::-;;;;:::o;5683:529::-;5823:4;5840:36;5850:6;5858:9;5869:6;5840:9;:36::i;:::-;5889:24;5916:11;:19;5928:6;5916:19;;;;;;;;;;;;;;;:33;5936:12;:10;:12::i;:::-;5916:33;;;;;;;;;;;;;;;;5889:60;;6002:6;5982:16;:26;;5960:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;6112:57;6121:6;6129:12;:10;:12::i;:::-;6162:6;6143:16;:25;6112:8;:57::i;:::-;6200:4;6193:11;;;5683:529;;;;;:::o;15651:459::-;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15790:4:::1;15781:5;15775:2;15759:13;:11;:13::i;:::-;:18;;;;:::i;:::-;15758:28;;;;:::i;:::-;15757:37;;;;:::i;:::-;15747:6;:47;;15725:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;15937:4;15930:3;15925:1;15909:13;:11;:13::i;:::-;:17;;;;:::i;:::-;15908:25;;;;:::i;:::-;15907:34;;;;:::i;:::-;15897:6;:44;;15875:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;16046:6;16036;:17;;;;:::i;:::-;16021:12;:32;;;;16069:33;16089:12;;16069:33;;;;;;:::i;:::-;;;;;;;;15651:459:::0;:::o;27247:359::-;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27412:1:::1;27382:32;;:18;:32;;::::0;27360:120:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27519:18;27491:17;;:47;;;;;;;;;;;;;;;;;;27579:18;27554:44;;;;;;;;;;;;27247:359:::0;:::o;4630:93::-;4688:5;4713:2;4706:9;;4630:93;:::o;6220:297::-;6335:4;6357:130;6380:12;:10;:12::i;:::-;6407:7;6466:10;6429:11;:25;6441:12;:10;:12::i;:::-;6429:25;;;;;;;;;;;;;;;:34;6455:7;6429:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6357:8;:130::i;:::-;6505:4;6498:11;;6220:297;;;;:::o;11235:21::-;;;;;;;;;;;;;:::o;11455:33::-;;;;;;;;;;;;;:::o;11951:32::-;;;;:::o;27658:349::-;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27763:18:::1;;27735:24;27753:4;27735:9;:24::i;:::-;:46;;27713:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;27895:4;27884:8;;:15;;;;;;;;;;;;;;;;;;27910:10;:8;:10::i;:::-;27942:5;27931:8;;:16;;;;;;;;;;;;;;;;;;27963:36;27983:15;27963:36;;;;;;:::i;:::-;;;;;;;;27658:349::o:0;11835:31::-;;;;:::o;18739:337::-;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18881:14:::1;18862:16;:33;;;;18924:13;18906:15;:31;;;;18982:15;;18963:16;;:34;;;;:::i;:::-;18948:12;:49;;;;19032:2;19016:12;;:18;;19008:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18739:337:::0;;:::o;11133:28::-;;;;:::o;11916:::-;;;;:::o;11535:31::-;;;;;;;;;;;;;:::o;4847:177::-;4966:7;4998:9;:18;5008:7;4998:18;;;;;;;;;;;;;;;;4991:25;;4847:177;;;:::o;17791:334::-;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17911:4:::1;17906:155;;17968:6;;;;;;;;;;;17958:16;;:6;:16;;::::0;17932:117:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17906:155;18113:4;18071:31;:39;18103:6;18071:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17791:334:::0;;:::o;8941:265::-;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9068:15:::1;9060:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;9165:1;9128:40;;9149:6;;;;;;;;;;;9128:40;;;;;;;;;;;;9196:1;9179:6;;:19;;;;;;;;;;;;;;;;;;8941:265:::0;:::o;11099:27::-;;;;:::o;15235:247::-;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15297:13:::1;;;;;;;;;;;15296:14;15288:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;15365:4;15349:13;;:20;;;;;;;;;;;;;;;;;;15394:4;15380:11;;:18;;;;;;;;;;;;;;;;;;15430:12;15409:18;:33;;;;15458:16;;;;;;;;;;15235:247::o:0;8727:79::-;8765:7;8792:6;;;;;;;;;;;8785:13;;8727:79;:::o;4518:104::-;4574:13;4607:7;4600:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4518:104;:::o;18133:353::-;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18279:6:::1;;;;;;;;;;;18271:14;;:4;:14;;::::0;18249:121:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18381:41;18410:4;18416:5;18381:28;:41::i;:::-;18472:5;18438:40;;18466:4;18438:40;;;;;;;;;;;;18133:353:::0;;:::o;6525:482::-;6645:4;6667:24;6694:11;:25;6706:12;:10;:12::i;:::-;6694:25;;;;;;;;;;;;;;;:34;6720:7;6694:34;;;;;;;;;;;;;;;;6667:61;;6781:15;6761:16;:35;;6739:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;6897:67;6906:12;:10;:12::i;:::-;6920:7;6948:15;6929:16;:34;6897:8;:67::i;:::-;6995:4;6988:11;;;6525:482;;;;:::o;5032:216::-;5154:4;5176:42;5186:12;:10;:12::i;:::-;5200:9;5211:6;5176:9;:42::i;:::-;5236:4;5229:11;;5032:216;;;;:::o;12474:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;11495:33::-;;;;;;;;;;;;;:::o;19436:182::-;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19552:8:::1;19521:19;:28;19541:7;19521:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19592:7;19576:34;;;19601:8;19576:34;;;;;;:::i;:::-;;;;;;;;19436:182:::0;;:::o;16590:461::-;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16730:4:::1;16722;16717:1;16701:13;:11;:13::i;:::-;:17;;;;:::i;:::-;16700:26;;;;:::i;:::-;16699:35;;;;:::i;:::-;16689:6;:45;;16667:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;16879:4;16872:3;16867:1;16851:13;:11;:13::i;:::-;:17;;;;:::i;:::-;16850:25;;;;:::i;:::-;16849:34;;;;:::i;:::-;16839:6;:44;;16817:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;16987:6;16977;:17;;;;:::i;:::-;16965:9;:29;;;;17010:33;17033:9;;17010:33;;;;;;:::i;:::-;;;;;;;;16590:461:::0;:::o;17121:433::-;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17266:6:::1;17261:1;17245:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17244:28;;;;:::i;:::-;17231:9;:41;;17209:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;17421:4;17416:1;17400:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17399:26;;;;:::i;:::-;17386:9;:39;;17364:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;17537:9;17516:18;:30;;;;17121:433:::0;:::o;11753:39::-;;;;;;;;;;;;;:::o;11801:27::-;;;;:::o;16118:464::-;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16258:4:::1;16249:5;16243:2;16227:13;:11;:13::i;:::-;:18;;;;:::i;:::-;16226:28;;;;:::i;:::-;16225:37;;;;:::i;:::-;16215:6;:47;;16193:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;16406:4;16399:3;16394:1;16378:13;:11;:13::i;:::-;:17;;;;:::i;:::-;16377:25;;;;:::i;:::-;16376:34;;;;:::i;:::-;16366:6;:44;;16344:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;16516:6;16506;:17;;;;:::i;:::-;16490:13;:33;;;;16539:35;16560:13;;16539:35;;;;;;:::i;:::-;;;;;;;;16118:464:::0;:::o;5256:201::-;5390:7;5422:11;:18;5434:5;5422:18;;;;;;;;;;;;;;;:27;5441:7;5422:27;;;;;;;;;;;;;;;;5415:34;;5256:201;;;;:::o;11293:33::-;;;;:::o;15545:98::-;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15630:5:::1;15607:20;;:28;;;;;;;;;;;;;;;;;;15545:98::o:0;11335:32::-;;;;;;;;;;;;;:::o;11376:37::-;;;;:::o;11873:30::-;;;;:::o;9214:281::-;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9337:1:::1;9317:22;;:8;:22;;::::0;9295:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9450:8;9421:38;;9442:6;;;;;;;;;;;9421:38;;;;;;;;;;;;9479:8;9470:6;;:17;;;;;;;;;;;;;;;;;;9214:281:::0;:::o;27054:185::-;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27112:12:::1;27157:10;27149:24;;27181:21;27149:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27135:96;;;;;27101:138;27054:185::o:0;11990:31::-;;;;:::o;28059:87::-;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28133:5:::1;28116:14;;:22;;;;;;;;;;;;;;;;;;28059:87::o:0;11168:24::-;;;;:::o;26421:563::-;26531:10;8864:12;:10;:12::i;:::-;8854:22;;:6;;;;;;;;;;;:22;;;8846:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26585:1:::1;26567:20;;:6;:20;;::::0;26559:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26669:4;26651:23;;:6;:23;;;;:41;;;;26679:13;;;;;;;;;;;26678:14;26651:41;26629:143;;;;;;;;;;;;:::i;:::-;;;;;;;;;26783:24;26817:6;26810:24;;;26843:4;26810:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26783:66;;26875:6;26868:23;;;26892:3;26897:16;26868:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26860:54;;26930:46;26951:6;26959:16;26930:46;;;;;;;:::i;:::-;;;;;;;;26548:436;26421:563:::0;;;;:::o;12030:34::-;;;;:::o;480:98::-;533:7;560:10;553:17;;480:98;:::o;7996:380::-;8149:1;8132:19;;:5;:19;;;8124:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8230:1;8211:21;;:7;:21;;;8203:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8314:6;8284:11;:18;8296:5;8284:18;;;;;;;;;;;;;;;:27;8303:7;8284:27;;;;;;;;;;;;;;;:36;;;;8352:7;8336:32;;8345:5;8336:32;;;8361:6;8336:32;;;;;;:::i;:::-;;;;;;;;7996:380;;;:::o;19626:4422::-;19774:1;19758:18;;:4;:18;;;19750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19851:1;19837:16;;:2;:16;;;19829:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19921:1;19912:6;:10;19904:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;19974:13;;;;;;;;;;;19969:183;;20030:19;:25;20050:4;20030:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20059:19;:23;20079:2;20059:23;;;;;;;;;;;;;;;;;;;;;;;;;20030:52;20004:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;19969:183;20168:14;;;;;;;;;;;20164:2276;;;20229:7;:5;:7::i;:::-;20221:15;;:4;:15;;;;:49;;;;;20263:7;:5;:7::i;:::-;20257:13;;:2;:13;;;;20221:49;:91;;;;;20305:6;20291:21;;:2;:21;;;;20221:91;:138;;;;;20334:19;:25;20354:4;20334:25;;;;;;;;;;;;;;;;;;;;;;;;;20333:26;20221:138;:183;;;;;20381:19;:23;20401:2;20381:23;;;;;;;;;;;;;;;;;;;;;;;;;20380:24;20221:183;20199:2230;;;20443:20;;;;;;;;;;;20439:692;;;20506:9;;;;;;;;;;;20492:24;;:2;:24;;;;:49;;;;;20534:6;;;;;;;;;;;20520:21;;:2;:21;;;;20492:49;20488:624;;;20698:1;20683:12;:16;;;;:::i;:::-;20608:28;:39;20637:9;20608:39;;;;;;;;;;;;;;;;:91;:212;;;;;20819:1;20804:12;:16;;;;:::i;:::-;20736:28;:32;20765:2;20736:32;;;;;;;;;;;;;;;;:84;20608:212;20570:363;;;;;;;;;;;;:::i;:::-;;;;;;;;;21002:12;20960:28;:39;20989:9;20960:39;;;;;;;;;;;;;;;:54;;;;21076:12;21041:28;:32;21070:2;21041:32;;;;;;;;;;;;;;;:47;;;;20488:624;20439:692;21205:25;:31;21231:4;21205:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21262:31;:35;21294:2;21262:35;;;;;;;;;;;;;;;;;;;;;;;;;21261:36;21205:92;21179:1235;;;21384:12;;21374:6;:22;;21340:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;21571:9;;21554:13;21564:2;21554:9;:13::i;:::-;21545:6;:22;;;;:::i;:::-;:35;;21511:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21179:1235;;;21749:25;:29;21775:2;21749:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21804:31;:37;21836:4;21804:37;;;;;;;;;;;;;;;;;;;;;;;;;21803:38;21749:92;21723:691;;;21928:13;;21918:6;:23;;21884:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;22092:31;:48;22132:6;22092:48;;;;;;;;;;;;;;;;;;;;;;;;;22091:49;22058:105;;;;:::i;:::-;;21723:691;;;22194:31;:35;22226:2;22194:35;;;;;;;;;;;;;;;;;;;;;;;;;22189:225;;22314:9;;22297:13;22307:2;22297:9;:13::i;:::-;22288:6;:22;;;;:::i;:::-;:35;;22254:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22189:225;21723:691;21179:1235;20199:2230;20164:2276;22452:28;22483:24;22501:4;22483:9;:24::i;:::-;22452:55;;22520:12;22559:18;;22535:20;:42;;22520:57;;22608:7;:22;;;;;22619:11;;;;;;;;;;;22608:22;:35;;;;;22635:8;;;;;;;;;;;22634:9;22608:35;:68;;;;;22647:25;:29;22673:2;22647:29;;;;;;;;;;;;;;;;;;;;;;;;;22608:68;22590:196;;;22714:4;22703:8;;:15;;;;;;;;;;;;;;;;;;22733:10;:8;:10::i;:::-;22769:5;22758:8;;:16;;;;;;;;;;;;;;;;;;22590:196;22798:12;22813:4;22798:19;;22917;:25;22937:4;22917:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22946:19;:23;22966:2;22946:23;;;;;;;;;;;;;;;;;;;;;;;;;22917:52;22913:100;;;22996:5;22986:15;;22913:100;23025:12;23130:7;23126:869;;;23182:25;:29;23208:2;23182:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23231:1;23215:13;;:17;23182:50;23178:668;;;23287:3;23270:13;;23261:6;:22;;;;:::i;:::-;23260:30;;;;:::i;:::-;23253:37;;23359:13;;23339:16;;23332:4;:23;;;;:::i;:::-;23331:41;;;;:::i;:::-;23309:18;;:63;;;;;;;:::i;:::-;;;;;;;;23485:13;;23443:17;;23436:4;:24;;;;:::i;:::-;23435:63;;;;:::i;:::-;23391:19;;:107;;;;;;;:::i;:::-;;;;;;;;23178:668;;;23560:25;:31;23586:4;23560:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23610:1;23595:12;;:16;23560:51;23556:290;;;23665:3;23649:12;;23640:6;:21;;;;:::i;:::-;23639:29;;;;:::i;:::-;23632:36;;23736:12;;23717:15;;23710:4;:22;;;;:::i;:::-;23709:39;;;;:::i;:::-;23687:18;;:61;;;;;;;:::i;:::-;;;;;;;;23818:12;;23798:16;;23791:4;:23;;;;:::i;:::-;23790:40;;;;:::i;:::-;23767:19;;:63;;;;;;;:::i;:::-;;;;;;;;23556:290;23178:668;23873:1;23866:4;:8;23862:91;;;23895:42;23911:4;23925;23932;23895:15;:42::i;:::-;23862:91;23979:4;23969:14;;;;;:::i;:::-;;;23126:869;24007:33;24023:4;24029:2;24033:6;24007:15;:33::i;:::-;19739:4309;;;;19626:4422;;;:::o;25144:1269::-;25183:23;25209:24;25227:4;25209:9;:24::i;:::-;25183:50;;25244:25;25293:19;;25272:18;;:40;;;;:::i;:::-;25244:68;;25348:1;25329:15;:20;:46;;;;25374:1;25353:17;:22;25329:46;25325:85;;;25392:7;;;;25325:85;25465:2;25444:18;;:23;;;;:::i;:::-;25426:15;:41;25422:115;;;25523:2;25502:18;;:23;;;;:::i;:::-;25484:41;;25422:115;25549:12;25623:23;25736:1;25703:17;25668:18;;25650:15;:36;;;;:::i;:::-;25649:71;;;;:::i;:::-;:88;;;;:::i;:::-;25623:114;;25750:51;25785:15;25767;:33;;;;:::i;:::-;25750:16;:51::i;:::-;25814:18;25835:21;25814:42;;25867:23;25893:10;25867:36;;25916:24;26036:1;26015:18;;:22;;;;:::i;:::-;25994:17;:44;;;;:::i;:::-;25957:19;;25944:10;:32;;;;:::i;:::-;25943:96;;;;:::i;:::-;25916:123;;26071:16;26052:35;;;;;:::i;:::-;;;26121:1;26100:18;:22;;;;26155:1;26133:19;:23;;;;26191:1;26173:15;:19;:42;;;;;26214:1;26196:15;:19;26173:42;26169:121;;;26232:46;26245:15;26262;26232:12;:46::i;:::-;26169:121;26324:17;;;;;;;;;;;26316:31;;26369:21;26316:89;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26302:103;;;;;25172:1241;;;;;;;25144:1269;:::o;18494:236::-;18611:5;18577:25;:31;18603:4;18577:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18627;18654:4;18660:5;18627:26;:39::i;:::-;18716:5;18682:40;;18710:4;18682:40;;;;;;;;;;;;18494:236;;:::o;7015:651::-;7173:1;7155:20;;:6;:20;;;7147:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7257:1;7236:23;;:9;:23;;;7228:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7312:21;7336:9;:17;7346:6;7336:17;;;;;;;;;;;;;;;;7312:41;;7403:6;7386:13;:23;;7364:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;7547:6;7531:13;:22;7511:9;:17;7521:6;7511:17;;;;;;;;;;;;;;;:42;;;;7599:6;7575:9;:20;7585:9;7575:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7640:9;7623:35;;7632:6;7623:35;;;7651:6;7623:35;;;;;;:::i;:::-;;;;;;;;7136:530;7015:651;;;:::o;24056:571::-;24182:21;24220:1;24206:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24182:40;;24251:4;24233;24238:1;24233:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24277:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24267:4;24272:1;24267:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;24306:56;24323:4;24338:9;;;;;;;;;;;24350:11;24306:8;:56::i;:::-;24401:9;;;;;;;;;;;:60;;;24476:11;24502:1;24546:4;24573;24593:15;24401:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24111:516;24056:571;:::o;24635:501::-;24783:56;24800:4;24815:9;;;;;;;;;;;24827:11;24783:8;:56::i;:::-;24882:9;;;;;;;;;;;:25;;;24915:9;24948:4;24968:11;24994:1;25037;25080:7;:5;:7::i;:::-;25102:15;24882:246;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24635:501;;:::o;17562:221::-;17706:10;17664:31;:39;17696:6;17664:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;17732:43;17756:6;17764:10;17732:43;;;;;;;:::i;:::-;;;;;;;;17562:221;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:60::-;2672:3;2693:5;2686:12;;2644:60;;;:::o;2710:142::-;2760:9;2793:53;2811:34;2820:24;2838:5;2820:24;:::i;:::-;2811:34;:::i;:::-;2793:53;:::i;:::-;2780:66;;2710:142;;;:::o;2858:126::-;2908:9;2941:37;2972:5;2941:37;:::i;:::-;2928:50;;2858:126;;;:::o;2990:144::-;3058:9;3091:37;3122:5;3091:37;:::i;:::-;3078:50;;2990:144;;;:::o;3140:167::-;3245:55;3294:5;3245:55;:::i;:::-;3240:3;3233:68;3140:167;;:::o;3313:258::-;3424:4;3462:2;3451:9;3447:18;3439:26;;3475:89;3561:1;3550:9;3546:17;3537:6;3475:89;:::i;:::-;3313:258;;;;:::o;3577:96::-;3614:7;3643:24;3661:5;3643:24;:::i;:::-;3632:35;;3577:96;;;:::o;3679:122::-;3752:24;3770:5;3752:24;:::i;:::-;3745:5;3742:35;3732:63;;3791:1;3788;3781:12;3732:63;3679:122;:::o;3807:139::-;3853:5;3891:6;3878:20;3869:29;;3907:33;3934:5;3907:33;:::i;:::-;3807:139;;;;:::o;3952:474::-;4020:6;4028;4077:2;4065:9;4056:7;4052:23;4048:32;4045:119;;;4083:79;;:::i;:::-;4045:119;4203:1;4228:53;4273:7;4264:6;4253:9;4249:22;4228:53;:::i;:::-;4218:63;;4174:117;4330:2;4356:53;4401:7;4392:6;4381:9;4377:22;4356:53;:::i;:::-;4346:63;;4301:118;3952:474;;;;;:::o;4432:90::-;4466:7;4509:5;4502:13;4495:21;4484:32;;4432:90;;;:::o;4528:109::-;4609:21;4624:5;4609:21;:::i;:::-;4604:3;4597:34;4528:109;;:::o;4643:210::-;4730:4;4768:2;4757:9;4753:18;4745:26;;4781:65;4843:1;4832:9;4828:17;4819:6;4781:65;:::i;:::-;4643:210;;;;:::o;4859:329::-;4918:6;4967:2;4955:9;4946:7;4942:23;4938:32;4935:119;;;4973:79;;:::i;:::-;4935:119;5093:1;5118:53;5163:7;5154:6;5143:9;5139:22;5118:53;:::i;:::-;5108:63;;5064:117;4859:329;;;;:::o;5194:118::-;5281:24;5299:5;5281:24;:::i;:::-;5276:3;5269:37;5194:118;;:::o;5318:222::-;5411:4;5449:2;5438:9;5434:18;5426:26;;5462:71;5530:1;5519:9;5515:17;5506:6;5462:71;:::i;:::-;5318:222;;;;:::o;5546:619::-;5623:6;5631;5639;5688:2;5676:9;5667:7;5663:23;5659:32;5656:119;;;5694:79;;:::i;:::-;5656:119;5814:1;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5785:117;5941:2;5967:53;6012:7;6003:6;5992:9;5988:22;5967:53;:::i;:::-;5957:63;;5912:118;6069:2;6095:53;6140:7;6131:6;6120:9;6116:22;6095:53;:::i;:::-;6085:63;;6040:118;5546:619;;;;;:::o;6171:329::-;6230:6;6279:2;6267:9;6258:7;6254:23;6250:32;6247:119;;;6285:79;;:::i;:::-;6247:119;6405:1;6430:53;6475:7;6466:6;6455:9;6451:22;6430:53;:::i;:::-;6420:63;;6376:117;6171:329;;;;:::o;6506:86::-;6541:7;6581:4;6574:5;6570:16;6559:27;;6506:86;;;:::o;6598:112::-;6681:22;6697:5;6681:22;:::i;:::-;6676:3;6669:35;6598:112;;:::o;6716:214::-;6805:4;6843:2;6832:9;6828:18;6820:26;;6856:67;6920:1;6909:9;6905:17;6896:6;6856:67;:::i;:::-;6716:214;;;;:::o;6936:118::-;7023:24;7041:5;7023:24;:::i;:::-;7018:3;7011:37;6936:118;;:::o;7060:222::-;7153:4;7191:2;7180:9;7176:18;7168:26;;7204:71;7272:1;7261:9;7257:17;7248:6;7204:71;:::i;:::-;7060:222;;;;:::o;7288:116::-;7358:21;7373:5;7358:21;:::i;:::-;7351:5;7348:32;7338:60;;7394:1;7391;7384:12;7338:60;7288:116;:::o;7410:133::-;7453:5;7491:6;7478:20;7469:29;;7507:30;7531:5;7507:30;:::i;:::-;7410:133;;;;:::o;7549:468::-;7614:6;7622;7671:2;7659:9;7650:7;7646:23;7642:32;7639:119;;;7677:79;;:::i;:::-;7639:119;7797:1;7822:53;7867:7;7858:6;7847:9;7843:22;7822:53;:::i;:::-;7812:63;;7768:117;7924:2;7950:50;7992:7;7983:6;7972:9;7968:22;7950:50;:::i;:::-;7940:60;;7895:115;7549:468;;;;;:::o;8023:323::-;8079:6;8128:2;8116:9;8107:7;8103:23;8099:32;8096:119;;;8134:79;;:::i;:::-;8096:119;8254:1;8279:50;8321:7;8312:6;8301:9;8297:22;8279:50;:::i;:::-;8269:60;;8225:114;8023:323;;;;:::o;8352:474::-;8420:6;8428;8477:2;8465:9;8456:7;8452:23;8448:32;8445:119;;;8483:79;;:::i;:::-;8445:119;8603:1;8628:53;8673:7;8664:6;8653:9;8649:22;8628:53;:::i;:::-;8618:63;;8574:117;8730:2;8756:53;8801:7;8792:6;8781:9;8777:22;8756:53;:::i;:::-;8746:63;;8701:118;8352:474;;;;;:::o;8832:182::-;8972:34;8968:1;8960:6;8956:14;8949:58;8832:182;:::o;9020:366::-;9162:3;9183:67;9247:2;9242:3;9183:67;:::i;:::-;9176:74;;9259:93;9348:3;9259:93;:::i;:::-;9377:2;9372:3;9368:12;9361:19;;9020:366;;;:::o;9392:419::-;9558:4;9596:2;9585:9;9581:18;9573:26;;9645:9;9639:4;9635:20;9631:1;9620:9;9616:17;9609:47;9673:131;9799:4;9673:131;:::i;:::-;9665:139;;9392:419;;;:::o;9817:180::-;9865:77;9862:1;9855:88;9962:4;9959:1;9952:15;9986:4;9983:1;9976:15;10003:191;10043:3;10062:20;10080:1;10062:20;:::i;:::-;10057:25;;10096:20;10114:1;10096:20;:::i;:::-;10091:25;;10139:1;10136;10132:9;10125:16;;10160:3;10157:1;10154:10;10151:36;;;10167:18;;:::i;:::-;10151:36;10003:191;;;;:::o;10200:179::-;10340:31;10336:1;10328:6;10324:14;10317:55;10200:179;:::o;10385:366::-;10527:3;10548:67;10612:2;10607:3;10548:67;:::i;:::-;10541:74;;10624:93;10713:3;10624:93;:::i;:::-;10742:2;10737:3;10733:12;10726:19;;10385:366;;;:::o;10757:419::-;10923:4;10961:2;10950:9;10946:18;10938:26;;11010:9;11004:4;11000:20;10996:1;10985:9;10981:17;10974:47;11038:131;11164:4;11038:131;:::i;:::-;11030:139;;10757:419;;;:::o;11182:180::-;11230:77;11227:1;11220:88;11327:4;11324:1;11317:15;11351:4;11348:1;11341:15;11368:320;11412:6;11449:1;11443:4;11439:12;11429:22;;11496:1;11490:4;11486:12;11517:18;11507:81;;11573:4;11565:6;11561:17;11551:27;;11507:81;11635:2;11627:6;11624:14;11604:18;11601:38;11598:84;;11654:18;;:::i;:::-;11598:84;11419:269;11368:320;;;:::o;11694:227::-;11834:34;11830:1;11822:6;11818:14;11811:58;11903:10;11898:2;11890:6;11886:15;11879:35;11694:227;:::o;11927:366::-;12069:3;12090:67;12154:2;12149:3;12090:67;:::i;:::-;12083:74;;12166:93;12255:3;12166:93;:::i;:::-;12284:2;12279:3;12275:12;12268:19;;11927:366;;;:::o;12299:419::-;12465:4;12503:2;12492:9;12488:18;12480:26;;12552:9;12546:4;12542:20;12538:1;12527:9;12523:17;12516:47;12580:131;12706:4;12580:131;:::i;:::-;12572:139;;12299:419;;;:::o;12724:410::-;12764:7;12787:20;12805:1;12787:20;:::i;:::-;12782:25;;12821:20;12839:1;12821:20;:::i;:::-;12816:25;;12876:1;12873;12869:9;12898:30;12916:11;12898:30;:::i;:::-;12887:41;;13077:1;13068:7;13064:15;13061:1;13058:22;13038:1;13031:9;13011:83;12988:139;;13107:18;;:::i;:::-;12988:139;12772:362;12724:410;;;;:::o;13140:180::-;13188:77;13185:1;13178:88;13285:4;13282:1;13275:15;13309:4;13306:1;13299:15;13326:185;13366:1;13383:20;13401:1;13383:20;:::i;:::-;13378:25;;13417:20;13435:1;13417:20;:::i;:::-;13412:25;;13456:1;13446:35;;13461:18;;:::i;:::-;13446:35;13503:1;13500;13496:9;13491:14;;13326:185;;;;:::o;13517:229::-;13657:34;13653:1;13645:6;13641:14;13634:58;13726:12;13721:2;13713:6;13709:15;13702:37;13517:229;:::o;13752:366::-;13894:3;13915:67;13979:2;13974:3;13915:67;:::i;:::-;13908:74;;13991:93;14080:3;13991:93;:::i;:::-;14109:2;14104:3;14100:12;14093:19;;13752:366;;;:::o;14124:419::-;14290:4;14328:2;14317:9;14313:18;14305:26;;14377:9;14371:4;14367:20;14363:1;14352:9;14348:17;14341:47;14405:131;14531:4;14405:131;:::i;:::-;14397:139;;14124:419;;;:::o;14549:228::-;14689:34;14685:1;14677:6;14673:14;14666:58;14758:11;14753:2;14745:6;14741:15;14734:36;14549:228;:::o;14783:366::-;14925:3;14946:67;15010:2;15005:3;14946:67;:::i;:::-;14939:74;;15022:93;15111:3;15022:93;:::i;:::-;15140:2;15135:3;15131:12;15124:19;;14783:366;;;:::o;15155:419::-;15321:4;15359:2;15348:9;15344:18;15336:26;;15408:9;15402:4;15398:20;15394:1;15383:9;15379:17;15372:47;15436:131;15562:4;15436:131;:::i;:::-;15428:139;;15155:419;;;:::o;15580:225::-;15720:34;15716:1;15708:6;15704:14;15697:58;15789:8;15784:2;15776:6;15772:15;15765:33;15580:225;:::o;15811:366::-;15953:3;15974:67;16038:2;16033:3;15974:67;:::i;:::-;15967:74;;16050:93;16139:3;16050:93;:::i;:::-;16168:2;16163:3;16159:12;16152:19;;15811:366;;;:::o;16183:419::-;16349:4;16387:2;16376:9;16372:18;16364:26;;16436:9;16430:4;16426:20;16422:1;16411:9;16407:17;16400:47;16464:131;16590:4;16464:131;:::i;:::-;16456:139;;16183:419;;;:::o;16608:251::-;16748:34;16744:1;16736:6;16732:14;16725:58;16817:34;16812:2;16804:6;16800:15;16793:59;16608:251;:::o;16865:366::-;17007:3;17028:67;17092:2;17087:3;17028:67;:::i;:::-;17021:74;;17104:93;17193:3;17104:93;:::i;:::-;17222:2;17217:3;17213:12;17206:19;;16865:366;;;:::o;17237:419::-;17403:4;17441:2;17430:9;17426:18;17418:26;;17490:9;17484:4;17480:20;17476:1;17465:9;17461:17;17454:47;17518:131;17644:4;17518:131;:::i;:::-;17510:139;;17237:419;;;:::o;17662:179::-;17802:31;17798:1;17790:6;17786:14;17779:55;17662:179;:::o;17847:366::-;17989:3;18010:67;18074:2;18069:3;18010:67;:::i;:::-;18003:74;;18086:93;18175:3;18086:93;:::i;:::-;18204:2;18199:3;18195:12;18188:19;;17847:366;;;:::o;18219:419::-;18385:4;18423:2;18412:9;18408:18;18400:26;;18472:9;18466:4;18462:20;18458:1;18447:9;18443:17;18436:47;18500:131;18626:4;18500:131;:::i;:::-;18492:139;;18219:419;;;:::o;18644:226::-;18784:34;18780:1;18772:6;18768:14;18761:58;18853:9;18848:2;18840:6;18836:15;18829:34;18644:226;:::o;18876:366::-;19018:3;19039:67;19103:2;19098:3;19039:67;:::i;:::-;19032:74;;19115:93;19204:3;19115:93;:::i;:::-;19233:2;19228:3;19224:12;19217:19;;18876:366;;;:::o;19248:419::-;19414:4;19452:2;19441:9;19437:18;19429:26;;19501:9;19495:4;19491:20;19487:1;19476:9;19472:17;19465:47;19529:131;19655:4;19529:131;:::i;:::-;19521:139;;19248:419;;;:::o;19673:174::-;19813:26;19809:1;19801:6;19797:14;19790:50;19673:174;:::o;19853:366::-;19995:3;20016:67;20080:2;20075:3;20016:67;:::i;:::-;20009:74;;20092:93;20181:3;20092:93;:::i;:::-;20210:2;20205:3;20201:12;20194:19;;19853:366;;;:::o;20225:419::-;20391:4;20429:2;20418:9;20414:18;20406:26;;20478:9;20472:4;20468:20;20464:1;20453:9;20449:17;20442:47;20506:131;20632:4;20506:131;:::i;:::-;20498:139;;20225:419;;;:::o;20650:173::-;20790:25;20786:1;20778:6;20774:14;20767:49;20650:173;:::o;20829:366::-;20971:3;20992:67;21056:2;21051:3;20992:67;:::i;:::-;20985:74;;21068:93;21157:3;21068:93;:::i;:::-;21186:2;21181:3;21177:12;21170:19;;20829:366;;;:::o;21201:419::-;21367:4;21405:2;21394:9;21390:18;21382:26;;21454:9;21448:4;21444:20;21440:1;21429:9;21425:17;21418:47;21482:131;21608:4;21482:131;:::i;:::-;21474:139;;21201:419;;;:::o;21626:244::-;21766:34;21762:1;21754:6;21750:14;21743:58;21835:27;21830:2;21822:6;21818:15;21811:52;21626:244;:::o;21876:366::-;22018:3;22039:67;22103:2;22098:3;22039:67;:::i;:::-;22032:74;;22115:93;22204:3;22115:93;:::i;:::-;22233:2;22228:3;22224:12;22217:19;;21876:366;;;:::o;22248:419::-;22414:4;22452:2;22441:9;22437:18;22429:26;;22501:9;22495:4;22491:20;22487:1;22476:9;22472:17;22465:47;22529:131;22655:4;22529:131;:::i;:::-;22521:139;;22248:419;;;:::o;22673:224::-;22813:34;22809:1;22801:6;22797:14;22790:58;22882:7;22877:2;22869:6;22865:15;22858:32;22673:224;:::o;22903:366::-;23045:3;23066:67;23130:2;23125:3;23066:67;:::i;:::-;23059:74;;23142:93;23231:3;23142:93;:::i;:::-;23260:2;23255:3;23251:12;23244:19;;22903:366;;;:::o;23275:419::-;23441:4;23479:2;23468:9;23464:18;23456:26;;23528:9;23522:4;23518:20;23514:1;23503:9;23499:17;23492:47;23556:131;23682:4;23556:131;:::i;:::-;23548:139;;23275:419;;;:::o;23700:231::-;23840:34;23836:1;23828:6;23824:14;23817:58;23909:14;23904:2;23896:6;23892:15;23885:39;23700:231;:::o;23937:366::-;24079:3;24100:67;24164:2;24159:3;24100:67;:::i;:::-;24093:74;;24176:93;24265:3;24176:93;:::i;:::-;24294:2;24289:3;24285:12;24278:19;;23937:366;;;:::o;24309:419::-;24475:4;24513:2;24502:9;24498:18;24490:26;;24562:9;24556:4;24552:20;24548:1;24537:9;24533:17;24526:47;24590:131;24716:4;24590:131;:::i;:::-;24582:139;;24309:419;;;:::o;24734:230::-;24874:34;24870:1;24862:6;24858:14;24851:58;24943:13;24938:2;24930:6;24926:15;24919:38;24734:230;:::o;24970:366::-;25112:3;25133:67;25197:2;25192:3;25133:67;:::i;:::-;25126:74;;25209:93;25298:3;25209:93;:::i;:::-;25327:2;25322:3;25318:12;25311:19;;24970:366;;;:::o;25342:419::-;25508:4;25546:2;25535:9;25531:18;25523:26;;25595:9;25589:4;25585:20;25581:1;25570:9;25566:17;25559:47;25623:131;25749:4;25623:131;:::i;:::-;25615:139;;25342:419;;;:::o;25767:240::-;25907:34;25903:1;25895:6;25891:14;25884:58;25976:23;25971:2;25963:6;25959:15;25952:48;25767:240;:::o;26013:366::-;26155:3;26176:67;26240:2;26235:3;26176:67;:::i;:::-;26169:74;;26252:93;26341:3;26252:93;:::i;:::-;26370:2;26365:3;26361:12;26354:19;;26013:366;;;:::o;26385:419::-;26551:4;26589:2;26578:9;26574:18;26566:26;;26638:9;26632:4;26628:20;26624:1;26613:9;26609:17;26602:47;26666:131;26792:4;26666:131;:::i;:::-;26658:139;;26385:419;;;:::o;26810:239::-;26950:34;26946:1;26938:6;26934:14;26927:58;27019:22;27014:2;27006:6;27002:15;26995:47;26810:239;:::o;27055:366::-;27197:3;27218:67;27282:2;27277:3;27218:67;:::i;:::-;27211:74;;27294:93;27383:3;27294:93;:::i;:::-;27412:2;27407:3;27403:12;27396:19;;27055:366;;;:::o;27427:419::-;27593:4;27631:2;27620:9;27616:18;27608:26;;27680:9;27674:4;27670:20;27666:1;27655:9;27651:17;27644:47;27708:131;27834:4;27708:131;:::i;:::-;27700:139;;27427:419;;;:::o;27852:230::-;27992:34;27988:1;27980:6;27976:14;27969:58;28061:13;28056:2;28048:6;28044:15;28037:38;27852:230;:::o;28088:366::-;28230:3;28251:67;28315:2;28310:3;28251:67;:::i;:::-;28244:74;;28327:93;28416:3;28327:93;:::i;:::-;28445:2;28440:3;28436:12;28429:19;;28088:366;;;:::o;28460:419::-;28626:4;28664:2;28653:9;28649:18;28641:26;;28713:9;28707:4;28703:20;28699:1;28688:9;28684:17;28677:47;28741:131;28867:4;28741:131;:::i;:::-;28733:139;;28460:419;;;:::o;28885:228::-;29025:34;29021:1;29013:6;29009:14;29002:58;29094:11;29089:2;29081:6;29077:15;29070:36;28885:228;:::o;29119:366::-;29261:3;29282:67;29346:2;29341:3;29282:67;:::i;:::-;29275:74;;29358:93;29447:3;29358:93;:::i;:::-;29476:2;29471:3;29467:12;29460:19;;29119:366;;;:::o;29491:419::-;29657:4;29695:2;29684:9;29680:18;29672:26;;29744:9;29738:4;29734:20;29730:1;29719:9;29715:17;29708:47;29772:131;29898:4;29772:131;:::i;:::-;29764:139;;29491:419;;;:::o;29916:225::-;30056:34;30052:1;30044:6;30040:14;30033:58;30125:8;30120:2;30112:6;30108:15;30101:33;29916:225;:::o;30147:366::-;30289:3;30310:67;30374:2;30369:3;30310:67;:::i;:::-;30303:74;;30386:93;30475:3;30386:93;:::i;:::-;30504:2;30499:3;30495:12;30488:19;;30147:366;;;:::o;30519:419::-;30685:4;30723:2;30712:9;30708:18;30700:26;;30772:9;30766:4;30762:20;30758:1;30747:9;30743:17;30736:47;30800:131;30926:4;30800:131;:::i;:::-;30792:139;;30519:419;;;:::o;30944:147::-;31045:11;31082:3;31067:18;;30944:147;;;;:::o;31097:114::-;;:::o;31217:398::-;31376:3;31397:83;31478:1;31473:3;31397:83;:::i;:::-;31390:90;;31489:93;31578:3;31489:93;:::i;:::-;31607:1;31602:3;31598:11;31591:18;;31217:398;;;:::o;31621:379::-;31805:3;31827:147;31970:3;31827:147;:::i;:::-;31820:154;;31991:3;31984:10;;31621:379;;;:::o;32006:176::-;32146:28;32142:1;32134:6;32130:14;32123:52;32006:176;:::o;32188:366::-;32330:3;32351:67;32415:2;32410:3;32351:67;:::i;:::-;32344:74;;32427:93;32516:3;32427:93;:::i;:::-;32545:2;32540:3;32536:12;32529:19;;32188:366;;;:::o;32560:419::-;32726:4;32764:2;32753:9;32749:18;32741:26;;32813:9;32807:4;32803:20;32799:1;32788:9;32784:17;32777:47;32841:131;32967:4;32841:131;:::i;:::-;32833:139;;32560:419;;;:::o;32985:239::-;33125:34;33121:1;33113:6;33109:14;33102:58;33194:22;33189:2;33181:6;33177:15;33170:47;32985:239;:::o;33230:366::-;33372:3;33393:67;33457:2;33452:3;33393:67;:::i;:::-;33386:74;;33469:93;33558:3;33469:93;:::i;:::-;33587:2;33582:3;33578:12;33571:19;;33230:366;;;:::o;33602:419::-;33768:4;33806:2;33795:9;33791:18;33783:26;;33855:9;33849:4;33845:20;33841:1;33830:9;33826:17;33819:47;33883:131;34009:4;33883:131;:::i;:::-;33875:139;;33602:419;;;:::o;34027:143::-;34084:5;34115:6;34109:13;34100:22;;34131:33;34158:5;34131:33;:::i;:::-;34027:143;;;;:::o;34176:351::-;34246:6;34295:2;34283:9;34274:7;34270:23;34266:32;34263:119;;;34301:79;;:::i;:::-;34263:119;34421:1;34446:64;34502:7;34493:6;34482:9;34478:22;34446:64;:::i;:::-;34436:74;;34392:128;34176:351;;;;:::o;34533:332::-;34654:4;34692:2;34681:9;34677:18;34669:26;;34705:71;34773:1;34762:9;34758:17;34749:6;34705:71;:::i;:::-;34786:72;34854:2;34843:9;34839:18;34830:6;34786:72;:::i;:::-;34533:332;;;;;:::o;34871:137::-;34925:5;34956:6;34950:13;34941:22;;34972:30;34996:5;34972:30;:::i;:::-;34871:137;;;;:::o;35014:345::-;35081:6;35130:2;35118:9;35109:7;35105:23;35101:32;35098:119;;;35136:79;;:::i;:::-;35098:119;35256:1;35281:61;35334:7;35325:6;35314:9;35310:22;35281:61;:::i;:::-;35271:71;;35227:125;35014:345;;;;:::o;35365:223::-;35505:34;35501:1;35493:6;35489:14;35482:58;35574:6;35569:2;35561:6;35557:15;35550:31;35365:223;:::o;35594:366::-;35736:3;35757:67;35821:2;35816:3;35757:67;:::i;:::-;35750:74;;35833:93;35922:3;35833:93;:::i;:::-;35951:2;35946:3;35942:12;35935:19;;35594:366;;;:::o;35966:419::-;36132:4;36170:2;36159:9;36155:18;36147:26;;36219:9;36213:4;36209:20;36205:1;36194:9;36190:17;36183:47;36247:131;36373:4;36247:131;:::i;:::-;36239:139;;35966:419;;;:::o;36391:221::-;36531:34;36527:1;36519:6;36515:14;36508:58;36600:4;36595:2;36587:6;36583:15;36576:29;36391:221;:::o;36618:366::-;36760:3;36781:67;36845:2;36840:3;36781:67;:::i;:::-;36774:74;;36857:93;36946:3;36857:93;:::i;:::-;36975:2;36970:3;36966:12;36959:19;;36618:366;;;:::o;36990:419::-;37156:4;37194:2;37183:9;37179:18;37171:26;;37243:9;37237:4;37233:20;37229:1;37218:9;37214:17;37207:47;37271:131;37397:4;37271:131;:::i;:::-;37263:139;;36990:419;;;:::o;37415:224::-;37555:34;37551:1;37543:6;37539:14;37532:58;37624:7;37619:2;37611:6;37607:15;37600:32;37415:224;:::o;37645:366::-;37787:3;37808:67;37872:2;37867:3;37808:67;:::i;:::-;37801:74;;37884:93;37973:3;37884:93;:::i;:::-;38002:2;37997:3;37993:12;37986:19;;37645:366;;;:::o;38017:419::-;38183:4;38221:2;38210:9;38206:18;38198:26;;38270:9;38264:4;38260:20;38256:1;38245:9;38241:17;38234:47;38298:131;38424:4;38298:131;:::i;:::-;38290:139;;38017:419;;;:::o;38442:222::-;38582:34;38578:1;38570:6;38566:14;38559:58;38651:5;38646:2;38638:6;38634:15;38627:30;38442:222;:::o;38670:366::-;38812:3;38833:67;38897:2;38892:3;38833:67;:::i;:::-;38826:74;;38909:93;38998:3;38909:93;:::i;:::-;39027:2;39022:3;39018:12;39011:19;;38670:366;;;:::o;39042:419::-;39208:4;39246:2;39235:9;39231:18;39223:26;;39295:9;39289:4;39285:20;39281:1;39270:9;39266:17;39259:47;39323:131;39449:4;39323:131;:::i;:::-;39315:139;;39042:419;;;:::o;39467:179::-;39607:31;39603:1;39595:6;39591:14;39584:55;39467:179;:::o;39652:366::-;39794:3;39815:67;39879:2;39874:3;39815:67;:::i;:::-;39808:74;;39891:93;39980:3;39891:93;:::i;:::-;40009:2;40004:3;40000:12;39993:19;;39652:366;;;:::o;40024:419::-;40190:4;40228:2;40217:9;40213:18;40205:26;;40277:9;40271:4;40267:20;40263:1;40252:9;40248:17;40241:47;40305:131;40431:4;40305:131;:::i;:::-;40297:139;;40024:419;;;:::o;40449:172::-;40589:24;40585:1;40577:6;40573:14;40566:48;40449:172;:::o;40627:366::-;40769:3;40790:67;40854:2;40849:3;40790:67;:::i;:::-;40783:74;;40866:93;40955:3;40866:93;:::i;:::-;40984:2;40979:3;40975:12;40968:19;;40627:366;;;:::o;40999:419::-;41165:4;41203:2;41192:9;41188:18;41180:26;;41252:9;41246:4;41242:20;41238:1;41227:9;41223:17;41216:47;41280:131;41406:4;41280:131;:::i;:::-;41272:139;;40999:419;;;:::o;41424:194::-;41464:4;41484:20;41502:1;41484:20;:::i;:::-;41479:25;;41518:20;41536:1;41518:20;:::i;:::-;41513:25;;41562:1;41559;41555:9;41547:17;;41586:1;41580:4;41577:11;41574:37;;;41591:18;;:::i;:::-;41574:37;41424:194;;;;:::o;41624:240::-;41764:34;41760:1;41752:6;41748:14;41741:58;41833:23;41828:2;41820:6;41816:15;41809:48;41624:240;:::o;41870:366::-;42012:3;42033:67;42097:2;42092:3;42033:67;:::i;:::-;42026:74;;42109:93;42198:3;42109:93;:::i;:::-;42227:2;42222:3;42218:12;42211:19;;41870:366;;;:::o;42242:419::-;42408:4;42446:2;42435:9;42431:18;42423:26;;42495:9;42489:4;42485:20;42481:1;42470:9;42466:17;42459:47;42523:131;42649:4;42523:131;:::i;:::-;42515:139;;42242:419;;;:::o;42667:227::-;42807:34;42803:1;42795:6;42791:14;42784:58;42876:10;42871:2;42863:6;42859:15;42852:35;42667:227;:::o;42900:366::-;43042:3;43063:67;43127:2;43122:3;43063:67;:::i;:::-;43056:74;;43139:93;43228:3;43139:93;:::i;:::-;43257:2;43252:3;43248:12;43241:19;;42900:366;;;:::o;43272:419::-;43438:4;43476:2;43465:9;43461:18;43453:26;;43525:9;43519:4;43515:20;43511:1;43500:9;43496:17;43489:47;43553:131;43679:4;43553:131;:::i;:::-;43545:139;;43272:419;;;:::o;43697:169::-;43837:21;43833:1;43825:6;43821:14;43814:45;43697:169;:::o;43872:366::-;44014:3;44035:67;44099:2;44094:3;44035:67;:::i;:::-;44028:74;;44111:93;44200:3;44111:93;:::i;:::-;44229:2;44224:3;44220:12;44213:19;;43872:366;;;:::o;44244:419::-;44410:4;44448:2;44437:9;44433:18;44425:26;;44497:9;44491:4;44487:20;44483:1;44472:9;44468:17;44461:47;44525:131;44651:4;44525:131;:::i;:::-;44517:139;;44244:419;;;:::o;44669:229::-;44809:34;44805:1;44797:6;44793:14;44786:58;44878:12;44873:2;44865:6;44861:15;44854:37;44669:229;:::o;44904:366::-;45046:3;45067:67;45131:2;45126:3;45067:67;:::i;:::-;45060:74;;45143:93;45232:3;45143:93;:::i;:::-;45261:2;45256:3;45252:12;45245:19;;44904:366;;;:::o;45276:419::-;45442:4;45480:2;45469:9;45465:18;45457:26;;45529:9;45523:4;45519:20;45515:1;45504:9;45500:17;45493:47;45557:131;45683:4;45557:131;:::i;:::-;45549:139;;45276:419;;;:::o;45701:180::-;45749:77;45746:1;45739:88;45846:4;45843:1;45836:15;45870:4;45867:1;45860:15;45887:225;46027:34;46023:1;46015:6;46011:14;46004:58;46096:8;46091:2;46083:6;46079:15;46072:33;45887:225;:::o;46118:366::-;46260:3;46281:67;46345:2;46340:3;46281:67;:::i;:::-;46274:74;;46357:93;46446:3;46357:93;:::i;:::-;46475:2;46470:3;46466:12;46459:19;;46118:366;;;:::o;46490:419::-;46656:4;46694:2;46683:9;46679:18;46671:26;;46743:9;46737:4;46733:20;46729:1;46718:9;46714:17;46707:47;46771:131;46897:4;46771:131;:::i;:::-;46763:139;;46490:419;;;:::o;46915:180::-;46963:77;46960:1;46953:88;47060:4;47057:1;47050:15;47084:4;47081:1;47074:15;47101:180;47149:77;47146:1;47139:88;47246:4;47243:1;47236:15;47270:4;47267:1;47260:15;47287:143;47344:5;47375:6;47369:13;47360:22;;47391:33;47418:5;47391:33;:::i;:::-;47287:143;;;;:::o;47436:351::-;47506:6;47555:2;47543:9;47534:7;47530:23;47526:32;47523:119;;;47561:79;;:::i;:::-;47523:119;47681:1;47706:64;47762:7;47753:6;47742:9;47738:22;47706:64;:::i;:::-;47696:74;;47652:128;47436:351;;;;:::o;47793:85::-;47838:7;47867:5;47856:16;;47793:85;;;:::o;47884:158::-;47942:9;47975:61;47993:42;48002:32;48028:5;48002:32;:::i;:::-;47993:42;:::i;:::-;47975:61;:::i;:::-;47962:74;;47884:158;;;:::o;48048:147::-;48143:45;48182:5;48143:45;:::i;:::-;48138:3;48131:58;48048:147;;:::o;48201:114::-;48268:6;48302:5;48296:12;48286:22;;48201:114;;;:::o;48321:184::-;48420:11;48454:6;48449:3;48442:19;48494:4;48489:3;48485:14;48470:29;;48321:184;;;;:::o;48511:132::-;48578:4;48601:3;48593:11;;48631:4;48626:3;48622:14;48614:22;;48511:132;;;:::o;48649:108::-;48726:24;48744:5;48726:24;:::i;:::-;48721:3;48714:37;48649:108;;:::o;48763:179::-;48832:10;48853:46;48895:3;48887:6;48853:46;:::i;:::-;48931:4;48926:3;48922:14;48908:28;;48763:179;;;;:::o;48948:113::-;49018:4;49050;49045:3;49041:14;49033:22;;48948:113;;;:::o;49097:732::-;49216:3;49245:54;49293:5;49245:54;:::i;:::-;49315:86;49394:6;49389:3;49315:86;:::i;:::-;49308:93;;49425:56;49475:5;49425:56;:::i;:::-;49504:7;49535:1;49520:284;49545:6;49542:1;49539:13;49520:284;;;49621:6;49615:13;49648:63;49707:3;49692:13;49648:63;:::i;:::-;49641:70;;49734:60;49787:6;49734:60;:::i;:::-;49724:70;;49580:224;49567:1;49564;49560:9;49555:14;;49520:284;;;49524:14;49820:3;49813:10;;49221:608;;;49097:732;;;;:::o;49835:831::-;50098:4;50136:3;50125:9;50121:19;50113:27;;50150:71;50218:1;50207:9;50203:17;50194:6;50150:71;:::i;:::-;50231:80;50307:2;50296:9;50292:18;50283:6;50231:80;:::i;:::-;50358:9;50352:4;50348:20;50343:2;50332:9;50328:18;50321:48;50386:108;50489:4;50480:6;50386:108;:::i;:::-;50378:116;;50504:72;50572:2;50561:9;50557:18;50548:6;50504:72;:::i;:::-;50586:73;50654:3;50643:9;50639:19;50630:6;50586:73;:::i;:::-;49835:831;;;;;;;;:::o;50672:807::-;50921:4;50959:3;50948:9;50944:19;50936:27;;50973:71;51041:1;51030:9;51026:17;51017:6;50973:71;:::i;:::-;51054:72;51122:2;51111:9;51107:18;51098:6;51054:72;:::i;:::-;51136:80;51212:2;51201:9;51197:18;51188:6;51136:80;:::i;:::-;51226;51302:2;51291:9;51287:18;51278:6;51226:80;:::i;:::-;51316:73;51384:3;51373:9;51369:19;51360:6;51316:73;:::i;:::-;51399;51467:3;51456:9;51452:19;51443:6;51399:73;:::i;:::-;50672:807;;;;;;;;;:::o;51485:663::-;51573:6;51581;51589;51638:2;51626:9;51617:7;51613:23;51609:32;51606:119;;;51644:79;;:::i;:::-;51606:119;51764:1;51789:64;51845:7;51836:6;51825:9;51821:22;51789:64;:::i;:::-;51779:74;;51735:128;51902:2;51928:64;51984:7;51975:6;51964:9;51960:22;51928:64;:::i;:::-;51918:74;;51873:129;52041:2;52067:64;52123:7;52114:6;52103:9;52099:22;52067:64;:::i;:::-;52057:74;;52012:129;51485:663;;;;;:::o;52154:320::-;52269:4;52307:2;52296:9;52292:18;52284:26;;52320:71;52388:1;52377:9;52373:17;52364:6;52320:71;:::i;:::-;52401:66;52463:2;52452:9;52448:18;52439:6;52401:66;:::i;:::-;52154:320;;;;;:::o

Swarm Source

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