ETH Price: $3,564.40 (-0.07%)
 

Overview

Max Total Supply

1,000,000,000 KIBBLE

Holders

1,890

Market

Price

$0.01 @ 0.000003 ETH (+0.82%)

Onchain Market Cap

$12,223,560.00

Circulating Supply Market Cap

$1,701,082.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
551.553290559912064422 KIBBLE

Value
$6.74 ( ~0.00189091896847439 ETH) [0.0001%]
0x0fcdde14fb2FCBc13B8F89dA411b56C2908976dD
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Cat Town is an idle game on the Base blockchain with a token $KIBBLE, Kibble is a token that powers our cyclic nature of the idle game to maintain a fair, balanced economy for all.

Contract Source Code Verified (Exact Match)

Contract Name:
KibbleToken

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at basescan.org on 2024-03-24
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // This is intentional to silence state mutability warning without generating bytecode.
        return msg.data;
    }
}

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 addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
    external
    payable
    returns (
        uint256 amountToken,
        uint256 amountETH,
        uint256 liquidity
    );
}


interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    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");
        _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");
        _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");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _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() public 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 IDexFactory {
    function createPair(address tokenA, address tokenB)
    external
    returns (address pair);
}


contract KibbleToken is ERC20, Ownable {
    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public TreasuryAddress;
    address public DevAddress;

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

    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;

    uint256 public tokensForTreasury;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDeveloper;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    mapping(address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event EnabledTrading(bool tradingActive);
    event RemovedLimits();
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event UpdatedMaxBuyAmount(uint256 newAmount);
    event UpdatedMaxSellAmount(uint256 newAmount);
    event UpdatedMaxWalletAmount(uint256 newAmount);
    event UpdatedTreasuryAddress(address indexed newWallet);
    event UpdatedDeveloperAddress(address indexed newWallet);
    event UpdatedRewardsAddress(address indexed newWallet);
    event MaxTransactionExclusion(address _address, bool excluded);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );


    constructor() ERC20("Kibble", "KIBBLE") {
        address newOwner = msg.sender;

        IDexRouter _uniswapV2Router = IDexRouter(0x6BDED42c6DA8FBf0d2bA55B2fa120C5e0c8D7891);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IDexFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(uniswapV2Pair, true);

        uint256 totalSupply = 1_000_000_000 * 1e18; // 1 billion tokens

        maxBuyAmount = totalSupply * 20 / 1000; // 2%
        maxSellAmount = totalSupply * 20 / 1000; // 2%
        maxWalletAmount = totalSupply * 20 / 1000; // 2%
        swapTokensAtAmount = totalSupply * 50 / 100_000; // 0.05%

        buyTreasuryFee = 1;
        buyLiquidityFee = 1;
        buyDevFee = 1;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyDevFee;

        sellTreasuryFee = 1;
        sellLiquidityFee = 1;
        sellDevFee = 1;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellDevFee;

        TreasuryAddress = 0x1762BFeae2E37C5dd8635459266c0a33e12334e6; // Game Contract
        DevAddress = 0x77d3365afCc72E2119A5033b30FA205c1Bc99ffa; // Developer Wallet

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);
        _excludeFromMaxTransaction(address(0xD56463c6c21bc5329D467007AEc3fA03ba114772), true); // Marketing
        _excludeFromMaxTransaction(address(0x77d3365afCc72E2119A5033b30FA205c1Bc99ffa), true); // Development
        _excludeFromMaxTransaction(address(0xD70956c45971b3f7cA3654636d032312a957a319), true); // Team Wallet
        _excludeFromMaxTransaction(address(0xc468870E7B6B98fB1Ed3438232B96A5c028ba289), true); // LP Wallet
        _excludeFromMaxTransaction(address(0x1762BFeae2E37C5dd8635459266c0a33e12334e6), true); // Temp Game Wallet

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(0xD56463c6c21bc5329D467007AEc3fA03ba114772), true); // Marketing
        excludeFromFees(address(0x77d3365afCc72E2119A5033b30FA205c1Bc99ffa), true); // Development
        excludeFromFees(address(0xD70956c45971b3f7cA3654636d032312a957a319), true); // Team Wallet
        excludeFromFees(address(0xc468870E7B6B98fB1Ed3438232B96A5c028ba289), true); // LP Wallet
        excludeFromFees(address(0x1762BFeae2E37C5dd8635459266c0a33e12334e6), true); // Temp Game Wallet

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

    receive() external payable {}

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

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

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

    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 != uniswapV2Pair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    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 updateBuyFees(uint256 _treasuryFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        buyTreasuryFee = _treasuryFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 10, "Must keep fees at 10% or less");
    }

    function updateSellFees(uint256 _treasuryFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        sellTreasuryFee = _treasuryFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + _devFee;
        require(sellTotalFees <= 10, "Must keep fees at 10% 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 (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)) {
                if (!tradingActive) {
                    require(_isExcludedMaxTransactionAmount[from] || _isExcludedMaxTransactionAmount[to], "Trading is not active.");
                    require(from == owner(), "Trading is enabled");
                }

                //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] && !_isExcludedMaxTransactionAmount[from]) {
                    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 Trades, not on wallet transfers

        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForTreasury += fees * sellTreasuryFee / sellTotalFees;
                tokensForDeveloper += fees * sellDevFee / sellTotalFees;
            }
                // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForTreasury += fees * buyTreasuryFee / buyTotalFees;
                tokensForDeveloper += fees * buyDevFee / 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] = uniswapV2Router.WETH();

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

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    // once enabled, can never be turned off
    function enableTrading(bool _status) external onlyOwner {
        require(!tradingActive, "Cannot re enable trading");
        tradingActive = _status;
        swapEnabled = true;
        emit EnabledTrading(tradingActive);
    }

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

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

    function multiSend(address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

        require(addresses.length < 801, "GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow
        require(addresses.length == tokens.length, "Mismatch between Address and token count");

        uint256 SCCC = 0;

        for (uint i = 0; i < addresses.length; i++) {
            SCCC = SCCC + (tokens[i] * 10 ** decimals());
        }

        require(balanceOf(msg.sender) >= SCCC, "Not enough tokens in wallet");

        for (uint i = 0; i < addresses.length; i++) {
            _transfer(msg.sender, addresses[i], (tokens[i] * 10 ** decimals()));
        }
    }

    function setTreasuryAddress(address _TreasuryAddress) external onlyOwner {
        require(_TreasuryAddress != address(0), "_TreasuryAddress address cannot be 0");
        TreasuryAddress = payable(_TreasuryAddress);
        emit UpdatedTreasuryAddress(_TreasuryAddress);
    }

    function setDeveloperAddress(address _developerAddress) external onlyOwner {
        require(_developerAddress != address(0), "_developerAddress address cannot be 0");
        TreasuryAddress = payable(_developerAddress);
        emit UpdatedDeveloperAddress(_developerAddress);
    }



    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        // Adjusted to exclude tokensForTreasury from tokens to swap for ETH.
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForDeveloper;

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

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

        // Determine the portion of tokens to swap for ETH (for liquidity and developer fees).
        uint256 tokensToSwapForETH = contractBalance * totalTokensToSwap / (totalTokensToSwap + tokensForTreasury);
        uint256 liquidityTokens = tokensForLiquidity / 2; // Only half of the liquidity tokens are swapped for ETH.

        swapTokensForEth(tokensToSwapForETH - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForDeveloper = ethBalance * tokensForDeveloper / totalTokensToSwap;
        uint256 ethForLiquidity = ethBalance - ethForDeveloper;

        // Reset tokens counters.
        tokensForLiquidity = 0;
        tokensForDeveloper = 0;

        // Add liquidity to the pool.
        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        // Send ETH to Developer Address.
        if (ethForDeveloper > 0) {
            (bool success,) = address(DevAddress).call{value: ethForDeveloper}("");
            require(success, "Transfer to Developer failed.");
        }

        // Transfer treasury tokens directly to the Treasury Address.
        if (tokensForTreasury > 0) {
            _transfer(address(this), TreasuryAddress, tokensForTreasury);
            tokensForTreasury = 0; // Reset treasury tokens counter after transferring.
        }
    }

    function claimStuckTokens(address _token) external onlyOwner {
        if (_token == address(0x0)) {
            payable(owner()).transfer(address(this).balance);
            return;
        }
        IERC20 erc20token = IERC20(_token);
        uint256 balance = erc20token.balanceOf(address(this));
        erc20token.transfer(owner(), balance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingActive","type":"bool"}],"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":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":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedDeveloperAddress","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":"UpdatedRewardsAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[],"name":"DevAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TreasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"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":[{"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":"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":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiSend","outputs":[],"stateMutability":"nonpayable","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":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","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":"_developerAddress","type":"address"}],"name":"setDeveloperAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_TreasuryAddress","type":"address"}],"name":"setTreasuryAddress","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":"tokensForDeveloper","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","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":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600c60146101000a81548160ff0219169083151502179055505f600c60156101000a81548160ff0219169083151502179055505f600c60166101000a81548160ff0219169083151502179055503480156200005f575f80fd5b506040518060400160405280600681526020017f4b6962626c6500000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4b4942424c4500000000000000000000000000000000000000000000000000008152508160039081620000dd919062000f9e565b508060049081620000ef919062000f9e565b5050505f620001036200078960201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f3390505f736bded42c6da8fbf0d2ba55b2fa120c5e0c8d789190508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002629190620010e7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002f09190620010e7565b6040518363ffffffff1660e01b81526004016200030f92919062001128565b6020604051808303815f875af11580156200032c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003529190620010e7565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200039a60a05160016200079060201b60201c565b5f6b033b2e3c9fd0803ce800000090506103e8601482620003bc919062001180565b620003c89190620011f7565b6006819055506103e8601482620003e0919062001180565b620003ec9190620011f7565b6007819055506103e860148262000404919062001180565b620004109190620011f7565b600881905550620186a060328262000429919062001180565b620004359190620011f7565b600a819055506001600e819055506001600f819055506001601081905550601054600f54600e546200046891906200122e565b6200047491906200122e565b600d81905550600160128190555060016013819055506001601481905550601454601354601254620004a791906200122e565b620004b391906200122e565b601181905550731762bfeae2e37c5dd8635459266c0a33e12334e6600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507377d3365afcc72e2119a5033b30fa205c1bc99ffa600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005748360016200084060201b60201c565b620005873060016200084060201b60201c565b6200059c61dead60016200084060201b60201c565b620005c373d56463c6c21bc5329d467007aec3fa03ba11477260016200084060201b60201c565b620005ea7377d3365afcc72e2119a5033b30fa205c1bc99ffa60016200084060201b60201c565b6200061173d70956c45971b3f7ca3654636d032312a957a31960016200084060201b60201c565b6200063873c468870e7b6b98fb1ed3438232b96a5c028ba28960016200084060201b60201c565b6200065f731762bfeae2e37c5dd8635459266c0a33e12334e660016200084060201b60201c565b62000672836001620008d360201b60201c565b62000685306001620008d360201b60201c565b6200069a61dead6001620008d360201b60201c565b620006c173d56463c6c21bc5329d467007aec3fa03ba1147726001620008d360201b60201c565b620006e87377d3365afcc72e2119a5033b30fa205c1bc99ffa6001620008d360201b60201c565b6200070f73d70956c45971b3f7ca3654636d032312a957a3196001620008d360201b60201c565b6200073673c468870e7b6b98fb1ed3438232b96a5c028ba2896001620008d360201b60201c565b6200075d731762bfeae2e37c5dd8635459266c0a33e12334e66001620008d360201b60201c565b6200076f838262000a0a60201b60201c565b620007808362000b5460201b60201c565b50505062001476565b5f33905090565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620007f682826200084060201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051620008c792919062001284565b60405180910390a15050565b620008e36200078960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200090962000d1260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000959906200130d565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009fe91906200132d565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a729062001396565b60405180910390fd5b8060025f82825462000a8e91906200122e565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000ae291906200122e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b489190620013c7565b60405180910390a35050565b62000b646200078960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000b8a62000d1260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000be3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bda906200130d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c4b9062001456565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000db657607f821691505b60208210810362000dcc5762000dcb62000d71565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000e307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000df3565b62000e3c868362000df3565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000e8662000e8062000e7a8462000e54565b62000e5d565b62000e54565b9050919050565b5f819050919050565b62000ea18362000e66565b62000eb962000eb08262000e8d565b84845462000dff565b825550505050565b5f90565b62000ecf62000ec1565b62000edc81848462000e96565b505050565b5b8181101562000f035762000ef75f8262000ec5565b60018101905062000ee2565b5050565b601f82111562000f525762000f1c8162000dd2565b62000f278462000de4565b8101602085101562000f37578190505b62000f4f62000f468562000de4565b83018262000ee1565b50505b505050565b5f82821c905092915050565b5f62000f745f198460080262000f57565b1980831691505092915050565b5f62000f8e838362000f63565b9150826002028217905092915050565b62000fa98262000d3a565b67ffffffffffffffff81111562000fc55762000fc462000d44565b5b62000fd1825462000d9e565b62000fde82828562000f07565b5f60209050601f83116001811462001014575f841562000fff578287015190505b6200100b858262000f81565b8655506200107a565b601f198416620010248662000dd2565b5f5b828110156200104d5784890151825560018201915060208501945060208101905062001026565b868310156200106d578489015162001069601f89168262000f63565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620010b18262001086565b9050919050565b620010c381620010a5565b8114620010ce575f80fd5b50565b5f81519050620010e181620010b8565b92915050565b5f60208284031215620010ff57620010fe62001082565b5b5f6200110e84828501620010d1565b91505092915050565b6200112281620010a5565b82525050565b5f6040820190506200113d5f83018562001117565b6200114c602083018462001117565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200118c8262000e54565b9150620011998362000e54565b9250828202620011a98162000e54565b91508282048414831517620011c357620011c262001153565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620012038262000e54565b9150620012108362000e54565b925082620012235762001222620011ca565b5b828204905092915050565b5f6200123a8262000e54565b9150620012478362000e54565b925082820190508082111562001262576200126162001153565b5b92915050565b5f8115159050919050565b6200127e8162001268565b82525050565b5f604082019050620012995f83018562001117565b620012a8602083018462001273565b9392505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f620012f5602083620012af565b91506200130282620012bf565b602082019050919050565b5f6020820190508181035f8301526200132681620012e7565b9050919050565b5f602082019050620013425f83018462001273565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6200137e601f83620012af565b91506200138b8262001348565b602082019050919050565b5f6020820190508181035f830152620013af8162001370565b9050919050565b620013c18162000e54565b82525050565b5f602082019050620013dc5f830184620013b6565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6200143e602683620012af565b91506200144b82620013e2565b604082019050919050565b5f6020820190508181035f8301526200146f8162001430565b9050919050565b60805160a051615bd3620014c95f395f8181611027015281816114e1015261182601525f8181610d0201528181613d0601528181613de501528181613e0c01528181613ea20152613ec90152615bd35ff3fe60806040526004361061031d575f3560e01c80638da5cb5b116101aa578063c18bc195116100f6578063dd62ed3e11610094578063f275f64b1161006e578063f275f64b14610b94578063f2fde38b14610bbc578063f637434214610be4578063f9d0831a14610c0e57610324565b8063dd62ed3e14610b04578063e2f4560514610b40578063f11a24d314610b6a57610324565b8063d257b34f116100d0578063d257b34f14610a62578063d85ba06314610a8a578063dc3f0d0f14610ab4578063dcc345f214610adc57610324565b8063c18bc195146109e6578063cc2ffe7c14610a0e578063ceaa00b214610a3857610324565b8063a9059cbb11610163578063bb4c9f0b1161013d578063bb4c9f0b14610944578063bbc0c7421461096c578063c024666814610996578063c17b5b8c146109be57610324565b8063a9059cbb146108a2578063aa4bde28146108de578063b62496f51461090857610324565b80638da5cb5b1461079657806395d89b41146107c05780639a7a23d6146107ea5780639c3b4fdc14610812578063a0d82dc51461083c578063a457c2d71461086657610324565b80635c068a8c1161026957806370a08231116102225780637571336a116101fc5780637571336a146106f25780638095d5641461071a57806388e765ff1461074257806389a4c1a01461076c57610324565b806370a082311461068a578063715018a6146106c6578063751039fc146106dc57610324565b80635c068a8c146105905780636605bfda146105ba57806366d602ae146105e25780636a486a8e1461060c5780636b2fb124146106365780636ddd17131461066057610324565b806323b872dd116102d657806339509351116102b057806339509351146104d657806349bd5a5e146105125780634a62bb651461053c5780635b5c251f1461056657610324565b806323b872dd146104485780632be32b6114610484578063313ce567146104ac57610324565b806306fdde0314610328578063095ea7b31461035257806310d5de531461038e5780631694505e146103ca57806318160ddd146103f45780631a8145bb1461041e57610324565b3661032457005b5f80fd5b348015610333575f80fd5b5061033c610c36565b6040516103499190614004565b60405180910390f35b34801561035d575f80fd5b50610378600480360381019061037391906140b9565b610cc6565b6040516103859190614111565b60405180910390f35b348015610399575f80fd5b506103b460048036038101906103af919061412a565b610ce3565b6040516103c19190614111565b60405180910390f35b3480156103d5575f80fd5b506103de610d00565b6040516103eb91906141b0565b60405180910390f35b3480156103ff575f80fd5b50610408610d24565b60405161041591906141d8565b60405180910390f35b348015610429575f80fd5b50610432610d2d565b60405161043f91906141d8565b60405180910390f35b348015610453575f80fd5b5061046e600480360381019061046991906141f1565b610d33565b60405161047b9190614111565b60405180910390f35b34801561048f575f80fd5b506104aa60048036038101906104a59190614241565b610e2e565b005b3480156104b7575f80fd5b506104c0610f76565b6040516104cd9190614287565b60405180910390f35b3480156104e1575f80fd5b506104fc60048036038101906104f791906140b9565b610f7e565b6040516105099190614111565b60405180910390f35b34801561051d575f80fd5b50610526611025565b60405161053391906142af565b60405180910390f35b348015610547575f80fd5b50610550611049565b60405161055d9190614111565b60405180910390f35b348015610571575f80fd5b5061057a61105c565b60405161058791906142af565b60405180910390f35b34801561059b575f80fd5b506105a4611081565b6040516105b191906141d8565b60405180910390f35b3480156105c5575f80fd5b506105e060048036038101906105db919061412a565b611087565b005b3480156105ed575f80fd5b506105f66111f7565b60405161060391906141d8565b60405180910390f35b348015610617575f80fd5b506106206111fd565b60405161062d91906141d8565b60405180910390f35b348015610641575f80fd5b5061064a611203565b60405161065791906141d8565b60405180910390f35b34801561066b575f80fd5b50610674611209565b6040516106819190614111565b60405180910390f35b348015610695575f80fd5b506106b060048036038101906106ab919061412a565b61121c565b6040516106bd91906141d8565b60405180910390f35b3480156106d1575f80fd5b506106da611261565b005b3480156106e7575f80fd5b506106f061139a565b005b3480156106fd575f80fd5b50610718600480360381019061071391906142f2565b61145e565b005b348015610725575f80fd5b50610740600480360381019061073b9190614330565b6115c6565b005b34801561074d575f80fd5b506107566116c5565b60405161076391906141d8565b60405180910390f35b348015610777575f80fd5b506107806116cb565b60405161078d91906142af565b60405180910390f35b3480156107a1575f80fd5b506107aa6116f0565b6040516107b791906142af565b60405180910390f35b3480156107cb575f80fd5b506107d4611718565b6040516107e19190614004565b60405180910390f35b3480156107f5575f80fd5b50610810600480360381019061080b91906142f2565b6117a8565b005b34801561081d575f80fd5b506108266118c0565b60405161083391906141d8565b60405180910390f35b348015610847575f80fd5b506108506118c6565b60405161085d91906141d8565b60405180910390f35b348015610871575f80fd5b5061088c600480360381019061088791906140b9565b6118cc565b6040516108999190614111565b60405180910390f35b3480156108ad575f80fd5b506108c860048036038101906108c391906140b9565b6119bb565b6040516108d59190614111565b60405180910390f35b3480156108e9575f80fd5b506108f26119d8565b6040516108ff91906141d8565b60405180910390f35b348015610913575f80fd5b5061092e6004803603810190610929919061412a565b6119de565b60405161093b9190614111565b60405180910390f35b34801561094f575f80fd5b5061096a60048036038101906109659190614436565b6119fb565b005b348015610977575f80fd5b50610980611c3d565b60405161098d9190614111565b60405180910390f35b3480156109a1575f80fd5b506109bc60048036038101906109b791906142f2565b611c50565b005b3480156109c9575f80fd5b506109e460048036038101906109df9190614330565b611d72565b005b3480156109f1575f80fd5b50610a0c6004803603810190610a079190614241565b611e6f565b005b348015610a19575f80fd5b50610a22611fb7565b604051610a2f91906141d8565b60405180910390f35b348015610a43575f80fd5b50610a4c611fbd565b604051610a5991906141d8565b60405180910390f35b348015610a6d575f80fd5b50610a886004803603810190610a839190614241565b611fc3565b005b348015610a95575f80fd5b50610a9e612110565b604051610aab91906141d8565b60405180910390f35b348015610abf575f80fd5b50610ada6004803603810190610ad59190614241565b612116565b005b348015610ae7575f80fd5b50610b026004803603810190610afd919061412a565b61225e565b005b348015610b0f575f80fd5b50610b2a6004803603810190610b2591906144b4565b6123ce565b604051610b3791906141d8565b60405180910390f35b348015610b4b575f80fd5b50610b54612450565b604051610b6191906141d8565b60405180910390f35b348015610b75575f80fd5b50610b7e612456565b604051610b8b91906141d8565b60405180910390f35b348015610b9f575f80fd5b50610bba6004803603810190610bb591906144f2565b61245c565b005b348015610bc7575f80fd5b50610be26004803603810190610bdd919061412a565b6125a6565b005b348015610bef575f80fd5b50610bf861274e565b604051610c0591906141d8565b60405180910390f35b348015610c19575f80fd5b50610c346004803603810190610c2f919061412a565b612754565b005b606060038054610c459061454a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c719061454a565b8015610cbc5780601f10610c9357610100808354040283529160200191610cbc565b820191905f5260205f20905b815481529060010190602001808311610c9f57829003601f168201915b5050505050905090565b5f610cd9610cd261295b565b8484612962565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b60165481565b5f610d3f848484612b25565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d8661295b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfc906145ea565b60405180910390fd5b610e2285610e1161295b565b8584610e1d9190614635565b612962565b60019150509392505050565b610e3661295b565b73ffffffffffffffffffffffffffffffffffffffff16610e546116f0565b73ffffffffffffffffffffffffffffffffffffffff1614610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea1906146b2565b60405180910390fd5b670de0b6b3a76400006103e86001610ec0610d24565b610eca91906146d0565b610ed4919061473e565b610ede919061473e565b811015610f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f17906147de565b60405180910390fd5b670de0b6b3a764000081610f3491906146d0565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610f6b91906141d8565b60405180910390a150565b5f6012905090565b5f61101b610f8a61295b565b848460015f610f9761295b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461101691906147fc565b612962565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c60149054906101000a900460ff1681565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b61108f61295b565b73ffffffffffffffffffffffffffffffffffffffff166110ad6116f0565b73ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa906146b2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611171576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111689061489f565b60405180910390fd5b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b60075481565b60115481565b60125481565b600c60169054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61126961295b565b73ffffffffffffffffffffffffffffffffffffffff166112876116f0565b73ffffffffffffffffffffffffffffffffffffffff16146112dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d4906146b2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6113a261295b565b73ffffffffffffffffffffffffffffffffffffffff166113c06116f0565b73ffffffffffffffffffffffffffffffffffffffff1614611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140d906146b2565b60405180910390fd5b5f600c60146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b61146661295b565b73ffffffffffffffffffffffffffffffffffffffff166114846116f0565b73ffffffffffffffffffffffffffffffffffffffff16146114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d1906146b2565b60405180910390fd5b8061156e577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361156d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115649061492d565b60405180910390fd5b5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6115ce61295b565b73ffffffffffffffffffffffffffffffffffffffff166115ec6116f0565b73ffffffffffffffffffffffffffffffffffffffff1614611642576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611639906146b2565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e5461166a91906147fc565b61167491906147fc565b600d81905550600a600d5411156116c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b790614995565b60405180910390fd5b505050565b60065481565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546117279061454a565b80601f01602080910402602001604051908101604052809291908181526020018280546117539061454a565b801561179e5780601f106117755761010080835404028352916020019161179e565b820191905f5260205f20905b81548152906001019060200180831161178157829003601f168201915b5050505050905090565b6117b061295b565b73ffffffffffffffffffffffffffffffffffffffff166117ce6116f0565b73ffffffffffffffffffffffffffffffffffffffff1614611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b906146b2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a990614a23565b60405180910390fd5b6118bc8282613663565b5050565b60105481565b60145481565b5f8060015f6118d961295b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198a90614ab1565b60405180910390fd5b6119b061199e61295b565b8585846119ab9190614635565b612962565b600191505092915050565b5f6119ce6119c761295b565b8484612b25565b6001905092915050565b60085481565b601a602052805f5260405f205f915054906101000a900460ff1681565b611a0361295b565b73ffffffffffffffffffffffffffffffffffffffff16611a216116f0565b73ffffffffffffffffffffffffffffffffffffffff1614611a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6e906146b2565b60405180910390fd5b6103218484905010611abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab590614b3f565b60405180910390fd5b818190508484905014611b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afd90614bcd565b60405180910390fd5b5f805b85859050811015611b6657611b1c610f76565b600a611b289190614d1a565b848483818110611b3b57611b3a614d64565b5b90506020020135611b4c91906146d0565b82611b5791906147fc565b91508080600101915050611b09565b5080611b713361121c565b1015611bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba990614ddb565b60405180910390fd5b5f5b85859050811015611c3557611c2833878784818110611bd657611bd5614d64565b5b9050602002016020810190611beb919061412a565b611bf3610f76565b600a611bff9190614d1a565b878786818110611c1257611c11614d64565b5b90506020020135611c2391906146d0565b612b25565b8080600101915050611bb4565b505050505050565b600c60159054906101000a900460ff1681565b611c5861295b565b73ffffffffffffffffffffffffffffffffffffffff16611c766116f0565b73ffffffffffffffffffffffffffffffffffffffff1614611ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc3906146b2565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d669190614111565b60405180910390a25050565b611d7a61295b565b73ffffffffffffffffffffffffffffffffffffffff16611d986116f0565b73ffffffffffffffffffffffffffffffffffffffff1614611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de5906146b2565b60405180910390fd5b82601281905550816013819055508060148190555080601354601254611e1491906147fc565b611e1e91906147fc565b601181905550600a6011541115611e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6190614995565b60405180910390fd5b505050565b611e7761295b565b73ffffffffffffffffffffffffffffffffffffffff16611e956116f0565b73ffffffffffffffffffffffffffffffffffffffff1614611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee2906146b2565b60405180910390fd5b670de0b6b3a76400006103e86003611f01610d24565b611f0b91906146d0565b611f15919061473e565b611f1f919061473e565b811015611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5890614e69565b60405180910390fd5b670de0b6b3a764000081611f7591906146d0565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc600854604051611fac91906141d8565b60405180910390a150565b60155481565b60175481565b611fcb61295b565b73ffffffffffffffffffffffffffffffffffffffff16611fe96116f0565b73ffffffffffffffffffffffffffffffffffffffff161461203f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612036906146b2565b60405180910390fd5b620186a0600161204d610d24565b61205791906146d0565b612061919061473e565b8110156120a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209a90614ef7565b60405180910390fd5b6103e860016120b0610d24565b6120ba91906146d0565b6120c4919061473e565b811115612106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fd90614f85565b60405180910390fd5b80600a8190555050565b600d5481565b61211e61295b565b73ffffffffffffffffffffffffffffffffffffffff1661213c6116f0565b73ffffffffffffffffffffffffffffffffffffffff1614612192576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612189906146b2565b60405180910390fd5b670de0b6b3a76400006103e860016121a8610d24565b6121b291906146d0565b6121bc919061473e565b6121c6919061473e565b811015612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff90615013565b60405180910390fd5b670de0b6b3a76400008161221c91906146d0565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e60075460405161225391906141d8565b60405180910390a150565b61226661295b565b73ffffffffffffffffffffffffffffffffffffffff166122846116f0565b73ffffffffffffffffffffffffffffffffffffffff16146122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d1906146b2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233f906150a1565b60405180910390fd5b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fd93a8f1067efdf092de266b926f6938622f6eb4a1d6837e71689f5631f85703760405160405180910390a250565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b600f5481565b61246461295b565b73ffffffffffffffffffffffffffffffffffffffff166124826116f0565b73ffffffffffffffffffffffffffffffffffffffff16146124d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cf906146b2565b60405180910390fd5b600c60159054906101000a900460ff1615612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251f90615109565b60405180910390fd5b80600c60156101000a81548160ff0219169083151502179055506001600c60166101000a81548160ff0219169083151502179055507fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe52089600c60159054906101000a900460ff1660405161259b9190614111565b60405180910390a150565b6125ae61295b565b73ffffffffffffffffffffffffffffffffffffffff166125cc6116f0565b73ffffffffffffffffffffffffffffffffffffffff1614612622576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612619906146b2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268790615197565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b61275c61295b565b73ffffffffffffffffffffffffffffffffffffffff1661277a6116f0565b73ffffffffffffffffffffffffffffffffffffffff16146127d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c7906146b2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128535761280b6116f0565b73ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561284d573d5f803e3d5ffd5b50612958565b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161289191906142af565b602060405180830381865afa1580156128ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128d091906151c9565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6128f66116f0565b836040518363ffffffff1660e01b81526004016129149291906151f4565b6020604051808303815f875af1158015612930573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612954919061522f565b5050505b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c7906152ca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3590615358565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b1891906141d8565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8a906153e6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf890615474565b60405180910390fd5b5f8111612c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3a906154dc565b60405180910390fd5b600c60149054906101000a900460ff16156131d957612c606116f0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612cce5750612c9e6116f0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d0657505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d40575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156131d857600c60159054906101000a900460ff16612ea95760195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612df4575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2a90615544565b60405180910390fd5b612e3b6116f0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9f906155ac565b60405180910390fd5b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f46575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612fed57600654811115612f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f879061563a565b60405180910390fd5b600854612f9c8361121c565b82612fa791906147fc565b1115612fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fdf906156a2565b60405180910390fd5b6131d7565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561308a575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156130d9576007548111156130d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130cb90615730565b60405180910390fd5b6131d6565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613177575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156131d5576008546131888361121c565b8261319391906147fc565b11156131d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131cb906156a2565b60405180910390fd5b5b5b5b5b5b5f6131e33061121c565b90505f600a5482101590508080156132075750600c60169054906101000a900460ff165b801561321f575060095f9054906101000a900460ff16155b80156132725750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156132c5575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613318575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561335957600160095f6101000a81548160ff02191690831515021790555061333f61370b565b5f60095f6101000a81548160ff0219169083151502179055505b5f6001905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806133f9575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613402575f90505b5f811561364f57601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561346057505f601154115b1561351c5760646011548661347591906146d0565b61347f919061473e565b90506011546013548261349291906146d0565b61349c919061473e565b60165f8282546134ac91906147fc565b92505081905550601154601254826134c491906146d0565b6134ce919061473e565b60155f8282546134de91906147fc565b92505081905550601154601454826134f691906146d0565b613500919061473e565b60175f82825461351091906147fc565b9250508190555061362c565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561357357505f600d54115b1561362b576064600d548661358891906146d0565b613592919061473e565b9050600d54600f54826135a591906146d0565b6135af919061473e565b60165f8282546135bf91906147fc565b92505081905550600d54600e54826135d791906146d0565b6135e1919061473e565b60155f8282546135f191906147fc565b92505081905550600d546010548261360991906146d0565b613613919061473e565b60175f82825461362391906147fc565b925050819055505b5b5f8111156136405761363f87308361392e565b5b808561364c9190614635565b94505b61365a87878761392e565b50505050505050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506136c18282613bd8565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f6137153061121c565b90505f60175460165461372891906147fc565b90505f82148061373757505f81145b1561374357505061392c565b600a805461375191906146d0565b82111561376957600a805461376691906146d0565b91505b5f6015548261377891906147fc565b828461378491906146d0565b61378e919061473e565b90505f60026016546137a0919061473e565b90506137b681836137b19190614635565b613c69565b5f4790505f84601754836137ca91906146d0565b6137d4919061473e565b90505f81836137e39190614635565b90505f6016819055505f6017819055505f8411801561380157505f81115b15613811576138108482613e9c565b5b5f8211156138e4575f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161385f9061577b565b5f6040518083038185875af1925050503d805f8114613899576040519150601f19603f3d011682016040523d82523d5f602084013e61389e565b606091505b50509050806138e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138d9906157d9565b60405180910390fd5b505b5f60155411156139245761391c30600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601554612b25565b5f6015819055505b505050505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361399c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613993906153e6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a0190615474565b60405180910390fd5b5f8111613a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a4390615867565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ac6906158f5565b60405180910390fd5b8181613adb9190614635565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613b6691906147fc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613bca91906141d8565b60405180910390a350505050565b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613c5d929190615913565b60405180910390a15050565b5f600267ffffffffffffffff811115613c8557613c8461593a565b5b604051908082528060200260200182016040528015613cb35781602001602082028036833780820191505090505b50905030815f81518110613cca57613cc9614d64565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d91919061597b565b81600181518110613da557613da4614d64565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e0a307f000000000000000000000000000000000000000000000000000000000000000084612962565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613e6b959493929190615a96565b5f604051808303815f87803b158015613e82575f80fd5b505af1158015613e94573d5f803e3d5ffd5b505050505050565b613ec7307f000000000000000000000000000000000000000000000000000000000000000084612962565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80613f106116f0565b426040518863ffffffff1660e01b8152600401613f3296959493929190615aee565b60606040518083038185885af1158015613f4e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613f739190615b4d565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613fb1578082015181840152602081019050613f96565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613fd682613f7a565b613fe08185613f84565b9350613ff0818560208601613f94565b613ff981613fbc565b840191505092915050565b5f6020820190508181035f83015261401c8184613fcc565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6140558261402c565b9050919050565b6140658161404b565b811461406f575f80fd5b50565b5f813590506140808161405c565b92915050565b5f819050919050565b61409881614086565b81146140a2575f80fd5b50565b5f813590506140b38161408f565b92915050565b5f80604083850312156140cf576140ce614024565b5b5f6140dc85828601614072565b92505060206140ed858286016140a5565b9150509250929050565b5f8115159050919050565b61410b816140f7565b82525050565b5f6020820190506141245f830184614102565b92915050565b5f6020828403121561413f5761413e614024565b5b5f61414c84828501614072565b91505092915050565b5f819050919050565b5f61417861417361416e8461402c565b614155565b61402c565b9050919050565b5f6141898261415e565b9050919050565b5f61419a8261417f565b9050919050565b6141aa81614190565b82525050565b5f6020820190506141c35f8301846141a1565b92915050565b6141d281614086565b82525050565b5f6020820190506141eb5f8301846141c9565b92915050565b5f805f6060848603121561420857614207614024565b5b5f61421586828701614072565b935050602061422686828701614072565b9250506040614237868287016140a5565b9150509250925092565b5f6020828403121561425657614255614024565b5b5f614263848285016140a5565b91505092915050565b5f60ff82169050919050565b6142818161426c565b82525050565b5f60208201905061429a5f830184614278565b92915050565b6142a98161404b565b82525050565b5f6020820190506142c25f8301846142a0565b92915050565b6142d1816140f7565b81146142db575f80fd5b50565b5f813590506142ec816142c8565b92915050565b5f806040838503121561430857614307614024565b5b5f61431585828601614072565b9250506020614326858286016142de565b9150509250929050565b5f805f6060848603121561434757614346614024565b5b5f614354868287016140a5565b9350506020614365868287016140a5565b9250506040614376868287016140a5565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126143a1576143a0614380565b5b8235905067ffffffffffffffff8111156143be576143bd614384565b5b6020830191508360208202830111156143da576143d9614388565b5b9250929050565b5f8083601f8401126143f6576143f5614380565b5b8235905067ffffffffffffffff81111561441357614412614384565b5b60208301915083602082028301111561442f5761442e614388565b5b9250929050565b5f805f806040858703121561444e5761444d614024565b5b5f85013567ffffffffffffffff81111561446b5761446a614028565b5b6144778782880161438c565b9450945050602085013567ffffffffffffffff81111561449a57614499614028565b5b6144a6878288016143e1565b925092505092959194509250565b5f80604083850312156144ca576144c9614024565b5b5f6144d785828601614072565b92505060206144e885828601614072565b9150509250929050565b5f6020828403121561450757614506614024565b5b5f614514848285016142de565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061456157607f821691505b6020821081036145745761457361451d565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6145d4602883613f84565b91506145df8261457a565b604082019050919050565b5f6020820190508181035f830152614601816145c8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61463f82614086565b915061464a83614086565b925082820390508181111561466257614661614608565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61469c602083613f84565b91506146a782614668565b602082019050919050565b5f6020820190508181035f8301526146c981614690565b9050919050565b5f6146da82614086565b91506146e583614086565b92508282026146f381614086565b9150828204841483151761470a57614709614608565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61474882614086565b915061475383614086565b92508261476357614762614711565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572205f8201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b5f6147c8602983613f84565b91506147d38261476e565b604082019050919050565b5f6020820190508181035f8301526147f5816147bc565b9050919050565b5f61480682614086565b915061481183614086565b925082820190508082111561482957614828614608565b5b92915050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f74205f8201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b5f614889602483613f84565b91506148948261482f565b604082019050919050565b5f6020820190508181035f8301526148b68161487d565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d205f8201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b5f614917602783613f84565b9150614922826148bd565b604082019050919050565b5f6020820190508181035f8301526149448161490b565b9050919050565b7f4d757374206b656570206665657320617420313025206f72206c6573730000005f82015250565b5f61497f601d83613f84565b915061498a8261494b565b602082019050919050565b5f6020820190508181035f8301526149ac81614973565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614a0d603983613f84565b9150614a18826149b3565b604082019050919050565b5f6020820190508181035f830152614a3a81614a01565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614a9b602583613f84565b9150614aa682614a41565b604082019050919050565b5f6020820190508181035f830152614ac881614a8f565b9050919050565b7f474153204572726f723a206d61782061697264726f70206c696d6974206973205f8201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b5f614b29602d83613f84565b9150614b3482614acf565b604082019050919050565b5f6020820190508181035f830152614b5681614b1d565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b5f8201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b5f614bb7602883613f84565b9150614bc282614b5d565b604082019050919050565b5f6020820190508181035f830152614be481614bab565b9050919050565b5f8160011c9050919050565b5f808291508390505b6001851115614c4057808604811115614c1c57614c1b614608565b5b6001851615614c2b5780820291505b8081029050614c3985614beb565b9450614c00565b94509492505050565b5f82614c585760019050614d13565b81614c65575f9050614d13565b8160018114614c7b5760028114614c8557614cb4565b6001915050614d13565b60ff841115614c9757614c96614608565b5b8360020a915084821115614cae57614cad614608565b5b50614d13565b5060208310610133831016604e8410600b8410161715614ce95782820a905083811115614ce457614ce3614608565b5b614d13565b614cf68484846001614bf7565b92509050818404811115614d0d57614d0c614608565b5b81810290505b9392505050565b5f614d2482614086565b9150614d2f8361426c565b9250614d5c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614c49565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000005f82015250565b5f614dc5601b83613f84565b9150614dd082614d91565b602082019050919050565b5f6020820190508181035f830152614df281614db9565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f775f8201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b5f614e53602c83613f84565b9150614e5e82614df9565b604082019050919050565b5f6020820190508181035f830152614e8081614e47565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614ee1603583613f84565b9150614eec82614e87565b604082019050919050565b5f6020820190508181035f830152614f0e81614ed5565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614f6f603483613f84565b9150614f7a82614f15565b604082019050919050565b5f6020820190508181035f830152614f9c81614f63565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f7765725f8201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b5f614ffd602a83613f84565b915061500882614fa3565b604082019050919050565b5f6020820190508181035f83015261502a81614ff1565b9050919050565b7f5f646576656c6f7065724164647265737320616464726573732063616e6e6f745f8201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b5f61508b602583613f84565b915061509682615031565b604082019050919050565b5f6020820190508181035f8301526150b88161507f565b9050919050565b7f43616e6e6f7420726520656e61626c652074726164696e6700000000000000005f82015250565b5f6150f3601883613f84565b91506150fe826150bf565b602082019050919050565b5f6020820190508181035f830152615120816150e7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f615181602683613f84565b915061518c82615127565b604082019050919050565b5f6020820190508181035f8301526151ae81615175565b9050919050565b5f815190506151c38161408f565b92915050565b5f602082840312156151de576151dd614024565b5b5f6151eb848285016151b5565b91505092915050565b5f6040820190506152075f8301856142a0565b61521460208301846141c9565b9392505050565b5f81519050615229816142c8565b92915050565b5f6020828403121561524457615243614024565b5b5f6152518482850161521b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6152b4602483613f84565b91506152bf8261525a565b604082019050919050565b5f6020820190508181035f8301526152e1816152a8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f615342602283613f84565b915061534d826152e8565b604082019050919050565b5f6020820190508181035f83015261536f81615336565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6153d0602583613f84565b91506153db82615376565b604082019050919050565b5f6020820190508181035f8301526153fd816153c4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61545e602383613f84565b915061546982615404565b604082019050919050565b5f6020820190508181035f83015261548b81615452565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f6154c6601d83613f84565b91506154d182615492565b602082019050919050565b5f6020820190508181035f8301526154f3816154ba565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61552e601683613f84565b9150615539826154fa565b602082019050919050565b5f6020820190508181035f83015261555b81615522565b9050919050565b7f54726164696e6720697320656e61626c656400000000000000000000000000005f82015250565b5f615596601283613f84565b91506155a182615562565b602082019050919050565b5f6020820190508181035f8301526155c38161558a565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b5f615624602883613f84565b915061562f826155ca565b604082019050919050565b5f6020820190508181035f83015261565181615618565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c657400000000000000005f82015250565b5f61568c601883613f84565b915061569782615658565b602082019050919050565b5f6020820190508181035f8301526156b981615680565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b5f61571a602a83613f84565b9150615725826156c0565b604082019050919050565b5f6020820190508181035f8301526157478161570e565b9050919050565b5f81905092915050565b50565b5f6157665f8361574e565b915061577182615758565b5f82019050919050565b5f6157858261575b565b9150819050919050565b7f5472616e7366657220746f20446576656c6f706572206661696c65642e0000005f82015250565b5f6157c3601d83613f84565b91506157ce8261578f565b602082019050919050565b5f6020820190508181035f8301526157f0816157b7565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f615851602983613f84565b915061585c826157f7565b604082019050919050565b5f6020820190508181035f83015261587e81615845565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6158df602683613f84565b91506158ea82615885565b604082019050919050565b5f6020820190508181035f83015261590c816158d3565b9050919050565b5f6040820190506159265f8301856142a0565b6159336020830184614102565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506159758161405c565b92915050565b5f602082840312156159905761598f614024565b5b5f61599d84828501615967565b91505092915050565b5f819050919050565b5f6159c96159c46159bf846159a6565b614155565b614086565b9050919050565b6159d9816159af565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b615a118161404b565b82525050565b5f615a228383615a08565b60208301905092915050565b5f602082019050919050565b5f615a44826159df565b615a4e81856159e9565b9350615a59836159f9565b805f5b83811015615a89578151615a708882615a17565b9750615a7b83615a2e565b925050600181019050615a5c565b5085935050505092915050565b5f60a082019050615aa95f8301886141c9565b615ab660208301876159d0565b8181036040830152615ac88186615a3a565b9050615ad760608301856142a0565b615ae460808301846141c9565b9695505050505050565b5f60c082019050615b015f8301896142a0565b615b0e60208301886141c9565b615b1b60408301876159d0565b615b2860608301866159d0565b615b3560808301856142a0565b615b4260a08301846141c9565b979650505050505050565b5f805f60608486031215615b6457615b63614024565b5b5f615b71868287016151b5565b9350506020615b82868287016151b5565b9250506040615b93868287016151b5565b915050925092509256fea2646970667358221220905e187c90d52b754b5486e57544338f14e2d5cb3341db204ddd856ffc8f7a5a64736f6c63430008180033

Deployed Bytecode

0x60806040526004361061031d575f3560e01c80638da5cb5b116101aa578063c18bc195116100f6578063dd62ed3e11610094578063f275f64b1161006e578063f275f64b14610b94578063f2fde38b14610bbc578063f637434214610be4578063f9d0831a14610c0e57610324565b8063dd62ed3e14610b04578063e2f4560514610b40578063f11a24d314610b6a57610324565b8063d257b34f116100d0578063d257b34f14610a62578063d85ba06314610a8a578063dc3f0d0f14610ab4578063dcc345f214610adc57610324565b8063c18bc195146109e6578063cc2ffe7c14610a0e578063ceaa00b214610a3857610324565b8063a9059cbb11610163578063bb4c9f0b1161013d578063bb4c9f0b14610944578063bbc0c7421461096c578063c024666814610996578063c17b5b8c146109be57610324565b8063a9059cbb146108a2578063aa4bde28146108de578063b62496f51461090857610324565b80638da5cb5b1461079657806395d89b41146107c05780639a7a23d6146107ea5780639c3b4fdc14610812578063a0d82dc51461083c578063a457c2d71461086657610324565b80635c068a8c1161026957806370a08231116102225780637571336a116101fc5780637571336a146106f25780638095d5641461071a57806388e765ff1461074257806389a4c1a01461076c57610324565b806370a082311461068a578063715018a6146106c6578063751039fc146106dc57610324565b80635c068a8c146105905780636605bfda146105ba57806366d602ae146105e25780636a486a8e1461060c5780636b2fb124146106365780636ddd17131461066057610324565b806323b872dd116102d657806339509351116102b057806339509351146104d657806349bd5a5e146105125780634a62bb651461053c5780635b5c251f1461056657610324565b806323b872dd146104485780632be32b6114610484578063313ce567146104ac57610324565b806306fdde0314610328578063095ea7b31461035257806310d5de531461038e5780631694505e146103ca57806318160ddd146103f45780631a8145bb1461041e57610324565b3661032457005b5f80fd5b348015610333575f80fd5b5061033c610c36565b6040516103499190614004565b60405180910390f35b34801561035d575f80fd5b50610378600480360381019061037391906140b9565b610cc6565b6040516103859190614111565b60405180910390f35b348015610399575f80fd5b506103b460048036038101906103af919061412a565b610ce3565b6040516103c19190614111565b60405180910390f35b3480156103d5575f80fd5b506103de610d00565b6040516103eb91906141b0565b60405180910390f35b3480156103ff575f80fd5b50610408610d24565b60405161041591906141d8565b60405180910390f35b348015610429575f80fd5b50610432610d2d565b60405161043f91906141d8565b60405180910390f35b348015610453575f80fd5b5061046e600480360381019061046991906141f1565b610d33565b60405161047b9190614111565b60405180910390f35b34801561048f575f80fd5b506104aa60048036038101906104a59190614241565b610e2e565b005b3480156104b7575f80fd5b506104c0610f76565b6040516104cd9190614287565b60405180910390f35b3480156104e1575f80fd5b506104fc60048036038101906104f791906140b9565b610f7e565b6040516105099190614111565b60405180910390f35b34801561051d575f80fd5b50610526611025565b60405161053391906142af565b60405180910390f35b348015610547575f80fd5b50610550611049565b60405161055d9190614111565b60405180910390f35b348015610571575f80fd5b5061057a61105c565b60405161058791906142af565b60405180910390f35b34801561059b575f80fd5b506105a4611081565b6040516105b191906141d8565b60405180910390f35b3480156105c5575f80fd5b506105e060048036038101906105db919061412a565b611087565b005b3480156105ed575f80fd5b506105f66111f7565b60405161060391906141d8565b60405180910390f35b348015610617575f80fd5b506106206111fd565b60405161062d91906141d8565b60405180910390f35b348015610641575f80fd5b5061064a611203565b60405161065791906141d8565b60405180910390f35b34801561066b575f80fd5b50610674611209565b6040516106819190614111565b60405180910390f35b348015610695575f80fd5b506106b060048036038101906106ab919061412a565b61121c565b6040516106bd91906141d8565b60405180910390f35b3480156106d1575f80fd5b506106da611261565b005b3480156106e7575f80fd5b506106f061139a565b005b3480156106fd575f80fd5b50610718600480360381019061071391906142f2565b61145e565b005b348015610725575f80fd5b50610740600480360381019061073b9190614330565b6115c6565b005b34801561074d575f80fd5b506107566116c5565b60405161076391906141d8565b60405180910390f35b348015610777575f80fd5b506107806116cb565b60405161078d91906142af565b60405180910390f35b3480156107a1575f80fd5b506107aa6116f0565b6040516107b791906142af565b60405180910390f35b3480156107cb575f80fd5b506107d4611718565b6040516107e19190614004565b60405180910390f35b3480156107f5575f80fd5b50610810600480360381019061080b91906142f2565b6117a8565b005b34801561081d575f80fd5b506108266118c0565b60405161083391906141d8565b60405180910390f35b348015610847575f80fd5b506108506118c6565b60405161085d91906141d8565b60405180910390f35b348015610871575f80fd5b5061088c600480360381019061088791906140b9565b6118cc565b6040516108999190614111565b60405180910390f35b3480156108ad575f80fd5b506108c860048036038101906108c391906140b9565b6119bb565b6040516108d59190614111565b60405180910390f35b3480156108e9575f80fd5b506108f26119d8565b6040516108ff91906141d8565b60405180910390f35b348015610913575f80fd5b5061092e6004803603810190610929919061412a565b6119de565b60405161093b9190614111565b60405180910390f35b34801561094f575f80fd5b5061096a60048036038101906109659190614436565b6119fb565b005b348015610977575f80fd5b50610980611c3d565b60405161098d9190614111565b60405180910390f35b3480156109a1575f80fd5b506109bc60048036038101906109b791906142f2565b611c50565b005b3480156109c9575f80fd5b506109e460048036038101906109df9190614330565b611d72565b005b3480156109f1575f80fd5b50610a0c6004803603810190610a079190614241565b611e6f565b005b348015610a19575f80fd5b50610a22611fb7565b604051610a2f91906141d8565b60405180910390f35b348015610a43575f80fd5b50610a4c611fbd565b604051610a5991906141d8565b60405180910390f35b348015610a6d575f80fd5b50610a886004803603810190610a839190614241565b611fc3565b005b348015610a95575f80fd5b50610a9e612110565b604051610aab91906141d8565b60405180910390f35b348015610abf575f80fd5b50610ada6004803603810190610ad59190614241565b612116565b005b348015610ae7575f80fd5b50610b026004803603810190610afd919061412a565b61225e565b005b348015610b0f575f80fd5b50610b2a6004803603810190610b2591906144b4565b6123ce565b604051610b3791906141d8565b60405180910390f35b348015610b4b575f80fd5b50610b54612450565b604051610b6191906141d8565b60405180910390f35b348015610b75575f80fd5b50610b7e612456565b604051610b8b91906141d8565b60405180910390f35b348015610b9f575f80fd5b50610bba6004803603810190610bb591906144f2565b61245c565b005b348015610bc7575f80fd5b50610be26004803603810190610bdd919061412a565b6125a6565b005b348015610bef575f80fd5b50610bf861274e565b604051610c0591906141d8565b60405180910390f35b348015610c19575f80fd5b50610c346004803603810190610c2f919061412a565b612754565b005b606060038054610c459061454a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c719061454a565b8015610cbc5780601f10610c9357610100808354040283529160200191610cbc565b820191905f5260205f20905b815481529060010190602001808311610c9f57829003601f168201915b5050505050905090565b5f610cd9610cd261295b565b8484612962565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000006bded42c6da8fbf0d2ba55b2fa120c5e0c8d789181565b5f600254905090565b60165481565b5f610d3f848484612b25565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d8661295b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfc906145ea565b60405180910390fd5b610e2285610e1161295b565b8584610e1d9190614635565b612962565b60019150509392505050565b610e3661295b565b73ffffffffffffffffffffffffffffffffffffffff16610e546116f0565b73ffffffffffffffffffffffffffffffffffffffff1614610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea1906146b2565b60405180910390fd5b670de0b6b3a76400006103e86001610ec0610d24565b610eca91906146d0565b610ed4919061473e565b610ede919061473e565b811015610f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f17906147de565b60405180910390fd5b670de0b6b3a764000081610f3491906146d0565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610f6b91906141d8565b60405180910390a150565b5f6012905090565b5f61101b610f8a61295b565b848460015f610f9761295b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461101691906147fc565b612962565b6001905092915050565b7f0000000000000000000000008e93c90503391427bff2a945b990c2192c0de6cf81565b600c60149054906101000a900460ff1681565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b61108f61295b565b73ffffffffffffffffffffffffffffffffffffffff166110ad6116f0565b73ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa906146b2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611171576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111689061489f565b60405180910390fd5b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b60075481565b60115481565b60125481565b600c60169054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61126961295b565b73ffffffffffffffffffffffffffffffffffffffff166112876116f0565b73ffffffffffffffffffffffffffffffffffffffff16146112dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d4906146b2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6113a261295b565b73ffffffffffffffffffffffffffffffffffffffff166113c06116f0565b73ffffffffffffffffffffffffffffffffffffffff1614611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140d906146b2565b60405180910390fd5b5f600c60146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b61146661295b565b73ffffffffffffffffffffffffffffffffffffffff166114846116f0565b73ffffffffffffffffffffffffffffffffffffffff16146114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d1906146b2565b60405180910390fd5b8061156e577f0000000000000000000000008e93c90503391427bff2a945b990c2192c0de6cf73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361156d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115649061492d565b60405180910390fd5b5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6115ce61295b565b73ffffffffffffffffffffffffffffffffffffffff166115ec6116f0565b73ffffffffffffffffffffffffffffffffffffffff1614611642576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611639906146b2565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e5461166a91906147fc565b61167491906147fc565b600d81905550600a600d5411156116c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b790614995565b60405180910390fd5b505050565b60065481565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546117279061454a565b80601f01602080910402602001604051908101604052809291908181526020018280546117539061454a565b801561179e5780601f106117755761010080835404028352916020019161179e565b820191905f5260205f20905b81548152906001019060200180831161178157829003601f168201915b5050505050905090565b6117b061295b565b73ffffffffffffffffffffffffffffffffffffffff166117ce6116f0565b73ffffffffffffffffffffffffffffffffffffffff1614611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b906146b2565b60405180910390fd5b7f0000000000000000000000008e93c90503391427bff2a945b990c2192c0de6cf73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a990614a23565b60405180910390fd5b6118bc8282613663565b5050565b60105481565b60145481565b5f8060015f6118d961295b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198a90614ab1565b60405180910390fd5b6119b061199e61295b565b8585846119ab9190614635565b612962565b600191505092915050565b5f6119ce6119c761295b565b8484612b25565b6001905092915050565b60085481565b601a602052805f5260405f205f915054906101000a900460ff1681565b611a0361295b565b73ffffffffffffffffffffffffffffffffffffffff16611a216116f0565b73ffffffffffffffffffffffffffffffffffffffff1614611a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6e906146b2565b60405180910390fd5b6103218484905010611abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab590614b3f565b60405180910390fd5b818190508484905014611b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afd90614bcd565b60405180910390fd5b5f805b85859050811015611b6657611b1c610f76565b600a611b289190614d1a565b848483818110611b3b57611b3a614d64565b5b90506020020135611b4c91906146d0565b82611b5791906147fc565b91508080600101915050611b09565b5080611b713361121c565b1015611bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba990614ddb565b60405180910390fd5b5f5b85859050811015611c3557611c2833878784818110611bd657611bd5614d64565b5b9050602002016020810190611beb919061412a565b611bf3610f76565b600a611bff9190614d1a565b878786818110611c1257611c11614d64565b5b90506020020135611c2391906146d0565b612b25565b8080600101915050611bb4565b505050505050565b600c60159054906101000a900460ff1681565b611c5861295b565b73ffffffffffffffffffffffffffffffffffffffff16611c766116f0565b73ffffffffffffffffffffffffffffffffffffffff1614611ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc3906146b2565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d669190614111565b60405180910390a25050565b611d7a61295b565b73ffffffffffffffffffffffffffffffffffffffff16611d986116f0565b73ffffffffffffffffffffffffffffffffffffffff1614611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de5906146b2565b60405180910390fd5b82601281905550816013819055508060148190555080601354601254611e1491906147fc565b611e1e91906147fc565b601181905550600a6011541115611e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6190614995565b60405180910390fd5b505050565b611e7761295b565b73ffffffffffffffffffffffffffffffffffffffff16611e956116f0565b73ffffffffffffffffffffffffffffffffffffffff1614611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee2906146b2565b60405180910390fd5b670de0b6b3a76400006103e86003611f01610d24565b611f0b91906146d0565b611f15919061473e565b611f1f919061473e565b811015611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5890614e69565b60405180910390fd5b670de0b6b3a764000081611f7591906146d0565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc600854604051611fac91906141d8565b60405180910390a150565b60155481565b60175481565b611fcb61295b565b73ffffffffffffffffffffffffffffffffffffffff16611fe96116f0565b73ffffffffffffffffffffffffffffffffffffffff161461203f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612036906146b2565b60405180910390fd5b620186a0600161204d610d24565b61205791906146d0565b612061919061473e565b8110156120a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209a90614ef7565b60405180910390fd5b6103e860016120b0610d24565b6120ba91906146d0565b6120c4919061473e565b811115612106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fd90614f85565b60405180910390fd5b80600a8190555050565b600d5481565b61211e61295b565b73ffffffffffffffffffffffffffffffffffffffff1661213c6116f0565b73ffffffffffffffffffffffffffffffffffffffff1614612192576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612189906146b2565b60405180910390fd5b670de0b6b3a76400006103e860016121a8610d24565b6121b291906146d0565b6121bc919061473e565b6121c6919061473e565b811015612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff90615013565b60405180910390fd5b670de0b6b3a76400008161221c91906146d0565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e60075460405161225391906141d8565b60405180910390a150565b61226661295b565b73ffffffffffffffffffffffffffffffffffffffff166122846116f0565b73ffffffffffffffffffffffffffffffffffffffff16146122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d1906146b2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233f906150a1565b60405180910390fd5b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fd93a8f1067efdf092de266b926f6938622f6eb4a1d6837e71689f5631f85703760405160405180910390a250565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b600f5481565b61246461295b565b73ffffffffffffffffffffffffffffffffffffffff166124826116f0565b73ffffffffffffffffffffffffffffffffffffffff16146124d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cf906146b2565b60405180910390fd5b600c60159054906101000a900460ff1615612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251f90615109565b60405180910390fd5b80600c60156101000a81548160ff0219169083151502179055506001600c60166101000a81548160ff0219169083151502179055507fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe52089600c60159054906101000a900460ff1660405161259b9190614111565b60405180910390a150565b6125ae61295b565b73ffffffffffffffffffffffffffffffffffffffff166125cc6116f0565b73ffffffffffffffffffffffffffffffffffffffff1614612622576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612619906146b2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268790615197565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b61275c61295b565b73ffffffffffffffffffffffffffffffffffffffff1661277a6116f0565b73ffffffffffffffffffffffffffffffffffffffff16146127d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c7906146b2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128535761280b6116f0565b73ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561284d573d5f803e3d5ffd5b50612958565b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161289191906142af565b602060405180830381865afa1580156128ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128d091906151c9565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6128f66116f0565b836040518363ffffffff1660e01b81526004016129149291906151f4565b6020604051808303815f875af1158015612930573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612954919061522f565b5050505b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c7906152ca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3590615358565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b1891906141d8565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8a906153e6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf890615474565b60405180910390fd5b5f8111612c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3a906154dc565b60405180910390fd5b600c60149054906101000a900460ff16156131d957612c606116f0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612cce5750612c9e6116f0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d0657505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d40575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156131d857600c60159054906101000a900460ff16612ea95760195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612df4575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2a90615544565b60405180910390fd5b612e3b6116f0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9f906155ac565b60405180910390fd5b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f46575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612fed57600654811115612f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f879061563a565b60405180910390fd5b600854612f9c8361121c565b82612fa791906147fc565b1115612fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fdf906156a2565b60405180910390fd5b6131d7565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561308a575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156130d9576007548111156130d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130cb90615730565b60405180910390fd5b6131d6565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613177575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156131d5576008546131888361121c565b8261319391906147fc565b11156131d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131cb906156a2565b60405180910390fd5b5b5b5b5b5b5f6131e33061121c565b90505f600a5482101590508080156132075750600c60169054906101000a900460ff165b801561321f575060095f9054906101000a900460ff16155b80156132725750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156132c5575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613318575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561335957600160095f6101000a81548160ff02191690831515021790555061333f61370b565b5f60095f6101000a81548160ff0219169083151502179055505b5f6001905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806133f9575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613402575f90505b5f811561364f57601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561346057505f601154115b1561351c5760646011548661347591906146d0565b61347f919061473e565b90506011546013548261349291906146d0565b61349c919061473e565b60165f8282546134ac91906147fc565b92505081905550601154601254826134c491906146d0565b6134ce919061473e565b60155f8282546134de91906147fc565b92505081905550601154601454826134f691906146d0565b613500919061473e565b60175f82825461351091906147fc565b9250508190555061362c565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561357357505f600d54115b1561362b576064600d548661358891906146d0565b613592919061473e565b9050600d54600f54826135a591906146d0565b6135af919061473e565b60165f8282546135bf91906147fc565b92505081905550600d54600e54826135d791906146d0565b6135e1919061473e565b60155f8282546135f191906147fc565b92505081905550600d546010548261360991906146d0565b613613919061473e565b60175f82825461362391906147fc565b925050819055505b5b5f8111156136405761363f87308361392e565b5b808561364c9190614635565b94505b61365a87878761392e565b50505050505050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506136c18282613bd8565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f6137153061121c565b90505f60175460165461372891906147fc565b90505f82148061373757505f81145b1561374357505061392c565b600a805461375191906146d0565b82111561376957600a805461376691906146d0565b91505b5f6015548261377891906147fc565b828461378491906146d0565b61378e919061473e565b90505f60026016546137a0919061473e565b90506137b681836137b19190614635565b613c69565b5f4790505f84601754836137ca91906146d0565b6137d4919061473e565b90505f81836137e39190614635565b90505f6016819055505f6017819055505f8411801561380157505f81115b15613811576138108482613e9c565b5b5f8211156138e4575f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161385f9061577b565b5f6040518083038185875af1925050503d805f8114613899576040519150601f19603f3d011682016040523d82523d5f602084013e61389e565b606091505b50509050806138e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138d9906157d9565b60405180910390fd5b505b5f60155411156139245761391c30600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601554612b25565b5f6015819055505b505050505050505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361399c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613993906153e6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a0190615474565b60405180910390fd5b5f8111613a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a4390615867565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ac6906158f5565b60405180910390fd5b8181613adb9190614635565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613b6691906147fc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613bca91906141d8565b60405180910390a350505050565b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613c5d929190615913565b60405180910390a15050565b5f600267ffffffffffffffff811115613c8557613c8461593a565b5b604051908082528060200260200182016040528015613cb35781602001602082028036833780820191505090505b50905030815f81518110613cca57613cc9614d64565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000006bded42c6da8fbf0d2ba55b2fa120c5e0c8d789173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d91919061597b565b81600181518110613da557613da4614d64565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e0a307f0000000000000000000000006bded42c6da8fbf0d2ba55b2fa120c5e0c8d789184612962565b7f0000000000000000000000006bded42c6da8fbf0d2ba55b2fa120c5e0c8d789173ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613e6b959493929190615a96565b5f604051808303815f87803b158015613e82575f80fd5b505af1158015613e94573d5f803e3d5ffd5b505050505050565b613ec7307f0000000000000000000000006bded42c6da8fbf0d2ba55b2fa120c5e0c8d789184612962565b7f0000000000000000000000006bded42c6da8fbf0d2ba55b2fa120c5e0c8d789173ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80613f106116f0565b426040518863ffffffff1660e01b8152600401613f3296959493929190615aee565b60606040518083038185885af1158015613f4e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613f739190615b4d565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613fb1578082015181840152602081019050613f96565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613fd682613f7a565b613fe08185613f84565b9350613ff0818560208601613f94565b613ff981613fbc565b840191505092915050565b5f6020820190508181035f83015261401c8184613fcc565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6140558261402c565b9050919050565b6140658161404b565b811461406f575f80fd5b50565b5f813590506140808161405c565b92915050565b5f819050919050565b61409881614086565b81146140a2575f80fd5b50565b5f813590506140b38161408f565b92915050565b5f80604083850312156140cf576140ce614024565b5b5f6140dc85828601614072565b92505060206140ed858286016140a5565b9150509250929050565b5f8115159050919050565b61410b816140f7565b82525050565b5f6020820190506141245f830184614102565b92915050565b5f6020828403121561413f5761413e614024565b5b5f61414c84828501614072565b91505092915050565b5f819050919050565b5f61417861417361416e8461402c565b614155565b61402c565b9050919050565b5f6141898261415e565b9050919050565b5f61419a8261417f565b9050919050565b6141aa81614190565b82525050565b5f6020820190506141c35f8301846141a1565b92915050565b6141d281614086565b82525050565b5f6020820190506141eb5f8301846141c9565b92915050565b5f805f6060848603121561420857614207614024565b5b5f61421586828701614072565b935050602061422686828701614072565b9250506040614237868287016140a5565b9150509250925092565b5f6020828403121561425657614255614024565b5b5f614263848285016140a5565b91505092915050565b5f60ff82169050919050565b6142818161426c565b82525050565b5f60208201905061429a5f830184614278565b92915050565b6142a98161404b565b82525050565b5f6020820190506142c25f8301846142a0565b92915050565b6142d1816140f7565b81146142db575f80fd5b50565b5f813590506142ec816142c8565b92915050565b5f806040838503121561430857614307614024565b5b5f61431585828601614072565b9250506020614326858286016142de565b9150509250929050565b5f805f6060848603121561434757614346614024565b5b5f614354868287016140a5565b9350506020614365868287016140a5565b9250506040614376868287016140a5565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126143a1576143a0614380565b5b8235905067ffffffffffffffff8111156143be576143bd614384565b5b6020830191508360208202830111156143da576143d9614388565b5b9250929050565b5f8083601f8401126143f6576143f5614380565b5b8235905067ffffffffffffffff81111561441357614412614384565b5b60208301915083602082028301111561442f5761442e614388565b5b9250929050565b5f805f806040858703121561444e5761444d614024565b5b5f85013567ffffffffffffffff81111561446b5761446a614028565b5b6144778782880161438c565b9450945050602085013567ffffffffffffffff81111561449a57614499614028565b5b6144a6878288016143e1565b925092505092959194509250565b5f80604083850312156144ca576144c9614024565b5b5f6144d785828601614072565b92505060206144e885828601614072565b9150509250929050565b5f6020828403121561450757614506614024565b5b5f614514848285016142de565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061456157607f821691505b6020821081036145745761457361451d565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6145d4602883613f84565b91506145df8261457a565b604082019050919050565b5f6020820190508181035f830152614601816145c8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61463f82614086565b915061464a83614086565b925082820390508181111561466257614661614608565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61469c602083613f84565b91506146a782614668565b602082019050919050565b5f6020820190508181035f8301526146c981614690565b9050919050565b5f6146da82614086565b91506146e583614086565b92508282026146f381614086565b9150828204841483151761470a57614709614608565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61474882614086565b915061475383614086565b92508261476357614762614711565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572205f8201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b5f6147c8602983613f84565b91506147d38261476e565b604082019050919050565b5f6020820190508181035f8301526147f5816147bc565b9050919050565b5f61480682614086565b915061481183614086565b925082820190508082111561482957614828614608565b5b92915050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f74205f8201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b5f614889602483613f84565b91506148948261482f565b604082019050919050565b5f6020820190508181035f8301526148b68161487d565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d205f8201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b5f614917602783613f84565b9150614922826148bd565b604082019050919050565b5f6020820190508181035f8301526149448161490b565b9050919050565b7f4d757374206b656570206665657320617420313025206f72206c6573730000005f82015250565b5f61497f601d83613f84565b915061498a8261494b565b602082019050919050565b5f6020820190508181035f8301526149ac81614973565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614a0d603983613f84565b9150614a18826149b3565b604082019050919050565b5f6020820190508181035f830152614a3a81614a01565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614a9b602583613f84565b9150614aa682614a41565b604082019050919050565b5f6020820190508181035f830152614ac881614a8f565b9050919050565b7f474153204572726f723a206d61782061697264726f70206c696d6974206973205f8201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b5f614b29602d83613f84565b9150614b3482614acf565b604082019050919050565b5f6020820190508181035f830152614b5681614b1d565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b5f8201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b5f614bb7602883613f84565b9150614bc282614b5d565b604082019050919050565b5f6020820190508181035f830152614be481614bab565b9050919050565b5f8160011c9050919050565b5f808291508390505b6001851115614c4057808604811115614c1c57614c1b614608565b5b6001851615614c2b5780820291505b8081029050614c3985614beb565b9450614c00565b94509492505050565b5f82614c585760019050614d13565b81614c65575f9050614d13565b8160018114614c7b5760028114614c8557614cb4565b6001915050614d13565b60ff841115614c9757614c96614608565b5b8360020a915084821115614cae57614cad614608565b5b50614d13565b5060208310610133831016604e8410600b8410161715614ce95782820a905083811115614ce457614ce3614608565b5b614d13565b614cf68484846001614bf7565b92509050818404811115614d0d57614d0c614608565b5b81810290505b9392505050565b5f614d2482614086565b9150614d2f8361426c565b9250614d5c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614c49565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000005f82015250565b5f614dc5601b83613f84565b9150614dd082614d91565b602082019050919050565b5f6020820190508181035f830152614df281614db9565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f775f8201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b5f614e53602c83613f84565b9150614e5e82614df9565b604082019050919050565b5f6020820190508181035f830152614e8081614e47565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614ee1603583613f84565b9150614eec82614e87565b604082019050919050565b5f6020820190508181035f830152614f0e81614ed5565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614f6f603483613f84565b9150614f7a82614f15565b604082019050919050565b5f6020820190508181035f830152614f9c81614f63565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f7765725f8201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b5f614ffd602a83613f84565b915061500882614fa3565b604082019050919050565b5f6020820190508181035f83015261502a81614ff1565b9050919050565b7f5f646576656c6f7065724164647265737320616464726573732063616e6e6f745f8201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b5f61508b602583613f84565b915061509682615031565b604082019050919050565b5f6020820190508181035f8301526150b88161507f565b9050919050565b7f43616e6e6f7420726520656e61626c652074726164696e6700000000000000005f82015250565b5f6150f3601883613f84565b91506150fe826150bf565b602082019050919050565b5f6020820190508181035f830152615120816150e7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f615181602683613f84565b915061518c82615127565b604082019050919050565b5f6020820190508181035f8301526151ae81615175565b9050919050565b5f815190506151c38161408f565b92915050565b5f602082840312156151de576151dd614024565b5b5f6151eb848285016151b5565b91505092915050565b5f6040820190506152075f8301856142a0565b61521460208301846141c9565b9392505050565b5f81519050615229816142c8565b92915050565b5f6020828403121561524457615243614024565b5b5f6152518482850161521b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6152b4602483613f84565b91506152bf8261525a565b604082019050919050565b5f6020820190508181035f8301526152e1816152a8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f615342602283613f84565b915061534d826152e8565b604082019050919050565b5f6020820190508181035f83015261536f81615336565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6153d0602583613f84565b91506153db82615376565b604082019050919050565b5f6020820190508181035f8301526153fd816153c4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61545e602383613f84565b915061546982615404565b604082019050919050565b5f6020820190508181035f83015261548b81615452565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f6154c6601d83613f84565b91506154d182615492565b602082019050919050565b5f6020820190508181035f8301526154f3816154ba565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61552e601683613f84565b9150615539826154fa565b602082019050919050565b5f6020820190508181035f83015261555b81615522565b9050919050565b7f54726164696e6720697320656e61626c656400000000000000000000000000005f82015250565b5f615596601283613f84565b91506155a182615562565b602082019050919050565b5f6020820190508181035f8301526155c38161558a565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b5f615624602883613f84565b915061562f826155ca565b604082019050919050565b5f6020820190508181035f83015261565181615618565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c657400000000000000005f82015250565b5f61568c601883613f84565b915061569782615658565b602082019050919050565b5f6020820190508181035f8301526156b981615680565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b5f61571a602a83613f84565b9150615725826156c0565b604082019050919050565b5f6020820190508181035f8301526157478161570e565b9050919050565b5f81905092915050565b50565b5f6157665f8361574e565b915061577182615758565b5f82019050919050565b5f6157858261575b565b9150819050919050565b7f5472616e7366657220746f20446576656c6f706572206661696c65642e0000005f82015250565b5f6157c3601d83613f84565b91506157ce8261578f565b602082019050919050565b5f6020820190508181035f8301526157f0816157b7565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f615851602983613f84565b915061585c826157f7565b604082019050919050565b5f6020820190508181035f83015261587e81615845565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6158df602683613f84565b91506158ea82615885565b604082019050919050565b5f6020820190508181035f83015261590c816158d3565b9050919050565b5f6040820190506159265f8301856142a0565b6159336020830184614102565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506159758161405c565b92915050565b5f602082840312156159905761598f614024565b5b5f61599d84828501615967565b91505092915050565b5f819050919050565b5f6159c96159c46159bf846159a6565b614155565b614086565b9050919050565b6159d9816159af565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b615a118161404b565b82525050565b5f615a228383615a08565b60208301905092915050565b5f602082019050919050565b5f615a44826159df565b615a4e81856159e9565b9350615a59836159f9565b805f5b83811015615a89578151615a708882615a17565b9750615a7b83615a2e565b925050600181019050615a5c565b5085935050505092915050565b5f60a082019050615aa95f8301886141c9565b615ab660208301876159d0565b8181036040830152615ac88186615a3a565b9050615ad760608301856142a0565b615ae460808301846141c9565b9695505050505050565b5f60c082019050615b015f8301896142a0565b615b0e60208301886141c9565b615b1b60408301876159d0565b615b2860608301866159d0565b615b3560808301856142a0565b615b4260a08301846141c9565b979650505050505050565b5f805f60608486031215615b6457615b63614024565b5b5f615b71868287016151b5565b9350506020615b82868287016151b5565b9250506040615b93868287016151b5565b915050925092509256fea2646970667358221220905e187c90d52b754b5486e57544338f14e2d5cb3341db204ddd856ffc8f7a5a64736f6c63430008180033

Deployed Bytecode Sourcemap

6999:16225:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2430:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3344:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7975:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7153:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2751:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7834:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3521:452;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11612:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2650:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3981:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7203:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7391:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7320:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7545:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20401:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7079:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7651;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7686:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7471:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2867:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6460:148;;;;;;;;;;;;;:::i;:::-;;12223:115;;;;;;;;;;;;;:::i;:::-;;12561:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13554:365;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7045:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7357:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6245:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2538:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18369:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7618:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7761:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4204:375;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3002:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7114:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8047:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19689:704;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7431:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14306:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13927:371;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12838:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7795:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7874:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13196:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7511:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11893:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20690:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3185:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7278:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7581:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18917:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6616:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7723:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22861:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2430:100;2484:13;2517:5;2510:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2430:100;:::o;3344:169::-;3427:4;3444:39;3453:12;:10;:12::i;:::-;3467:7;3476:6;3444:8;:39::i;:::-;3501:4;3494:11;;3344:169;;;;:::o;7975:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;7153:43::-;;;:::o;2751:108::-;2812:7;2839:12;;2832:19;;2751:108;:::o;7834:33::-;;;;:::o;3521:452::-;3661:4;3678:36;3688:6;3696:9;3707:6;3678:9;:36::i;:::-;3725:24;3752:11;:19;3764:6;3752:19;;;;;;;;;;;;;;;:33;3772:12;:10;:12::i;:::-;3752:33;;;;;;;;;;;;;;;;3725:60;;3824:6;3804:16;:26;;3796:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3886:57;3895:6;3903:12;:10;:12::i;:::-;3936:6;3917:16;:25;;;;:::i;:::-;3886:8;:57::i;:::-;3961:4;3954:11;;;3521:452;;;;;:::o;11612:273::-;6383:12;:10;:12::i;:::-;6372:23;;:7;:5;:7::i;:::-;:23;;;6364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11733:4:::1;11725;11721:1;11705:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11704:33;;;;:::i;:::-;11694:6;:43;;11686:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;11819:8;11809:6;:19;;;;:::i;:::-;11794:12;:34;;;;11844:33;11864:12;;11844:33;;;;;;:::i;:::-;;;;;;;;11612:273:::0;:::o;2650:93::-;2708:5;2733:2;2726:9;;2650:93;:::o;3981:215::-;4069:4;4086:80;4095:12;:10;:12::i;:::-;4109:7;4155:10;4118:11;:25;4130:12;:10;:12::i;:::-;4118:25;;;;;;;;;;;;;;;:34;4144:7;4118:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4086:8;:80::i;:::-;4184:4;4177:11;;3981:215;;;;:::o;7203:38::-;;;:::o;7391:33::-;;;;;;;;;;;;;:::o;7320:30::-;;;;;;;;;;;;;:::o;7545:29::-;;;;:::o;20401:281::-;6383:12;:10;:12::i;:::-;6372:23;;:7;:5;:7::i;:::-;:23;;;6364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20521:1:::1;20493:30;;:16;:30;;::::0;20485:79:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20601:16;20575:15;;:43;;;;;;;;;;;;;;;;;;20657:16;20634:40;;;;;;;;;;;;20401:281:::0;:::o;7079:28::-;;;;:::o;7651:::-;;;;:::o;7686:30::-;;;;:::o;7471:31::-;;;;;;;;;;;;;:::o;2867:127::-;2941:7;2968:9;:18;2978:7;2968:18;;;;;;;;;;;;;;;;2961:25;;2867:127;;;:::o;6460:148::-;6383:12;:10;:12::i;:::-;6372:23;;:7;:5;:7::i;:::-;:23;;;6364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6567:1:::1;6530:40;;6551:6;;;;;;;;;;;6530:40;;;;;;;;;;;;6598:1;6581:6;;:19;;;;;;;;;;;;;;;;;;6460:148::o:0;12223:115::-;6383:12;:10;:12::i;:::-;6372:23;;:7;:5;:7::i;:::-;:23;;;6364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12294:5:::1;12277:14;;:22;;;;;;;;;;;;;;;;;;12315:15;;;;;;;;;;12223:115::o:0;12561:269::-;6383:12;:10;:12::i;:::-;6372:23;;:7;:5;:7::i;:::-;:23;;;6364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12658:4:::1;12653:113;;12697:13;12687:23;;:6;:23;;::::0;12679:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12653:113;12818:4;12776:31;:39;12808:6;12776:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12561:269:::0;;:::o;13554:365::-;6383:12;:10;:12::i;:::-;6372:23;;:7;:5;:7::i;:::-;:23;;;6364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13686:12:::1;13669:14;:29;;;;13727:13;13709:15;:31;;;;13763:7;13751:9;:19;;;;13831:9;;13813:15;;13796:14;;:32;;;;:::i;:::-;:44;;;;:::i;:::-;13781:12;:59;;;;13875:2;13859:12;;:18;;13851:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13554:365:::0;;;:::o;7045:27::-;;;;:::o;7357:25::-;;;;;;;;;;;;;:::o;6245:79::-;6283:7;6310:6;;;;;;;;;;;6303:13;;6245:79;:::o;2538:104::-;2594:13;2627:7;2620:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:104;:::o;18369:246::-;6383:12;:10;:12::i;:::-;6372:23;;:7;:5;:7::i;:::-;:23;;;6364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18478:13:::1;18470:21;;:4;:21;;::::0;18462:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18566:41;18595:4;18601:5;18566:28;:41::i;:::-;18369:246:::0;;:::o;7618:24::-;;;;:::o;7761:25::-;;;;:::o;4204:375::-;4297:4;4314:24;4341:11;:25;4353:12;:10;:12::i;:::-;4341:25;;;;;;;;;;;;;;;:34;4367:7;4341:34;;;;;;;;;;;;;;;;4314:61;;4414:15;4394:16;:35;;4386:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4482:67;4491:12;:10;:12::i;:::-;4505:7;4533:15;4514:16;:34;;;;:::i;:::-;4482:8;:67::i;:::-;4567:4;4560:11;;;4204:375;;;;:::o;3002:175::-;3088:4;3105:42;3115:12;:10;:12::i;:::-;3129:9;3140:6;3105:9;:42::i;:::-;3165:4;3158:11;;3002:175;;;;:::o;7114:30::-;;;;:::o;8047:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;19689:704::-;6383:12;:10;:12::i;:::-;6372:23;;:7;:5;:7::i;:::-;:23;;;6364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19824:3:::1;19805:9;;:16;;:22;19797:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;19939:6;;:13;;19919:9;;:16;;:33;19911:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;20010:12;20044:6:::0;20039:115:::1;20060:9;;:16;;20056:1;:20;20039:115;;;20131:10;:8;:10::i;:::-;20125:2;:16;;;;:::i;:::-;20113:6;;20120:1;20113:9;;;;;;;:::i;:::-;;;;;;;;:28;;;;:::i;:::-;20105:4;:37;;;;:::i;:::-;20098:44;;20078:3;;;;;;;20039:115;;;;20199:4;20174:21;20184:10;20174:9;:21::i;:::-;:29;;20166:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;20253:6;20248:138;20269:9;;:16;;20265:1;:20;20248:138;;;20307:67;20317:10;20329:9;;20339:1;20329:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20362:10;:8;:10::i;:::-;20356:2;:16;;;;:::i;:::-;20344:6;;20351:1;20344:9;;;;;;;:::i;:::-;;;;;;;;:28;;;;:::i;:::-;20307:9;:67::i;:::-;20287:3;;;;;;;20248:138;;;;19784:609;19689:704:::0;;;;:::o;7431:33::-;;;;;;;;;;;;;:::o;14306:182::-;6383:12;:10;:12::i;:::-;6372:23;;:7;:5;:7::i;:::-;:23;;;6364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14422:8:::1;14391:19;:28;14411:7;14391:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14462:7;14446:34;;;14471:8;14446:34;;;;;;:::i;:::-;;;;;;;;14306:182:::0;;:::o;13927:371::-;6383:12;:10;:12::i;:::-;6372:23;;:7;:5;:7::i;:::-;:23;;;6364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14061:12:::1;14043:15;:30;;;;14103:13;14084:16;:32;;;;14140:7;14127:10;:20;;;;14211:7;14192:16;;14174:15;;:34;;;;:::i;:::-;:44;;;;:::i;:::-;14158:13;:60;;;;14254:2;14237:13;;:19;;14229:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13927:371:::0;;;:::o;12838:288::-;6383:12;:10;:12::i;:::-;6372:23;;:7;:5;:7::i;:::-;:23;;;6364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12962:4:::1;12954;12950:1;12934:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;12933:33;;;;:::i;:::-;12923:6;:43;;12915:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;13054:8;13044:6;:19;;;;:::i;:::-;13026:15;:37;;;;13079:39;13102:15;;13079:39;;;;;;:::i;:::-;;;;;;;;12838:288:::0;:::o;7795:32::-;;;;:::o;7874:33::-;;;;:::o;13196:350::-;6383:12;:10;:12::i;:::-;6372:23;;:7;:5;:7::i;:::-;:23;;;6364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13320:6:::1;13316:1;13300:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;13287:9;:39;;13279:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;13436:4;13432:1;13416:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;13403:9;:37;;13395:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;13529:9;13508:18;:30;;;;13196:350:::0;:::o;7511:27::-;;;;:::o;11893:278::-;6383:12;:10;:12::i;:::-;6372:23;;:7;:5;:7::i;:::-;:23;;;6364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12015:4:::1;12007;12003:1;11987:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11986:33;;;;:::i;:::-;11976:6;:43;;11968:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;12103:8;12093:6;:19;;;;:::i;:::-;12077:13;:35;;;;12128;12149:13;;12128:35;;;;;;:::i;:::-;;;;;;;;11893:278:::0;:::o;20690:288::-;6383:12;:10;:12::i;:::-;6372:23;;:7;:5;:7::i;:::-;:23;;;6364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20813:1:::1;20784:31;;:17;:31;;::::0;20776:81:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20894:17;20868:15;;:44;;;;;;;;;;;;;;;;;;20952:17;20928:42;;;;;;;;;;;;20690:288:::0;:::o;3185:151::-;3274:7;3301:11;:18;3313:5;3301:18;;;;;;;;;;;;;;;:27;3320:7;3301:27;;;;;;;;;;;;;;;;3294:34;;3185:151;;;;:::o;7278:33::-;;;;:::o;7581:30::-;;;;:::o;18917:234::-;6383:12;:10;:12::i;:::-;6372:23;;:7;:5;:7::i;:::-;:23;;;6364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18993:13:::1;;;;;;;;;;;18992:14;18984:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;19062:7;19046:13;;:23;;;;;;;;;;;;;;;;;;19094:4;19080:11;;:18;;;;;;;;;;;;;;;;;;19114:29;19129:13;;;;;;;;;;;19114:29;;;;;;:::i;:::-;;;;;;;;18917:234:::0;:::o;6616:244::-;6383:12;:10;:12::i;:::-;6372:23;;:7;:5;:7::i;:::-;:23;;;6364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6725:1:::1;6705:22;;:8;:22;;::::0;6697:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6815:8;6786:38;;6807:6;;;;;;;;;;;6786:38;;;;;;;;;;;;6844:8;6835:6;;:17;;;;;;;;;;;;;;;;;;6616:244:::0;:::o;7723:31::-;;;;:::o;22861:360::-;6383:12;:10;:12::i;:::-;6372:23;;:7;:5;:7::i;:::-;:23;;;6364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22955:3:::1;22937:22;;:6;:22;;::::0;22933:124:::1;;22984:7;:5;:7::i;:::-;22976:25;;:48;23002:21;22976:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;23039:7;;22933:124;23067:17;23094:6;23067:34;;23112:15;23130:10;:20;;;23159:4;23130:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23112:53;;23176:10;:19;;;23196:7;:5;:7::i;:::-;23205;23176:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22922:299;;6443:1;22861:360:::0;:::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;5541:378::-;5694:1;5677:19;;:5;:19;;;5669:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5775:1;5756:21;;:7;:21;;;5748:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5857:6;5827:11;:18;5839:5;5827:18;;;;;;;;;;;;;;;:27;5846:7;5827:27;;;;;;;;;;;;;;;:36;;;;5895:7;5879:32;;5888:5;5879:32;;;5904:6;5879:32;;;;;;:::i;:::-;;;;;;;;5541:378;;;:::o;14496:3266::-;14612:1;14596:18;;:4;:18;;;14588:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14689:1;14675:16;;:2;:16;;;14667:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14759:1;14750:6;:10;14742:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;14811:14;;;;;;;;;;;14807:1232;;;14854:7;:5;:7::i;:::-;14846:15;;:4;:15;;;;:32;;;;;14871:7;:5;:7::i;:::-;14865:13;;:2;:13;;;;14846:32;:52;;;;;14896:1;14882:16;;:2;:16;;;;14846:52;:77;;;;;14916:6;14902:21;;:2;:21;;;;14846:77;14842:1186;;;14949:13;;;;;;;;;;;14944:243;;14995:31;:37;15027:4;14995:37;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;;15036:31;:35;15068:2;15036:35;;;;;;;;;;;;;;;;;;;;;;;;;14995:76;14987:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;15137:7;:5;:7::i;:::-;15129:15;;:4;:15;;;15121:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;14944:243;15239:25;:31;15265:4;15239:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;15275:31;:35;15307:2;15275:35;;;;;;;;;;;;;;;;;;;;;;;;;15274:36;15239:71;15235:778;;;15353:12;;15343:6;:22;;15335:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15467:15;;15450:13;15460:2;15450:9;:13::i;:::-;15441:6;:22;;;;:::i;:::-;:41;;15433:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15235:778;;;15591:25;:29;15617:2;15591:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;15625:31;:37;15657:4;15625:37;;;;;;;;;;;;;;;;;;;;;;;;;15624:38;15591:71;15587:426;;;15705:13;;15695:6;:23;;15687:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15587:426;;;15813:31;:35;15845:2;15813:35;;;;;;;;;;;;;;;;;;;;;;;;;15812:36;:78;;;;;15853:31;:37;15885:4;15853:37;;;;;;;;;;;;;;;;;;;;;;;;;15852:38;15812:78;15808:205;;;15949:15;;15932:13;15942:2;15932:9;:13::i;:::-;15923:6;:22;;;;:::i;:::-;:41;;15915:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15808:205;15587:426;15235:778;14842:1186;14807:1232;16051:28;16082:24;16100:4;16082:9;:24::i;:::-;16051:55;;16119:12;16158:18;;16134:20;:42;;16119:57;;16193:7;:22;;;;;16204:11;;;;;;;;;;;16193:22;:35;;;;;16220:8;;;;;;;;;;;16219:9;16193:35;:71;;;;;16233:25;:31;16259:4;16233:31;;;;;;;;;;;;;;;;;;;;;;;;;16232:32;16193:71;:101;;;;;16269:19;:25;16289:4;16269:25;;;;;;;;;;;;;;;;;;;;;;;;;16268:26;16193:101;:129;;;;;16299:19;:23;16319:2;16299:23;;;;;;;;;;;;;;;;;;;;;;;;;16298:24;16193:129;16189:233;;;16350:4;16339:8;;:15;;;;;;;;;;;;;;;;;;16369:10;:8;:10::i;:::-;16405:5;16394:8;;:16;;;;;;;;;;;;;;;;;;16189:233;16434:12;16449:4;16434:19;;16553;:25;16573:4;16553:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16582:19;:23;16602:2;16582:23;;;;;;;;;;;;;;;;;;;;;;;;;16553:52;16549:100;;;16632:5;16622:15;;16549:100;16661:12;16756:7;16752:957;;;16808:25;:29;16834:2;16808:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;16857:1;16841:13;;:17;16808:50;16804:756;;;16911:3;16895:13;;16886:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;16879:35;;16981:13;;16962:16;;16955:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;16933:18;;:61;;;;;;;:::i;:::-;;;;;;;;17059:13;;17041:15;;17034:4;:22;;;;:::i;:::-;:38;;;;:::i;:::-;17013:17;;:59;;;;;;;:::i;:::-;;;;;;;;17133:13;;17120:10;;17113:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;17091:18;;:55;;;;;;;:::i;:::-;;;;;;;;16804:756;;;17212:25;:31;17238:4;17212:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;17262:1;17247:12;;:16;17212:51;17208:352;;;17315:3;17300:12;;17291:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17284:34;;17384:12;;17366:15;;17359:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;17337:18;;:59;;;;;;;:::i;:::-;;;;;;;;17460:12;;17443:14;;17436:4;:21;;;;:::i;:::-;:36;;;;:::i;:::-;17415:17;;:57;;;;;;;:::i;:::-;;;;;;;;17532:12;;17520:9;;17513:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;17491:18;;:53;;;;;;;:::i;:::-;;;;;;;;17208:352;16804:756;17587:1;17580:4;:8;17576:91;;;17609:42;17625:4;17639;17646;17609:15;:42::i;:::-;17576:91;17693:4;17683:14;;;;;:::i;:::-;;;16752:957;17721:33;17737:4;17743:2;17747:6;17721:15;:33::i;:::-;14575:3187;;;;14496:3266;;;:::o;18623:240::-;18740:5;18706:25;:31;18732:4;18706:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18758;18785:4;18791:5;18758:26;:39::i;:::-;18849:5;18815:40;;18843:4;18815:40;;;;;;;;;;;;18623:240;;:::o;20990:1863::-;21029:23;21055:24;21073:4;21055:9;:24::i;:::-;21029:50;;21169:25;21218:18;;21197;;:39;;;;:::i;:::-;21169:67;;21272:1;21253:15;:20;:46;;;;21298:1;21277:17;:22;21253:46;21249:61;;;21302:7;;;;21249:61;21365:2;21344:18;;:23;;;;:::i;:::-;21326:15;:41;21322:115;;;21423:2;21402:18;;:23;;;;:::i;:::-;21384:41;;21322:115;21545:26;21633:17;;21613;:37;;;;:::i;:::-;21592:17;21574:15;:35;;;;:::i;:::-;:77;;;;:::i;:::-;21545:106;;21662:23;21709:1;21688:18;;:22;;;;:::i;:::-;21662:48;;21781:54;21819:15;21798:18;:36;;;;:::i;:::-;21781:16;:54::i;:::-;21848:18;21869:21;21848:42;;21901:23;21961:17;21940:18;;21927:10;:31;;;;:::i;:::-;:51;;;;:::i;:::-;21901:77;;21989:23;22028:15;22015:10;:28;;;;:::i;:::-;21989:54;;22112:1;22091:18;:22;;;;22145:1;22124:18;:22;;;;22220:1;22202:15;:19;:42;;;;;22243:1;22225:15;:19;22202:42;22198:121;;;22261:46;22274:15;22291;22261:12;:46::i;:::-;22198:121;22396:1;22378:15;:19;22374:186;;;22415:12;22440:10;;;;;;;;;;;22432:24;;22464:15;22432:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22414:70;;;22507:7;22499:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22399:161;22374:186;22667:1;22647:17;;:21;22643:203;;;22685:60;22703:4;22710:15;;;;;;;;;;;22727:17;;22685:9;:60::i;:::-;22780:1;22760:17;:21;;;;22643:203;21018:1835;;;;;;;20990:1863;:::o;4587:649::-;4745:1;4727:20;;:6;:20;;;4719:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4829:1;4808:23;;:9;:23;;;4800:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4899:1;4890:6;:10;4882:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4957:21;4981:9;:17;4991:6;4981:17;;;;;;;;;;;;;;;;4957:41;;5034:6;5017:13;:23;;5009:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5130:6;5114:13;:22;;;;:::i;:::-;5094:9;:17;5104:6;5094:17;;;;;;;;;;;;;;;:42;;;;5171:6;5147:9;:20;5157:9;5147:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5210:9;5193:35;;5202:6;5193:35;;;5221:6;5193:35;;;;;;:::i;:::-;;;;;;;;4708:528;4587:649;;;:::o;12346:207::-;12476:10;12434:31;:39;12466:6;12434:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;12502:43;12526:6;12534:10;12502:43;;;;;;;:::i;:::-;;;;;;;;12346:207;;:::o;17770:591::-;17898:21;17936:1;17922:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17898:40;;17967:4;17949;17954:1;17949:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17993:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17983:4;17988:1;17983:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18028:62;18045:4;18060:15;18078:11;18028:8;:62::i;:::-;18129:15;:66;;;18210:11;18236:1;18280:4;18307;18327:15;18129:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17825:536;17770:591;:::o;19159:522::-;19307:62;19324:4;19339:15;19357:11;19307:8;:62::i;:::-;19412:15;:31;;;19451:9;19484:4;19504:11;19530:1;19573;19624:7;:5;:7::i;:::-;19647:15;19412:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19159:522;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:143::-;4194:9;4227:37;4258:5;4227:37;:::i;:::-;4214:50;;4127:143;;;:::o;4276:165::-;4380:54;4428:5;4380:54;:::i;:::-;4375:3;4368:67;4276:165;;:::o;4447:256::-;4557:4;4595:2;4584:9;4580:18;4572:26;;4608:88;4693:1;4682:9;4678:17;4669:6;4608:88;:::i;:::-;4447:256;;;;:::o;4709:118::-;4796:24;4814:5;4796:24;:::i;:::-;4791:3;4784:37;4709:118;;:::o;4833:222::-;4926:4;4964:2;4953:9;4949:18;4941:26;;4977:71;5045:1;5034:9;5030:17;5021:6;4977:71;:::i;:::-;4833:222;;;;:::o;5061:619::-;5138:6;5146;5154;5203:2;5191:9;5182:7;5178:23;5174:32;5171:119;;;5209:79;;:::i;:::-;5171:119;5329:1;5354:53;5399:7;5390:6;5379:9;5375:22;5354:53;:::i;:::-;5344:63;;5300:117;5456:2;5482:53;5527:7;5518:6;5507:9;5503:22;5482:53;:::i;:::-;5472:63;;5427:118;5584:2;5610:53;5655:7;5646:6;5635:9;5631:22;5610:53;:::i;:::-;5600:63;;5555:118;5061:619;;;;;:::o;5686:329::-;5745:6;5794:2;5782:9;5773:7;5769:23;5765:32;5762:119;;;5800:79;;:::i;:::-;5762:119;5920:1;5945:53;5990:7;5981:6;5970:9;5966:22;5945:53;:::i;:::-;5935:63;;5891:117;5686:329;;;;:::o;6021:86::-;6056:7;6096:4;6089:5;6085:16;6074:27;;6021:86;;;:::o;6113:112::-;6196:22;6212:5;6196:22;:::i;:::-;6191:3;6184:35;6113:112;;:::o;6231:214::-;6320:4;6358:2;6347:9;6343:18;6335:26;;6371:67;6435:1;6424:9;6420:17;6411:6;6371:67;:::i;:::-;6231:214;;;;:::o;6451:118::-;6538:24;6556:5;6538:24;:::i;:::-;6533:3;6526:37;6451:118;;:::o;6575:222::-;6668:4;6706:2;6695:9;6691:18;6683:26;;6719:71;6787:1;6776:9;6772:17;6763:6;6719:71;:::i;:::-;6575:222;;;;:::o;6803:116::-;6873:21;6888:5;6873:21;:::i;:::-;6866:5;6863:32;6853:60;;6909:1;6906;6899:12;6853:60;6803:116;:::o;6925:133::-;6968:5;7006:6;6993:20;6984:29;;7022:30;7046:5;7022:30;:::i;:::-;6925:133;;;;:::o;7064:468::-;7129:6;7137;7186:2;7174:9;7165:7;7161:23;7157:32;7154:119;;;7192:79;;:::i;:::-;7154:119;7312:1;7337:53;7382:7;7373:6;7362:9;7358:22;7337:53;:::i;:::-;7327:63;;7283:117;7439:2;7465:50;7507:7;7498:6;7487:9;7483:22;7465:50;:::i;:::-;7455:60;;7410:115;7064:468;;;;;:::o;7538:619::-;7615:6;7623;7631;7680:2;7668:9;7659:7;7655:23;7651:32;7648:119;;;7686:79;;:::i;:::-;7648:119;7806:1;7831:53;7876:7;7867:6;7856:9;7852:22;7831:53;:::i;:::-;7821:63;;7777:117;7933:2;7959:53;8004:7;7995:6;7984:9;7980:22;7959:53;:::i;:::-;7949:63;;7904:118;8061:2;8087:53;8132:7;8123:6;8112:9;8108:22;8087:53;:::i;:::-;8077:63;;8032:118;7538:619;;;;;:::o;8163:117::-;8272:1;8269;8262:12;8286:117;8395:1;8392;8385:12;8409:117;8518:1;8515;8508:12;8549:568;8622:8;8632:6;8682:3;8675:4;8667:6;8663:17;8659:27;8649:122;;8690:79;;:::i;:::-;8649:122;8803:6;8790:20;8780:30;;8833:18;8825:6;8822:30;8819:117;;;8855:79;;:::i;:::-;8819:117;8969:4;8961:6;8957:17;8945:29;;9023:3;9015:4;9007:6;9003:17;8993:8;8989:32;8986:41;8983:128;;;9030:79;;:::i;:::-;8983:128;8549:568;;;;;:::o;9140:::-;9213:8;9223:6;9273:3;9266:4;9258:6;9254:17;9250:27;9240:122;;9281:79;;:::i;:::-;9240:122;9394:6;9381:20;9371:30;;9424:18;9416:6;9413:30;9410:117;;;9446:79;;:::i;:::-;9410:117;9560:4;9552:6;9548:17;9536:29;;9614:3;9606:4;9598:6;9594:17;9584:8;9580:32;9577:41;9574:128;;;9621:79;;:::i;:::-;9574:128;9140:568;;;;;:::o;9714:934::-;9836:6;9844;9852;9860;9909:2;9897:9;9888:7;9884:23;9880:32;9877:119;;;9915:79;;:::i;:::-;9877:119;10063:1;10052:9;10048:17;10035:31;10093:18;10085:6;10082:30;10079:117;;;10115:79;;:::i;:::-;10079:117;10228:80;10300:7;10291:6;10280:9;10276:22;10228:80;:::i;:::-;10210:98;;;;10006:312;10385:2;10374:9;10370:18;10357:32;10416:18;10408:6;10405:30;10402:117;;;10438:79;;:::i;:::-;10402:117;10551:80;10623:7;10614:6;10603:9;10599:22;10551:80;:::i;:::-;10533:98;;;;10328:313;9714:934;;;;;;;:::o;10654:474::-;10722:6;10730;10779:2;10767:9;10758:7;10754:23;10750:32;10747:119;;;10785:79;;:::i;:::-;10747:119;10905:1;10930:53;10975:7;10966:6;10955:9;10951:22;10930:53;:::i;:::-;10920:63;;10876:117;11032:2;11058:53;11103:7;11094:6;11083:9;11079:22;11058:53;:::i;:::-;11048:63;;11003:118;10654:474;;;;;:::o;11134:323::-;11190:6;11239:2;11227:9;11218:7;11214:23;11210:32;11207:119;;;11245:79;;:::i;:::-;11207:119;11365:1;11390:50;11432:7;11423:6;11412:9;11408:22;11390:50;:::i;:::-;11380:60;;11336:114;11134:323;;;;:::o;11463:180::-;11511:77;11508:1;11501:88;11608:4;11605:1;11598:15;11632:4;11629:1;11622:15;11649:320;11693:6;11730:1;11724:4;11720:12;11710:22;;11777:1;11771:4;11767:12;11798:18;11788:81;;11854:4;11846:6;11842:17;11832:27;;11788:81;11916:2;11908:6;11905:14;11885:18;11882:38;11879:84;;11935:18;;:::i;:::-;11879:84;11700:269;11649:320;;;:::o;11975:227::-;12115:34;12111:1;12103:6;12099:14;12092:58;12184:10;12179:2;12171:6;12167:15;12160:35;11975:227;:::o;12208:366::-;12350:3;12371:67;12435:2;12430:3;12371:67;:::i;:::-;12364:74;;12447:93;12536:3;12447:93;:::i;:::-;12565:2;12560:3;12556:12;12549:19;;12208:366;;;:::o;12580:419::-;12746:4;12784:2;12773:9;12769:18;12761:26;;12833:9;12827:4;12823:20;12819:1;12808:9;12804:17;12797:47;12861:131;12987:4;12861:131;:::i;:::-;12853:139;;12580:419;;;:::o;13005:180::-;13053:77;13050:1;13043:88;13150:4;13147:1;13140:15;13174:4;13171:1;13164:15;13191:194;13231:4;13251:20;13269:1;13251:20;:::i;:::-;13246:25;;13285:20;13303:1;13285:20;:::i;:::-;13280:25;;13329:1;13326;13322:9;13314:17;;13353:1;13347:4;13344:11;13341:37;;;13358:18;;:::i;:::-;13341:37;13191:194;;;;:::o;13391:182::-;13531:34;13527:1;13519:6;13515:14;13508:58;13391:182;:::o;13579:366::-;13721:3;13742:67;13806:2;13801:3;13742:67;:::i;:::-;13735:74;;13818:93;13907:3;13818:93;:::i;:::-;13936:2;13931:3;13927:12;13920:19;;13579:366;;;:::o;13951:419::-;14117:4;14155:2;14144:9;14140:18;14132:26;;14204:9;14198:4;14194:20;14190:1;14179:9;14175:17;14168:47;14232:131;14358:4;14232:131;:::i;:::-;14224:139;;13951:419;;;:::o;14376:410::-;14416:7;14439:20;14457:1;14439:20;:::i;:::-;14434:25;;14473:20;14491:1;14473:20;:::i;:::-;14468:25;;14528:1;14525;14521:9;14550:30;14568:11;14550:30;:::i;:::-;14539:41;;14729:1;14720:7;14716:15;14713:1;14710:22;14690:1;14683:9;14663:83;14640:139;;14759:18;;:::i;:::-;14640:139;14424:362;14376:410;;;;:::o;14792:180::-;14840:77;14837:1;14830:88;14937:4;14934:1;14927:15;14961:4;14958:1;14951:15;14978:185;15018:1;15035:20;15053:1;15035:20;:::i;:::-;15030:25;;15069:20;15087:1;15069:20;:::i;:::-;15064:25;;15108:1;15098:35;;15113:18;;:::i;:::-;15098:35;15155:1;15152;15148:9;15143:14;;14978:185;;;;:::o;15169:228::-;15309:34;15305:1;15297:6;15293:14;15286:58;15378:11;15373:2;15365:6;15361:15;15354:36;15169:228;:::o;15403:366::-;15545:3;15566:67;15630:2;15625:3;15566:67;:::i;:::-;15559:74;;15642:93;15731:3;15642:93;:::i;:::-;15760:2;15755:3;15751:12;15744:19;;15403:366;;;:::o;15775:419::-;15941:4;15979:2;15968:9;15964:18;15956:26;;16028:9;16022:4;16018:20;16014:1;16003:9;15999:17;15992:47;16056:131;16182:4;16056:131;:::i;:::-;16048:139;;15775:419;;;:::o;16200:191::-;16240:3;16259:20;16277:1;16259:20;:::i;:::-;16254:25;;16293:20;16311:1;16293:20;:::i;:::-;16288:25;;16336:1;16333;16329:9;16322:16;;16357:3;16354:1;16351:10;16348:36;;;16364:18;;:::i;:::-;16348:36;16200:191;;;;:::o;16397:223::-;16537:34;16533:1;16525:6;16521:14;16514:58;16606:6;16601:2;16593:6;16589:15;16582:31;16397:223;:::o;16626:366::-;16768:3;16789:67;16853:2;16848:3;16789:67;:::i;:::-;16782:74;;16865:93;16954:3;16865:93;:::i;:::-;16983:2;16978:3;16974:12;16967:19;;16626:366;;;:::o;16998:419::-;17164:4;17202:2;17191:9;17187:18;17179:26;;17251:9;17245:4;17241:20;17237:1;17226:9;17222:17;17215:47;17279:131;17405:4;17279:131;:::i;:::-;17271:139;;16998:419;;;:::o;17423:226::-;17563:34;17559:1;17551:6;17547:14;17540:58;17632:9;17627:2;17619:6;17615:15;17608:34;17423:226;:::o;17655:366::-;17797:3;17818:67;17882:2;17877:3;17818:67;:::i;:::-;17811:74;;17894:93;17983:3;17894:93;:::i;:::-;18012:2;18007:3;18003:12;17996:19;;17655:366;;;:::o;18027:419::-;18193:4;18231:2;18220:9;18216:18;18208:26;;18280:9;18274:4;18270:20;18266:1;18255:9;18251:17;18244:47;18308:131;18434:4;18308:131;:::i;:::-;18300:139;;18027:419;;;:::o;18452:179::-;18592:31;18588:1;18580:6;18576:14;18569:55;18452:179;:::o;18637:366::-;18779:3;18800:67;18864:2;18859:3;18800:67;:::i;:::-;18793:74;;18876:93;18965:3;18876:93;:::i;:::-;18994:2;18989:3;18985:12;18978:19;;18637:366;;;:::o;19009:419::-;19175:4;19213:2;19202:9;19198:18;19190:26;;19262:9;19256:4;19252:20;19248:1;19237:9;19233:17;19226:47;19290:131;19416:4;19290:131;:::i;:::-;19282:139;;19009:419;;;:::o;19434:244::-;19574:34;19570:1;19562:6;19558:14;19551:58;19643:27;19638:2;19630:6;19626:15;19619:52;19434:244;:::o;19684:366::-;19826:3;19847:67;19911:2;19906:3;19847:67;:::i;:::-;19840:74;;19923:93;20012:3;19923:93;:::i;:::-;20041:2;20036:3;20032:12;20025:19;;19684:366;;;:::o;20056:419::-;20222:4;20260:2;20249:9;20245:18;20237:26;;20309:9;20303:4;20299:20;20295:1;20284:9;20280:17;20273:47;20337:131;20463:4;20337:131;:::i;:::-;20329:139;;20056:419;;;:::o;20481:224::-;20621:34;20617:1;20609:6;20605:14;20598:58;20690:7;20685:2;20677:6;20673:15;20666:32;20481:224;:::o;20711:366::-;20853:3;20874:67;20938:2;20933:3;20874:67;:::i;:::-;20867:74;;20950:93;21039:3;20950:93;:::i;:::-;21068:2;21063:3;21059:12;21052:19;;20711:366;;;:::o;21083:419::-;21249:4;21287:2;21276:9;21272:18;21264:26;;21336:9;21330:4;21326:20;21322:1;21311:9;21307:17;21300:47;21364:131;21490:4;21364:131;:::i;:::-;21356:139;;21083:419;;;:::o;21508:232::-;21648:34;21644:1;21636:6;21632:14;21625:58;21717:15;21712:2;21704:6;21700:15;21693:40;21508:232;:::o;21746:366::-;21888:3;21909:67;21973:2;21968:3;21909:67;:::i;:::-;21902:74;;21985:93;22074:3;21985:93;:::i;:::-;22103:2;22098:3;22094:12;22087:19;;21746:366;;;:::o;22118:419::-;22284:4;22322:2;22311:9;22307:18;22299:26;;22371:9;22365:4;22361:20;22357:1;22346:9;22342:17;22335:47;22399:131;22525:4;22399:131;:::i;:::-;22391:139;;22118:419;;;:::o;22543:227::-;22683:34;22679:1;22671:6;22667:14;22660:58;22752:10;22747:2;22739:6;22735:15;22728:35;22543:227;:::o;22776:366::-;22918:3;22939:67;23003:2;22998:3;22939:67;:::i;:::-;22932:74;;23015:93;23104:3;23015:93;:::i;:::-;23133:2;23128:3;23124:12;23117:19;;22776:366;;;:::o;23148:419::-;23314:4;23352:2;23341:9;23337:18;23329:26;;23401:9;23395:4;23391:20;23387:1;23376:9;23372:17;23365:47;23429:131;23555:4;23429:131;:::i;:::-;23421:139;;23148:419;;;:::o;23573:102::-;23615:8;23662:5;23659:1;23655:13;23634:34;;23573:102;;;:::o;23681:848::-;23742:5;23749:4;23773:6;23764:15;;23797:5;23788:14;;23811:712;23832:1;23822:8;23819:15;23811:712;;;23927:4;23922:3;23918:14;23912:4;23909:24;23906:50;;;23936:18;;:::i;:::-;23906:50;23986:1;23976:8;23972:16;23969:451;;;24401:4;24394:5;24390:16;24381:25;;23969:451;24451:4;24445;24441:15;24433:23;;24481:32;24504:8;24481:32;:::i;:::-;24469:44;;23811:712;;;23681:848;;;;;;;:::o;24535:1073::-;24589:5;24780:8;24770:40;;24801:1;24792:10;;24803:5;;24770:40;24829:4;24819:36;;24846:1;24837:10;;24848:5;;24819:36;24915:4;24963:1;24958:27;;;;24999:1;24994:191;;;;24908:277;;24958:27;24976:1;24967:10;;24978:5;;;24994:191;25039:3;25029:8;25026:17;25023:43;;;25046:18;;:::i;:::-;25023:43;25095:8;25092:1;25088:16;25079:25;;25130:3;25123:5;25120:14;25117:40;;;25137:18;;:::i;:::-;25117:40;25170:5;;;24908:277;;25294:2;25284:8;25281:16;25275:3;25269:4;25266:13;25262:36;25244:2;25234:8;25231:16;25226:2;25220:4;25217:12;25213:35;25197:111;25194:246;;;25350:8;25344:4;25340:19;25331:28;;25385:3;25378:5;25375:14;25372:40;;;25392:18;;:::i;:::-;25372:40;25425:5;;25194:246;25465:42;25503:3;25493:8;25487:4;25484:1;25465:42;:::i;:::-;25450:57;;;;25539:4;25534:3;25530:14;25523:5;25520:25;25517:51;;;25548:18;;:::i;:::-;25517:51;25597:4;25590:5;25586:16;25577:25;;24535:1073;;;;;;:::o;25614:281::-;25672:5;25696:23;25714:4;25696:23;:::i;:::-;25688:31;;25740:25;25756:8;25740:25;:::i;:::-;25728:37;;25784:104;25821:66;25811:8;25805:4;25784:104;:::i;:::-;25775:113;;25614:281;;;;:::o;25901:180::-;25949:77;25946:1;25939:88;26046:4;26043:1;26036:15;26070:4;26067:1;26060:15;26087:177;26227:29;26223:1;26215:6;26211:14;26204:53;26087:177;:::o;26270:366::-;26412:3;26433:67;26497:2;26492:3;26433:67;:::i;:::-;26426:74;;26509:93;26598:3;26509:93;:::i;:::-;26627:2;26622:3;26618:12;26611:19;;26270:366;;;:::o;26642:419::-;26808:4;26846:2;26835:9;26831:18;26823:26;;26895:9;26889:4;26885:20;26881:1;26870:9;26866:17;26859:47;26923:131;27049:4;26923:131;:::i;:::-;26915:139;;26642:419;;;:::o;27067:231::-;27207:34;27203:1;27195:6;27191:14;27184:58;27276:14;27271:2;27263:6;27259:15;27252:39;27067:231;:::o;27304:366::-;27446:3;27467:67;27531:2;27526:3;27467:67;:::i;:::-;27460:74;;27543:93;27632:3;27543:93;:::i;:::-;27661:2;27656:3;27652:12;27645:19;;27304:366;;;:::o;27676:419::-;27842:4;27880:2;27869:9;27865:18;27857:26;;27929:9;27923:4;27919:20;27915:1;27904:9;27900:17;27893:47;27957:131;28083:4;27957:131;:::i;:::-;27949:139;;27676:419;;;:::o;28101:240::-;28241:34;28237:1;28229:6;28225:14;28218:58;28310:23;28305:2;28297:6;28293:15;28286:48;28101:240;:::o;28347:366::-;28489:3;28510:67;28574:2;28569:3;28510:67;:::i;:::-;28503:74;;28586:93;28675:3;28586:93;:::i;:::-;28704:2;28699:3;28695:12;28688:19;;28347:366;;;:::o;28719:419::-;28885:4;28923:2;28912:9;28908:18;28900:26;;28972:9;28966:4;28962:20;28958:1;28947:9;28943:17;28936:47;29000:131;29126:4;29000:131;:::i;:::-;28992:139;;28719:419;;;:::o;29144:239::-;29284:34;29280:1;29272:6;29268:14;29261:58;29353:22;29348:2;29340:6;29336:15;29329:47;29144:239;:::o;29389:366::-;29531:3;29552:67;29616:2;29611:3;29552:67;:::i;:::-;29545:74;;29628:93;29717:3;29628:93;:::i;:::-;29746:2;29741:3;29737:12;29730:19;;29389:366;;;:::o;29761:419::-;29927:4;29965:2;29954:9;29950:18;29942:26;;30014:9;30008:4;30004:20;30000:1;29989:9;29985:17;29978:47;30042:131;30168:4;30042:131;:::i;:::-;30034:139;;29761:419;;;:::o;30186:229::-;30326:34;30322:1;30314:6;30310:14;30303:58;30395:12;30390:2;30382:6;30378:15;30371:37;30186:229;:::o;30421:366::-;30563:3;30584:67;30648:2;30643:3;30584:67;:::i;:::-;30577:74;;30660:93;30749:3;30660:93;:::i;:::-;30778:2;30773:3;30769:12;30762:19;;30421:366;;;:::o;30793:419::-;30959:4;30997:2;30986:9;30982:18;30974:26;;31046:9;31040:4;31036:20;31032:1;31021:9;31017:17;31010:47;31074:131;31200:4;31074:131;:::i;:::-;31066:139;;30793:419;;;:::o;31218:224::-;31358:34;31354:1;31346:6;31342:14;31335:58;31427:7;31422:2;31414:6;31410:15;31403:32;31218:224;:::o;31448:366::-;31590:3;31611:67;31675:2;31670:3;31611:67;:::i;:::-;31604:74;;31687:93;31776:3;31687:93;:::i;:::-;31805:2;31800:3;31796:12;31789:19;;31448:366;;;:::o;31820:419::-;31986:4;32024:2;32013:9;32009:18;32001:26;;32073:9;32067:4;32063:20;32059:1;32048:9;32044:17;32037:47;32101:131;32227:4;32101:131;:::i;:::-;32093:139;;31820:419;;;:::o;32245:174::-;32385:26;32381:1;32373:6;32369:14;32362:50;32245:174;:::o;32425:366::-;32567:3;32588:67;32652:2;32647:3;32588:67;:::i;:::-;32581:74;;32664:93;32753:3;32664:93;:::i;:::-;32782:2;32777:3;32773:12;32766:19;;32425:366;;;:::o;32797:419::-;32963:4;33001:2;32990:9;32986:18;32978:26;;33050:9;33044:4;33040:20;33036:1;33025:9;33021:17;33014:47;33078:131;33204:4;33078:131;:::i;:::-;33070:139;;32797:419;;;:::o;33222:225::-;33362:34;33358:1;33350:6;33346:14;33339:58;33431:8;33426:2;33418:6;33414:15;33407:33;33222:225;:::o;33453:366::-;33595:3;33616:67;33680:2;33675:3;33616:67;:::i;:::-;33609:74;;33692:93;33781:3;33692:93;:::i;:::-;33810:2;33805:3;33801:12;33794:19;;33453:366;;;:::o;33825:419::-;33991:4;34029:2;34018:9;34014:18;34006:26;;34078:9;34072:4;34068:20;34064:1;34053:9;34049:17;34042:47;34106:131;34232:4;34106:131;:::i;:::-;34098:139;;33825:419;;;:::o;34250:143::-;34307:5;34338:6;34332:13;34323:22;;34354:33;34381:5;34354:33;:::i;:::-;34250:143;;;;:::o;34399:351::-;34469:6;34518:2;34506:9;34497:7;34493:23;34489:32;34486:119;;;34524:79;;:::i;:::-;34486:119;34644:1;34669:64;34725:7;34716:6;34705:9;34701:22;34669:64;:::i;:::-;34659:74;;34615:128;34399:351;;;;:::o;34756:332::-;34877:4;34915:2;34904:9;34900:18;34892:26;;34928:71;34996:1;34985:9;34981:17;34972:6;34928:71;:::i;:::-;35009:72;35077:2;35066:9;35062:18;35053:6;35009:72;:::i;:::-;34756:332;;;;;:::o;35094:137::-;35148:5;35179:6;35173:13;35164:22;;35195:30;35219:5;35195:30;:::i;:::-;35094:137;;;;:::o;35237:345::-;35304:6;35353:2;35341:9;35332:7;35328:23;35324:32;35321:119;;;35359:79;;:::i;:::-;35321:119;35479:1;35504:61;35557:7;35548:6;35537:9;35533:22;35504:61;:::i;:::-;35494:71;;35450:125;35237:345;;;;:::o;35588:223::-;35728:34;35724:1;35716:6;35712:14;35705:58;35797:6;35792:2;35784:6;35780:15;35773:31;35588:223;:::o;35817:366::-;35959:3;35980:67;36044:2;36039:3;35980:67;:::i;:::-;35973:74;;36056:93;36145:3;36056:93;:::i;:::-;36174:2;36169:3;36165:12;36158:19;;35817:366;;;:::o;36189:419::-;36355:4;36393:2;36382:9;36378:18;36370:26;;36442:9;36436:4;36432:20;36428:1;36417:9;36413:17;36406:47;36470:131;36596:4;36470:131;:::i;:::-;36462:139;;36189:419;;;:::o;36614:221::-;36754:34;36750:1;36742:6;36738:14;36731:58;36823:4;36818:2;36810:6;36806:15;36799:29;36614:221;:::o;36841:366::-;36983:3;37004:67;37068:2;37063:3;37004:67;:::i;:::-;36997:74;;37080:93;37169:3;37080:93;:::i;:::-;37198:2;37193:3;37189:12;37182:19;;36841:366;;;:::o;37213:419::-;37379:4;37417:2;37406:9;37402:18;37394:26;;37466:9;37460:4;37456:20;37452:1;37441:9;37437:17;37430:47;37494:131;37620:4;37494:131;:::i;:::-;37486:139;;37213:419;;;:::o;37638:224::-;37778:34;37774:1;37766:6;37762:14;37755:58;37847:7;37842:2;37834:6;37830:15;37823:32;37638:224;:::o;37868:366::-;38010:3;38031:67;38095:2;38090:3;38031:67;:::i;:::-;38024:74;;38107:93;38196:3;38107:93;:::i;:::-;38225:2;38220:3;38216:12;38209:19;;37868:366;;;:::o;38240:419::-;38406:4;38444:2;38433:9;38429:18;38421:26;;38493:9;38487:4;38483:20;38479:1;38468:9;38464:17;38457:47;38521:131;38647:4;38521:131;:::i;:::-;38513:139;;38240:419;;;:::o;38665:222::-;38805:34;38801:1;38793:6;38789:14;38782:58;38874:5;38869:2;38861:6;38857:15;38850:30;38665:222;:::o;38893:366::-;39035:3;39056:67;39120:2;39115:3;39056:67;:::i;:::-;39049:74;;39132:93;39221:3;39132:93;:::i;:::-;39250:2;39245:3;39241:12;39234:19;;38893:366;;;:::o;39265:419::-;39431:4;39469:2;39458:9;39454:18;39446:26;;39518:9;39512:4;39508:20;39504:1;39493:9;39489:17;39482:47;39546:131;39672:4;39546:131;:::i;:::-;39538:139;;39265:419;;;:::o;39690:179::-;39830:31;39826:1;39818:6;39814:14;39807:55;39690:179;:::o;39875:366::-;40017:3;40038:67;40102:2;40097:3;40038:67;:::i;:::-;40031:74;;40114:93;40203:3;40114:93;:::i;:::-;40232:2;40227:3;40223:12;40216:19;;39875:366;;;:::o;40247:419::-;40413:4;40451:2;40440:9;40436:18;40428:26;;40500:9;40494:4;40490:20;40486:1;40475:9;40471:17;40464:47;40528:131;40654:4;40528:131;:::i;:::-;40520:139;;40247:419;;;:::o;40672:172::-;40812:24;40808:1;40800:6;40796:14;40789:48;40672:172;:::o;40850:366::-;40992:3;41013:67;41077:2;41072:3;41013:67;:::i;:::-;41006:74;;41089:93;41178:3;41089:93;:::i;:::-;41207:2;41202:3;41198:12;41191:19;;40850:366;;;:::o;41222:419::-;41388:4;41426:2;41415:9;41411:18;41403:26;;41475:9;41469:4;41465:20;41461:1;41450:9;41446:17;41439:47;41503:131;41629:4;41503:131;:::i;:::-;41495:139;;41222:419;;;:::o;41647:168::-;41787:20;41783:1;41775:6;41771:14;41764:44;41647:168;:::o;41821:366::-;41963:3;41984:67;42048:2;42043:3;41984:67;:::i;:::-;41977:74;;42060:93;42149:3;42060:93;:::i;:::-;42178:2;42173:3;42169:12;42162:19;;41821:366;;;:::o;42193:419::-;42359:4;42397:2;42386:9;42382:18;42374:26;;42446:9;42440:4;42436:20;42432:1;42421:9;42417:17;42410:47;42474:131;42600:4;42474:131;:::i;:::-;42466:139;;42193:419;;;:::o;42618:227::-;42758:34;42754:1;42746:6;42742:14;42735:58;42827:10;42822:2;42814:6;42810:15;42803:35;42618:227;:::o;42851:366::-;42993:3;43014:67;43078:2;43073:3;43014:67;:::i;:::-;43007:74;;43090:93;43179:3;43090:93;:::i;:::-;43208:2;43203:3;43199:12;43192:19;;42851:366;;;:::o;43223:419::-;43389:4;43427:2;43416:9;43412:18;43404:26;;43476:9;43470:4;43466:20;43462:1;43451:9;43447:17;43440:47;43504:131;43630:4;43504:131;:::i;:::-;43496:139;;43223:419;;;:::o;43648:174::-;43788:26;43784:1;43776:6;43772:14;43765:50;43648:174;:::o;43828:366::-;43970:3;43991:67;44055:2;44050:3;43991:67;:::i;:::-;43984:74;;44067:93;44156:3;44067:93;:::i;:::-;44185:2;44180:3;44176:12;44169:19;;43828:366;;;:::o;44200:419::-;44366:4;44404:2;44393:9;44389:18;44381:26;;44453:9;44447:4;44443:20;44439:1;44428:9;44424:17;44417:47;44481:131;44607:4;44481:131;:::i;:::-;44473:139;;44200:419;;;:::o;44625:229::-;44765:34;44761:1;44753:6;44749:14;44742:58;44834:12;44829:2;44821:6;44817:15;44810:37;44625:229;:::o;44860:366::-;45002:3;45023:67;45087:2;45082:3;45023:67;:::i;:::-;45016:74;;45099:93;45188:3;45099:93;:::i;:::-;45217:2;45212:3;45208:12;45201:19;;44860:366;;;:::o;45232:419::-;45398:4;45436:2;45425:9;45421:18;45413:26;;45485:9;45479:4;45475:20;45471:1;45460:9;45456:17;45449:47;45513:131;45639:4;45513:131;:::i;:::-;45505:139;;45232:419;;;:::o;45657:147::-;45758:11;45795:3;45780:18;;45657:147;;;;:::o;45810:114::-;;:::o;45930:398::-;46089:3;46110:83;46191:1;46186:3;46110:83;:::i;:::-;46103:90;;46202:93;46291:3;46202:93;:::i;:::-;46320:1;46315:3;46311:11;46304:18;;45930:398;;;:::o;46334:379::-;46518:3;46540:147;46683:3;46540:147;:::i;:::-;46533:154;;46704:3;46697:10;;46334:379;;;:::o;46719:179::-;46859:31;46855:1;46847:6;46843:14;46836:55;46719:179;:::o;46904:366::-;47046:3;47067:67;47131:2;47126:3;47067:67;:::i;:::-;47060:74;;47143:93;47232:3;47143:93;:::i;:::-;47261:2;47256:3;47252:12;47245:19;;46904:366;;;:::o;47276:419::-;47442:4;47480:2;47469:9;47465:18;47457:26;;47529:9;47523:4;47519:20;47515:1;47504:9;47500:17;47493:47;47557:131;47683:4;47557:131;:::i;:::-;47549:139;;47276:419;;;:::o;47701:228::-;47841:34;47837:1;47829:6;47825:14;47818:58;47910:11;47905:2;47897:6;47893:15;47886:36;47701:228;:::o;47935:366::-;48077:3;48098:67;48162:2;48157:3;48098:67;:::i;:::-;48091:74;;48174:93;48263:3;48174:93;:::i;:::-;48292:2;48287:3;48283:12;48276:19;;47935:366;;;:::o;48307:419::-;48473:4;48511:2;48500:9;48496:18;48488:26;;48560:9;48554:4;48550:20;48546:1;48535:9;48531:17;48524:47;48588:131;48714:4;48588:131;:::i;:::-;48580:139;;48307:419;;;:::o;48732:225::-;48872:34;48868:1;48860:6;48856:14;48849:58;48941:8;48936:2;48928:6;48924:15;48917:33;48732:225;:::o;48963:366::-;49105:3;49126:67;49190:2;49185:3;49126:67;:::i;:::-;49119:74;;49202:93;49291:3;49202:93;:::i;:::-;49320:2;49315:3;49311:12;49304:19;;48963:366;;;:::o;49335:419::-;49501:4;49539:2;49528:9;49524:18;49516:26;;49588:9;49582:4;49578:20;49574:1;49563:9;49559:17;49552:47;49616:131;49742:4;49616:131;:::i;:::-;49608:139;;49335:419;;;:::o;49760:320::-;49875:4;49913:2;49902:9;49898:18;49890:26;;49926:71;49994:1;49983:9;49979:17;49970:6;49926:71;:::i;:::-;50007:66;50069:2;50058:9;50054:18;50045:6;50007:66;:::i;:::-;49760:320;;;;;:::o;50086:180::-;50134:77;50131:1;50124:88;50231:4;50228:1;50221:15;50255:4;50252:1;50245:15;50272:143;50329:5;50360:6;50354:13;50345:22;;50376:33;50403:5;50376:33;:::i;:::-;50272:143;;;;:::o;50421:351::-;50491:6;50540:2;50528:9;50519:7;50515:23;50511:32;50508:119;;;50546:79;;:::i;:::-;50508:119;50666:1;50691:64;50747:7;50738:6;50727:9;50723:22;50691:64;:::i;:::-;50681:74;;50637:128;50421:351;;;;:::o;50778:85::-;50823:7;50852:5;50841:16;;50778:85;;;:::o;50869:158::-;50927:9;50960:61;50978:42;50987:32;51013:5;50987:32;:::i;:::-;50978:42;:::i;:::-;50960:61;:::i;:::-;50947:74;;50869:158;;;:::o;51033:147::-;51128:45;51167:5;51128:45;:::i;:::-;51123:3;51116:58;51033:147;;:::o;51186:114::-;51253:6;51287:5;51281:12;51271:22;;51186:114;;;:::o;51306:184::-;51405:11;51439:6;51434:3;51427:19;51479:4;51474:3;51470:14;51455:29;;51306:184;;;;:::o;51496:132::-;51563:4;51586:3;51578:11;;51616:4;51611:3;51607:14;51599:22;;51496:132;;;:::o;51634:108::-;51711:24;51729:5;51711:24;:::i;:::-;51706:3;51699:37;51634:108;;:::o;51748:179::-;51817:10;51838:46;51880:3;51872:6;51838:46;:::i;:::-;51916:4;51911:3;51907:14;51893:28;;51748:179;;;;:::o;51933:113::-;52003:4;52035;52030:3;52026:14;52018:22;;51933:113;;;:::o;52082:732::-;52201:3;52230:54;52278:5;52230:54;:::i;:::-;52300:86;52379:6;52374:3;52300:86;:::i;:::-;52293:93;;52410:56;52460:5;52410:56;:::i;:::-;52489:7;52520:1;52505:284;52530:6;52527:1;52524:13;52505:284;;;52606:6;52600:13;52633:63;52692:3;52677:13;52633:63;:::i;:::-;52626:70;;52719:60;52772:6;52719:60;:::i;:::-;52709:70;;52565:224;52552:1;52549;52545:9;52540:14;;52505:284;;;52509:14;52805:3;52798:10;;52206:608;;;52082:732;;;;:::o;52820:831::-;53083:4;53121:3;53110:9;53106:19;53098:27;;53135:71;53203:1;53192:9;53188:17;53179:6;53135:71;:::i;:::-;53216:80;53292:2;53281:9;53277:18;53268:6;53216:80;:::i;:::-;53343:9;53337:4;53333:20;53328:2;53317:9;53313:18;53306:48;53371:108;53474:4;53465:6;53371:108;:::i;:::-;53363:116;;53489:72;53557:2;53546:9;53542:18;53533:6;53489:72;:::i;:::-;53571:73;53639:3;53628:9;53624:19;53615:6;53571:73;:::i;:::-;52820:831;;;;;;;;:::o;53657:807::-;53906:4;53944:3;53933:9;53929:19;53921:27;;53958:71;54026:1;54015:9;54011:17;54002:6;53958:71;:::i;:::-;54039:72;54107:2;54096:9;54092:18;54083:6;54039:72;:::i;:::-;54121:80;54197:2;54186:9;54182:18;54173:6;54121:80;:::i;:::-;54211;54287:2;54276:9;54272:18;54263:6;54211:80;:::i;:::-;54301:73;54369:3;54358:9;54354:19;54345:6;54301:73;:::i;:::-;54384;54452:3;54441:9;54437:19;54428:6;54384:73;:::i;:::-;53657:807;;;;;;;;;:::o;54470:663::-;54558:6;54566;54574;54623:2;54611:9;54602:7;54598:23;54594:32;54591:119;;;54629:79;;:::i;:::-;54591:119;54749:1;54774:64;54830:7;54821:6;54810:9;54806:22;54774:64;:::i;:::-;54764:74;;54720:128;54887:2;54913:64;54969:7;54960:6;54949:9;54945:22;54913:64;:::i;:::-;54903:74;;54858:129;55026:2;55052:64;55108:7;55099:6;55088:9;55084:22;55052:64;:::i;:::-;55042:74;;54997:129;54470:663;;;;;:::o

Swarm Source

ipfs://905e187c90d52b754b5486e57544338f14e2d5cb3341db204ddd856ffc8f7a5a
[ 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.