ETH Price: $3,464.97 (+1.47%)
Gas: 27 Gwei

Token

Banana Radar (BANANA)
 

Overview

Max Total Supply

1,000,000,000 BANANA

Holders

7

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
15,570,362.44744043178079934 BANANA

Value
$0.00
0x4bc4218f4244315584d315786e4503f2eb4b5645
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:
Banana

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

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

/**

https://twitter.com/banana_radar

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        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() external virtual onlyOwner {
        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 IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

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

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

contract Banana is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address operationsAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    mapping (address => bool) public bot;
    uint256 public botsCaught;

    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 RemovedLimits();

    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 BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);
 
    event CaughtEarlyBuyer(address sniper);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20(unicode"Banana Radar", unicode"BANANA") {

        address newOwner = msg.sender; // can leave alone if owner is deployer.

        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

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

        uint256 totalSupply = 1 * 1e9 * 1e18;

        maxBuyAmount = totalSupply * 2 / 100;
        maxSellAmount = totalSupply * 2 / 100;
        maxWalletAmount = totalSupply * 2 / 100;
        swapTokensAtAmount = totalSupply * 1 / 1000;

        buyOperationsFee = 20;
        buyLiquidityFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;

        sellOperationsFee = 20;
        sellLiquidityFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

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

        operationsAddress = address(newOwner);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    // only enable if no plan to airdrop

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

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        emit RemovedLimits();
    }

    function manageBoughtEarly(address wallet, bool flag) external onlyOwner {
        bot[wallet] = flag;
    }

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

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

    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 1000)/1e18, "Cannot set max buy amount lower than 0.2%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

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

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%");
        maxWalletAmount = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(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 <= 20, "Must keep fees at 20% or less");
    }

    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee;
        require(sellTotalFees <= 20, "Must keep fees at 20% 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.");
        }

        require(!bot[from] && !bot[to], "Bots cannot transfer tokens in or out except to owner or dead address.");

        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                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) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[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
            address(0xdead),
            block.timestamp
        );
    }

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

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

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

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

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

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        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 setOperationsAddress(address _operationsAddress) external onlyOwner {
        require(_operationsAddress != address(0), "_operationsAddress address cannot be 0");
        operationsAddress = payable(_operationsAddress);
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= 0, "No tokens to swap");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","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":[],"name":"RemovedLimits","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":[{"internalType":"address","name":"","type":"address"}],"name":"bot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","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":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manageBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"massManageBoughtEarly","outputs":[],"stateMutability":"nonpayable","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":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","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":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"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":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600d556001601060006101000a81548160ff0219169083151502179055506000601060016101000a81548160ff0219169083151502179055506000601060026101000a81548160ff0219169083151502179055506001601260006101000a81548160ff0219169083151502179055503480156200008257600080fd5b506040518060400160405280600c81526020017f42616e616e6120526164617200000000000000000000000000000000000000008152506040518060400160405280600681526020017f42414e414e410000000000000000000000000000000000000000000000000000815250816003908162000100919062000e40565b50806004908162000112919062000e40565b5050506000620001276200060460201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000271573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000297919062000f91565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000325919062000f91565b6040518363ffffffff1660e01b81526004016200034492919062000fd4565b6020604051808303816000875af115801562000364573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038a919062000f91565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003ff600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200060c60201b60201c565b62000434600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006a260201b60201c565b60006b033b2e3c9fd0803ce80000009050606460028262000456919062001030565b620004629190620010aa565b600681905550606460028262000479919062001030565b620004859190620010aa565b60078190555060646002826200049c919062001030565b620004a89190620010aa565b6008819055506103e8600182620004c0919062001030565b620004cc9190620010aa565b600b81905550601480819055506000601581905550601554601454620004f39190620010e2565b601381905550601460178190555060006018819055506018546017546200051b9190620010e2565b601681905550620005348360016200060c60201b60201c565b620005473060016200060c60201b60201c565b6200055c61dead60016200060c60201b60201c565b6200056f8360016200075560201b60201c565b620005823060016200075560201b60201c565b6200059761dead60016200075560201b60201c565b82600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005ea8382620008a260201b60201c565b620005fb83620009f260201b60201c565b5050506200133f565b600033905090565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051620006969291906200113a565b60405180910390a15050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200070b82826200060c60201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620007656200060460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007ee90620011c8565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008969190620011ea565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000914576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200090b9062001257565b60405180910390fd5b8060026000828254620009289190620010e2565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200097f9190620010e2565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009e691906200128a565b60405180910390a35050565b62000a026200060460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a8b90620011c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000b06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000afd906200131d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c4857607f821691505b60208210810362000c5e5762000c5d62000c00565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000cc87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c89565b62000cd4868362000c89565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d2162000d1b62000d158462000cec565b62000cf6565b62000cec565b9050919050565b6000819050919050565b62000d3d8362000d00565b62000d5562000d4c8262000d28565b84845462000c96565b825550505050565b600090565b62000d6c62000d5d565b62000d7981848462000d32565b505050565b5b8181101562000da15762000d9560008262000d62565b60018101905062000d7f565b5050565b601f82111562000df05762000dba8162000c64565b62000dc58462000c79565b8101602085101562000dd5578190505b62000ded62000de48562000c79565b83018262000d7e565b50505b505050565b600082821c905092915050565b600062000e156000198460080262000df5565b1980831691505092915050565b600062000e30838362000e02565b9150826002028217905092915050565b62000e4b8262000bc6565b67ffffffffffffffff81111562000e675762000e6662000bd1565b5b62000e73825462000c2f565b62000e8082828562000da5565b600060209050601f83116001811462000eb8576000841562000ea3578287015190505b62000eaf858262000e22565b86555062000f1f565b601f19841662000ec88662000c64565b60005b8281101562000ef25784890151825560018201915060208501945060208101905062000ecb565b8683101562000f12578489015162000f0e601f89168262000e02565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f598262000f2c565b9050919050565b62000f6b8162000f4c565b811462000f7757600080fd5b50565b60008151905062000f8b8162000f60565b92915050565b60006020828403121562000faa5762000fa962000f27565b5b600062000fba8482850162000f7a565b91505092915050565b62000fce8162000f4c565b82525050565b600060408201905062000feb600083018562000fc3565b62000ffa602083018462000fc3565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200103d8262000cec565b91506200104a8362000cec565b92508282026200105a8162000cec565b9150828204841483151762001074576200107362001001565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010b78262000cec565b9150620010c48362000cec565b925082620010d757620010d66200107b565b5b828204905092915050565b6000620010ef8262000cec565b9150620010fc8362000cec565b925082820190508082111562001117576200111662001001565b5b92915050565b60008115159050919050565b62001134816200111d565b82525050565b600060408201905062001151600083018562000fc3565b62001160602083018462001129565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620011b060208362001167565b9150620011bd8262001178565b602082019050919050565b60006020820190508181036000830152620011e381620011a1565b9050919050565b600060208201905062001201600083018462001129565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200123f601f8362001167565b91506200124c8262001207565b602082019050919050565b60006020820190508181036000830152620012728162001230565b9050919050565b620012848162000cec565b82525050565b6000602082019050620012a1600083018462001279565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200130560268362001167565b91506200131282620012a7565b604082019050919050565b600060208201905081810360008301526200133881620012f6565b9050919050565b615f94806200134f6000396000f3fe6080604052600436106103545760003560e01c80637571336a116101c6578063c876d0b9116100f7578063e884f26011610095578063f2fde38b1161006f578063f2fde38b14610c3b578063f5648a4f14610c64578063f637434214610c7b578063fb002c9714610ca65761035b565b8063e884f26014610bce578063ee40166e14610be5578063f11a24d314610c105761035b565b8063dc3f0d0f116100d1578063dc3f0d0f14610b14578063dd62ed3e14610b3d578063e2f4560514610b7a578063e800dff714610ba55761035b565b8063c876d0b914610a95578063d257b34f14610ac0578063d85ba06314610ae95761035b565b8063a457c2d711610164578063b62496f51161013e578063b62496f5146109db578063bbc0c74214610a18578063c024666814610a43578063c18bc19514610a6c5761035b565b8063a457c2d714610936578063a9059cbb14610973578063aa4bde28146109b05761035b565b80638a8c523c116101a05780638a8c523c146108a05780638da5cb5b146108b757806395d89b41146108e25780639a7a23d61461090d5761035b565b80637571336a1461080f5780638366e79a1461083857806388e765ff146108755761035b565b8063452ed4f1116102a057806366d602ae1161023e5780636ddd1713116102185780636ddd17131461077957806370a08231146107a4578063715018a6146107e1578063751039fc146107f85761035b565b806366d602ae146106f85780636a486a8e146107235780636b0a894c1461074e5761035b565b80634f77f6c01161027a5780634f77f6c01461066257806351f205e41461068d5780635a139dd4146106a457806366ca9b83146106cf5761035b565b8063452ed4f1146105e3578063499b83941461060e5780634a62bb65146106375761035b565b806318160ddd1161030d5780632be32b61116102e75780632be32b6114610515578063313ce5671461053e578063353f23451461056957806339509351146105a65761035b565b806318160ddd146104825780631a8145bb146104ad57806323b872dd146104d85761035b565b806302dbd8f81461036057806306fdde03146103895780630758d924146103b4578063095ea7b3146103df57806310d5de531461041c578063130a2c3c146104595761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610387600480360381019061038291906145e3565b610cd1565b005b34801561039557600080fd5b5061039e610dd6565b6040516103ab91906146b3565b60405180910390f35b3480156103c057600080fd5b506103c9610e68565b6040516103d69190614754565b60405180910390f35b3480156103eb57600080fd5b50610406600480360381019061040191906147ad565b610e8e565b6040516104139190614808565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e9190614823565b610eac565b6040516104509190614808565b60405180910390f35b34801561046557600080fd5b50610480600480360381019061047b91906148e1565b610ecc565b005b34801561048e57600080fd5b50610497611008565b6040516104a49190614950565b60405180910390f35b3480156104b957600080fd5b506104c2611012565b6040516104cf9190614950565b60405180910390f35b3480156104e457600080fd5b506104ff60048036038101906104fa919061496b565b611018565b60405161050c9190614808565b60405180910390f35b34801561052157600080fd5b5061053c600480360381019061053791906149be565b611110565b005b34801561054a57600080fd5b50610553611273565b6040516105609190614a07565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190614823565b61127c565b60405161059d9190614808565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c891906147ad565b61129c565b6040516105da9190614808565b60405180910390f35b3480156105ef57600080fd5b506105f8611348565b6040516106059190614a31565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190614823565b61136e565b005b34801561064357600080fd5b5061064c6114b8565b6040516106599190614808565b60405180910390f35b34801561066e57600080fd5b506106776114cb565b6040516106849190614950565b60405180910390f35b34801561069957600080fd5b506106a26114d1565b005b3480156106b057600080fd5b506106b961162b565b6040516106c69190614950565b60405180910390f35b3480156106db57600080fd5b506106f660048036038101906106f191906145e3565b611631565b005b34801561070457600080fd5b5061070d611736565b60405161071a9190614950565b60405180910390f35b34801561072f57600080fd5b5061073861173c565b6040516107459190614950565b60405180910390f35b34801561075a57600080fd5b50610763611742565b6040516107709190614950565b60405180910390f35b34801561078557600080fd5b5061078e611748565b60405161079b9190614808565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c69190614823565b61175b565b6040516107d89190614950565b60405180910390f35b3480156107ed57600080fd5b506107f66117a3565b005b34801561080457600080fd5b5061080d6118fb565b005b34801561081b57600080fd5b5061083660048036038101906108319190614a4c565b6119f6565b005b34801561084457600080fd5b5061085f600480360381019061085a9190614a8c565b611b7e565b60405161086c9190614808565b60405180910390f35b34801561088157600080fd5b5061088a611dc4565b6040516108979190614950565b60405180910390f35b3480156108ac57600080fd5b506108b5611dca565b005b3480156108c357600080fd5b506108cc611f1c565b6040516108d99190614a31565b60405180910390f35b3480156108ee57600080fd5b506108f7611f46565b60405161090491906146b3565b60405180910390f35b34801561091957600080fd5b50610934600480360381019061092f9190614a4c565b611fd8565b005b34801561094257600080fd5b5061095d600480360381019061095891906147ad565b612153565b60405161096a9190614808565b60405180910390f35b34801561097f57600080fd5b5061099a600480360381019061099591906147ad565b61223e565b6040516109a79190614808565b60405180910390f35b3480156109bc57600080fd5b506109c561225c565b6040516109d29190614950565b60405180910390f35b3480156109e757600080fd5b50610a0260048036038101906109fd9190614823565b612262565b604051610a0f9190614808565b60405180910390f35b348015610a2457600080fd5b50610a2d612282565b604051610a3a9190614808565b60405180910390f35b348015610a4f57600080fd5b50610a6a6004803603810190610a659190614a4c565b612295565b005b348015610a7857600080fd5b50610a936004803603810190610a8e91906149be565b6123d5565b005b348015610aa157600080fd5b50610aaa612538565b604051610ab79190614808565b60405180910390f35b348015610acc57600080fd5b50610ae76004803603810190610ae291906149be565b61254b565b005b348015610af557600080fd5b50610afe6126b3565b604051610b0b9190614950565b60405180910390f35b348015610b2057600080fd5b50610b3b6004803603810190610b3691906149be565b6126b9565b005b348015610b4957600080fd5b50610b646004803603810190610b5f9190614a8c565b61281c565b604051610b719190614950565b60405180910390f35b348015610b8657600080fd5b50610b8f6128a3565b604051610b9c9190614950565b60405180910390f35b348015610bb157600080fd5b50610bcc6004803603810190610bc79190614a4c565b6128a9565b005b348015610bda57600080fd5b50610be361299b565b005b348015610bf157600080fd5b50610bfa612a4f565b604051610c079190614950565b60405180910390f35b348015610c1c57600080fd5b50610c25612a55565b604051610c329190614950565b60405180910390f35b348015610c4757600080fd5b50610c626004803603810190610c5d9190614823565b612a5b565b005b348015610c7057600080fd5b50610c79612c21565b005b348015610c8757600080fd5b50610c90612d29565b604051610c9d9190614950565b60405180910390f35b348015610cb257600080fd5b50610cbb612d2f565b604051610cc89190614950565b60405180910390f35b610cd9612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5f90614b18565b60405180910390fd5b8160178190555080601881905550601854601754610d869190614b67565b60168190555060146016541115610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc990614be7565b60405180910390fd5b5050565b606060038054610de590614c36565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1190614c36565b8015610e5e5780601f10610e3357610100808354040283529160200191610e5e565b820191906000526020600020905b815481529060010190602001808311610e4157829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ea2610e9b612d35565b8484612d3d565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b610ed4612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5a90614b18565b60405180910390fd5b60005b838390508110156110025781600e6000868685818110610f8957610f88614c67565b5b9050602002016020810190610f9e9190614823565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ffa90614c96565b915050610f66565b50505050565b6000600254905090565b601a5481565b6000611025848484612f06565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611070612d35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e790614d50565b60405180910390fd5b611104856110fc612d35565b858403612d3d565b60019150509392505050565b611118612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119e90614b18565b60405180910390fd5b670de0b6b3a76400006103e860026111bd611008565b6111c79190614d70565b6111d19190614de1565b6111db9190614de1565b81101561121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490614e84565b60405180910390fd5b670de0b6b3a7640000816112319190614d70565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de410096006546040516112689190614950565b60405180910390a150565b60006012905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b600061133e6112a9612d35565b8484600160006112b7612d35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113399190614b67565b612d3d565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611376612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fc90614b18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b90614f16565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900460ff1681565b60175481565b6114d9612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155f90614b18565b60405180910390fd5b60006115733061175b565b10156115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab90614f82565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506115d7613d16565b6000600a60146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb32426040516116219190614950565b60405180910390a1565b60145481565b611639612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bf90614b18565b60405180910390fd5b81601481905550806015819055506015546014546116e69190614b67565b60138190555060146013541115611732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172990614be7565b60405180910390fd5b5050565b60075481565b60165481565b600f5481565b601060029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117ab612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183190614b18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611903612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198990614b18565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506000601260006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6119fe612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8490614b18565b60405180910390fd5b80611b2357600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1990615014565b60405180910390fd5b5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611b88612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e90614b18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d90615080565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611cc19190614a31565b602060405180830381865afa158015611cde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0291906150b5565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611d3f9291906150e2565b6020604051808303816000875af1158015611d5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d829190615120565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611db59291906150e2565b60405180910390a15092915050565b60065481565b611dd2612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5890614b18565b60405180910390fd5b601060019054906101000a900460ff1615611eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea890615199565b60405180910390fd5b6001601060016101000a81548160ff0219169083151502179055506001601060026101000a81548160ff02191690831515021790555043600d819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611f5590614c36565b80601f0160208091040260200160405190810160405280929190818152602001828054611f8190614c36565b8015611fce5780601f10611fa357610100808354040283529160200191611fce565b820191906000526020600020905b815481529060010190602001808311611fb157829003601f168201915b5050505050905090565b611fe0612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461206f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206690614b18565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f69061522b565b60405180910390fd5b6121098282613ed8565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008060016000612162612d35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561221f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612216906152bd565b60405180910390fd5b61223361222a612d35565b85858403612d3d565b600191505092915050565b600061225261224b612d35565b8484612f06565b6001905092915050565b60085481565b601d6020528060005260406000206000915054906101000a900460ff1681565b601060019054906101000a900460ff1681565b61229d612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232390614b18565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516123c99190614808565b60405180910390a25050565b6123dd612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461246c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246390614b18565b60405180910390fd5b670de0b6b3a76400006103e86003612482611008565b61248c9190614d70565b6124969190614de1565b6124a09190614de1565b8110156124e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d99061534f565b60405180910390fd5b670de0b6b3a7640000816124f69190614d70565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc60085460405161252d9190614950565b60405180910390a150565b601260009054906101000a900460ff1681565b612553612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d990614b18565b60405180910390fd5b620186a060016125f0611008565b6125fa9190614d70565b6126049190614de1565b811015612646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263d906153e1565b60405180910390fd5b6103e86001612653611008565b61265d9190614d70565b6126679190614de1565b8111156126a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a090615473565b60405180910390fd5b80600b8190555050565b60135481565b6126c1612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790614b18565b60405180910390fd5b670de0b6b3a76400006103e86002612766611008565b6127709190614d70565b61277a9190614de1565b6127849190614de1565b8110156127c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bd90615505565b60405180910390fd5b670de0b6b3a7640000816127da9190614d70565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516128119190614950565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6128b1612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293790614b18565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6129a3612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2990614b18565b60405180910390fd5b6000601260006101000a81548160ff021916908315150217905550565b600d5481565b60155481565b612a63612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae990614b18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5890615597565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612c29612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612caf90614b18565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612cde906155e8565b60006040518083038185875af1925050503d8060008114612d1b576040519150601f19603f3d011682016040523d82523d6000602084013e612d20565b606091505b50508091505050565b60185481565b60195481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da39061566f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1290615701565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ef99190614950565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6c90615793565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fdb90615825565b60405180910390fd5b60008111613027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301e90615891565b60405180910390fd5b601060019054906101000a900460ff1661311c57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130dc5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61311b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613112906158fd565b60405180910390fd5b5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131c05750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6131ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131f6906159b5565b60405180910390fd5b601060009054906101000a900460ff16156138cb5761321c611f1c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561328a575061325a611f1c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132c35750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132fd575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133535750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133a95750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138ca57601260009054906101000a900460ff16156135e157600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561346f5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156135e05760024361348191906159d5565b601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410801561351857506002436134d691906159d5565b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b613557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354e90615a7b565b60405180910390fd5b43601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136845750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561372b576006548111156136ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136c590615b0d565b60405180910390fd5b6008546136da8361175b565b826136e59190614b67565b1115613726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371d90615b79565b60405180910390fd5b6138c9565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137ce5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561381d57600754811115613818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380f90615c0b565b60405180910390fd5b6138c8565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166138c75760085461387a8361175b565b826138859190614b67565b11156138c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138bd90615b79565b60405180910390fd5b5b5b5b5b5b60006138d63061175b565b90506000600b5482101590508080156138fb5750601060029054906101000a900460ff165b80156139145750600a60149054906101000a900460ff16155b801561396a5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139c05750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613a165750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a5a576001600a60146101000a81548160ff021916908315150217905550613a3e613d16565b6000600a60146101000a81548160ff0219169083151502179055505b600060019050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613b015750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613b0b57600090505b60008115613d0257601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b6e57506000601654115b15613bfa57606460165486613b839190614d70565b613b8d9190614de1565b905060165460185482613ba09190614d70565b613baa9190614de1565b601a6000828254613bbb9190614b67565b9250508190555060165460175482613bd39190614d70565b613bdd9190614de1565b60196000828254613bee9190614b67565b92505081905550613cde565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c5557506000601354115b15613cdd57606460135486613c6a9190614d70565b613c749190614de1565b905060135460155482613c879190614d70565b613c919190614de1565b601a6000828254613ca29190614b67565b9250508190555060135460145482613cba9190614d70565b613cc49190614de1565b60196000828254613cd59190614b67565b925050819055505b5b6000811115613cf357613cf2873083613f83565b5b8085613cff91906159d5565b94505b613d0d878787613f83565b50505050505050565b6000613d213061175b565b90506000601954601a54613d359190614b67565b90506000821480613d465750600081145b15613d52575050613ed6565b603c600b54613d619190614d70565b821115613d7a57603c600b54613d779190614d70565b91505b600080600283601a5486613d8e9190614d70565b613d989190614de1565b613da29190614de1565b9050613db88185613db391906159d5565b6141ec565b6000479050600081905060006002601a54613dd39190614de1565b86613dde91906159d5565b60195484613dec9190614d70565b613df69190614de1565b90508082613e0491906159d5565b91506000601a819055506000601981905550600084118015613e265750600082115b15613e3657613e35848361442f565b5b6000471115613ece57600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613e85906155e8565b60006040518083038185875af1925050503d8060008114613ec2576040519150601f19603f3d011682016040523d82523d6000602084013e613ec7565b606091505b5050809550505b505050505050505b565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613f39828261450f565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fe990615793565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603614061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161405890615825565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156140e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140de90615c9d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461417a9190614b67565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516141de9190614950565b60405180910390a350505050565b6000600267ffffffffffffffff81111561420957614208615cbd565b5b6040519080825280602002602001820160405280156142375781602001602082028036833780820191505090505b509050308160008151811061424f5761424e614c67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156142f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061431a9190615d01565b8160018151811061432e5761432d614c67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061439530600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d3d565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016143f9959493929190615e27565b600060405180830381600087803b15801561441357600080fd5b505af1158015614427573d6000803e3d6000fd5b505050505050565b61445c30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d3d565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016144c596959493929190615e81565b60606040518083038185885af11580156144e3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145089190615ee2565b5050505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051614597929190615f35565b60405180910390a15050565b600080fd5b600080fd5b6000819050919050565b6145c0816145ad565b81146145cb57600080fd5b50565b6000813590506145dd816145b7565b92915050565b600080604083850312156145fa576145f96145a3565b5b6000614608858286016145ce565b9250506020614619858286016145ce565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561465d578082015181840152602081019050614642565b60008484015250505050565b6000601f19601f8301169050919050565b600061468582614623565b61468f818561462e565b935061469f81856020860161463f565b6146a881614669565b840191505092915050565b600060208201905081810360008301526146cd818461467a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061471a614715614710846146d5565b6146f5565b6146d5565b9050919050565b600061472c826146ff565b9050919050565b600061473e82614721565b9050919050565b61474e81614733565b82525050565b60006020820190506147696000830184614745565b92915050565b600061477a826146d5565b9050919050565b61478a8161476f565b811461479557600080fd5b50565b6000813590506147a781614781565b92915050565b600080604083850312156147c4576147c36145a3565b5b60006147d285828601614798565b92505060206147e3858286016145ce565b9150509250929050565b60008115159050919050565b614802816147ed565b82525050565b600060208201905061481d60008301846147f9565b92915050565b600060208284031215614839576148386145a3565b5b600061484784828501614798565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261487557614874614850565b5b8235905067ffffffffffffffff81111561489257614891614855565b5b6020830191508360208202830111156148ae576148ad61485a565b5b9250929050565b6148be816147ed565b81146148c957600080fd5b50565b6000813590506148db816148b5565b92915050565b6000806000604084860312156148fa576148f96145a3565b5b600084013567ffffffffffffffff811115614918576149176145a8565b5b6149248682870161485f565b93509350506020614937868287016148cc565b9150509250925092565b61494a816145ad565b82525050565b60006020820190506149656000830184614941565b92915050565b600080600060608486031215614984576149836145a3565b5b600061499286828701614798565b93505060206149a386828701614798565b92505060406149b4868287016145ce565b9150509250925092565b6000602082840312156149d4576149d36145a3565b5b60006149e2848285016145ce565b91505092915050565b600060ff82169050919050565b614a01816149eb565b82525050565b6000602082019050614a1c60008301846149f8565b92915050565b614a2b8161476f565b82525050565b6000602082019050614a466000830184614a22565b92915050565b60008060408385031215614a6357614a626145a3565b5b6000614a7185828601614798565b9250506020614a82858286016148cc565b9150509250929050565b60008060408385031215614aa357614aa26145a3565b5b6000614ab185828601614798565b9250506020614ac285828601614798565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b0260208361462e565b9150614b0d82614acc565b602082019050919050565b60006020820190508181036000830152614b3181614af5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b72826145ad565b9150614b7d836145ad565b9250828201905080821115614b9557614b94614b38565b5b92915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614bd1601d8361462e565b9150614bdc82614b9b565b602082019050919050565b60006020820190508181036000830152614c0081614bc4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614c4e57607f821691505b602082108103614c6157614c60614c07565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614ca1826145ad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614cd357614cd2614b38565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614d3a60288361462e565b9150614d4582614cde565b604082019050919050565b60006020820190508181036000830152614d6981614d2d565b9050919050565b6000614d7b826145ad565b9150614d86836145ad565b9250828202614d94816145ad565b91508282048414831517614dab57614daa614b38565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614dec826145ad565b9150614df7836145ad565b925082614e0757614e06614db2565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e32250000000000000000000000000000000000000000000000602082015250565b6000614e6e60298361462e565b9150614e7982614e12565b604082019050919050565b60006020820190508181036000830152614e9d81614e61565b9050919050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b6000614f0060268361462e565b9150614f0b82614ea4565b604082019050919050565b60006020820190508181036000830152614f2f81614ef3565b9050919050565b7f4e6f20746f6b656e7320746f2073776170000000000000000000000000000000600082015250565b6000614f6c60118361462e565b9150614f7782614f36565b602082019050919050565b60006020820190508181036000830152614f9b81614f5f565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614ffe60278361462e565b915061500982614fa2565b604082019050919050565b6000602082019050818103600083015261502d81614ff1565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b600061506a601a8361462e565b915061507582615034565b602082019050919050565b600060208201905081810360008301526150998161505d565b9050919050565b6000815190506150af816145b7565b92915050565b6000602082840312156150cb576150ca6145a3565b5b60006150d9848285016150a0565b91505092915050565b60006040820190506150f76000830185614a22565b6151046020830184614941565b9392505050565b60008151905061511a816148b5565b92915050565b600060208284031215615136576151356145a3565b5b60006151448482850161510b565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b600061518360178361462e565b915061518e8261514d565b602082019050919050565b600060208201905081810360008301526151b281615176565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061521560398361462e565b9150615220826151b9565b604082019050919050565b6000602082019050818103600083015261524481615208565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006152a760258361462e565b91506152b28261524b565b604082019050919050565b600060208201905081810360008301526152d68161529a565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000615339602c8361462e565b9150615344826152dd565b604082019050919050565b600060208201905081810360008301526153688161532c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006153cb60358361462e565b91506153d68261536f565b604082019050919050565b600060208201905081810360008301526153fa816153be565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b600061545d60348361462e565b915061546882615401565b604082019050919050565b6000602082019050818103600083015261548c81615450565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e322500000000000000000000000000000000000000000000602082015250565b60006154ef602a8361462e565b91506154fa82615493565b604082019050919050565b6000602082019050818103600083015261551e816154e2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061558160268361462e565b915061558c82615525565b604082019050919050565b600060208201905081810360008301526155b081615574565b9050919050565b600081905092915050565b50565b60006155d26000836155b7565b91506155dd826155c2565b600082019050919050565b60006155f3826155c5565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061565960248361462e565b9150615664826155fd565b604082019050919050565b600060208201905081810360008301526156888161564c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006156eb60228361462e565b91506156f68261568f565b604082019050919050565b6000602082019050818103600083015261571a816156de565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061577d60258361462e565b915061578882615721565b604082019050919050565b600060208201905081810360008301526157ac81615770565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061580f60238361462e565b915061581a826157b3565b604082019050919050565b6000602082019050818103600083015261583e81615802565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061587b601d8361462e565b915061588682615845565b602082019050919050565b600060208201905081810360008301526158aa8161586e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006158e760168361462e565b91506158f2826158b1565b602082019050919050565b60006020820190508181036000830152615916816158da565b9050919050565b7f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60008201527f72206f75742065786365707420746f206f776e6572206f72206465616420616460208201527f64726573732e0000000000000000000000000000000000000000000000000000604082015250565b600061599f60468361462e565b91506159aa8261591d565b606082019050919050565b600060208201905081810360008301526159ce81615992565b9050919050565b60006159e0826145ad565b91506159eb836145ad565b9250828203905081811115615a0357615a02614b38565b5b92915050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b6000615a6560358361462e565b9150615a7082615a09565b604082019050919050565b60006020820190508181036000830152615a9481615a58565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615af760288361462e565b9150615b0282615a9b565b604082019050919050565b60006020820190508181036000830152615b2681615aea565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615b6360188361462e565b9150615b6e82615b2d565b602082019050919050565b60006020820190508181036000830152615b9281615b56565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615bf5602a8361462e565b9150615c0082615b99565b604082019050919050565b60006020820190508181036000830152615c2481615be8565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615c8760268361462e565b9150615c9282615c2b565b604082019050919050565b60006020820190508181036000830152615cb681615c7a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615cfb81614781565b92915050565b600060208284031215615d1757615d166145a3565b5b6000615d2584828501615cec565b91505092915050565b6000819050919050565b6000615d53615d4e615d4984615d2e565b6146f5565b6145ad565b9050919050565b615d6381615d38565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d9e8161476f565b82525050565b6000615db08383615d95565b60208301905092915050565b6000602082019050919050565b6000615dd482615d69565b615dde8185615d74565b9350615de983615d85565b8060005b83811015615e1a578151615e018882615da4565b9750615e0c83615dbc565b925050600181019050615ded565b5085935050505092915050565b600060a082019050615e3c6000830188614941565b615e496020830187615d5a565b8181036040830152615e5b8186615dc9565b9050615e6a6060830185614a22565b615e776080830184614941565b9695505050505050565b600060c082019050615e966000830189614a22565b615ea36020830188614941565b615eb06040830187615d5a565b615ebd6060830186615d5a565b615eca6080830185614a22565b615ed760a0830184614941565b979650505050505050565b600080600060608486031215615efb57615efa6145a3565b5b6000615f09868287016150a0565b9350506020615f1a868287016150a0565b9250506040615f2b868287016150a0565b9150509250925092565b6000604082019050615f4a6000830185614a22565b615f5760208301846147f9565b939250505056fea26469706673582212208eb9db0107c28d0c2bd1f038f00d35e48d43841f0f64ad58d363bb1c71af6dde64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103545760003560e01c80637571336a116101c6578063c876d0b9116100f7578063e884f26011610095578063f2fde38b1161006f578063f2fde38b14610c3b578063f5648a4f14610c64578063f637434214610c7b578063fb002c9714610ca65761035b565b8063e884f26014610bce578063ee40166e14610be5578063f11a24d314610c105761035b565b8063dc3f0d0f116100d1578063dc3f0d0f14610b14578063dd62ed3e14610b3d578063e2f4560514610b7a578063e800dff714610ba55761035b565b8063c876d0b914610a95578063d257b34f14610ac0578063d85ba06314610ae95761035b565b8063a457c2d711610164578063b62496f51161013e578063b62496f5146109db578063bbc0c74214610a18578063c024666814610a43578063c18bc19514610a6c5761035b565b8063a457c2d714610936578063a9059cbb14610973578063aa4bde28146109b05761035b565b80638a8c523c116101a05780638a8c523c146108a05780638da5cb5b146108b757806395d89b41146108e25780639a7a23d61461090d5761035b565b80637571336a1461080f5780638366e79a1461083857806388e765ff146108755761035b565b8063452ed4f1116102a057806366d602ae1161023e5780636ddd1713116102185780636ddd17131461077957806370a08231146107a4578063715018a6146107e1578063751039fc146107f85761035b565b806366d602ae146106f85780636a486a8e146107235780636b0a894c1461074e5761035b565b80634f77f6c01161027a5780634f77f6c01461066257806351f205e41461068d5780635a139dd4146106a457806366ca9b83146106cf5761035b565b8063452ed4f1146105e3578063499b83941461060e5780634a62bb65146106375761035b565b806318160ddd1161030d5780632be32b61116102e75780632be32b6114610515578063313ce5671461053e578063353f23451461056957806339509351146105a65761035b565b806318160ddd146104825780631a8145bb146104ad57806323b872dd146104d85761035b565b806302dbd8f81461036057806306fdde03146103895780630758d924146103b4578063095ea7b3146103df57806310d5de531461041c578063130a2c3c146104595761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610387600480360381019061038291906145e3565b610cd1565b005b34801561039557600080fd5b5061039e610dd6565b6040516103ab91906146b3565b60405180910390f35b3480156103c057600080fd5b506103c9610e68565b6040516103d69190614754565b60405180910390f35b3480156103eb57600080fd5b50610406600480360381019061040191906147ad565b610e8e565b6040516104139190614808565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e9190614823565b610eac565b6040516104509190614808565b60405180910390f35b34801561046557600080fd5b50610480600480360381019061047b91906148e1565b610ecc565b005b34801561048e57600080fd5b50610497611008565b6040516104a49190614950565b60405180910390f35b3480156104b957600080fd5b506104c2611012565b6040516104cf9190614950565b60405180910390f35b3480156104e457600080fd5b506104ff60048036038101906104fa919061496b565b611018565b60405161050c9190614808565b60405180910390f35b34801561052157600080fd5b5061053c600480360381019061053791906149be565b611110565b005b34801561054a57600080fd5b50610553611273565b6040516105609190614a07565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190614823565b61127c565b60405161059d9190614808565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c891906147ad565b61129c565b6040516105da9190614808565b60405180910390f35b3480156105ef57600080fd5b506105f8611348565b6040516106059190614a31565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190614823565b61136e565b005b34801561064357600080fd5b5061064c6114b8565b6040516106599190614808565b60405180910390f35b34801561066e57600080fd5b506106776114cb565b6040516106849190614950565b60405180910390f35b34801561069957600080fd5b506106a26114d1565b005b3480156106b057600080fd5b506106b961162b565b6040516106c69190614950565b60405180910390f35b3480156106db57600080fd5b506106f660048036038101906106f191906145e3565b611631565b005b34801561070457600080fd5b5061070d611736565b60405161071a9190614950565b60405180910390f35b34801561072f57600080fd5b5061073861173c565b6040516107459190614950565b60405180910390f35b34801561075a57600080fd5b50610763611742565b6040516107709190614950565b60405180910390f35b34801561078557600080fd5b5061078e611748565b60405161079b9190614808565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c69190614823565b61175b565b6040516107d89190614950565b60405180910390f35b3480156107ed57600080fd5b506107f66117a3565b005b34801561080457600080fd5b5061080d6118fb565b005b34801561081b57600080fd5b5061083660048036038101906108319190614a4c565b6119f6565b005b34801561084457600080fd5b5061085f600480360381019061085a9190614a8c565b611b7e565b60405161086c9190614808565b60405180910390f35b34801561088157600080fd5b5061088a611dc4565b6040516108979190614950565b60405180910390f35b3480156108ac57600080fd5b506108b5611dca565b005b3480156108c357600080fd5b506108cc611f1c565b6040516108d99190614a31565b60405180910390f35b3480156108ee57600080fd5b506108f7611f46565b60405161090491906146b3565b60405180910390f35b34801561091957600080fd5b50610934600480360381019061092f9190614a4c565b611fd8565b005b34801561094257600080fd5b5061095d600480360381019061095891906147ad565b612153565b60405161096a9190614808565b60405180910390f35b34801561097f57600080fd5b5061099a600480360381019061099591906147ad565b61223e565b6040516109a79190614808565b60405180910390f35b3480156109bc57600080fd5b506109c561225c565b6040516109d29190614950565b60405180910390f35b3480156109e757600080fd5b50610a0260048036038101906109fd9190614823565b612262565b604051610a0f9190614808565b60405180910390f35b348015610a2457600080fd5b50610a2d612282565b604051610a3a9190614808565b60405180910390f35b348015610a4f57600080fd5b50610a6a6004803603810190610a659190614a4c565b612295565b005b348015610a7857600080fd5b50610a936004803603810190610a8e91906149be565b6123d5565b005b348015610aa157600080fd5b50610aaa612538565b604051610ab79190614808565b60405180910390f35b348015610acc57600080fd5b50610ae76004803603810190610ae291906149be565b61254b565b005b348015610af557600080fd5b50610afe6126b3565b604051610b0b9190614950565b60405180910390f35b348015610b2057600080fd5b50610b3b6004803603810190610b3691906149be565b6126b9565b005b348015610b4957600080fd5b50610b646004803603810190610b5f9190614a8c565b61281c565b604051610b719190614950565b60405180910390f35b348015610b8657600080fd5b50610b8f6128a3565b604051610b9c9190614950565b60405180910390f35b348015610bb157600080fd5b50610bcc6004803603810190610bc79190614a4c565b6128a9565b005b348015610bda57600080fd5b50610be361299b565b005b348015610bf157600080fd5b50610bfa612a4f565b604051610c079190614950565b60405180910390f35b348015610c1c57600080fd5b50610c25612a55565b604051610c329190614950565b60405180910390f35b348015610c4757600080fd5b50610c626004803603810190610c5d9190614823565b612a5b565b005b348015610c7057600080fd5b50610c79612c21565b005b348015610c8757600080fd5b50610c90612d29565b604051610c9d9190614950565b60405180910390f35b348015610cb257600080fd5b50610cbb612d2f565b604051610cc89190614950565b60405180910390f35b610cd9612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5f90614b18565b60405180910390fd5b8160178190555080601881905550601854601754610d869190614b67565b60168190555060146016541115610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc990614be7565b60405180910390fd5b5050565b606060038054610de590614c36565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1190614c36565b8015610e5e5780601f10610e3357610100808354040283529160200191610e5e565b820191906000526020600020905b815481529060010190602001808311610e4157829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ea2610e9b612d35565b8484612d3d565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b610ed4612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5a90614b18565b60405180910390fd5b60005b838390508110156110025781600e6000868685818110610f8957610f88614c67565b5b9050602002016020810190610f9e9190614823565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ffa90614c96565b915050610f66565b50505050565b6000600254905090565b601a5481565b6000611025848484612f06565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611070612d35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e790614d50565b60405180910390fd5b611104856110fc612d35565b858403612d3d565b60019150509392505050565b611118612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119e90614b18565b60405180910390fd5b670de0b6b3a76400006103e860026111bd611008565b6111c79190614d70565b6111d19190614de1565b6111db9190614de1565b81101561121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490614e84565b60405180910390fd5b670de0b6b3a7640000816112319190614d70565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de410096006546040516112689190614950565b60405180910390a150565b60006012905090565b600e6020528060005260406000206000915054906101000a900460ff1681565b600061133e6112a9612d35565b8484600160006112b7612d35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113399190614b67565b612d3d565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611376612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fc90614b18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b90614f16565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900460ff1681565b60175481565b6114d9612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155f90614b18565b60405180910390fd5b60006115733061175b565b10156115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab90614f82565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506115d7613d16565b6000600a60146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb32426040516116219190614950565b60405180910390a1565b60145481565b611639612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bf90614b18565b60405180910390fd5b81601481905550806015819055506015546014546116e69190614b67565b60138190555060146013541115611732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172990614be7565b60405180910390fd5b5050565b60075481565b60165481565b600f5481565b601060029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117ab612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183190614b18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611903612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198990614b18565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506000601260006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6119fe612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8490614b18565b60405180910390fd5b80611b2357600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1990615014565b60405180910390fd5b5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611b88612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e90614b18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d90615080565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611cc19190614a31565b602060405180830381865afa158015611cde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0291906150b5565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611d3f9291906150e2565b6020604051808303816000875af1158015611d5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d829190615120565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611db59291906150e2565b60405180910390a15092915050565b60065481565b611dd2612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5890614b18565b60405180910390fd5b601060019054906101000a900460ff1615611eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea890615199565b60405180910390fd5b6001601060016101000a81548160ff0219169083151502179055506001601060026101000a81548160ff02191690831515021790555043600d819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611f5590614c36565b80601f0160208091040260200160405190810160405280929190818152602001828054611f8190614c36565b8015611fce5780601f10611fa357610100808354040283529160200191611fce565b820191906000526020600020905b815481529060010190602001808311611fb157829003601f168201915b5050505050905090565b611fe0612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461206f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206690614b18565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f69061522b565b60405180910390fd5b6121098282613ed8565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008060016000612162612d35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561221f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612216906152bd565b60405180910390fd5b61223361222a612d35565b85858403612d3d565b600191505092915050565b600061225261224b612d35565b8484612f06565b6001905092915050565b60085481565b601d6020528060005260406000206000915054906101000a900460ff1681565b601060019054906101000a900460ff1681565b61229d612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232390614b18565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516123c99190614808565b60405180910390a25050565b6123dd612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461246c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246390614b18565b60405180910390fd5b670de0b6b3a76400006103e86003612482611008565b61248c9190614d70565b6124969190614de1565b6124a09190614de1565b8110156124e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d99061534f565b60405180910390fd5b670de0b6b3a7640000816124f69190614d70565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc60085460405161252d9190614950565b60405180910390a150565b601260009054906101000a900460ff1681565b612553612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d990614b18565b60405180910390fd5b620186a060016125f0611008565b6125fa9190614d70565b6126049190614de1565b811015612646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263d906153e1565b60405180910390fd5b6103e86001612653611008565b61265d9190614d70565b6126679190614de1565b8111156126a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a090615473565b60405180910390fd5b80600b8190555050565b60135481565b6126c1612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790614b18565b60405180910390fd5b670de0b6b3a76400006103e86002612766611008565b6127709190614d70565b61277a9190614de1565b6127849190614de1565b8110156127c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bd90615505565b60405180910390fd5b670de0b6b3a7640000816127da9190614d70565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516128119190614950565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6128b1612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293790614b18565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6129a3612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2990614b18565b60405180910390fd5b6000601260006101000a81548160ff021916908315150217905550565b600d5481565b60155481565b612a63612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae990614b18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5890615597565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612c29612d35565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612caf90614b18565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612cde906155e8565b60006040518083038185875af1925050503d8060008114612d1b576040519150601f19603f3d011682016040523d82523d6000602084013e612d20565b606091505b50508091505050565b60185481565b60195481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da39061566f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1290615701565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ef99190614950565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6c90615793565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fdb90615825565b60405180910390fd5b60008111613027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301e90615891565b60405180910390fd5b601060019054906101000a900460ff1661311c57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130dc5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61311b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613112906158fd565b60405180910390fd5b5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131c05750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6131ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131f6906159b5565b60405180910390fd5b601060009054906101000a900460ff16156138cb5761321c611f1c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561328a575061325a611f1c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132c35750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156132fd575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133535750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133a95750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138ca57601260009054906101000a900460ff16156135e157600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561346f5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156135e05760024361348191906159d5565b601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410801561351857506002436134d691906159d5565b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b613557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161354e90615a7b565b60405180910390fd5b43601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136845750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561372b576006548111156136ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136c590615b0d565b60405180910390fd5b6008546136da8361175b565b826136e59190614b67565b1115613726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371d90615b79565b60405180910390fd5b6138c9565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137ce5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561381d57600754811115613818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380f90615c0b565b60405180910390fd5b6138c8565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166138c75760085461387a8361175b565b826138859190614b67565b11156138c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138bd90615b79565b60405180910390fd5b5b5b5b5b5b60006138d63061175b565b90506000600b5482101590508080156138fb5750601060029054906101000a900460ff165b80156139145750600a60149054906101000a900460ff16155b801561396a5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139c05750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613a165750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a5a576001600a60146101000a81548160ff021916908315150217905550613a3e613d16565b6000600a60146101000a81548160ff0219169083151502179055505b600060019050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613b015750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613b0b57600090505b60008115613d0257601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b6e57506000601654115b15613bfa57606460165486613b839190614d70565b613b8d9190614de1565b905060165460185482613ba09190614d70565b613baa9190614de1565b601a6000828254613bbb9190614b67565b9250508190555060165460175482613bd39190614d70565b613bdd9190614de1565b60196000828254613bee9190614b67565b92505081905550613cde565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c5557506000601354115b15613cdd57606460135486613c6a9190614d70565b613c749190614de1565b905060135460155482613c879190614d70565b613c919190614de1565b601a6000828254613ca29190614b67565b9250508190555060135460145482613cba9190614d70565b613cc49190614de1565b60196000828254613cd59190614b67565b925050819055505b5b6000811115613cf357613cf2873083613f83565b5b8085613cff91906159d5565b94505b613d0d878787613f83565b50505050505050565b6000613d213061175b565b90506000601954601a54613d359190614b67565b90506000821480613d465750600081145b15613d52575050613ed6565b603c600b54613d619190614d70565b821115613d7a57603c600b54613d779190614d70565b91505b600080600283601a5486613d8e9190614d70565b613d989190614de1565b613da29190614de1565b9050613db88185613db391906159d5565b6141ec565b6000479050600081905060006002601a54613dd39190614de1565b86613dde91906159d5565b60195484613dec9190614d70565b613df69190614de1565b90508082613e0491906159d5565b91506000601a819055506000601981905550600084118015613e265750600082115b15613e3657613e35848361442f565b5b6000471115613ece57600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613e85906155e8565b60006040518083038185875af1925050503d8060008114613ec2576040519150601f19603f3d011682016040523d82523d6000602084013e613ec7565b606091505b5050809550505b505050505050505b565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613f39828261450f565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fe990615793565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603614061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161405890615825565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156140e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140de90615c9d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461417a9190614b67565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516141de9190614950565b60405180910390a350505050565b6000600267ffffffffffffffff81111561420957614208615cbd565b5b6040519080825280602002602001820160405280156142375781602001602082028036833780820191505090505b509050308160008151811061424f5761424e614c67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156142f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061431a9190615d01565b8160018151811061432e5761432d614c67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061439530600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d3d565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016143f9959493929190615e27565b600060405180830381600087803b15801561441357600080fd5b505af1158015614427573d6000803e3d6000fd5b505050505050565b61445c30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d3d565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016144c596959493929190615e81565b60606040518083038185885af11580156144e3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145089190615ee2565b5050505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051614597929190615f35565b60405180910390a15050565b600080fd5b600080fd5b6000819050919050565b6145c0816145ad565b81146145cb57600080fd5b50565b6000813590506145dd816145b7565b92915050565b600080604083850312156145fa576145f96145a3565b5b6000614608858286016145ce565b9250506020614619858286016145ce565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561465d578082015181840152602081019050614642565b60008484015250505050565b6000601f19601f8301169050919050565b600061468582614623565b61468f818561462e565b935061469f81856020860161463f565b6146a881614669565b840191505092915050565b600060208201905081810360008301526146cd818461467a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061471a614715614710846146d5565b6146f5565b6146d5565b9050919050565b600061472c826146ff565b9050919050565b600061473e82614721565b9050919050565b61474e81614733565b82525050565b60006020820190506147696000830184614745565b92915050565b600061477a826146d5565b9050919050565b61478a8161476f565b811461479557600080fd5b50565b6000813590506147a781614781565b92915050565b600080604083850312156147c4576147c36145a3565b5b60006147d285828601614798565b92505060206147e3858286016145ce565b9150509250929050565b60008115159050919050565b614802816147ed565b82525050565b600060208201905061481d60008301846147f9565b92915050565b600060208284031215614839576148386145a3565b5b600061484784828501614798565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261487557614874614850565b5b8235905067ffffffffffffffff81111561489257614891614855565b5b6020830191508360208202830111156148ae576148ad61485a565b5b9250929050565b6148be816147ed565b81146148c957600080fd5b50565b6000813590506148db816148b5565b92915050565b6000806000604084860312156148fa576148f96145a3565b5b600084013567ffffffffffffffff811115614918576149176145a8565b5b6149248682870161485f565b93509350506020614937868287016148cc565b9150509250925092565b61494a816145ad565b82525050565b60006020820190506149656000830184614941565b92915050565b600080600060608486031215614984576149836145a3565b5b600061499286828701614798565b93505060206149a386828701614798565b92505060406149b4868287016145ce565b9150509250925092565b6000602082840312156149d4576149d36145a3565b5b60006149e2848285016145ce565b91505092915050565b600060ff82169050919050565b614a01816149eb565b82525050565b6000602082019050614a1c60008301846149f8565b92915050565b614a2b8161476f565b82525050565b6000602082019050614a466000830184614a22565b92915050565b60008060408385031215614a6357614a626145a3565b5b6000614a7185828601614798565b9250506020614a82858286016148cc565b9150509250929050565b60008060408385031215614aa357614aa26145a3565b5b6000614ab185828601614798565b9250506020614ac285828601614798565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b0260208361462e565b9150614b0d82614acc565b602082019050919050565b60006020820190508181036000830152614b3181614af5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b72826145ad565b9150614b7d836145ad565b9250828201905080821115614b9557614b94614b38565b5b92915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614bd1601d8361462e565b9150614bdc82614b9b565b602082019050919050565b60006020820190508181036000830152614c0081614bc4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614c4e57607f821691505b602082108103614c6157614c60614c07565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614ca1826145ad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614cd357614cd2614b38565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614d3a60288361462e565b9150614d4582614cde565b604082019050919050565b60006020820190508181036000830152614d6981614d2d565b9050919050565b6000614d7b826145ad565b9150614d86836145ad565b9250828202614d94816145ad565b91508282048414831517614dab57614daa614b38565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614dec826145ad565b9150614df7836145ad565b925082614e0757614e06614db2565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e32250000000000000000000000000000000000000000000000602082015250565b6000614e6e60298361462e565b9150614e7982614e12565b604082019050919050565b60006020820190508181036000830152614e9d81614e61565b9050919050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b6000614f0060268361462e565b9150614f0b82614ea4565b604082019050919050565b60006020820190508181036000830152614f2f81614ef3565b9050919050565b7f4e6f20746f6b656e7320746f2073776170000000000000000000000000000000600082015250565b6000614f6c60118361462e565b9150614f7782614f36565b602082019050919050565b60006020820190508181036000830152614f9b81614f5f565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614ffe60278361462e565b915061500982614fa2565b604082019050919050565b6000602082019050818103600083015261502d81614ff1565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b600061506a601a8361462e565b915061507582615034565b602082019050919050565b600060208201905081810360008301526150998161505d565b9050919050565b6000815190506150af816145b7565b92915050565b6000602082840312156150cb576150ca6145a3565b5b60006150d9848285016150a0565b91505092915050565b60006040820190506150f76000830185614a22565b6151046020830184614941565b9392505050565b60008151905061511a816148b5565b92915050565b600060208284031215615136576151356145a3565b5b60006151448482850161510b565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b600061518360178361462e565b915061518e8261514d565b602082019050919050565b600060208201905081810360008301526151b281615176565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061521560398361462e565b9150615220826151b9565b604082019050919050565b6000602082019050818103600083015261524481615208565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006152a760258361462e565b91506152b28261524b565b604082019050919050565b600060208201905081810360008301526152d68161529a565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000615339602c8361462e565b9150615344826152dd565b604082019050919050565b600060208201905081810360008301526153688161532c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006153cb60358361462e565b91506153d68261536f565b604082019050919050565b600060208201905081810360008301526153fa816153be565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b600061545d60348361462e565b915061546882615401565b604082019050919050565b6000602082019050818103600083015261548c81615450565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e322500000000000000000000000000000000000000000000602082015250565b60006154ef602a8361462e565b91506154fa82615493565b604082019050919050565b6000602082019050818103600083015261551e816154e2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061558160268361462e565b915061558c82615525565b604082019050919050565b600060208201905081810360008301526155b081615574565b9050919050565b600081905092915050565b50565b60006155d26000836155b7565b91506155dd826155c2565b600082019050919050565b60006155f3826155c5565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061565960248361462e565b9150615664826155fd565b604082019050919050565b600060208201905081810360008301526156888161564c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006156eb60228361462e565b91506156f68261568f565b604082019050919050565b6000602082019050818103600083015261571a816156de565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061577d60258361462e565b915061578882615721565b604082019050919050565b600060208201905081810360008301526157ac81615770565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061580f60238361462e565b915061581a826157b3565b604082019050919050565b6000602082019050818103600083015261583e81615802565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061587b601d8361462e565b915061588682615845565b602082019050919050565b600060208201905081810360008301526158aa8161586e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006158e760168361462e565b91506158f2826158b1565b602082019050919050565b60006020820190508181036000830152615916816158da565b9050919050565b7f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60008201527f72206f75742065786365707420746f206f776e6572206f72206465616420616460208201527f64726573732e0000000000000000000000000000000000000000000000000000604082015250565b600061599f60468361462e565b91506159aa8261591d565b606082019050919050565b600060208201905081810360008301526159ce81615992565b9050919050565b60006159e0826145ad565b91506159eb836145ad565b9250828203905081811115615a0357615a02614b38565b5b92915050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b6000615a6560358361462e565b9150615a7082615a09565b604082019050919050565b60006020820190508181036000830152615a9481615a58565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615af760288361462e565b9150615b0282615a9b565b604082019050919050565b60006020820190508181036000830152615b2681615aea565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615b6360188361462e565b9150615b6e82615b2d565b602082019050919050565b60006020820190508181036000830152615b9281615b56565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615bf5602a8361462e565b9150615c0082615b99565b604082019050919050565b60006020820190508181036000830152615c2481615be8565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615c8760268361462e565b9150615c9282615c2b565b604082019050919050565b60006020820190508181036000830152615cb681615c7a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615cfb81614781565b92915050565b600060208284031215615d1757615d166145a3565b5b6000615d2584828501615cec565b91505092915050565b6000819050919050565b6000615d53615d4e615d4984615d2e565b6146f5565b6145ad565b9050919050565b615d6381615d38565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d9e8161476f565b82525050565b6000615db08383615d95565b60208301905092915050565b6000602082019050919050565b6000615dd482615d69565b615dde8185615d74565b9350615de983615d85565b8060005b83811015615e1a578151615e018882615da4565b9750615e0c83615dbc565b925050600181019050615ded565b5085935050505092915050565b600060a082019050615e3c6000830188614941565b615e496020830187615d5a565b8181036040830152615e5b8186615dc9565b9050615e6a6060830185614a22565b615e776080830184614941565b9695505050505050565b600060c082019050615e966000830189614a22565b615ea36020830188614941565b615eb06040830187615d5a565b615ebd6060830186615d5a565b615eca6080830185614a22565b615ed760a0830184614941565b979650505050505050565b600080600060608486031215615efb57615efa6145a3565b5b6000615f09868287016150a0565b9350506020615f1a868287016150a0565b9250506040615f2b868287016150a0565b9150509250925092565b6000604082019050615f4a6000830185614a22565b615f5760208301846147f9565b939250505056fea26469706673582212208eb9db0107c28d0c2bd1f038f00d35e48d43841f0f64ad58d363bb1c71af6dde64736f6c63430008110033

Deployed Bytecode Sourcemap

9619:15388:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17184:321;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4066:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9770:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4980:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10888:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14195:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4387:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10705:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5157:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14561:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4286:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10015:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5657:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9804:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24465:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10092:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10585:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24754:248;;;;;;;;;;;;;:::i;:::-;;10473:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16862:314;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9696:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10550;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10058:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10172:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4503:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8143:150;;;;;;;;;;;;;:::i;:::-;;13915:154;;;;;;;;;;;;;:::i;:::-;;16043:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23846:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9662:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13614:249;;;;;;;;;;;;;:::i;:::-;;7929:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4174:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16311:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5880:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4638:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9731:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11110:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10132:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17513:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15120:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10391:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15474:346;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10439:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14838:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4821:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9862:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14077:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14455:98;;;;;;;;;;;;;:::i;:::-;;9938:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10511:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8301:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24297:160;;;;;;;;;;;;;:::i;:::-;;10624:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10664:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17184:321;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17305:14:::1;17285:17;:34;;;;17349:13;17330:16;:32;;;;17409:16;;17389:17;;:36;;;;:::i;:::-;17373:13;:52;;;;17461:2;17444:13;;:19;;17436:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17184:321:::0;;:::o;4066:100::-;4120:13;4153:5;4146:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4066:100;:::o;9770:27::-;;;;;;;;;;;;;:::o;4980:169::-;5063:4;5080:39;5089:12;:10;:12::i;:::-;5103:7;5112:6;5080:8;:39::i;:::-;5137:4;5130:11;;4980:169;;;;:::o;10888:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;14195:199::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14299:9:::1;14295:92;14318:7;;:14;;14314:1;:18;14295:92;;;14371:4;14353:3;:15;14357:7;;14365:1;14357:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14353:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;14334:3;;;;;:::i;:::-;;;;14295:92;;;;14195:199:::0;;;:::o;4387:108::-;4448:7;4475:12;;4468:19;;4387:108;:::o;10705:33::-;;;;:::o;5157:492::-;5297:4;5314:36;5324:6;5332:9;5343:6;5314:9;:36::i;:::-;5363:24;5390:11;:19;5402:6;5390:19;;;;;;;;;;;;;;;:33;5410:12;:10;:12::i;:::-;5390:33;;;;;;;;;;;;;;;;5363:60;;5462:6;5442:16;:26;;5434:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5549:57;5558:6;5566:12;:10;:12::i;:::-;5599:6;5580:16;:25;5549:8;:57::i;:::-;5637:4;5630:11;;;5157:492;;;;;:::o;14561:269::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14680:4:::1;14674;14670:1;14654:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;14653:31;;;;:::i;:::-;14643:6;:41;;14635:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;14766:6;14756;:17;;;;:::i;:::-;14741:12;:32;;;;14789:33;14809:12;;14789:33;;;;;;:::i;:::-;;;;;;;;14561:269:::0;:::o;4286:93::-;4344:5;4369:2;4362:9;;4286:93;:::o;10015:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;5657:215::-;5745:4;5762:80;5771:12;:10;:12::i;:::-;5785:7;5831:10;5794:11;:25;5806:12;:10;:12::i;:::-;5794:25;;;;;;;;;;;;;;;:34;5820:7;5794:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5762:8;:80::i;:::-;5860:4;5853:11;;5657:215;;;;:::o;9804:21::-;;;;;;;;;;;;;:::o;24465:237::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24591:1:::1;24561:32;;:18;:32;;::::0;24553:83:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24675:18;24647:17;;:47;;;;;;;;;;;;;;;;;;24465:237:::0;:::o;10092:33::-;;;;;;;;;;;;;:::o;10585:32::-;;;;:::o;24754:248::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24845:1:::1;24817:24;24835:4;24817:9;:24::i;:::-;:29;;24809:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;24890:4;24879:8;;:15;;;;;;;;;;;;;;;;;;24905:10;:8;:10::i;:::-;24937:5;24926:8;;:16;;;;;;;;;;;;;;;;;;24958:36;24978:15;24958:36;;;;;;:::i;:::-;;;;;;;;24754:248::o:0;10473:31::-;;;;:::o;16862:314::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16981:14:::1;16962:16;:33;;;;17024:13;17006:15;:31;;;;17082:15;;17063:16;;:34;;;;:::i;:::-;17048:12;:49;;;;17132:2;17116:12;;:18;;17108:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;16862:314:::0;;:::o;9696:28::-;;;;:::o;10550:::-;;;;:::o;10058:25::-;;;;:::o;10172:31::-;;;;;;;;;;;;;:::o;4503:127::-;4577:7;4604:9;:18;4614:7;4604:18;;;;;;;;;;;;;;;;4597:25;;4503:127;;;:::o;8143:150::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8252:1:::1;8215:40;;8236:6;;;;;;;;;;;8215:40;;;;;;;;;;;;8283:1;8266:6;;:19;;;;;;;;;;;;;;;;;;8143:150::o:0;13915:154::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13986:5:::1;13969:14;;:22;;;;;;;;;;;;;;;;;;14025:5;14002:20;;:28;;;;;;;;;;;;;;;;;;14046:15;;;;;;;;;;13915:154::o:0;16043:260::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16139:4:::1;16135:104;;16177:6;;;;;;;;;;;16167:16;;:6;:16;;::::0;16159:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16135:104;16291:4;16249:31;:39;16281:6;16249:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;16043:260:::0;;:::o;23846:381::-;23933:10;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23982:1:::1;23964:20;;:6;:20;;::::0;23956:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24026:24;24060:6;24053:24;;;24086:4;24053:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24026:66;;24118:6;24111:23;;;24135:3;24140:16;24111:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24103:54;;24173:46;24194:6;24202:16;24173:46;;;;;;;:::i;:::-;;;;;;;;23945:282;23846:381:::0;;;;:::o;9662:27::-;;;;:::o;13614:249::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13678:13:::1;;;;;;;;;;;13677:14;13669:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13746:4;13730:13;;:20;;;;;;;;;;;;;;;;;;13775:4;13761:11;;:18;;;;;;;;;;;;;;;;;;13811:12;13790:18;:33;;;;13839:16;;;;;;;;;;13614:249::o:0;7929:79::-;7967:7;7994:6;;;;;;;;;;;7987:13;;7929:79;:::o;4174:104::-;4230:13;4263:7;4256:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4174:104;:::o;16311:295::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16420:6:::1;;;;;;;;;;;16412:14;;:4;:14;;::::0;16404:84:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16501:41;16530:4;16536:5;16501:28;:41::i;:::-;16592:5;16558:40;;16586:4;16558:40;;;;;;;;;;;;16311:295:::0;;:::o;5880:413::-;5973:4;5990:24;6017:11;:25;6029:12;:10;:12::i;:::-;6017:25;;;;;;;;;;;;;;;:34;6043:7;6017:34;;;;;;;;;;;;;;;;5990:61;;6090:15;6070:16;:35;;6062:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6183:67;6192:12;:10;:12::i;:::-;6206:7;6234:15;6215:16;:34;6183:8;:67::i;:::-;6281:4;6274:11;;;5880:413;;;;:::o;4638:175::-;4724:4;4741:42;4751:12;:10;:12::i;:::-;4765:9;4776:6;4741:9;:42::i;:::-;4801:4;4794:11;;4638:175;;;;:::o;9731:30::-;;;;:::o;11110:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;10132:33::-;;;;;;;;;;;;;:::o;17513:182::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17629:8:::1;17598:19;:28;17618:7;17598:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17669:7;17653:34;;;17678:8;17653:34;;;;;;:::i;:::-;;;;;;;;17513:182:::0;;:::o;15120:284::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15242:4:::1;15236;15232:1;15216:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;15215:31;;;;:::i;:::-;15205:6;:41;;15197:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;15334:6;15324;:17;;;;:::i;:::-;15306:15;:35;;;;15357:39;15380:15;;15357:39;;;;;;:::i;:::-;;;;;;;;15120:284:::0;:::o;10391:39::-;;;;;;;;;;;;;:::o;15474:346::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15597:6:::1;15593:1;15577:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;15564:9;:39;;15556:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;15712:4;15708:1;15692:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;15679:9;:37;;15671:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;15804:9;15783:18;:30;;;;15474:346:::0;:::o;10439:27::-;;;;:::o;14838:274::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14958:4:::1;14952;14948:1;14932:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;14931:31;;;;:::i;:::-;14921:6;:41;;14913:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;15046:6;15036;:17;;;;:::i;:::-;15020:13;:33;;;;15069:35;15090:13;;15069:35;;;;;;:::i;:::-;;;;;;;;14838:274:::0;:::o;4821:151::-;4910:7;4937:11;:18;4949:5;4937:18;;;;;;;;;;;;;;;:27;4956:7;4937:27;;;;;;;;;;;;;;;;4930:34;;4821:151;;;;:::o;9862:33::-;;;;:::o;14077:110::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14175:4:::1;14161:3;:11;14165:6;14161:11;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;14077:110:::0;;:::o;14455:98::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14540:5:::1;14517:20;;:28;;;;;;;;;;;;;;;;;;14455:98::o:0;9938:37::-;;;;:::o;10511:30::-;;;;:::o;8301:244::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8410:1:::1;8390:22;;:8;:22;;::::0;8382:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8500:8;8471:38;;8492:6;;;;;;;;;;;8471:38;;;;;;;;;;;;8529:8;8520:6;;:17;;;;;;;;;;;;;;;;;;8301:244:::0;:::o;24297:160::-;8066:12;:10;:12::i;:::-;8056:22;;:6;;;;;;;;;;;:22;;;8048:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24355:12:::1;24399:10;24391:24;;24423:21;24391:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24378:71;;;;;24344:113;24297:160::o:0;10624:31::-;;;;:::o;10664:34::-;;;;:::o;215:98::-;268:7;295:10;288:17;;215:98;:::o;7222:380::-;7375:1;7358:19;;:5;:19;;;7350:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7456:1;7437:21;;:7;:21;;;7429:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7540:6;7510:11;:18;7522:5;7510:18;;;;;;;;;;;;;;;:27;7529:7;7510:27;;;;;;;;;;;;;;;:36;;;;7578:7;7562:32;;7571:5;7562:32;;;7587:6;7562:32;;;;;;:::i;:::-;;;;;;;;7222:380;;;:::o;17703:3806::-;17819:1;17803:18;;:4;:18;;;17795:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17896:1;17882:16;;:2;:16;;;17874:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17966:1;17957:6;:10;17949:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;18018:13;;;;;;;;;;;18014:132;;18055:19;:25;18075:4;18055:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;18084:19;:23;18104:2;18084:23;;;;;;;;;;;;;;;;;;;;;;;;;18055:52;18047:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;18014:132;18167:3;:9;18171:4;18167:9;;;;;;;;;;;;;;;;;;;;;;;;;18166:10;:22;;;;;18181:3;:7;18185:2;18181:7;;;;;;;;;;;;;;;;;;;;;;;;;18180:8;18166:22;18158:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;18279:14;;;;;;;;;;;18276:1653;;;18321:7;:5;:7::i;:::-;18313:15;;:4;:15;;;;:32;;;;;18338:7;:5;:7::i;:::-;18332:13;;:2;:13;;;;18313:32;:52;;;;;18363:1;18349:16;;:2;:16;;;;18313:52;:77;;;;;18383:6;18369:21;;:2;:21;;;;18313:77;:107;;;;;18395:19;:25;18415:4;18395:25;;;;;;;;;;;;;;;;;;;;;;;;;18394:26;18313:107;:135;;;;;18425:19;:23;18445:2;18425:23;;;;;;;;;;;;;;;;;;;;;;;;;18424:24;18313:135;18309:1609;;;18606:20;;;;;;;;;;;18602:506;;;18668:9;;;;;;;;;;;18654:24;;:2;:24;;;;:49;;;;;18696:6;;;;;;;;;;;18682:21;;:2;:21;;;;18654:49;18650:439;;;18796:1;18781:12;:16;;;;:::i;:::-;18739:28;:39;18768:9;18739:39;;;;;;;;;;;;;;;;:58;:113;;;;;18851:1;18836:12;:16;;;;:::i;:::-;18801:28;:32;18830:2;18801:32;;;;;;;;;;;;;;;;:51;18739:113;18731:179;;;;;;;;;;;;:::i;:::-;;;;;;;;;18979:12;18937:28;:39;18966:9;18937:39;;;;;;;;;;;;;;;:54;;;;19053:12;19018:28;:32;19047:2;19018:32;;;;;;;;;;;;;;;:47;;;;18650:439;18602:506;19164:25;:31;19190:4;19164:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;19200:31;:35;19232:2;19200:35;;;;;;;;;;;;;;;;;;;;;;;;;19199:36;19164:71;19160:743;;;19282:12;;19272:6;:22;;19264:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;19400:15;;19383:13;19393:2;19383:9;:13::i;:::-;19374:6;:22;;;;:::i;:::-;:41;;19366:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;19160:743;;;19520:25;:29;19546:2;19520:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;19554:31;:37;19586:4;19554:37;;;;;;;;;;;;;;;;;;;;;;;;;19553:38;19520:71;19516:387;;;19638:13;;19628:6;:23;;19620:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;19516:387;;;19746:31;:35;19778:2;19746:35;;;;;;;;;;;;;;;;;;;;;;;;;19741:162;;19839:15;;19822:13;19832:2;19822:9;:13::i;:::-;19813:6;:22;;;;:::i;:::-;:41;;19805:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;19741:162;19516:387;19160:743;18309:1609;18276:1653;19941:28;19972:24;19990:4;19972:9;:24::i;:::-;19941:55;;20009:12;20048:18;;20024:20;:42;;20009:57;;20082:7;:22;;;;;20093:11;;;;;;;;;;;20082:22;:35;;;;;20109:8;;;;;;;;;;;20108:9;20082:35;:71;;;;;20122:25;:31;20148:4;20122:31;;;;;;;;;;;;;;;;;;;;;;;;;20121:32;20082:71;:101;;;;;20158:19;:25;20178:4;20158:25;;;;;;;;;;;;;;;;;;;;;;;;;20157:26;20082:101;:129;;;;;20188:19;:23;20208:2;20188:23;;;;;;;;;;;;;;;;;;;;;;;;;20187:24;20082:129;20079:236;;;20239:4;20228:8;;:15;;;;;;;;;;;;;;;;;;20260:10;:8;:10::i;:::-;20298:5;20287:8;;:16;;;;;;;;;;;;;;;;;;20079:236;20327:12;20342:4;20327:19;;20445;:25;20465:4;20445:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20474:19;:23;20494:2;20474:23;;;;;;;;;;;;;;;;;;;;;;;;;20445:52;20442:99;;;20524:5;20514:15;;20442:99;20553:12;20657:7;20654:802;;;20708:25;:29;20734:2;20708:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;20757:1;20741:13;;:17;20708:50;20704:608;;;20810:3;20794:13;;20785:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;20778:35;;20880:13;;20861:16;;20854:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;20832:18;;:61;;;;;;;:::i;:::-;;;;;;;;20962:13;;20942:17;;20935:4;:24;;;;:::i;:::-;:40;;;;:::i;:::-;20912:19;;:63;;;;;;;:::i;:::-;;;;;;;;20704:608;;;21038:25;:31;21064:4;21038:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;21088:1;21073:12;;:16;21038:51;21035:277;;;21138:3;21123:12;;21114:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;21107:34;;21204:12;;21186:15;;21179:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;21157:18;;:59;;;;;;;:::i;:::-;;;;;;;;21284:12;;21265:16;;21258:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;21235:19;;:61;;;;;;;:::i;:::-;;;;;;;;21035:277;20704:608;21338:1;21331:4;:8;21328:89;;;21359:42;21375:4;21389;21396;21359:15;:42::i;:::-;21328:89;21440:4;21430:14;;;;;:::i;:::-;;;20654:802;21468:33;21484:4;21490:2;21494:6;21468:15;:33::i;:::-;17782:3727;;;;17703:3806;;;:::o;22613:1225::-;22652:23;22678:24;22696:4;22678:9;:24::i;:::-;22652:50;;22713:25;22762:19;;22741:18;;:40;;;;:::i;:::-;22713:68;;22816:1;22797:15;:20;:46;;;;22842:1;22821:17;:22;22797:46;22794:60;;;22846:7;;;;22794:60;22908:2;22887:18;;:23;;;;:::i;:::-;22869:15;:41;22866:113;;;22965:2;22944:18;;:23;;;;:::i;:::-;22926:41;;22866:113;22991:12;23065:23;23150:1;23130:17;23109:18;;23091:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;23065:86;;23164:51;23199:15;23181;:33;;;;:::i;:::-;23164:16;:51::i;:::-;23228:18;23249:21;23228:42;;23281:23;23307:10;23281:36;;23330:24;23433:1;23414:18;;:20;;;;:::i;:::-;23393:17;:42;;;;:::i;:::-;23370:19;;23357:10;:32;;;;:::i;:::-;:79;;;;:::i;:::-;23330:106;;23468:16;23449:35;;;;;:::i;:::-;;;23518:1;23497:18;:22;;;;23552:1;23530:19;:23;;;;23587:1;23569:15;:19;:42;;;;;23610:1;23592:15;:19;23569:42;23566:119;;;23627:46;23640:15;23657;23627:12;:46::i;:::-;23566:119;23724:1;23700:21;:25;23697:134;;;23762:17;;;;;;;;;;;23754:31;;23793:21;23754:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23741:78;;;;;23697:134;22641:1197;;;;;;;22613:1225;:::o;16614:240::-;16731:5;16697:25;:31;16723:4;16697:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16749;16776:4;16782:5;16749:26;:39::i;:::-;16840:5;16806:40;;16834:4;16806:40;;;;;;;;;;;;16614:240;;:::o;6301:614::-;6459:1;6441:20;;:6;:20;;;6433:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6543:1;6522:23;;:9;:23;;;6514:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6598:21;6622:9;:17;6632:6;6622:17;;;;;;;;;;;;;;;;6598:41;;6675:6;6658:13;:23;;6650:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6796:6;6780:13;:22;6760:9;:17;6770:6;6760:17;;;;;;;;;;;;;;;:42;;;;6848:6;6824:9;:20;6834:9;6824:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6889:9;6872:35;;6881:6;6872:35;;;6900:6;6872:35;;;;;;:::i;:::-;;;;;;;;6422:493;6301:614;;;:::o;21515:573::-;21643:21;21681:1;21667:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21643:40;;21712:4;21694;21699:1;21694:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21738:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21728:4;21733:1;21728:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;21767:56;21784:4;21799:9;;;;;;;;;;;21811:11;21767:8;:56::i;:::-;21862:9;;;;;;;;;;;:60;;;21937:11;21963:1;22007:4;22034;22054:15;21862:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21570:518;21515:573;:::o;22096:509::-;22244:56;22261:4;22276:9;;;;;;;;;;;22288:11;22244:8;:56::i;:::-;22343:9;;;;;;;;;;;:25;;;22376:9;22409:4;22429:11;22455:1;22498;22549:6;22571:15;22343:254;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22096:509;;:::o;15828:207::-;15958:10;15916:31;:39;15948:6;15916:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;15984:43;16008:6;16016:10;15984:43;;;;;;;:::i;:::-;;;;;;;;15828:207;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310: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:117::-;5303:1;5300;5293:12;5317:117;5426:1;5423;5416:12;5440:117;5549:1;5546;5539:12;5580:568;5653:8;5663:6;5713:3;5706:4;5698:6;5694:17;5690:27;5680:122;;5721:79;;:::i;:::-;5680:122;5834:6;5821:20;5811:30;;5864:18;5856:6;5853:30;5850:117;;;5886:79;;:::i;:::-;5850:117;6000:4;5992:6;5988:17;5976:29;;6054:3;6046:4;6038:6;6034:17;6024:8;6020:32;6017:41;6014:128;;;6061:79;;:::i;:::-;6014:128;5580:568;;;;;:::o;6154:116::-;6224:21;6239:5;6224:21;:::i;:::-;6217:5;6214:32;6204:60;;6260:1;6257;6250:12;6204:60;6154:116;:::o;6276:133::-;6319:5;6357:6;6344:20;6335:29;;6373:30;6397:5;6373:30;:::i;:::-;6276:133;;;;:::o;6415:698::-;6507:6;6515;6523;6572:2;6560:9;6551:7;6547:23;6543:32;6540:119;;;6578:79;;:::i;:::-;6540:119;6726:1;6715:9;6711:17;6698:31;6756:18;6748:6;6745:30;6742:117;;;6778:79;;:::i;:::-;6742:117;6891:80;6963:7;6954:6;6943:9;6939:22;6891:80;:::i;:::-;6873:98;;;;6669:312;7020:2;7046:50;7088:7;7079:6;7068:9;7064:22;7046:50;:::i;:::-;7036:60;;6991:115;6415:698;;;;;:::o;7119:118::-;7206:24;7224:5;7206:24;:::i;:::-;7201:3;7194:37;7119:118;;:::o;7243:222::-;7336:4;7374:2;7363:9;7359:18;7351:26;;7387:71;7455:1;7444:9;7440:17;7431:6;7387:71;:::i;:::-;7243:222;;;;:::o;7471:619::-;7548:6;7556;7564;7613:2;7601:9;7592:7;7588:23;7584:32;7581:119;;;7619:79;;:::i;:::-;7581:119;7739:1;7764:53;7809:7;7800:6;7789:9;7785:22;7764:53;:::i;:::-;7754:63;;7710:117;7866:2;7892:53;7937:7;7928:6;7917:9;7913:22;7892:53;:::i;:::-;7882:63;;7837:118;7994:2;8020:53;8065:7;8056:6;8045:9;8041:22;8020:53;:::i;:::-;8010:63;;7965:118;7471:619;;;;;:::o;8096:329::-;8155:6;8204:2;8192:9;8183:7;8179:23;8175:32;8172:119;;;8210:79;;:::i;:::-;8172:119;8330:1;8355:53;8400:7;8391:6;8380:9;8376:22;8355:53;:::i;:::-;8345:63;;8301:117;8096:329;;;;:::o;8431:86::-;8466:7;8506:4;8499:5;8495:16;8484:27;;8431:86;;;:::o;8523:112::-;8606:22;8622:5;8606:22;:::i;:::-;8601:3;8594:35;8523:112;;:::o;8641:214::-;8730:4;8768:2;8757:9;8753:18;8745:26;;8781:67;8845:1;8834:9;8830:17;8821:6;8781:67;:::i;:::-;8641:214;;;;:::o;8861:118::-;8948:24;8966:5;8948:24;:::i;:::-;8943:3;8936:37;8861:118;;:::o;8985:222::-;9078:4;9116:2;9105:9;9101:18;9093:26;;9129:71;9197:1;9186:9;9182:17;9173:6;9129:71;:::i;:::-;8985:222;;;;:::o;9213:468::-;9278:6;9286;9335:2;9323:9;9314:7;9310:23;9306:32;9303:119;;;9341:79;;:::i;:::-;9303:119;9461:1;9486:53;9531:7;9522:6;9511:9;9507:22;9486:53;:::i;:::-;9476:63;;9432:117;9588:2;9614:50;9656:7;9647:6;9636:9;9632:22;9614:50;:::i;:::-;9604:60;;9559:115;9213:468;;;;;:::o;9687:474::-;9755:6;9763;9812:2;9800:9;9791:7;9787:23;9783:32;9780:119;;;9818:79;;:::i;:::-;9780:119;9938:1;9963:53;10008:7;9999:6;9988:9;9984:22;9963:53;:::i;:::-;9953:63;;9909:117;10065:2;10091:53;10136:7;10127:6;10116:9;10112:22;10091:53;:::i;:::-;10081:63;;10036:118;9687:474;;;;;:::o;10167:182::-;10307:34;10303:1;10295:6;10291:14;10284:58;10167:182;:::o;10355:366::-;10497:3;10518:67;10582:2;10577:3;10518:67;:::i;:::-;10511:74;;10594:93;10683:3;10594:93;:::i;:::-;10712:2;10707:3;10703:12;10696:19;;10355:366;;;:::o;10727:419::-;10893:4;10931:2;10920:9;10916:18;10908:26;;10980:9;10974:4;10970:20;10966:1;10955:9;10951:17;10944:47;11008:131;11134:4;11008:131;:::i;:::-;11000:139;;10727:419;;;:::o;11152:180::-;11200:77;11197:1;11190:88;11297:4;11294:1;11287:15;11321:4;11318:1;11311:15;11338:191;11378:3;11397:20;11415:1;11397:20;:::i;:::-;11392:25;;11431:20;11449:1;11431:20;:::i;:::-;11426:25;;11474:1;11471;11467:9;11460:16;;11495:3;11492:1;11489:10;11486:36;;;11502:18;;:::i;:::-;11486:36;11338:191;;;;:::o;11535:179::-;11675:31;11671:1;11663:6;11659:14;11652:55;11535:179;:::o;11720:366::-;11862:3;11883:67;11947:2;11942:3;11883:67;:::i;:::-;11876:74;;11959:93;12048:3;11959:93;:::i;:::-;12077:2;12072:3;12068:12;12061:19;;11720:366;;;:::o;12092:419::-;12258:4;12296:2;12285:9;12281:18;12273:26;;12345:9;12339:4;12335:20;12331:1;12320:9;12316:17;12309:47;12373:131;12499:4;12373:131;:::i;:::-;12365:139;;12092:419;;;:::o;12517:180::-;12565:77;12562:1;12555:88;12662:4;12659:1;12652:15;12686:4;12683:1;12676:15;12703:320;12747:6;12784:1;12778:4;12774:12;12764:22;;12831:1;12825:4;12821:12;12852:18;12842:81;;12908:4;12900:6;12896:17;12886:27;;12842:81;12970:2;12962:6;12959:14;12939:18;12936:38;12933:84;;12989:18;;:::i;:::-;12933:84;12754:269;12703:320;;;:::o;13029:180::-;13077:77;13074:1;13067:88;13174:4;13171:1;13164:15;13198:4;13195:1;13188:15;13215:233;13254:3;13277:24;13295:5;13277:24;:::i;:::-;13268:33;;13323:66;13316:5;13313:77;13310:103;;13393:18;;:::i;:::-;13310:103;13440:1;13433:5;13429:13;13422:20;;13215:233;;;:::o;13454:227::-;13594:34;13590:1;13582:6;13578:14;13571:58;13663:10;13658:2;13650:6;13646:15;13639:35;13454:227;:::o;13687:366::-;13829:3;13850:67;13914:2;13909:3;13850:67;:::i;:::-;13843:74;;13926:93;14015:3;13926:93;:::i;:::-;14044:2;14039:3;14035:12;14028:19;;13687:366;;;:::o;14059:419::-;14225:4;14263:2;14252:9;14248:18;14240:26;;14312:9;14306:4;14302:20;14298:1;14287:9;14283:17;14276:47;14340:131;14466:4;14340:131;:::i;:::-;14332:139;;14059:419;;;:::o;14484:410::-;14524:7;14547:20;14565:1;14547:20;:::i;:::-;14542:25;;14581:20;14599:1;14581:20;:::i;:::-;14576:25;;14636:1;14633;14629:9;14658:30;14676:11;14658:30;:::i;:::-;14647:41;;14837:1;14828:7;14824:15;14821:1;14818:22;14798:1;14791:9;14771:83;14748:139;;14867:18;;:::i;:::-;14748:139;14532:362;14484:410;;;;:::o;14900:180::-;14948:77;14945:1;14938:88;15045:4;15042:1;15035:15;15069:4;15066:1;15059:15;15086:185;15126:1;15143:20;15161:1;15143:20;:::i;:::-;15138:25;;15177:20;15195:1;15177:20;:::i;:::-;15172:25;;15216:1;15206:35;;15221:18;;:::i;:::-;15206:35;15263:1;15260;15256:9;15251:14;;15086:185;;;;:::o;15277:228::-;15417:34;15413:1;15405:6;15401:14;15394:58;15486:11;15481:2;15473:6;15469:15;15462:36;15277:228;:::o;15511:366::-;15653:3;15674:67;15738:2;15733:3;15674:67;:::i;:::-;15667:74;;15750:93;15839:3;15750:93;:::i;:::-;15868:2;15863:3;15859:12;15852:19;;15511:366;;;:::o;15883:419::-;16049:4;16087:2;16076:9;16072:18;16064:26;;16136:9;16130:4;16126:20;16122:1;16111:9;16107:17;16100:47;16164:131;16290:4;16164:131;:::i;:::-;16156:139;;15883:419;;;:::o;16308:225::-;16448:34;16444:1;16436:6;16432:14;16425:58;16517:8;16512:2;16504:6;16500:15;16493:33;16308:225;:::o;16539:366::-;16681:3;16702:67;16766:2;16761:3;16702:67;:::i;:::-;16695:74;;16778:93;16867:3;16778:93;:::i;:::-;16896:2;16891:3;16887:12;16880:19;;16539:366;;;:::o;16911:419::-;17077:4;17115:2;17104:9;17100:18;17092:26;;17164:9;17158:4;17154:20;17150:1;17139:9;17135:17;17128:47;17192:131;17318:4;17192:131;:::i;:::-;17184:139;;16911:419;;;:::o;17336:167::-;17476:19;17472:1;17464:6;17460:14;17453:43;17336:167;:::o;17509:366::-;17651:3;17672:67;17736:2;17731:3;17672:67;:::i;:::-;17665:74;;17748:93;17837:3;17748:93;:::i;:::-;17866:2;17861:3;17857:12;17850:19;;17509:366;;;:::o;17881:419::-;18047:4;18085:2;18074:9;18070:18;18062:26;;18134:9;18128:4;18124:20;18120:1;18109:9;18105:17;18098:47;18162:131;18288:4;18162:131;:::i;:::-;18154:139;;17881:419;;;:::o;18306:226::-;18446:34;18442:1;18434:6;18430:14;18423:58;18515:9;18510:2;18502:6;18498:15;18491:34;18306:226;:::o;18538:366::-;18680:3;18701:67;18765:2;18760:3;18701:67;:::i;:::-;18694:74;;18777:93;18866:3;18777:93;:::i;:::-;18895:2;18890:3;18886:12;18879:19;;18538:366;;;:::o;18910:419::-;19076:4;19114:2;19103:9;19099:18;19091:26;;19163:9;19157:4;19153:20;19149:1;19138:9;19134:17;19127:47;19191:131;19317:4;19191:131;:::i;:::-;19183:139;;18910:419;;;:::o;19335:176::-;19475:28;19471:1;19463:6;19459:14;19452:52;19335:176;:::o;19517:366::-;19659:3;19680:67;19744:2;19739:3;19680:67;:::i;:::-;19673:74;;19756:93;19845:3;19756:93;:::i;:::-;19874:2;19869:3;19865:12;19858:19;;19517:366;;;:::o;19889:419::-;20055:4;20093:2;20082:9;20078:18;20070:26;;20142:9;20136:4;20132:20;20128:1;20117:9;20113:17;20106:47;20170:131;20296:4;20170:131;:::i;:::-;20162:139;;19889:419;;;:::o;20314:143::-;20371:5;20402:6;20396:13;20387:22;;20418:33;20445:5;20418:33;:::i;:::-;20314:143;;;;:::o;20463:351::-;20533:6;20582:2;20570:9;20561:7;20557:23;20553:32;20550:119;;;20588:79;;:::i;:::-;20550:119;20708:1;20733:64;20789:7;20780:6;20769:9;20765:22;20733:64;:::i;:::-;20723:74;;20679:128;20463:351;;;;:::o;20820:332::-;20941:4;20979:2;20968:9;20964:18;20956:26;;20992:71;21060:1;21049:9;21045:17;21036:6;20992:71;:::i;:::-;21073:72;21141:2;21130:9;21126:18;21117:6;21073:72;:::i;:::-;20820:332;;;;;:::o;21158:137::-;21212:5;21243:6;21237:13;21228:22;;21259:30;21283:5;21259:30;:::i;:::-;21158:137;;;;:::o;21301:345::-;21368:6;21417:2;21405:9;21396:7;21392:23;21388:32;21385:119;;;21423:79;;:::i;:::-;21385:119;21543:1;21568:61;21621:7;21612:6;21601:9;21597:22;21568:61;:::i;:::-;21558:71;;21514:125;21301:345;;;;:::o;21652:173::-;21792:25;21788:1;21780:6;21776:14;21769:49;21652:173;:::o;21831:366::-;21973:3;21994:67;22058:2;22053:3;21994:67;:::i;:::-;21987:74;;22070:93;22159:3;22070:93;:::i;:::-;22188:2;22183:3;22179:12;22172:19;;21831:366;;;:::o;22203:419::-;22369:4;22407:2;22396:9;22392:18;22384:26;;22456:9;22450:4;22446:20;22442:1;22431:9;22427:17;22420:47;22484:131;22610:4;22484:131;:::i;:::-;22476:139;;22203:419;;;:::o;22628:244::-;22768:34;22764:1;22756:6;22752:14;22745:58;22837:27;22832:2;22824:6;22820:15;22813:52;22628:244;:::o;22878:366::-;23020:3;23041:67;23105:2;23100:3;23041:67;:::i;:::-;23034:74;;23117:93;23206:3;23117:93;:::i;:::-;23235:2;23230:3;23226:12;23219:19;;22878:366;;;:::o;23250:419::-;23416:4;23454:2;23443:9;23439:18;23431:26;;23503:9;23497:4;23493:20;23489:1;23478:9;23474:17;23467:47;23531:131;23657:4;23531:131;:::i;:::-;23523:139;;23250:419;;;:::o;23675:224::-;23815:34;23811:1;23803:6;23799:14;23792:58;23884:7;23879:2;23871:6;23867:15;23860:32;23675:224;:::o;23905:366::-;24047:3;24068:67;24132:2;24127:3;24068:67;:::i;:::-;24061:74;;24144:93;24233:3;24144:93;:::i;:::-;24262:2;24257:3;24253:12;24246:19;;23905:366;;;:::o;24277:419::-;24443:4;24481:2;24470:9;24466:18;24458:26;;24530:9;24524:4;24520:20;24516:1;24505:9;24501:17;24494:47;24558:131;24684:4;24558:131;:::i;:::-;24550:139;;24277:419;;;:::o;24702:231::-;24842:34;24838:1;24830:6;24826:14;24819:58;24911:14;24906:2;24898:6;24894:15;24887:39;24702:231;:::o;24939:366::-;25081:3;25102:67;25166:2;25161:3;25102:67;:::i;:::-;25095:74;;25178:93;25267:3;25178:93;:::i;:::-;25296:2;25291:3;25287:12;25280:19;;24939:366;;;:::o;25311:419::-;25477:4;25515:2;25504:9;25500:18;25492:26;;25564:9;25558:4;25554:20;25550:1;25539:9;25535:17;25528:47;25592:131;25718:4;25592:131;:::i;:::-;25584:139;;25311:419;;;:::o;25736:240::-;25876:34;25872:1;25864:6;25860:14;25853:58;25945:23;25940:2;25932:6;25928:15;25921:48;25736:240;:::o;25982:366::-;26124:3;26145:67;26209:2;26204:3;26145:67;:::i;:::-;26138:74;;26221:93;26310:3;26221:93;:::i;:::-;26339:2;26334:3;26330:12;26323:19;;25982:366;;;:::o;26354:419::-;26520:4;26558:2;26547:9;26543:18;26535:26;;26607:9;26601:4;26597:20;26593:1;26582:9;26578:17;26571:47;26635:131;26761:4;26635:131;:::i;:::-;26627:139;;26354:419;;;:::o;26779:239::-;26919:34;26915:1;26907:6;26903:14;26896:58;26988:22;26983:2;26975:6;26971:15;26964:47;26779:239;:::o;27024:366::-;27166:3;27187:67;27251:2;27246:3;27187:67;:::i;:::-;27180:74;;27263:93;27352:3;27263:93;:::i;:::-;27381:2;27376:3;27372:12;27365:19;;27024:366;;;:::o;27396:419::-;27562:4;27600:2;27589:9;27585:18;27577:26;;27649:9;27643:4;27639:20;27635:1;27624:9;27620:17;27613:47;27677:131;27803:4;27677:131;:::i;:::-;27669:139;;27396:419;;;:::o;27821:229::-;27961:34;27957:1;27949:6;27945:14;27938:58;28030:12;28025:2;28017:6;28013:15;28006:37;27821:229;:::o;28056:366::-;28198:3;28219:67;28283:2;28278:3;28219:67;:::i;:::-;28212:74;;28295:93;28384:3;28295:93;:::i;:::-;28413:2;28408:3;28404:12;28397:19;;28056:366;;;:::o;28428:419::-;28594:4;28632:2;28621:9;28617:18;28609:26;;28681:9;28675:4;28671:20;28667:1;28656:9;28652:17;28645:47;28709:131;28835:4;28709:131;:::i;:::-;28701:139;;28428:419;;;:::o;28853:225::-;28993:34;28989:1;28981:6;28977:14;28970:58;29062:8;29057:2;29049:6;29045:15;29038:33;28853:225;:::o;29084:366::-;29226:3;29247:67;29311:2;29306:3;29247:67;:::i;:::-;29240:74;;29323:93;29412:3;29323:93;:::i;:::-;29441:2;29436:3;29432:12;29425:19;;29084:366;;;:::o;29456:419::-;29622:4;29660:2;29649:9;29645:18;29637:26;;29709:9;29703:4;29699:20;29695:1;29684:9;29680:17;29673:47;29737:131;29863:4;29737:131;:::i;:::-;29729:139;;29456:419;;;:::o;29881:147::-;29982:11;30019:3;30004:18;;29881:147;;;;:::o;30034:114::-;;:::o;30154:398::-;30313:3;30334:83;30415:1;30410:3;30334:83;:::i;:::-;30327:90;;30426:93;30515:3;30426:93;:::i;:::-;30544:1;30539:3;30535:11;30528:18;;30154:398;;;:::o;30558:379::-;30742:3;30764:147;30907:3;30764:147;:::i;:::-;30757:154;;30928:3;30921:10;;30558:379;;;:::o;30943:223::-;31083:34;31079:1;31071:6;31067:14;31060:58;31152:6;31147:2;31139:6;31135:15;31128:31;30943:223;:::o;31172:366::-;31314:3;31335:67;31399:2;31394:3;31335:67;:::i;:::-;31328:74;;31411:93;31500:3;31411:93;:::i;:::-;31529:2;31524:3;31520:12;31513:19;;31172:366;;;:::o;31544:419::-;31710:4;31748:2;31737:9;31733:18;31725:26;;31797:9;31791:4;31787:20;31783:1;31772:9;31768:17;31761:47;31825:131;31951:4;31825:131;:::i;:::-;31817:139;;31544:419;;;:::o;31969:221::-;32109:34;32105:1;32097:6;32093:14;32086:58;32178:4;32173:2;32165:6;32161:15;32154:29;31969:221;:::o;32196:366::-;32338:3;32359:67;32423:2;32418:3;32359:67;:::i;:::-;32352:74;;32435:93;32524:3;32435:93;:::i;:::-;32553:2;32548:3;32544:12;32537:19;;32196:366;;;:::o;32568:419::-;32734:4;32772:2;32761:9;32757:18;32749:26;;32821:9;32815:4;32811:20;32807:1;32796:9;32792:17;32785:47;32849:131;32975:4;32849:131;:::i;:::-;32841:139;;32568:419;;;:::o;32993:224::-;33133:34;33129:1;33121:6;33117:14;33110:58;33202:7;33197:2;33189:6;33185:15;33178:32;32993:224;:::o;33223:366::-;33365:3;33386:67;33450:2;33445:3;33386:67;:::i;:::-;33379:74;;33462:93;33551:3;33462:93;:::i;:::-;33580:2;33575:3;33571:12;33564:19;;33223:366;;;:::o;33595:419::-;33761:4;33799:2;33788:9;33784:18;33776:26;;33848:9;33842:4;33838:20;33834:1;33823:9;33819:17;33812:47;33876:131;34002:4;33876:131;:::i;:::-;33868:139;;33595:419;;;:::o;34020:222::-;34160:34;34156:1;34148:6;34144:14;34137:58;34229:5;34224:2;34216:6;34212:15;34205:30;34020:222;:::o;34248:366::-;34390:3;34411:67;34475:2;34470:3;34411:67;:::i;:::-;34404:74;;34487:93;34576:3;34487:93;:::i;:::-;34605:2;34600:3;34596:12;34589:19;;34248:366;;;:::o;34620:419::-;34786:4;34824:2;34813:9;34809:18;34801:26;;34873:9;34867:4;34863:20;34859:1;34848:9;34844:17;34837:47;34901:131;35027:4;34901:131;:::i;:::-;34893:139;;34620:419;;;:::o;35045:179::-;35185:31;35181:1;35173:6;35169:14;35162:55;35045:179;:::o;35230:366::-;35372:3;35393:67;35457:2;35452:3;35393:67;:::i;:::-;35386:74;;35469:93;35558:3;35469:93;:::i;:::-;35587:2;35582:3;35578:12;35571:19;;35230:366;;;:::o;35602:419::-;35768:4;35806:2;35795:9;35791:18;35783:26;;35855:9;35849:4;35845:20;35841:1;35830:9;35826:17;35819:47;35883:131;36009:4;35883:131;:::i;:::-;35875:139;;35602:419;;;:::o;36027:172::-;36167:24;36163:1;36155:6;36151:14;36144:48;36027:172;:::o;36205:366::-;36347:3;36368:67;36432:2;36427:3;36368:67;:::i;:::-;36361:74;;36444:93;36533:3;36444:93;:::i;:::-;36562:2;36557:3;36553:12;36546:19;;36205:366;;;:::o;36577:419::-;36743:4;36781:2;36770:9;36766:18;36758:26;;36830:9;36824:4;36820:20;36816:1;36805:9;36801:17;36794:47;36858:131;36984:4;36858:131;:::i;:::-;36850:139;;36577:419;;;:::o;37002:294::-;37142:34;37138:1;37130:6;37126:14;37119:58;37211:34;37206:2;37198:6;37194:15;37187:59;37280:8;37275:2;37267:6;37263:15;37256:33;37002:294;:::o;37302:366::-;37444:3;37465:67;37529:2;37524:3;37465:67;:::i;:::-;37458:74;;37541:93;37630:3;37541:93;:::i;:::-;37659:2;37654:3;37650:12;37643:19;;37302:366;;;:::o;37674:419::-;37840:4;37878:2;37867:9;37863:18;37855:26;;37927:9;37921:4;37917:20;37913:1;37902:9;37898:17;37891:47;37955:131;38081:4;37955:131;:::i;:::-;37947:139;;37674:419;;;:::o;38099:194::-;38139:4;38159:20;38177:1;38159:20;:::i;:::-;38154:25;;38193:20;38211:1;38193:20;:::i;:::-;38188:25;;38237:1;38234;38230:9;38222:17;;38261:1;38255:4;38252:11;38249:37;;;38266:18;;:::i;:::-;38249:37;38099:194;;;;:::o;38299:240::-;38439:34;38435:1;38427:6;38423:14;38416:58;38508:23;38503:2;38495:6;38491:15;38484:48;38299:240;:::o;38545:366::-;38687:3;38708:67;38772:2;38767:3;38708:67;:::i;:::-;38701:74;;38784:93;38873:3;38784:93;:::i;:::-;38902:2;38897:3;38893:12;38886:19;;38545:366;;;:::o;38917:419::-;39083:4;39121:2;39110:9;39106:18;39098:26;;39170:9;39164:4;39160:20;39156:1;39145:9;39141:17;39134:47;39198:131;39324:4;39198:131;:::i;:::-;39190:139;;38917:419;;;:::o;39342:227::-;39482:34;39478:1;39470:6;39466:14;39459:58;39551:10;39546:2;39538:6;39534:15;39527:35;39342:227;:::o;39575:366::-;39717:3;39738:67;39802:2;39797:3;39738:67;:::i;:::-;39731:74;;39814:93;39903:3;39814:93;:::i;:::-;39932:2;39927:3;39923:12;39916:19;;39575:366;;;:::o;39947:419::-;40113:4;40151:2;40140:9;40136:18;40128:26;;40200:9;40194:4;40190:20;40186:1;40175:9;40171:17;40164:47;40228:131;40354:4;40228:131;:::i;:::-;40220:139;;39947:419;;;:::o;40372:174::-;40512:26;40508:1;40500:6;40496:14;40489:50;40372:174;:::o;40552:366::-;40694:3;40715:67;40779:2;40774:3;40715:67;:::i;:::-;40708:74;;40791:93;40880:3;40791:93;:::i;:::-;40909:2;40904:3;40900:12;40893:19;;40552:366;;;:::o;40924:419::-;41090:4;41128:2;41117:9;41113:18;41105:26;;41177:9;41171:4;41167:20;41163:1;41152:9;41148:17;41141:47;41205:131;41331:4;41205:131;:::i;:::-;41197:139;;40924:419;;;:::o;41349:229::-;41489:34;41485:1;41477:6;41473:14;41466:58;41558:12;41553:2;41545:6;41541:15;41534:37;41349:229;:::o;41584:366::-;41726:3;41747:67;41811:2;41806:3;41747:67;:::i;:::-;41740:74;;41823:93;41912:3;41823:93;:::i;:::-;41941:2;41936:3;41932:12;41925:19;;41584:366;;;:::o;41956:419::-;42122:4;42160:2;42149:9;42145:18;42137:26;;42209:9;42203:4;42199:20;42195:1;42184:9;42180:17;42173:47;42237:131;42363:4;42237:131;:::i;:::-;42229:139;;41956:419;;;:::o;42381:225::-;42521:34;42517:1;42509:6;42505:14;42498:58;42590:8;42585:2;42577:6;42573:15;42566:33;42381:225;:::o;42612:366::-;42754:3;42775:67;42839:2;42834:3;42775:67;:::i;:::-;42768:74;;42851:93;42940:3;42851:93;:::i;:::-;42969:2;42964:3;42960:12;42953:19;;42612:366;;;:::o;42984:419::-;43150:4;43188:2;43177:9;43173:18;43165:26;;43237:9;43231:4;43227:20;43223:1;43212:9;43208:17;43201:47;43265:131;43391:4;43265:131;:::i;:::-;43257:139;;42984:419;;;:::o;43409:180::-;43457:77;43454:1;43447:88;43554:4;43551:1;43544:15;43578:4;43575:1;43568:15;43595:143;43652:5;43683:6;43677:13;43668:22;;43699:33;43726:5;43699:33;:::i;:::-;43595:143;;;;:::o;43744:351::-;43814:6;43863:2;43851:9;43842:7;43838:23;43834:32;43831:119;;;43869:79;;:::i;:::-;43831:119;43989:1;44014:64;44070:7;44061:6;44050:9;44046:22;44014:64;:::i;:::-;44004:74;;43960:128;43744:351;;;;:::o;44101:85::-;44146:7;44175:5;44164:16;;44101:85;;;:::o;44192:158::-;44250:9;44283:61;44301:42;44310:32;44336:5;44310:32;:::i;:::-;44301:42;:::i;:::-;44283:61;:::i;:::-;44270:74;;44192:158;;;:::o;44356:147::-;44451:45;44490:5;44451:45;:::i;:::-;44446:3;44439:58;44356:147;;:::o;44509:114::-;44576:6;44610:5;44604:12;44594:22;;44509:114;;;:::o;44629:184::-;44728:11;44762:6;44757:3;44750:19;44802:4;44797:3;44793:14;44778:29;;44629:184;;;;:::o;44819:132::-;44886:4;44909:3;44901:11;;44939:4;44934:3;44930:14;44922:22;;44819:132;;;:::o;44957:108::-;45034:24;45052:5;45034:24;:::i;:::-;45029:3;45022:37;44957:108;;:::o;45071:179::-;45140:10;45161:46;45203:3;45195:6;45161:46;:::i;:::-;45239:4;45234:3;45230:14;45216:28;;45071:179;;;;:::o;45256:113::-;45326:4;45358;45353:3;45349:14;45341:22;;45256:113;;;:::o;45405:732::-;45524:3;45553:54;45601:5;45553:54;:::i;:::-;45623:86;45702:6;45697:3;45623:86;:::i;:::-;45616:93;;45733:56;45783:5;45733:56;:::i;:::-;45812:7;45843:1;45828:284;45853:6;45850:1;45847:13;45828:284;;;45929:6;45923:13;45956:63;46015:3;46000:13;45956:63;:::i;:::-;45949:70;;46042:60;46095:6;46042:60;:::i;:::-;46032:70;;45888:224;45875:1;45872;45868:9;45863:14;;45828:284;;;45832:14;46128:3;46121:10;;45529:608;;;45405:732;;;;:::o;46143:831::-;46406:4;46444:3;46433:9;46429:19;46421:27;;46458:71;46526:1;46515:9;46511:17;46502:6;46458:71;:::i;:::-;46539:80;46615:2;46604:9;46600:18;46591:6;46539:80;:::i;:::-;46666:9;46660:4;46656:20;46651:2;46640:9;46636:18;46629:48;46694:108;46797:4;46788:6;46694:108;:::i;:::-;46686:116;;46812:72;46880:2;46869:9;46865:18;46856:6;46812:72;:::i;:::-;46894:73;46962:3;46951:9;46947:19;46938:6;46894:73;:::i;:::-;46143:831;;;;;;;;:::o;46980:807::-;47229:4;47267:3;47256:9;47252:19;47244:27;;47281:71;47349:1;47338:9;47334:17;47325:6;47281:71;:::i;:::-;47362:72;47430:2;47419:9;47415:18;47406:6;47362:72;:::i;:::-;47444:80;47520:2;47509:9;47505:18;47496:6;47444:80;:::i;:::-;47534;47610:2;47599:9;47595:18;47586:6;47534:80;:::i;:::-;47624:73;47692:3;47681:9;47677:19;47668:6;47624:73;:::i;:::-;47707;47775:3;47764:9;47760:19;47751:6;47707:73;:::i;:::-;46980:807;;;;;;;;;:::o;47793:663::-;47881:6;47889;47897;47946:2;47934:9;47925:7;47921:23;47917:32;47914:119;;;47952:79;;:::i;:::-;47914:119;48072:1;48097:64;48153:7;48144:6;48133:9;48129:22;48097:64;:::i;:::-;48087:74;;48043:128;48210:2;48236:64;48292:7;48283:6;48272:9;48268:22;48236:64;:::i;:::-;48226:74;;48181:129;48349:2;48375:64;48431:7;48422:6;48411:9;48407:22;48375:64;:::i;:::-;48365:74;;48320:129;47793:663;;;;;:::o;48462:320::-;48577:4;48615:2;48604:9;48600:18;48592:26;;48628:71;48696:1;48685:9;48681:17;48672:6;48628:71;:::i;:::-;48709:66;48771:2;48760:9;48756:18;48747:6;48709:66;:::i;:::-;48462:320;;;;;:::o

Swarm Source

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