ETH Price: $3,479.47 (-0.33%)

Token

Conan Inu (CONAN)
 

Overview

Max Total Supply

10,000,000 CONAN

Holders

219

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CONAN

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/* 

0 TAX

https://t.me/ConaninuPortal
https://twitter.com/conaninu

https://twitter.com/realdonaldtrump/status/1188909031403900928?s=46&t=2DnY5vMPkZ_mRMog9yukPw



*/
// SPDX-License-Identifier: MIT
pragma solidity =0.8.10 >=0.8.10 >=0.8.0 <0.9.0;
pragma experimental ABIEncoderV2;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

interface IERC20 {

    function 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");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

library SafeMath {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

contract CONAN is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);
    address public routerCA = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D uniswap

    bool private swapping;

    address private mktgWallet;
    address private devWallet;
    address private liqWallet;
    address private operationsWallet;

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

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

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    uint256 private launchBlock;
    uint256 private deadBlocks;
    mapping(address => bool) public blocked;

    uint256 public buyTotalFees;
    uint256 public buyMktgFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    uint256 public buyOperationsFee;

    uint256 public sellTotalFees;
    uint256 public sellMktgFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    uint256 public sellOperationsFee;

    uint256 public tokensForMktg;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    uint256 public tokensForOperations;

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

    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

    event mktgWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event devWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event liqWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event operationsWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

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

    constructor() ERC20("Conan Inu", "CONAN") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(routerCA); 

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

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

        // launch buy fees
        uint256 _buyMktgFee = 0;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 25;
        uint256 _buyOperationsFee = 0;
        
        // launch sell fees
        uint256 _sellMktgFee = 0;
        uint256 _sellLiquidityFee = 3;
        uint256 _sellDevFee = 70;
        uint256 _sellOperationsFee = 0;

        uint256 totalSupply = 10_000_000 * 1e18;

        maxTransactionAmount = 200_000 * 1e18; // 2% max txn
        maxWallet = 200_000 * 1e18; // 2% max wallet
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

        buyMktgFee = _buyMktgFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyOperationsFee = _buyOperationsFee;
        buyTotalFees = buyMktgFee + buyLiquidityFee + buyDevFee + buyOperationsFee;

        sellMktgFee = _sellMktgFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellOperationsFee = _sellOperationsFee;
        sellTotalFees = sellMktgFee + sellLiquidityFee + sellDevFee + sellOperationsFee;

        mktgWallet = address(0x2b0b937c7E1C7b1Cd492B774eCe6Be4cE15abeA6); 
        devWallet = address(0x2b0b937c7E1C7b1Cd492B774eCe6Be4cE15abeA6); 
        liqWallet = address(0x2b0b937c7E1C7b1Cd492B774eCe6Be4cE15abeA6); 
        operationsWallet = address(0x2b0b937c7E1C7b1Cd492B774eCe6Be4cE15abeA6);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading(uint256 deadBlocks1, uint256 deadBlocks2, uint256 deadBlocks3, uint256 deadBlocks4) external onlyOwner {
        require(!tradingActive, "Token launched");
        tradingActive = true;
        launchBlock = block.number;
        swapEnabled = true;
        uint _deadBlocks = (deadBlocks1 + deadBlocks2 + deadBlocks3) - deadBlocks4;
        deadBlocks = _deadBlocks;
    }

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

    
    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

   
    function manageSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function manageMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10**18);
    }

    function manageMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newNum * (10**18);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function manageSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function manageBuyFees(
        uint256 _mktgFee,
        uint256 _liquidityFee,
        uint256 _devFee,
        uint256 _operationsFee
    ) external onlyOwner {
        buyMktgFee = _mktgFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyOperationsFee = _operationsFee;
        buyTotalFees = buyMktgFee + buyLiquidityFee + buyDevFee + buyOperationsFee;
        require(buyTotalFees <= 35);
    }

    function manageSellFees(
        uint256 _mktgFee,
        uint256 _liquidityFee,
        uint256 _devFee,
        uint256 _operationsFee
    ) external onlyOwner {
        sellMktgFee = _mktgFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellOperationsFee = _operationsFee;
        sellTotalFees = sellMktgFee + sellLiquidityFee + sellDevFee + sellOperationsFee;
        require(sellTotalFees <= 35); 
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function setNewmktgWallet(address newmktgWallet) external onlyOwner {
        emit mktgWalletUpdated(newmktgWallet, mktgWallet);
        mktgWallet = newmktgWallet;
    }

    function setNewDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

    function setNewoperationsWallet(address newWallet) external onlyOwner{
        emit operationsWalletUpdated(newWallet, operationsWallet);
        operationsWallet = newWallet;
    }

    function setNewLiqWallet(address newLiqWallet) external onlyOwner {
        emit liqWalletUpdated(newLiqWallet, liqWallet);
        liqWallet = newLiqWallet;
    }

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

    event BoughtEarly(address indexed sniper);

    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(!blocked[from], "Sniper blocked");

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

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

                if(block.number <= launchBlock + deadBlocks && from == address(uniswapV2Pair) &&  
                to != routerCA && to != address(this) && to != address(uniswapV2Pair)){
                    blocked[to] = true;
                    emit BoughtEarly(to);
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapV2Router) &&
                        to != address(uniswapV2Pair)
                    ) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

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

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

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

            amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = 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 multiBlock(address[] calldata blockees, bool shouldBlock) external onlyOwner {
        for(uint256 i = 0;i<blockees.length;i++){
            address blockee = blockees[i];
            if(blockee != address(this) && 
               blockee != routerCA && 
               blockee != address(uniswapV2Pair))
                blocked[blockee] = shouldBlock;
        }
    }

    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
            liqWallet,
            block.timestamp
        );
    }

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

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

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

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

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMktg = ethBalance.mul(tokensForMktg).div(totalTokensToSwap);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
        uint256 ethForOperations = ethBalance.mul(tokensForOperations).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMktg - ethForDev - ethForOperations;

        tokensForLiquidity = 0;
        tokensForMktg = 0;
        tokensForDev = 0;
        tokensForOperations = 0;

        (success, ) = address(devWallet).call{value: ethForDev}("");

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }
        (success, ) = address(operationsWallet).call{value: ethForOperations}("");
        (success, ) = address(mktgWallet).call{value: address(this).balance}("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"liqWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"mktgWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"operationsWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"buyMktgFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"deadBlocks1","type":"uint256"},{"internalType":"uint256","name":"deadBlocks2","type":"uint256"},{"internalType":"uint256","name":"deadBlocks3","type":"uint256"},{"internalType":"uint256","name":"deadBlocks4","type":"uint256"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mktgFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"manageBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"manageMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"manageMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mktgFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"manageSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"manageSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"manageSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"blockees","type":"address[]"},{"internalType":"bool","name":"shouldBlock","type":"bool"}],"name":"multiBlock","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":"removeMaxTxAndWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"routerCA","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"sellMktgFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setNewDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiqWallet","type":"address"}],"name":"setNewLiqWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newmktgWallet","type":"address"}],"name":"setNewmktgWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setNewoperationsWallet","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":"tokensForDev","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":"tokensForMktg","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff0219169083151502179055506001601060006101000a81548160ff021916908315150217905550348015620000d257600080fd5b506040518060400160405280600981526020017f436f6e616e20496e7500000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f434f4e414e00000000000000000000000000000000000000000000000000000081525081600390805190602001906200015792919062000c20565b5080600490805190602001906200017092919062000c20565b5050506200019362000187620006e060201b60201c565b620006e860201b60201c565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050620001cd816001620007ae60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000273919062000d3a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000301919062000d3a565b6040518363ffffffff1660e01b81526004016200032092919062000d7d565b6020604051808303816000875af115801562000340573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000366919062000d3a565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003ae60a0516001620007ae60201b60201c565b620003c360a05160016200089860201b60201c565b6000806000601990506000806000600390506000604690506000806a084595161401484a0000009050692a5a058fc295ed000000600b81905550692a5a058fc295ed000000600d8190555061271060058262000420919062000de3565b6200042c919062000e73565b600c819055508860158190555087601681905550866017819055508560188190555060185460175460165460155462000466919062000eab565b62000472919062000eab565b6200047e919062000eab565b60148190555084601a8190555083601b8190555082601c8190555081601d81905550601d54601c54601b54601a54620004b8919062000eab565b620004c4919062000eab565b620004d0919062000eab565b601981905550732b0b937c7e1c7b1cd492b774ece6be4ce15abea6600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732b0b937c7e1c7b1cd492b774ece6be4ce15abea6600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732b0b937c7e1c7b1cd492b774ece6be4ce15abea6600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732b0b937c7e1c7b1cd492b774ece6be4ce15abea6600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200064c6200063e6200093960201b60201c565b60016200096360201b60201c565b6200065f3060016200096360201b60201c565b6200067461dead60016200096360201b60201c565b62000696620006886200093960201b60201c565b6001620007ae60201b60201c565b620006a9306001620007ae60201b60201c565b620006be61dead6001620007ae60201b60201c565b620006d0338262000a9d60201b60201c565b50505050505050505050620010ca565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620007be620006e060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007e46200093960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200083d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008349062000f69565b60405180910390fd5b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000973620006e060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620009996200093960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009e99062000f69565b60405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a91919062000fa8565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000b10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b079062001015565b60405180910390fd5b62000b246000838362000c1660201b60201c565b806002600082825462000b38919062000eab565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000b8f919062000eab565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bf6919062001048565b60405180910390a362000c126000838362000c1b60201b60201c565b5050565b505050565b505050565b82805462000c2e9062001094565b90600052602060002090601f01602090048101928262000c52576000855562000c9e565b82601f1062000c6d57805160ff191683800117855562000c9e565b8280016001018555821562000c9e579182015b8281111562000c9d57825182559160200191906001019062000c80565b5b50905062000cad919062000cb1565b5090565b5b8082111562000ccc57600081600090555060010162000cb2565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d028262000cd5565b9050919050565b62000d148162000cf5565b811462000d2057600080fd5b50565b60008151905062000d348162000d09565b92915050565b60006020828403121562000d535762000d5262000cd0565b5b600062000d638482850162000d23565b91505092915050565b62000d778162000cf5565b82525050565b600060408201905062000d94600083018562000d6c565b62000da3602083018462000d6c565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000df08262000daa565b915062000dfd8362000daa565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e395762000e3862000db4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e808262000daa565b915062000e8d8362000daa565b92508262000ea05762000e9f62000e44565b5b828204905092915050565b600062000eb88262000daa565b915062000ec58362000daa565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000efd5762000efc62000db4565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f5160208362000f08565b915062000f5e8262000f19565b602082019050919050565b6000602082019050818103600083015262000f848162000f42565b9050919050565b60008115159050919050565b62000fa28162000f8b565b82525050565b600060208201905062000fbf600083018462000f97565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ffd601f8362000f08565b91506200100a8262000fc5565b602082019050919050565b60006020820190508181036000830152620010308162000fee565b9050919050565b620010428162000daa565b82525050565b60006020820190506200105f600083018462001037565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010ad57607f821691505b60208210811415620010c457620010c362001065565b5b50919050565b60805160a051615c086200113d6000396000818161149301528181611d170152818161201c01528181612e9801528181612f81015261311e015260008181611042015281816130c6015281816142fa015281816143db015281816144020152818161449e01526144c50152615c086000f3fe60806040526004361061039b5760003560e01c80638da5cb5b116101dc578063c8c8ebe411610102578063e5962195116100a0578063f63743421161006f578063f637434214610db5578063f8b45b0514610de0578063fb002c9714610e0b578063fb80719b14610e36576103a2565b8063e596219514610cf9578063e884f26014610d36578063f11a24d314610d61578063f2fde38b14610d8c576103a2565b8063dcf5881e116100dc578063dcf5881e14610c3f578063dd62ed3e14610c68578063e14a93d614610ca5578063e2f4560514610cce576103a2565b8063c8c8ebe414610bc0578063d1f7389414610beb578063d85ba06314610c14576103a2565b8063a457c2d71161017a578063bbc0c74211610149578063bbc0c74214610b16578063c024666814610b41578063c0f17acd14610b6a578063c876d0b914610b95576103a2565b8063a457c2d714610a36578063a9059cbb14610a73578063ae303d0714610ab0578063b62496f514610ad9576103a2565b80639bd9bf5f116101b65780639bd9bf5f1461098a5780639c3b4fdc146109b55780639fccce32146109e0578063a0d82dc514610a0b576103a2565b80638da5cb5b1461090b57806395d89b41146109365780639a7a23d614610961576103a2565b80634a62bb65116102c15780636a486a8e1161025f578063715018a61161022e578063715018a614610879578063715b3230146108905780637571336a146108b9578063864327a7146108e2576103a2565b80636a486a8e146107bd5780636c8311ba146107e85780636ddd17131461081157806370a082311461083c576103a2565b8063534c09061161029b578063534c0906146107155780635a139dd4146107405780635a4222771461076b5780636a30fb9d14610794576103a2565b80634a62bb65146106825780634f77f6c0146106ad5780634fbee193146106d8576103a2565b80631c67d44111610339578063313ce56711610308578063313ce567146105c657806339509351146105f1578063464a58c81461062e57806349bd5a5e14610657576103a2565b80631c67d441146104f657806323b872dd1461053357806327c8f83514610570578063312394a01461059b576103a2565b806310d5de531161037557806310d5de53146104385780631694505e1461047557806318160ddd146104a05780631a8145bb146104cb576103a2565b806302197273146103a757806306fdde03146103d0578063095ea7b3146103fb576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103ce60048036038101906103c991906145d4565b610e61565b005b3480156103dc57600080fd5b506103e5610f70565b6040516103f2919061469a565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d919061471a565b611002565b60405161042f9190614775565b60405180910390f35b34801561044457600080fd5b5061045f600480360381019061045a9190614790565b611020565b60405161046c9190614775565b60405180910390f35b34801561048157600080fd5b5061048a611040565b604051610497919061481c565b60405180910390f35b3480156104ac57600080fd5b506104b5611064565b6040516104c29190614846565b60405180910390f35b3480156104d757600080fd5b506104e061106e565b6040516104ed9190614846565b60405180910390f35b34801561050257600080fd5b5061051d600480360381019061051891906145d4565b611074565b60405161052a9190614775565b60405180910390f35b34801561053f57600080fd5b5061055a60048036038101906105559190614861565b6111c9565b6040516105679190614775565b60405180910390f35b34801561057c57600080fd5b506105856112c1565b60405161059291906148c3565b60405180910390f35b3480156105a757600080fd5b506105b06112c7565b6040516105bd9190614846565b60405180910390f35b3480156105d257600080fd5b506105db6112cd565b6040516105e891906148fa565b60405180910390f35b3480156105fd57600080fd5b506106186004803603810190610613919061471a565b6112d6565b6040516106259190614775565b60405180910390f35b34801561063a57600080fd5b50610655600480360381019061065091906145d4565b611382565b005b34801561066357600080fd5b5061066c611491565b60405161067991906148c3565b60405180910390f35b34801561068e57600080fd5b506106976114b5565b6040516106a49190614775565b60405180910390f35b3480156106b957600080fd5b506106c26114c8565b6040516106cf9190614846565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa9190614790565b6114ce565b60405161070c9190614775565b60405180910390f35b34801561072157600080fd5b5061072a611524565b60405161073791906148c3565b60405180910390f35b34801561074c57600080fd5b5061075561154a565b6040516107629190614846565b60405180910390f35b34801561077757600080fd5b50610792600480360381019061078d9190614915565b611550565b005b3480156107a057600080fd5b506107bb60048036038101906107b69190614790565b61162e565b005b3480156107c957600080fd5b506107d261176a565b6040516107df9190614846565b60405180910390f35b3480156107f457600080fd5b5061080f600480360381019061080a91906149a8565b611770565b005b34801561081d57600080fd5b50610826611809565b6040516108339190614775565b60405180910390f35b34801561084857600080fd5b50610863600480360381019061085e9190614790565b61181c565b6040516108709190614846565b60405180910390f35b34801561088557600080fd5b5061088e611864565b005b34801561089c57600080fd5b506108b760048036038101906108b29190614915565b6118ec565b005b3480156108c557600080fd5b506108e060048036038101906108db91906149d5565b6119ca565b005b3480156108ee57600080fd5b5061090960048036038101906109049190614790565b611aa1565b005b34801561091757600080fd5b50610920611bdd565b60405161092d91906148c3565b60405180910390f35b34801561094257600080fd5b5061094b611c07565b604051610958919061469a565b60405180910390f35b34801561096d57600080fd5b50610988600480360381019061098391906149d5565b611c99565b005b34801561099657600080fd5b5061099f611db2565b6040516109ac9190614846565b60405180910390f35b3480156109c157600080fd5b506109ca611db8565b6040516109d79190614846565b60405180910390f35b3480156109ec57600080fd5b506109f5611dbe565b604051610a029190614846565b60405180910390f35b348015610a1757600080fd5b50610a20611dc4565b604051610a2d9190614846565b60405180910390f35b348015610a4257600080fd5b50610a5d6004803603810190610a58919061471a565b611dca565b604051610a6a9190614775565b60405180910390f35b348015610a7f57600080fd5b50610a9a6004803603810190610a95919061471a565b611eb5565b604051610aa79190614775565b60405180910390f35b348015610abc57600080fd5b50610ad76004803603810190610ad29190614a7a565b611ed3565b005b348015610ae557600080fd5b50610b006004803603810190610afb9190614790565b6120e2565b604051610b0d9190614775565b60405180910390f35b348015610b2257600080fd5b50610b2b612102565b604051610b389190614775565b60405180910390f35b348015610b4d57600080fd5b50610b686004803603810190610b6391906149d5565b612115565b005b348015610b7657600080fd5b50610b7f61223a565b604051610b8c9190614846565b60405180910390f35b348015610ba157600080fd5b50610baa612240565b604051610bb79190614775565b60405180910390f35b348015610bcc57600080fd5b50610bd5612253565b604051610be29190614846565b60405180910390f35b348015610bf757600080fd5b50610c126004803603810190610c0d9190614790565b612259565b005b348015610c2057600080fd5b50610c29612395565b604051610c369190614846565b60405180910390f35b348015610c4b57600080fd5b50610c666004803603810190610c619190614790565b61239b565b005b348015610c7457600080fd5b50610c8f6004803603810190610c8a9190614ada565b6124d7565b604051610c9c9190614846565b60405180910390f35b348015610cb157600080fd5b50610ccc6004803603810190610cc79190614915565b61255e565b005b348015610cda57600080fd5b50610ce361269b565b604051610cf09190614846565b60405180910390f35b348015610d0557600080fd5b50610d206004803603810190610d1b9190614790565b6126a1565b604051610d2d9190614775565b60405180910390f35b348015610d4257600080fd5b50610d4b6126c1565b604051610d589190614775565b60405180910390f35b348015610d6d57600080fd5b50610d76612761565b604051610d839190614846565b60405180910390f35b348015610d9857600080fd5b50610db36004803603810190610dae9190614790565b612767565b005b348015610dc157600080fd5b50610dca61285f565b604051610dd79190614846565b60405180910390f35b348015610dec57600080fd5b50610df5612865565b604051610e029190614846565b60405180910390f35b348015610e1757600080fd5b50610e2061286b565b604051610e2d9190614846565b60405180910390f35b348015610e4257600080fd5b50610e4b612871565b604051610e589190614775565b60405180910390f35b610e69612911565b73ffffffffffffffffffffffffffffffffffffffff16610e87611bdd565b73ffffffffffffffffffffffffffffffffffffffff1614610edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed490614b66565b60405180910390fd5b670de0b6b3a76400006103e86005610ef3611064565b610efd9190614bb5565b610f079190614c3e565b610f119190614c3e565b811015610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a90614ce1565b60405180910390fd5b670de0b6b3a764000081610f679190614bb5565b600d8190555050565b606060038054610f7f90614d30565b80601f0160208091040260200160405190810160405280929190818152602001828054610fab90614d30565b8015610ff85780601f10610fcd57610100808354040283529160200191610ff8565b820191906000526020600020905b815481529060010190602001808311610fdb57829003601f168201915b5050505050905090565b600061101661100f612911565b8484612919565b6001905092915050565b60236020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b601f5481565b600061107e612911565b73ffffffffffffffffffffffffffffffffffffffff1661109c611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e990614b66565b60405180910390fd5b620186a06001611100611064565b61110a9190614bb5565b6111149190614c3e565b821015611156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114d90614dd4565b60405180910390fd5b6103e86005611163611064565b61116d9190614bb5565b6111779190614c3e565b8211156111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b090614e66565b60405180910390fd5b81600c8190555060019050919050565b60006111d6848484612ae4565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611221612911565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156112a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129890614ef8565b60405180910390fd5b6112b5856112ad612911565b858403612919565b60019150509392505050565b61dead81565b601a5481565b60006012905090565b60006113786112e3612911565b8484600160006112f1612911565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113739190614f18565b612919565b6001905092915050565b61138a612911565b73ffffffffffffffffffffffffffffffffffffffff166113a8611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590614b66565b60405180910390fd5b670de0b6b3a76400006103e86001611414611064565b61141e9190614bb5565b6114289190614c3e565b6114329190614c3e565b811015611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b90614fe0565b60405180910390fd5b670de0b6b3a7640000816114889190614bb5565b600b8190555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60009054906101000a900460ff1681565b601d5481565b6000602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b611558612911565b73ffffffffffffffffffffffffffffffffffffffff16611576611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c390614b66565b60405180910390fd5b83601a8190555082601b8190555081601c8190555080601d81905550601d54601c54601b54601a546115fe9190614f18565b6116089190614f18565b6116129190614f18565b6019819055506023601954111561162857600080fd5b50505050565b611636612911565b73ffffffffffffffffffffffffffffffffffffffff16611654611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190614b66565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b611778612911565b73ffffffffffffffffffffffffffffffffffffffff16611796611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146117ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e390614b66565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61186c612911565b73ffffffffffffffffffffffffffffffffffffffff1661188a611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d790614b66565b60405180910390fd5b6118ea6000613a66565b565b6118f4612911565b73ffffffffffffffffffffffffffffffffffffffff16611912611bdd565b73ffffffffffffffffffffffffffffffffffffffff1614611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f90614b66565b60405180910390fd5b8360158190555082601681905550816017819055508060188190555060185460175460165460155461199a9190614f18565b6119a49190614f18565b6119ae9190614f18565b601481905550602360145411156119c457600080fd5b50505050565b6119d2612911565b73ffffffffffffffffffffffffffffffffffffffff166119f0611bdd565b73ffffffffffffffffffffffffffffffffffffffff1614611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3d90614b66565b60405180910390fd5b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611aa9612911565b73ffffffffffffffffffffffffffffffffffffffff16611ac7611bdd565b73ffffffffffffffffffffffffffffffffffffffff1614611b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1490614b66565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f0308c4544315dbf7c7c2fdbcdf1dd8a57df22fddf234ee3c941eefec5c2287ba60405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611c1690614d30565b80601f0160208091040260200160405190810160405280929190818152602001828054611c4290614d30565b8015611c8f5780601f10611c6457610100808354040283529160200191611c8f565b820191906000526020600020905b815481529060010190602001808311611c7257829003601f168201915b5050505050905090565b611ca1612911565b73ffffffffffffffffffffffffffffffffffffffff16611cbf611bdd565b73ffffffffffffffffffffffffffffffffffffffff1614611d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0c90614b66565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9b90615072565b60405180910390fd5b611dae8282613b2c565b5050565b601e5481565b60175481565b60205481565b601c5481565b60008060016000611dd9612911565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d90615104565b60405180910390fd5b611eaa611ea1612911565b85858403612919565b600191505092915050565b6000611ec9611ec2612911565b8484612ae4565b6001905092915050565b611edb612911565b73ffffffffffffffffffffffffffffffffffffffff16611ef9611bdd565b73ffffffffffffffffffffffffffffffffffffffff1614611f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4690614b66565b60405180910390fd5b60005b838390508110156120dc576000848483818110611f7257611f71615124565b5b9050602002016020810190611f879190614790565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156120135750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561206b57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156120c85782601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5080806120d490615153565b915050611f52565b50505050565b60246020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b61211d612911565b73ffffffffffffffffffffffffffffffffffffffff1661213b611bdd565b73ffffffffffffffffffffffffffffffffffffffff1614612191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218890614b66565b60405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161222e9190614775565b60405180910390a25050565b60155481565b601060009054906101000a900460ff1681565b600b5481565b612261612911565b73ffffffffffffffffffffffffffffffffffffffff1661227f611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc90614b66565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fceaa6f1f2115d0f5eb9934026e3a197b010d8bc98f70fe27bbfb441d6fe4a69c60405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b6123a3612911565b73ffffffffffffffffffffffffffffffffffffffff166123c1611bdd565b73ffffffffffffffffffffffffffffffffffffffff1614612417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240e90614b66565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fe1bb4a3e2b2b99353f84d73df9e136cfe17627ed07083a649101dfa6bde8459c60405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612566612911565b73ffffffffffffffffffffffffffffffffffffffff16612584611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146125da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d190614b66565b60405180910390fd5b600e60019054906101000a900460ff161561262a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612621906151e8565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550436011819055506001600e60026101000a81548160ff0219169083151502179055506000818385876126779190614f18565b6126819190614f18565b61268b9190615208565b9050806012819055505050505050565b600c5481565b60136020528060005260406000206000915054906101000a900460ff1681565b60006126cb612911565b73ffffffffffffffffffffffffffffffffffffffff166126e9611bdd565b73ffffffffffffffffffffffffffffffffffffffff161461273f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273690614b66565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b60165481565b61276f612911565b73ffffffffffffffffffffffffffffffffffffffff1661278d611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146127e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127da90614b66565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284a906152ae565b60405180910390fd5b61285c81613a66565b50565b601b5481565b600d5481565b60215481565b600061287b612911565b73ffffffffffffffffffffffffffffffffffffffff16612899611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146128ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e690614b66565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298090615340565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f0906153d2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ad79190614846565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4b90615464565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbb906154f6565b60405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4890615562565b60405180910390fd5b6000811415612c6b57612c6683836000613bcd565b613a61565b600e60009054906101000a900460ff161561352357612c88611bdd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612cf65750612cc6611bdd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d2f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d69575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d825750600660149054906101000a900460ff16155b1561352257600e60019054906101000a900460ff16612e7c57602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e3c5750602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e72906155ce565b60405180910390fd5b5b601254601154612e8c9190614f18565b4311158015612ee657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015612f405750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f7857503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fd057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613071576001601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e260405160405180910390a25b601060009054906101000a900460ff16156132395761308e611bdd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561311557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561316d57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156132385743600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106131f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ea90615686565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132dc5750602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561338357600b54811115613326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331d90615718565b60405180910390fd5b600d546133328361181c565b8261333d9190614f18565b111561337e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337590615784565b60405180910390fd5b613521565b602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134265750602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561347557600b54811115613470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346790615816565b60405180910390fd5b613520565b602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661351f57600d546134d28361181c565b826134dd9190614f18565b111561351e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351590615784565b60405180910390fd5b5b5b5b5b5b600061352e3061181c565b90506000600c5482101590508080156135535750600e60029054906101000a900460ff165b801561356c5750600660149054906101000a900460ff16155b80156135c25750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136185750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561366e5750602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136b2576001600660146101000a81548160ff021916908315150217905550613696613e4e565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050602260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806137685750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561377257600090505b60008115613a5157602460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137d557506000601954115b156138d55761380260646137f46019548861420f90919063ffffffff16565b61422590919063ffffffff16565b9050601954601b54826138159190614bb5565b61381f9190614c3e565b601f60008282546138309190614f18565b92505081905550601954601c54826138489190614bb5565b6138529190614c3e565b602060008282546138639190614f18565b92505081905550601954601a548261387b9190614bb5565b6138859190614c3e565b601e60008282546138969190614f18565b92505081905550601954601d54826138ae9190614bb5565b6138b89190614c3e565b602160008282546138c99190614f18565b92505081905550613a2d565b602460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561393057506000601454115b15613a2c5761395d606461394f6014548861420f90919063ffffffff16565b61422590919063ffffffff16565b9050601454601654826139709190614bb5565b61397a9190614c3e565b601f600082825461398b9190614f18565b92505081905550601454601754826139a39190614bb5565b6139ad9190614c3e565b602060008282546139be9190614f18565b92505081905550601454601554826139d69190614bb5565b6139e09190614c3e565b601e60008282546139f19190614f18565b9250508190555060145460185482613a099190614bb5565b613a139190614c3e565b60216000828254613a249190614f18565b925050819055505b5b6000811115613a4257613a41873083613bcd565b5b8085613a4e9190615208565b94505b613a5c878787613bcd565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c3490615464565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ca4906154f6565b60405180910390fd5b613cb883838361423b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d35906158a8565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613dd19190614f18565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e359190614846565b60405180910390a3613e48848484614240565b50505050565b6000613e593061181c565b90506000602154602054601e54601f54613e739190614f18565b613e7d9190614f18565b613e879190614f18565b9050600080831480613e995750600082145b15613ea65750505061420d565b6014600c54613eb59190614bb5565b831115613ece576014600c54613ecb9190614bb5565b92505b6000600283601f5486613ee19190614bb5565b613eeb9190614c3e565b613ef59190614c3e565b90506000613f0c828661424590919063ffffffff16565b90506000479050613f1c8261425b565b6000613f31824761424590919063ffffffff16565b90506000613f5c87613f4e601e548561420f90919063ffffffff16565b61422590919063ffffffff16565b90506000613f8788613f796020548661420f90919063ffffffff16565b61422590919063ffffffff16565b90506000613fb289613fa46021548761420f90919063ffffffff16565b61422590919063ffffffff16565b9050600081838587613fc49190615208565b613fce9190615208565b613fd89190615208565b90506000601f819055506000601e8190555060006020819055506000602181905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051614040906158f9565b60006040518083038185875af1925050503d806000811461407d576040519150601f19603f3d011682016040523d82523d6000602084013e614082565b606091505b5050809950506000881180156140985750600081115b156140e5576140a78882614498565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618782601f546040516140dc9392919061590e565b60405180910390a15b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161412b906158f9565b60006040518083038185875af1925050503d8060008114614168576040519150601f19603f3d011682016040523d82523d6000602084013e61416d565b606091505b505080995050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516141b9906158f9565b60006040518083038185875af1925050503d80600081146141f6576040519150601f19603f3d011682016040523d82523d6000602084013e6141fb565b606091505b50508099505050505050505050505050505b565b6000818361421d9190614bb5565b905092915050565b600081836142339190614c3e565b905092915050565b505050565b505050565b600081836142539190615208565b905092915050565b6000600267ffffffffffffffff81111561427857614277615945565b5b6040519080825280602002602001820160405280156142a65781602001602082028036833780820191505090505b50905030816000815181106142be576142bd615124565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143879190615989565b8160018151811061439b5761439a615124565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614400307f000000000000000000000000000000000000000000000000000000000000000084612919565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614462959493929190615aaf565b600060405180830381600087803b15801561447c57600080fd5b505af1158015614490573d6000803e3d6000fd5b505050505050565b6144c3307f000000000000000000000000000000000000000000000000000000000000000084612919565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161454a96959493929190615b09565b60606040518083038185885af1158015614568573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061458d9190615b7f565b5050505050565b600080fd5b600080fd5b6000819050919050565b6145b18161459e565b81146145bc57600080fd5b50565b6000813590506145ce816145a8565b92915050565b6000602082840312156145ea576145e9614594565b5b60006145f8848285016145bf565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561463b578082015181840152602081019050614620565b8381111561464a576000848401525b50505050565b6000601f19601f8301169050919050565b600061466c82614601565b614676818561460c565b935061468681856020860161461d565b61468f81614650565b840191505092915050565b600060208201905081810360008301526146b48184614661565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006146e7826146bc565b9050919050565b6146f7816146dc565b811461470257600080fd5b50565b600081359050614714816146ee565b92915050565b6000806040838503121561473157614730614594565b5b600061473f85828601614705565b9250506020614750858286016145bf565b9150509250929050565b60008115159050919050565b61476f8161475a565b82525050565b600060208201905061478a6000830184614766565b92915050565b6000602082840312156147a6576147a5614594565b5b60006147b484828501614705565b91505092915050565b6000819050919050565b60006147e26147dd6147d8846146bc565b6147bd565b6146bc565b9050919050565b60006147f4826147c7565b9050919050565b6000614806826147e9565b9050919050565b614816816147fb565b82525050565b6000602082019050614831600083018461480d565b92915050565b6148408161459e565b82525050565b600060208201905061485b6000830184614837565b92915050565b60008060006060848603121561487a57614879614594565b5b600061488886828701614705565b935050602061489986828701614705565b92505060406148aa868287016145bf565b9150509250925092565b6148bd816146dc565b82525050565b60006020820190506148d860008301846148b4565b92915050565b600060ff82169050919050565b6148f4816148de565b82525050565b600060208201905061490f60008301846148eb565b92915050565b6000806000806080858703121561492f5761492e614594565b5b600061493d878288016145bf565b945050602061494e878288016145bf565b935050604061495f878288016145bf565b9250506060614970878288016145bf565b91505092959194509250565b6149858161475a565b811461499057600080fd5b50565b6000813590506149a28161497c565b92915050565b6000602082840312156149be576149bd614594565b5b60006149cc84828501614993565b91505092915050565b600080604083850312156149ec576149eb614594565b5b60006149fa85828601614705565b9250506020614a0b85828601614993565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112614a3a57614a39614a15565b5b8235905067ffffffffffffffff811115614a5757614a56614a1a565b5b602083019150836020820283011115614a7357614a72614a1f565b5b9250929050565b600080600060408486031215614a9357614a92614594565b5b600084013567ffffffffffffffff811115614ab157614ab0614599565b5b614abd86828701614a24565b93509350506020614ad086828701614993565b9150509250925092565b60008060408385031215614af157614af0614594565b5b6000614aff85828601614705565b9250506020614b1085828601614705565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b5060208361460c565b9150614b5b82614b1a565b602082019050919050565b60006020820190508181036000830152614b7f81614b43565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614bc08261459e565b9150614bcb8361459e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c0457614c03614b86565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c498261459e565b9150614c548361459e565b925082614c6457614c63614c0f565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614ccb60248361460c565b9150614cd682614c6f565b604082019050919050565b60006020820190508181036000830152614cfa81614cbe565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614d4857607f821691505b60208210811415614d5c57614d5b614d01565b5b50919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614dbe60358361460c565b9150614dc982614d62565b604082019050919050565b60006020820190508181036000830152614ded81614db1565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614e5060348361460c565b9150614e5b82614df4565b604082019050919050565b60006020820190508181036000830152614e7f81614e43565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614ee260288361460c565b9150614eed82614e86565b604082019050919050565b60006020820190508181036000830152614f1181614ed5565b9050919050565b6000614f238261459e565b9150614f2e8361459e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f6357614f62614b86565b5b828201905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614fca602f8361460c565b9150614fd582614f6e565b604082019050919050565b60006020820190508181036000830152614ff981614fbd565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061505c60398361460c565b915061506782615000565b604082019050919050565b6000602082019050818103600083015261508b8161504f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006150ee60258361460c565b91506150f982615092565b604082019050919050565b6000602082019050818103600083015261511d816150e1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061515e8261459e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561519157615190614b86565b5b600182019050919050565b7f546f6b656e206c61756e63686564000000000000000000000000000000000000600082015250565b60006151d2600e8361460c565b91506151dd8261519c565b602082019050919050565b60006020820190508181036000830152615201816151c5565b9050919050565b60006152138261459e565b915061521e8361459e565b92508282101561523157615230614b86565b5b828203905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061529860268361460c565b91506152a38261523c565b604082019050919050565b600060208201905081810360008301526152c78161528b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061532a60248361460c565b9150615335826152ce565b604082019050919050565b600060208201905081810360008301526153598161531d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006153bc60228361460c565b91506153c782615360565b604082019050919050565b600060208201905081810360008301526153eb816153af565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061544e60258361460c565b9150615459826153f2565b604082019050919050565b6000602082019050818103600083015261547d81615441565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006154e060238361460c565b91506154eb82615484565b604082019050919050565b6000602082019050818103600083015261550f816154d3565b9050919050565b7f536e6970657220626c6f636b6564000000000000000000000000000000000000600082015250565b600061554c600e8361460c565b915061555782615516565b602082019050919050565b6000602082019050818103600083015261557b8161553f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006155b860168361460c565b91506155c382615582565b602082019050919050565b600060208201905081810360008301526155e7816155ab565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061567060498361460c565b915061567b826155ee565b606082019050919050565b6000602082019050818103600083015261569f81615663565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061570260358361460c565b915061570d826156a6565b604082019050919050565b60006020820190508181036000830152615731816156f5565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061576e60138361460c565b915061577982615738565b602082019050919050565b6000602082019050818103600083015261579d81615761565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061580060368361460c565b915061580b826157a4565b604082019050919050565b6000602082019050818103600083015261582f816157f3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061589260268361460c565b915061589d82615836565b604082019050919050565b600060208201905081810360008301526158c181615885565b9050919050565b600081905092915050565b50565b60006158e36000836158c8565b91506158ee826158d3565b600082019050919050565b6000615904826158d6565b9150819050919050565b60006060820190506159236000830186614837565b6159306020830185614837565b61593d6040830184614837565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615983816146ee565b92915050565b60006020828403121561599f5761599e614594565b5b60006159ad84828501615974565b91505092915050565b6000819050919050565b60006159db6159d66159d1846159b6565b6147bd565b61459e565b9050919050565b6159eb816159c0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615a26816146dc565b82525050565b6000615a388383615a1d565b60208301905092915050565b6000602082019050919050565b6000615a5c826159f1565b615a6681856159fc565b9350615a7183615a0d565b8060005b83811015615aa2578151615a898882615a2c565b9750615a9483615a44565b925050600181019050615a75565b5085935050505092915050565b600060a082019050615ac46000830188614837565b615ad160208301876159e2565b8181036040830152615ae38186615a51565b9050615af260608301856148b4565b615aff6080830184614837565b9695505050505050565b600060c082019050615b1e60008301896148b4565b615b2b6020830188614837565b615b3860408301876159e2565b615b4560608301866159e2565b615b5260808301856148b4565b615b5f60a0830184614837565b979650505050505050565b600081519050615b79816145a8565b92915050565b600080600060608486031215615b9857615b97614594565b5b6000615ba686828701615b6a565b9350506020615bb786828701615b6a565b9250506040615bc886828701615b6a565b915050925092509256fea2646970667358221220ee09d0af2b5359ae0022d44756bf3cdbddde2eec782071f9cb6837f6e3a2f73f64736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061039b5760003560e01c80638da5cb5b116101dc578063c8c8ebe411610102578063e5962195116100a0578063f63743421161006f578063f637434214610db5578063f8b45b0514610de0578063fb002c9714610e0b578063fb80719b14610e36576103a2565b8063e596219514610cf9578063e884f26014610d36578063f11a24d314610d61578063f2fde38b14610d8c576103a2565b8063dcf5881e116100dc578063dcf5881e14610c3f578063dd62ed3e14610c68578063e14a93d614610ca5578063e2f4560514610cce576103a2565b8063c8c8ebe414610bc0578063d1f7389414610beb578063d85ba06314610c14576103a2565b8063a457c2d71161017a578063bbc0c74211610149578063bbc0c74214610b16578063c024666814610b41578063c0f17acd14610b6a578063c876d0b914610b95576103a2565b8063a457c2d714610a36578063a9059cbb14610a73578063ae303d0714610ab0578063b62496f514610ad9576103a2565b80639bd9bf5f116101b65780639bd9bf5f1461098a5780639c3b4fdc146109b55780639fccce32146109e0578063a0d82dc514610a0b576103a2565b80638da5cb5b1461090b57806395d89b41146109365780639a7a23d614610961576103a2565b80634a62bb65116102c15780636a486a8e1161025f578063715018a61161022e578063715018a614610879578063715b3230146108905780637571336a146108b9578063864327a7146108e2576103a2565b80636a486a8e146107bd5780636c8311ba146107e85780636ddd17131461081157806370a082311461083c576103a2565b8063534c09061161029b578063534c0906146107155780635a139dd4146107405780635a4222771461076b5780636a30fb9d14610794576103a2565b80634a62bb65146106825780634f77f6c0146106ad5780634fbee193146106d8576103a2565b80631c67d44111610339578063313ce56711610308578063313ce567146105c657806339509351146105f1578063464a58c81461062e57806349bd5a5e14610657576103a2565b80631c67d441146104f657806323b872dd1461053357806327c8f83514610570578063312394a01461059b576103a2565b806310d5de531161037557806310d5de53146104385780631694505e1461047557806318160ddd146104a05780631a8145bb146104cb576103a2565b806302197273146103a757806306fdde03146103d0578063095ea7b3146103fb576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103ce60048036038101906103c991906145d4565b610e61565b005b3480156103dc57600080fd5b506103e5610f70565b6040516103f2919061469a565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d919061471a565b611002565b60405161042f9190614775565b60405180910390f35b34801561044457600080fd5b5061045f600480360381019061045a9190614790565b611020565b60405161046c9190614775565b60405180910390f35b34801561048157600080fd5b5061048a611040565b604051610497919061481c565b60405180910390f35b3480156104ac57600080fd5b506104b5611064565b6040516104c29190614846565b60405180910390f35b3480156104d757600080fd5b506104e061106e565b6040516104ed9190614846565b60405180910390f35b34801561050257600080fd5b5061051d600480360381019061051891906145d4565b611074565b60405161052a9190614775565b60405180910390f35b34801561053f57600080fd5b5061055a60048036038101906105559190614861565b6111c9565b6040516105679190614775565b60405180910390f35b34801561057c57600080fd5b506105856112c1565b60405161059291906148c3565b60405180910390f35b3480156105a757600080fd5b506105b06112c7565b6040516105bd9190614846565b60405180910390f35b3480156105d257600080fd5b506105db6112cd565b6040516105e891906148fa565b60405180910390f35b3480156105fd57600080fd5b506106186004803603810190610613919061471a565b6112d6565b6040516106259190614775565b60405180910390f35b34801561063a57600080fd5b50610655600480360381019061065091906145d4565b611382565b005b34801561066357600080fd5b5061066c611491565b60405161067991906148c3565b60405180910390f35b34801561068e57600080fd5b506106976114b5565b6040516106a49190614775565b60405180910390f35b3480156106b957600080fd5b506106c26114c8565b6040516106cf9190614846565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa9190614790565b6114ce565b60405161070c9190614775565b60405180910390f35b34801561072157600080fd5b5061072a611524565b60405161073791906148c3565b60405180910390f35b34801561074c57600080fd5b5061075561154a565b6040516107629190614846565b60405180910390f35b34801561077757600080fd5b50610792600480360381019061078d9190614915565b611550565b005b3480156107a057600080fd5b506107bb60048036038101906107b69190614790565b61162e565b005b3480156107c957600080fd5b506107d261176a565b6040516107df9190614846565b60405180910390f35b3480156107f457600080fd5b5061080f600480360381019061080a91906149a8565b611770565b005b34801561081d57600080fd5b50610826611809565b6040516108339190614775565b60405180910390f35b34801561084857600080fd5b50610863600480360381019061085e9190614790565b61181c565b6040516108709190614846565b60405180910390f35b34801561088557600080fd5b5061088e611864565b005b34801561089c57600080fd5b506108b760048036038101906108b29190614915565b6118ec565b005b3480156108c557600080fd5b506108e060048036038101906108db91906149d5565b6119ca565b005b3480156108ee57600080fd5b5061090960048036038101906109049190614790565b611aa1565b005b34801561091757600080fd5b50610920611bdd565b60405161092d91906148c3565b60405180910390f35b34801561094257600080fd5b5061094b611c07565b604051610958919061469a565b60405180910390f35b34801561096d57600080fd5b50610988600480360381019061098391906149d5565b611c99565b005b34801561099657600080fd5b5061099f611db2565b6040516109ac9190614846565b60405180910390f35b3480156109c157600080fd5b506109ca611db8565b6040516109d79190614846565b60405180910390f35b3480156109ec57600080fd5b506109f5611dbe565b604051610a029190614846565b60405180910390f35b348015610a1757600080fd5b50610a20611dc4565b604051610a2d9190614846565b60405180910390f35b348015610a4257600080fd5b50610a5d6004803603810190610a58919061471a565b611dca565b604051610a6a9190614775565b60405180910390f35b348015610a7f57600080fd5b50610a9a6004803603810190610a95919061471a565b611eb5565b604051610aa79190614775565b60405180910390f35b348015610abc57600080fd5b50610ad76004803603810190610ad29190614a7a565b611ed3565b005b348015610ae557600080fd5b50610b006004803603810190610afb9190614790565b6120e2565b604051610b0d9190614775565b60405180910390f35b348015610b2257600080fd5b50610b2b612102565b604051610b389190614775565b60405180910390f35b348015610b4d57600080fd5b50610b686004803603810190610b6391906149d5565b612115565b005b348015610b7657600080fd5b50610b7f61223a565b604051610b8c9190614846565b60405180910390f35b348015610ba157600080fd5b50610baa612240565b604051610bb79190614775565b60405180910390f35b348015610bcc57600080fd5b50610bd5612253565b604051610be29190614846565b60405180910390f35b348015610bf757600080fd5b50610c126004803603810190610c0d9190614790565b612259565b005b348015610c2057600080fd5b50610c29612395565b604051610c369190614846565b60405180910390f35b348015610c4b57600080fd5b50610c666004803603810190610c619190614790565b61239b565b005b348015610c7457600080fd5b50610c8f6004803603810190610c8a9190614ada565b6124d7565b604051610c9c9190614846565b60405180910390f35b348015610cb157600080fd5b50610ccc6004803603810190610cc79190614915565b61255e565b005b348015610cda57600080fd5b50610ce361269b565b604051610cf09190614846565b60405180910390f35b348015610d0557600080fd5b50610d206004803603810190610d1b9190614790565b6126a1565b604051610d2d9190614775565b60405180910390f35b348015610d4257600080fd5b50610d4b6126c1565b604051610d589190614775565b60405180910390f35b348015610d6d57600080fd5b50610d76612761565b604051610d839190614846565b60405180910390f35b348015610d9857600080fd5b50610db36004803603810190610dae9190614790565b612767565b005b348015610dc157600080fd5b50610dca61285f565b604051610dd79190614846565b60405180910390f35b348015610dec57600080fd5b50610df5612865565b604051610e029190614846565b60405180910390f35b348015610e1757600080fd5b50610e2061286b565b604051610e2d9190614846565b60405180910390f35b348015610e4257600080fd5b50610e4b612871565b604051610e589190614775565b60405180910390f35b610e69612911565b73ffffffffffffffffffffffffffffffffffffffff16610e87611bdd565b73ffffffffffffffffffffffffffffffffffffffff1614610edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed490614b66565b60405180910390fd5b670de0b6b3a76400006103e86005610ef3611064565b610efd9190614bb5565b610f079190614c3e565b610f119190614c3e565b811015610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a90614ce1565b60405180910390fd5b670de0b6b3a764000081610f679190614bb5565b600d8190555050565b606060038054610f7f90614d30565b80601f0160208091040260200160405190810160405280929190818152602001828054610fab90614d30565b8015610ff85780601f10610fcd57610100808354040283529160200191610ff8565b820191906000526020600020905b815481529060010190602001808311610fdb57829003601f168201915b5050505050905090565b600061101661100f612911565b8484612919565b6001905092915050565b60236020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b601f5481565b600061107e612911565b73ffffffffffffffffffffffffffffffffffffffff1661109c611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e990614b66565b60405180910390fd5b620186a06001611100611064565b61110a9190614bb5565b6111149190614c3e565b821015611156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114d90614dd4565b60405180910390fd5b6103e86005611163611064565b61116d9190614bb5565b6111779190614c3e565b8211156111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b090614e66565b60405180910390fd5b81600c8190555060019050919050565b60006111d6848484612ae4565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611221612911565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156112a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129890614ef8565b60405180910390fd5b6112b5856112ad612911565b858403612919565b60019150509392505050565b61dead81565b601a5481565b60006012905090565b60006113786112e3612911565b8484600160006112f1612911565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113739190614f18565b612919565b6001905092915050565b61138a612911565b73ffffffffffffffffffffffffffffffffffffffff166113a8611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590614b66565b60405180910390fd5b670de0b6b3a76400006103e86001611414611064565b61141e9190614bb5565b6114289190614c3e565b6114329190614c3e565b811015611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b90614fe0565b60405180910390fd5b670de0b6b3a7640000816114889190614bb5565b600b8190555050565b7f000000000000000000000000eeb64a92f405fe397859f223e3689f3660e1643781565b600e60009054906101000a900460ff1681565b601d5481565b6000602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b611558612911565b73ffffffffffffffffffffffffffffffffffffffff16611576611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c390614b66565b60405180910390fd5b83601a8190555082601b8190555081601c8190555080601d81905550601d54601c54601b54601a546115fe9190614f18565b6116089190614f18565b6116129190614f18565b6019819055506023601954111561162857600080fd5b50505050565b611636612911565b73ffffffffffffffffffffffffffffffffffffffff16611654611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190614b66565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b611778612911565b73ffffffffffffffffffffffffffffffffffffffff16611796611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146117ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e390614b66565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61186c612911565b73ffffffffffffffffffffffffffffffffffffffff1661188a611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d790614b66565b60405180910390fd5b6118ea6000613a66565b565b6118f4612911565b73ffffffffffffffffffffffffffffffffffffffff16611912611bdd565b73ffffffffffffffffffffffffffffffffffffffff1614611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f90614b66565b60405180910390fd5b8360158190555082601681905550816017819055508060188190555060185460175460165460155461199a9190614f18565b6119a49190614f18565b6119ae9190614f18565b601481905550602360145411156119c457600080fd5b50505050565b6119d2612911565b73ffffffffffffffffffffffffffffffffffffffff166119f0611bdd565b73ffffffffffffffffffffffffffffffffffffffff1614611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3d90614b66565b60405180910390fd5b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611aa9612911565b73ffffffffffffffffffffffffffffffffffffffff16611ac7611bdd565b73ffffffffffffffffffffffffffffffffffffffff1614611b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1490614b66565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f0308c4544315dbf7c7c2fdbcdf1dd8a57df22fddf234ee3c941eefec5c2287ba60405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611c1690614d30565b80601f0160208091040260200160405190810160405280929190818152602001828054611c4290614d30565b8015611c8f5780601f10611c6457610100808354040283529160200191611c8f565b820191906000526020600020905b815481529060010190602001808311611c7257829003601f168201915b5050505050905090565b611ca1612911565b73ffffffffffffffffffffffffffffffffffffffff16611cbf611bdd565b73ffffffffffffffffffffffffffffffffffffffff1614611d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0c90614b66565b60405180910390fd5b7f000000000000000000000000eeb64a92f405fe397859f223e3689f3660e1643773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9b90615072565b60405180910390fd5b611dae8282613b2c565b5050565b601e5481565b60175481565b60205481565b601c5481565b60008060016000611dd9612911565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d90615104565b60405180910390fd5b611eaa611ea1612911565b85858403612919565b600191505092915050565b6000611ec9611ec2612911565b8484612ae4565b6001905092915050565b611edb612911565b73ffffffffffffffffffffffffffffffffffffffff16611ef9611bdd565b73ffffffffffffffffffffffffffffffffffffffff1614611f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4690614b66565b60405180910390fd5b60005b838390508110156120dc576000848483818110611f7257611f71615124565b5b9050602002016020810190611f879190614790565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156120135750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561206b57507f000000000000000000000000eeb64a92f405fe397859f223e3689f3660e1643773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156120c85782601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5080806120d490615153565b915050611f52565b50505050565b60246020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b61211d612911565b73ffffffffffffffffffffffffffffffffffffffff1661213b611bdd565b73ffffffffffffffffffffffffffffffffffffffff1614612191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218890614b66565b60405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161222e9190614775565b60405180910390a25050565b60155481565b601060009054906101000a900460ff1681565b600b5481565b612261612911565b73ffffffffffffffffffffffffffffffffffffffff1661227f611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc90614b66565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fceaa6f1f2115d0f5eb9934026e3a197b010d8bc98f70fe27bbfb441d6fe4a69c60405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b6123a3612911565b73ffffffffffffffffffffffffffffffffffffffff166123c1611bdd565b73ffffffffffffffffffffffffffffffffffffffff1614612417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240e90614b66565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fe1bb4a3e2b2b99353f84d73df9e136cfe17627ed07083a649101dfa6bde8459c60405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612566612911565b73ffffffffffffffffffffffffffffffffffffffff16612584611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146125da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d190614b66565b60405180910390fd5b600e60019054906101000a900460ff161561262a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612621906151e8565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550436011819055506001600e60026101000a81548160ff0219169083151502179055506000818385876126779190614f18565b6126819190614f18565b61268b9190615208565b9050806012819055505050505050565b600c5481565b60136020528060005260406000206000915054906101000a900460ff1681565b60006126cb612911565b73ffffffffffffffffffffffffffffffffffffffff166126e9611bdd565b73ffffffffffffffffffffffffffffffffffffffff161461273f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273690614b66565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b60165481565b61276f612911565b73ffffffffffffffffffffffffffffffffffffffff1661278d611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146127e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127da90614b66565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284a906152ae565b60405180910390fd5b61285c81613a66565b50565b601b5481565b600d5481565b60215481565b600061287b612911565b73ffffffffffffffffffffffffffffffffffffffff16612899611bdd565b73ffffffffffffffffffffffffffffffffffffffff16146128ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e690614b66565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298090615340565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f0906153d2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ad79190614846565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4b90615464565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbb906154f6565b60405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4890615562565b60405180910390fd5b6000811415612c6b57612c6683836000613bcd565b613a61565b600e60009054906101000a900460ff161561352357612c88611bdd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612cf65750612cc6611bdd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d2f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d69575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d825750600660149054906101000a900460ff16155b1561352257600e60019054906101000a900460ff16612e7c57602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e3c5750602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e72906155ce565b60405180910390fd5b5b601254601154612e8c9190614f18565b4311158015612ee657507f000000000000000000000000eeb64a92f405fe397859f223e3689f3660e1643773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015612f405750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f7857503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fd057507f000000000000000000000000eeb64a92f405fe397859f223e3689f3660e1643773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613071576001601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e260405160405180910390a25b601060009054906101000a900460ff16156132395761308e611bdd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561311557507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561316d57507f000000000000000000000000eeb64a92f405fe397859f223e3689f3660e1643773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156132385743600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106131f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ea90615686565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132dc5750602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561338357600b54811115613326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331d90615718565b60405180910390fd5b600d546133328361181c565b8261333d9190614f18565b111561337e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337590615784565b60405180910390fd5b613521565b602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134265750602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561347557600b54811115613470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346790615816565b60405180910390fd5b613520565b602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661351f57600d546134d28361181c565b826134dd9190614f18565b111561351e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351590615784565b60405180910390fd5b5b5b5b5b5b600061352e3061181c565b90506000600c5482101590508080156135535750600e60029054906101000a900460ff165b801561356c5750600660149054906101000a900460ff16155b80156135c25750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136185750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561366e5750602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136b2576001600660146101000a81548160ff021916908315150217905550613696613e4e565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050602260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806137685750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561377257600090505b60008115613a5157602460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137d557506000601954115b156138d55761380260646137f46019548861420f90919063ffffffff16565b61422590919063ffffffff16565b9050601954601b54826138159190614bb5565b61381f9190614c3e565b601f60008282546138309190614f18565b92505081905550601954601c54826138489190614bb5565b6138529190614c3e565b602060008282546138639190614f18565b92505081905550601954601a548261387b9190614bb5565b6138859190614c3e565b601e60008282546138969190614f18565b92505081905550601954601d54826138ae9190614bb5565b6138b89190614c3e565b602160008282546138c99190614f18565b92505081905550613a2d565b602460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561393057506000601454115b15613a2c5761395d606461394f6014548861420f90919063ffffffff16565b61422590919063ffffffff16565b9050601454601654826139709190614bb5565b61397a9190614c3e565b601f600082825461398b9190614f18565b92505081905550601454601754826139a39190614bb5565b6139ad9190614c3e565b602060008282546139be9190614f18565b92505081905550601454601554826139d69190614bb5565b6139e09190614c3e565b601e60008282546139f19190614f18565b9250508190555060145460185482613a099190614bb5565b613a139190614c3e565b60216000828254613a249190614f18565b925050819055505b5b6000811115613a4257613a41873083613bcd565b5b8085613a4e9190615208565b94505b613a5c878787613bcd565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c3490615464565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ca4906154f6565b60405180910390fd5b613cb883838361423b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d35906158a8565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613dd19190614f18565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e359190614846565b60405180910390a3613e48848484614240565b50505050565b6000613e593061181c565b90506000602154602054601e54601f54613e739190614f18565b613e7d9190614f18565b613e879190614f18565b9050600080831480613e995750600082145b15613ea65750505061420d565b6014600c54613eb59190614bb5565b831115613ece576014600c54613ecb9190614bb5565b92505b6000600283601f5486613ee19190614bb5565b613eeb9190614c3e565b613ef59190614c3e565b90506000613f0c828661424590919063ffffffff16565b90506000479050613f1c8261425b565b6000613f31824761424590919063ffffffff16565b90506000613f5c87613f4e601e548561420f90919063ffffffff16565b61422590919063ffffffff16565b90506000613f8788613f796020548661420f90919063ffffffff16565b61422590919063ffffffff16565b90506000613fb289613fa46021548761420f90919063ffffffff16565b61422590919063ffffffff16565b9050600081838587613fc49190615208565b613fce9190615208565b613fd89190615208565b90506000601f819055506000601e8190555060006020819055506000602181905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051614040906158f9565b60006040518083038185875af1925050503d806000811461407d576040519150601f19603f3d011682016040523d82523d6000602084013e614082565b606091505b5050809950506000881180156140985750600081115b156140e5576140a78882614498565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618782601f546040516140dc9392919061590e565b60405180910390a15b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161412b906158f9565b60006040518083038185875af1925050503d8060008114614168576040519150601f19603f3d011682016040523d82523d6000602084013e61416d565b606091505b505080995050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516141b9906158f9565b60006040518083038185875af1925050503d80600081146141f6576040519150601f19603f3d011682016040523d82523d6000602084013e6141fb565b606091505b50508099505050505050505050505050505b565b6000818361421d9190614bb5565b905092915050565b600081836142339190614c3e565b905092915050565b505050565b505050565b600081836142539190615208565b905092915050565b6000600267ffffffffffffffff81111561427857614277615945565b5b6040519080825280602002602001820160405280156142a65781602001602082028036833780820191505090505b50905030816000815181106142be576142bd615124565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143879190615989565b8160018151811061439b5761439a615124565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614400307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612919565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614462959493929190615aaf565b600060405180830381600087803b15801561447c57600080fd5b505af1158015614490573d6000803e3d6000fd5b505050505050565b6144c3307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612919565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161454a96959493929190615b09565b60606040518083038185885af1158015614568573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061458d9190615b7f565b5050505050565b600080fd5b600080fd5b6000819050919050565b6145b18161459e565b81146145bc57600080fd5b50565b6000813590506145ce816145a8565b92915050565b6000602082840312156145ea576145e9614594565b5b60006145f8848285016145bf565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561463b578082015181840152602081019050614620565b8381111561464a576000848401525b50505050565b6000601f19601f8301169050919050565b600061466c82614601565b614676818561460c565b935061468681856020860161461d565b61468f81614650565b840191505092915050565b600060208201905081810360008301526146b48184614661565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006146e7826146bc565b9050919050565b6146f7816146dc565b811461470257600080fd5b50565b600081359050614714816146ee565b92915050565b6000806040838503121561473157614730614594565b5b600061473f85828601614705565b9250506020614750858286016145bf565b9150509250929050565b60008115159050919050565b61476f8161475a565b82525050565b600060208201905061478a6000830184614766565b92915050565b6000602082840312156147a6576147a5614594565b5b60006147b484828501614705565b91505092915050565b6000819050919050565b60006147e26147dd6147d8846146bc565b6147bd565b6146bc565b9050919050565b60006147f4826147c7565b9050919050565b6000614806826147e9565b9050919050565b614816816147fb565b82525050565b6000602082019050614831600083018461480d565b92915050565b6148408161459e565b82525050565b600060208201905061485b6000830184614837565b92915050565b60008060006060848603121561487a57614879614594565b5b600061488886828701614705565b935050602061489986828701614705565b92505060406148aa868287016145bf565b9150509250925092565b6148bd816146dc565b82525050565b60006020820190506148d860008301846148b4565b92915050565b600060ff82169050919050565b6148f4816148de565b82525050565b600060208201905061490f60008301846148eb565b92915050565b6000806000806080858703121561492f5761492e614594565b5b600061493d878288016145bf565b945050602061494e878288016145bf565b935050604061495f878288016145bf565b9250506060614970878288016145bf565b91505092959194509250565b6149858161475a565b811461499057600080fd5b50565b6000813590506149a28161497c565b92915050565b6000602082840312156149be576149bd614594565b5b60006149cc84828501614993565b91505092915050565b600080604083850312156149ec576149eb614594565b5b60006149fa85828601614705565b9250506020614a0b85828601614993565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112614a3a57614a39614a15565b5b8235905067ffffffffffffffff811115614a5757614a56614a1a565b5b602083019150836020820283011115614a7357614a72614a1f565b5b9250929050565b600080600060408486031215614a9357614a92614594565b5b600084013567ffffffffffffffff811115614ab157614ab0614599565b5b614abd86828701614a24565b93509350506020614ad086828701614993565b9150509250925092565b60008060408385031215614af157614af0614594565b5b6000614aff85828601614705565b9250506020614b1085828601614705565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b5060208361460c565b9150614b5b82614b1a565b602082019050919050565b60006020820190508181036000830152614b7f81614b43565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614bc08261459e565b9150614bcb8361459e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c0457614c03614b86565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c498261459e565b9150614c548361459e565b925082614c6457614c63614c0f565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614ccb60248361460c565b9150614cd682614c6f565b604082019050919050565b60006020820190508181036000830152614cfa81614cbe565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614d4857607f821691505b60208210811415614d5c57614d5b614d01565b5b50919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614dbe60358361460c565b9150614dc982614d62565b604082019050919050565b60006020820190508181036000830152614ded81614db1565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614e5060348361460c565b9150614e5b82614df4565b604082019050919050565b60006020820190508181036000830152614e7f81614e43565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614ee260288361460c565b9150614eed82614e86565b604082019050919050565b60006020820190508181036000830152614f1181614ed5565b9050919050565b6000614f238261459e565b9150614f2e8361459e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f6357614f62614b86565b5b828201905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614fca602f8361460c565b9150614fd582614f6e565b604082019050919050565b60006020820190508181036000830152614ff981614fbd565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061505c60398361460c565b915061506782615000565b604082019050919050565b6000602082019050818103600083015261508b8161504f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006150ee60258361460c565b91506150f982615092565b604082019050919050565b6000602082019050818103600083015261511d816150e1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061515e8261459e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561519157615190614b86565b5b600182019050919050565b7f546f6b656e206c61756e63686564000000000000000000000000000000000000600082015250565b60006151d2600e8361460c565b91506151dd8261519c565b602082019050919050565b60006020820190508181036000830152615201816151c5565b9050919050565b60006152138261459e565b915061521e8361459e565b92508282101561523157615230614b86565b5b828203905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061529860268361460c565b91506152a38261523c565b604082019050919050565b600060208201905081810360008301526152c78161528b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061532a60248361460c565b9150615335826152ce565b604082019050919050565b600060208201905081810360008301526153598161531d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006153bc60228361460c565b91506153c782615360565b604082019050919050565b600060208201905081810360008301526153eb816153af565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061544e60258361460c565b9150615459826153f2565b604082019050919050565b6000602082019050818103600083015261547d81615441565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006154e060238361460c565b91506154eb82615484565b604082019050919050565b6000602082019050818103600083015261550f816154d3565b9050919050565b7f536e6970657220626c6f636b6564000000000000000000000000000000000000600082015250565b600061554c600e8361460c565b915061555782615516565b602082019050919050565b6000602082019050818103600083015261557b8161553f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006155b860168361460c565b91506155c382615582565b602082019050919050565b600060208201905081810360008301526155e7816155ab565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061567060498361460c565b915061567b826155ee565b606082019050919050565b6000602082019050818103600083015261569f81615663565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061570260358361460c565b915061570d826156a6565b604082019050919050565b60006020820190508181036000830152615731816156f5565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061576e60138361460c565b915061577982615738565b602082019050919050565b6000602082019050818103600083015261579d81615761565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061580060368361460c565b915061580b826157a4565b604082019050919050565b6000602082019050818103600083015261582f816157f3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061589260268361460c565b915061589d82615836565b604082019050919050565b600060208201905081810360008301526158c181615885565b9050919050565b600081905092915050565b50565b60006158e36000836158c8565b91506158ee826158d3565b600082019050919050565b6000615904826158d6565b9150819050919050565b60006060820190506159236000830186614837565b6159306020830185614837565b61593d6040830184614837565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615983816146ee565b92915050565b60006020828403121561599f5761599e614594565b5b60006159ad84828501615974565b91505092915050565b6000819050919050565b60006159db6159d66159d1846159b6565b6147bd565b61459e565b9050919050565b6159eb816159c0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615a26816146dc565b82525050565b6000615a388383615a1d565b60208301905092915050565b6000602082019050919050565b6000615a5c826159f1565b615a6681856159fc565b9350615a7183615a0d565b8060005b83811015615aa2578151615a898882615a2c565b9750615a9483615a44565b925050600181019050615a75565b5085935050505092915050565b600060a082019050615ac46000830188614837565b615ad160208301876159e2565b8181036040830152615ae38186615a51565b9050615af260608301856148b4565b615aff6080830184614837565b9695505050505050565b600060c082019050615b1e60008301896148b4565b615b2b6020830188614837565b615b3860408301876159e2565b615b4560608301866159e2565b615b5260808301856148b4565b615b5f60a0830184614837565b979650505050505050565b600081519050615b79816145a8565b92915050565b600080600060608486031215615b9857615b97614594565b5b6000615ba686828701615b6a565b9350506020615bb786828701615b6a565b9250506040615bc886828701615b6a565b915050925092509256fea2646970667358221220ee09d0af2b5359ae0022d44756bf3cdbddde2eec782071f9cb6837f6e3a2f73f64736f6c634300080a0033

Deployed Bytecode Sourcemap

15192:18329:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21721:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2889:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3803:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16815:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15267:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3210:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16639:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20933:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3980:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15370:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16460:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3109:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4480:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21438:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15325:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15844:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16563:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24686:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15430:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16385:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22810:458;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24155:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16425:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22248:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15924:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3326:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1011:103;;;;;;;;;;;;;:::i;:::-;;22356:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21985:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24512:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;788:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2997:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23466:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16604:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16354:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16679:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16531:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4703:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3461:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30684:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16887:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15884:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23276:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16285:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16090:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15729:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23974:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16251:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24320:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3644:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20225:403;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15771:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16203:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20785:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16317:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1122:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16493:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15811:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16713:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20642:129;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21721:256;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21861:4:::1;21853;21848:1;21832:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21831:26;;;;:::i;:::-;21830:35;;;;:::i;:::-;21820:6;:45;;21798:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;21962:6;21952;:17;;;;:::i;:::-;21940:9;:29;;;;21721:256:::0;:::o;2889:100::-;2943:13;2976:5;2969:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2889:100;:::o;3803:169::-;3886:4;3903:39;3912:12;:10;:12::i;:::-;3926:7;3935:6;3903:8;:39::i;:::-;3960:4;3953:11;;3803:169;;;;:::o;16815:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15267:51::-;;;:::o;3210:108::-;3271:7;3298:12;;3291:19;;3210:108;:::o;16639:33::-;;;;:::o;20933:497::-;21041:4;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21120:6:::1;21115:1;21099:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21098:28;;;;:::i;:::-;21085:9;:41;;21063:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;21275:4;21270:1;21254:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21253:26;;;;:::i;:::-;21240:9;:39;;21218:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;21391:9;21370:18;:30;;;;21418:4;21411:11;;20933:497:::0;;;:::o;3980:492::-;4120:4;4137:36;4147:6;4155:9;4166:6;4137:9;:36::i;:::-;4186:24;4213:11;:19;4225:6;4213:19;;;;;;;;;;;;;;;:33;4233:12;:10;:12::i;:::-;4213:33;;;;;;;;;;;;;;;;4186:60;;4285:6;4265:16;:26;;4257:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4372:57;4381:6;4389:12;:10;:12::i;:::-;4422:6;4403:16;:25;4372:8;:57::i;:::-;4460:4;4453:11;;;3980:492;;;;;:::o;15370:53::-;15416:6;15370:53;:::o;16460:26::-;;;;:::o;3109:93::-;3167:5;3192:2;3185:9;;3109:93;:::o;4480:215::-;4568:4;4585:80;4594:12;:10;:12::i;:::-;4608:7;4654:10;4617:11;:25;4629:12;:10;:12::i;:::-;4617:25;;;;;;;;;;;;;;;:34;4643:7;4617:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4585:8;:80::i;:::-;4683:4;4676:11;;4480:215;;;;:::o;21438:275::-;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21575:4:::1;21567;21562:1;21546:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21545:26;;;;:::i;:::-;21544:35;;;;:::i;:::-;21534:6;:45;;21512:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;21698:6;21688;:17;;;;:::i;:::-;21665:20;:40;;;;21438:275:::0;:::o;15325:38::-;;;:::o;15844:33::-;;;;;;;;;;;;;:::o;16563:32::-;;;;:::o;24686:126::-;24752:4;24776:19;:28;24796:7;24776:28;;;;;;;;;;;;;;;;;;;;;;;;;24769:35;;24686:126;;;:::o;15430:68::-;;;;;;;;;;;;;:::o;16385:31::-;;;;:::o;22810:458::-;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23003:8:::1;22989:11;:22;;;;23041:13;23022:16;:32;;;;23078:7;23065:10;:20;;;;23116:14;23096:17;:34;;;;23203:17;;23190:10;;23171:16;;23157:11;;:30;;;;:::i;:::-;:43;;;;:::i;:::-;:63;;;;:::i;:::-;23141:13;:79;;;;23256:2;23239:13;;:19;;23231:28;;;::::0;::::1;;22810:458:::0;;;;:::o;24155:157::-;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24262:9:::1;;;;;;;;;;;24234:38;;24251:9;24234:38;;;;;;;;;;;;24295:9;24283;;:21;;;;;;;;;;;;;;;;;;24155:157:::0;:::o;16425:28::-;;;;:::o;22248:100::-;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22333:7:::1;22319:11;;:21;;;;;;;;;;;;;;;;;;22248:100:::0;:::o;15924:31::-;;;;;;;;;;;;;:::o;3326:127::-;3400:7;3427:9;:18;3437:7;3427:18;;;;;;;;;;;;;;;;3420:25;;3326:127;;;:::o;1011:103::-;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1076:30:::1;1103:1;1076:18;:30::i;:::-;1011:103::o:0;22356:446::-;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22547:8:::1;22534:10;:21;;;;22584:13;22566:15;:31;;;;22620:7;22608:9;:19;;;;22657:14;22638:16;:33;;;;22740:16;;22728:9;;22710:15;;22697:10;;:28;;;;:::i;:::-;:40;;;;:::i;:::-;:59;;;;:::i;:::-;22682:12;:74;;;;22791:2;22775:12;;:18;;22767:27;;;::::0;::::1;;22356:446:::0;;;;:::o;21985:167::-;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22140:4:::1;22098:31;:39;22130:6;22098:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;21985:167:::0;;:::o;24512:166::-;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24625:9:::1;;;;;;;;;;;24594:41;;24611:12;24594:41;;;;;;;;;;;;24658:12;24646:9;;:24;;;;;;;;;;;;;;;;;;24512:166:::0;:::o;788:87::-;834:7;861:6;;;;;;;;;;;854:13;;788:87;:::o;2997:104::-;3053:13;3086:7;3079:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2997:104;:::o;23466:304::-;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23610:13:::1;23602:21;;:4;:21;;;;23580:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;23721:41;23750:4;23756:5;23721:28;:41::i;:::-;23466:304:::0;;:::o;16604:28::-;;;;:::o;16354:24::-;;;;:::o;16679:27::-;;;;:::o;16531:25::-;;;;:::o;4703:413::-;4796:4;4813:24;4840:11;:25;4852:12;:10;:12::i;:::-;4840:25;;;;;;;;;;;;;;;:34;4866:7;4840:34;;;;;;;;;;;;;;;;4813:61;;4913:15;4893:16;:35;;4885:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5006:67;5015:12;:10;:12::i;:::-;5029:7;5057:15;5038:16;:34;5006:8;:67::i;:::-;5104:4;5097:11;;;4703:413;;;;:::o;3461:175::-;3547:4;3564:42;3574:12;:10;:12::i;:::-;3588:9;3599:6;3564:9;:42::i;:::-;3624:4;3617:11;;3461:175;;;;:::o;30684:385::-;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30785:9:::1;30781:281;30801:8;;:15;;30799:1;:17;30781:281;;;30836:15;30854:8;;30863:1;30854:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30836:29;;30902:4;30883:24;;:7;:24;;;;:64;;;;;30939:8;;;;;;;;;;;30928:19;;:7;:19;;;;30883:64;:118;;;;;30987:13;30968:33;;:7;:33;;;;30883:118;30880:170;;;31039:11;31020:7;:16;31028:7;31020:16;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;30880:170;30821:241;30817:3;;;;;:::i;:::-;;;;30781:281;;;;30684:385:::0;;;:::o;16887:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15884:33::-;;;;;;;;;;;;;:::o;23276:182::-;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23392:8:::1;23361:19;:28;23381:7;23361:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23432:7;23416:34;;;23441:8;23416:34;;;;;;:::i;:::-;;;;;;;;23276:182:::0;;:::o;16285:25::-;;;;:::o;16090:39::-;;;;;;;;;;;;;:::o;15729:35::-;;;;:::o;23974:173::-;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24091:10:::1;;;;;;;;;;;24058:44;;24076:13;24058:44;;;;;;;;;;;;24126:13;24113:10;;:26;;;;;;;;;;;;;;;;;;23974:173:::0;:::o;16251:27::-;;;;:::o;24320:184::-;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24440:16:::1;;;;;;;;;;;24405:52;;24429:9;24405:52;;;;;;;;;;;;24487:9;24468:16;;:28;;;;;;;;;;;;;;;;;;24320:184:::0;:::o;3644:151::-;3733:7;3760:11;:18;3772:5;3760:18;;;;;;;;;;;;;;;:27;3779:7;3760:27;;;;;;;;;;;;;;;;3753:34;;3644:151;;;;:::o;20225:403::-;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20371:13:::1;;;;;;;;;;;20370:14;20362:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;20430:4;20414:13;;:20;;;;;;;;;;;;;;;;;;20459:12;20445:11;:26;;;;20496:4;20482:11;;:18;;;;;;;;;;;;;;;;;;20511:16;20574:11;20559;20545;20531;:25;;;;:::i;:::-;:39;;;;:::i;:::-;20530:55;;;;:::i;:::-;20511:74;;20609:11;20596:10;:24;;;;20351:277;20225:403:::0;;;;:::o;15771:33::-;;;;:::o;16203:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;20785:135::-;20845:4;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20885:5:::1;20862:20;;:28;;;;;;;;;;;;;;;;;;20908:4;20901:11;;20785:135:::0;:::o;16317:30::-;;;;:::o;1122:201::-;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1231:1:::1;1211:22;;:8;:22;;;;1203:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1287:28;1306:8;1287:18;:28::i;:::-;1122:201:::0;:::o;16493:31::-;;;;:::o;15811:24::-;;;;:::o;16713:34::-;;;;:::o;20642:129::-;20702:4;934:12;:10;:12::i;:::-;923:23;;:7;:5;:7::i;:::-;:23;;;915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20736:5:::1;20719:14;;:22;;;;;;;;;;;;;;;;;;20759:4;20752:11;;20642:129:::0;:::o;334:98::-;387:7;414:10;407:17;;334:98;:::o;6871:380::-;7024:1;7007:19;;:5;:19;;;;6999:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7105:1;7086:21;;:7;:21;;;;7078:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7189:6;7159:11;:18;7171:5;7159:18;;;;;;;;;;;;;;;:27;7178:7;7159:27;;;;;;;;;;;;;;;:36;;;;7227:7;7211:32;;7220:5;7211:32;;;7236:6;7211:32;;;;;;:::i;:::-;;;;;;;;6871:380;;;:::o;24870:5209::-;25018:1;25002:18;;:4;:18;;;;24994:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25095:1;25081:16;;:2;:16;;;;25073:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25157:7;:13;25165:4;25157:13;;;;;;;;;;;;;;;;;;;;;;;;;25156:14;25148:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;25216:1;25206:6;:11;25202:93;;;25234:28;25250:4;25256:2;25260:1;25234:15;:28::i;:::-;25277:7;;25202:93;25311:14;;;;;;;;;;;25307:2781;;;25372:7;:5;:7::i;:::-;25364:15;;:4;:15;;;;:49;;;;;25406:7;:5;:7::i;:::-;25400:13;;:2;:13;;;;25364:49;:86;;;;;25448:1;25434:16;;:2;:16;;;;25364:86;:128;;;;;25485:6;25471:21;;:2;:21;;;;25364:128;:158;;;;;25514:8;;;;;;;;;;;25513:9;25364:158;25342:2735;;;25562:13;;;;;;;;;;;25557:223;;25634:19;:25;25654:4;25634:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25663:19;:23;25683:2;25663:23;;;;;;;;;;;;;;;;;;;;;;;;;25634:52;25600:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;25557:223;25833:10;;25819:11;;:24;;;;:::i;:::-;25803:12;:40;;:74;;;;;25863:13;25847:30;;:4;:30;;;25803:74;:111;;;;;25906:8;;;;;;;;;;;25900:14;;:2;:14;;;;25803:111;:134;;;;;25932:4;25918:19;;:2;:19;;;;25803:134;:166;;;;;25955:13;25941:28;;:2;:28;;;;25803:166;25800:274;;;26007:4;25993:7;:11;26001:2;25993:11;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;26051:2;26039:15;;;;;;;;;;;;25800:274;26230:20;;;;;;;;;;;26226:641;;;26311:7;:5;:7::i;:::-;26305:13;;:2;:13;;;;:72;;;;;26361:15;26347:30;;:2;:30;;;;26305:72;:129;;;;;26420:13;26406:28;;:2;:28;;;;26305:129;26275:573;;;26598:12;26523:28;:39;26552:9;26523:39;;;;;;;;;;;;;;;;:87;26485:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;26812:12;26770:28;:39;26799:9;26770:39;;;;;;;;;;;;;;;:54;;;;26275:573;26226:641;26941:25;:31;26967:4;26941:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;26998:31;:35;27030:2;26998:35;;;;;;;;;;;;;;;;;;;;;;;;;26997:36;26941:92;26915:1147;;;27120:20;;27110:6;:30;;27076:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;27328:9;;27311:13;27321:2;27311:9;:13::i;:::-;27302:6;:22;;;;:::i;:::-;:35;;27268:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;26915:1147;;;27506:25;:29;27532:2;27506:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;27561:31;:37;27593:4;27561:37;;;;;;;;;;;;;;;;;;;;;;;;;27560:38;27506:92;27480:582;;;27685:20;;27675:6;:30;;27641:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;27480:582;;;27842:31;:35;27874:2;27842:35;;;;;;;;;;;;;;;;;;;;;;;;;27837:225;;27962:9;;27945:13;27955:2;27945:9;:13::i;:::-;27936:6;:22;;;;:::i;:::-;:35;;27902:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;27837:225;27480:582;26915:1147;25342:2735;25307:2781;28100:28;28131:24;28149:4;28131:9;:24::i;:::-;28100:55;;28168:12;28207:18;;28183:20;:42;;28168:57;;28256:7;:35;;;;;28280:11;;;;;;;;;;;28256:35;:61;;;;;28309:8;;;;;;;;;;;28308:9;28256:61;:110;;;;;28335:25;:31;28361:4;28335:31;;;;;;;;;;;;;;;;;;;;;;;;;28334:32;28256:110;:153;;;;;28384:19;:25;28404:4;28384:25;;;;;;;;;;;;;;;;;;;;;;;;;28383:26;28256:153;:194;;;;;28427:19;:23;28447:2;28427:23;;;;;;;;;;;;;;;;;;;;;;;;;28426:24;28256:194;28238:326;;;28488:4;28477:8;;:15;;;;;;;;;;;;;;;;;;28509:10;:8;:10::i;:::-;28547:5;28536:8;;:16;;;;;;;;;;;;;;;;;;28238:326;28576:12;28592:8;;;;;;;;;;;28591:9;28576:24;;28702:19;:25;28722:4;28702:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28731:19;:23;28751:2;28731:23;;;;;;;;;;;;;;;;;;;;;;;;;28702:52;28698:100;;;28781:5;28771:15;;28698:100;28810:12;28915:7;28911:1115;;;28967:25;:29;28993:2;28967:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;29016:1;29000:13;;:17;28967:50;28963:914;;;29045:34;29075:3;29045:25;29056:13;;29045:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;29038:41;;29148:13;;29128:16;;29121:4;:23;;;;:::i;:::-;29120:41;;;;:::i;:::-;29098:18;;:63;;;;;;;:::i;:::-;;;;;;;;29218:13;;29204:10;;29197:4;:17;;;;:::i;:::-;29196:35;;;;:::i;:::-;29180:12;;:51;;;;;;;:::i;:::-;;;;;;;;29290:13;;29275:11;;29268:4;:18;;;;:::i;:::-;29267:36;;;;:::i;:::-;29250:13;;:53;;;;;;;:::i;:::-;;;;;;;;29374:13;;29353:17;;29346:4;:24;;;;:::i;:::-;29345:42;;;;:::i;:::-;29322:19;;:65;;;;;;;:::i;:::-;;;;;;;;28963:914;;;29449:25;:31;29475:4;29449:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;29499:1;29484:12;;:16;29449:51;29445:432;;;29528:33;29557:3;29528:24;29539:12;;29528:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;29521:40;;29629:12;;29610:15;;29603:4;:22;;;;:::i;:::-;29602:39;;;;:::i;:::-;29580:18;;:61;;;;;;;:::i;:::-;;;;;;;;29697:12;;29684:9;;29677:4;:16;;;;:::i;:::-;29676:33;;;;:::i;:::-;29660:12;;:49;;;;;;;:::i;:::-;;;;;;;;29767:12;;29753:10;;29746:4;:17;;;;:::i;:::-;29745:34;;;;:::i;:::-;29728:13;;:51;;;;;;;:::i;:::-;;;;;;;;29849:12;;29829:16;;29822:4;:23;;;;:::i;:::-;29821:40;;;;:::i;:::-;29798:19;;:63;;;;;;;:::i;:::-;;;;;;;;29445:432;28963:914;29904:1;29897:4;:8;29893:91;;;29926:42;29942:4;29956;29963;29926:15;:42::i;:::-;29893:91;30010:4;30000:14;;;;;:::i;:::-;;;28911:1115;30038:33;30054:4;30060:2;30064:6;30038:15;:33::i;:::-;24983:5096;;;;24870:5209;;;;:::o;1331:191::-;1405:16;1424:6;;;;;;;;;;;1405:25;;1450:8;1441:6;;:17;;;;;;;;;;;;;;;;;;1505:8;1474:40;;1495:8;1474:40;;;;;;;;;;;;1394:128;1331:191;:::o;23778:188::-;23895:5;23861:25;:31;23887:4;23861:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23952:5;23918:40;;23946:4;23918:40;;;;;;;;;;;;23778:188;;:::o;5124:733::-;5282:1;5264:20;;:6;:20;;;;5256:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5366:1;5345:23;;:9;:23;;;;5337:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5421:47;5442:6;5450:9;5461:6;5421:20;:47::i;:::-;5481:21;5505:9;:17;5515:6;5505:17;;;;;;;;;;;;;;;;5481:41;;5558:6;5541:13;:23;;5533:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5679:6;5663:13;:22;5643:9;:17;5653:6;5643:17;;;;;;;;;;;;;;;:42;;;;5731:6;5707:9;:20;5717:9;5707:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5772:9;5755:35;;5764:6;5755:35;;;5783:6;5755:35;;;;;;:::i;:::-;;;;;;;;5803:46;5823:6;5831:9;5842:6;5803:19;:46::i;:::-;5245:612;5124:733;;;:::o;31600:1918::-;31639:23;31665:24;31683:4;31665:9;:24::i;:::-;31639:50;;31700:25;31819:19;;31791:12;;31762:13;;31728:18;;:47;;;;:::i;:::-;:75;;;;:::i;:::-;:110;;;;:::i;:::-;31700:138;;31849:12;31897:1;31878:15;:20;:46;;;;31923:1;31902:17;:22;31878:46;31874:85;;;31941:7;;;;;31874:85;32014:2;31993:18;;:23;;;;:::i;:::-;31975:15;:41;31971:115;;;32072:2;32051:18;;:23;;;;:::i;:::-;32033:41;;31971:115;32147:23;32234:1;32214:17;32192:18;;32174:15;:36;;;;:::i;:::-;32173:58;;;;:::i;:::-;:62;;;;:::i;:::-;32147:88;;32246:26;32275:36;32295:15;32275;:19;;:36;;;;:::i;:::-;32246:65;;32324:25;32352:21;32324:49;;32386:36;32403:18;32386:16;:36::i;:::-;32435:18;32456:44;32482:17;32456:21;:25;;:44;;;;:::i;:::-;32435:65;;32513:18;32534:52;32568:17;32534:29;32549:13;;32534:10;:14;;:29;;;;:::i;:::-;:33;;:52;;;;:::i;:::-;32513:73;;32597:17;32617:51;32650:17;32617:28;32632:12;;32617:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;32597:71;;32679:24;32706:58;32746:17;32706:35;32721:19;;32706:10;:14;;:35;;;;:::i;:::-;:39;;:58;;;;:::i;:::-;32679:85;;32777:23;32841:16;32829:9;32816:10;32803;:23;;;;:::i;:::-;:35;;;;:::i;:::-;:54;;;;:::i;:::-;32777:80;;32891:1;32870:18;:22;;;;32919:1;32903:13;:17;;;;32946:1;32931:12;:16;;;;32980:1;32958:19;:23;;;;33016:9;;;;;;;;;;;33008:23;;33039:9;33008:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32994:59;;;;;33088:1;33070:15;:19;:42;;;;;33111:1;33093:15;:19;33070:42;33066:278;;;33129:46;33142:15;33159;33129:12;:46::i;:::-;33195:137;33228:18;33265:15;33299:18;;33195:137;;;;;;;;:::i;:::-;;;;;;;;33066:278;33376:16;;;;;;;;;;;33368:30;;33406:16;33368:59;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33354:73;;;;;33460:10;;;;;;;;;;;33452:24;;33484:21;33452:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33438:72;;;;;31628:1890;;;;;;;;;;;31600:1918;:::o;8877:98::-;8935:7;8966:1;8962;:5;;;;:::i;:::-;8955:12;;8877:98;;;;:::o;8983:::-;9041:7;9072:1;9068;:5;;;;:::i;:::-;9061:12;;8983:98;;;;:::o;7259:125::-;;;;:::o;7392:124::-;;;;:::o;8771:98::-;8829:7;8860:1;8856;:5;;;;:::i;:::-;8849:12;;8771:98;;;;:::o;30087:589::-;30213:21;30251:1;30237:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30213:40;;30282:4;30264;30269:1;30264:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;30308:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30298:4;30303:1;30298:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30343:62;30360:4;30375:15;30393:11;30343:8;:62::i;:::-;30444:15;:66;;;30525:11;30551:1;30595:4;30622;30642:15;30444:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30142:534;30087:589;:::o;31077:515::-;31225:62;31242:4;31257:15;31275:11;31225:8;:62::i;:::-;31330:15;:31;;;31369:9;31402:4;31422:11;31448:1;31491;31534:9;;;;;;;;;;;31558:15;31330:254;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31077:515;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:307::-;1373:1;1383:113;1397:6;1394:1;1391:13;1383:113;;;1482:1;1477:3;1473:11;1467:18;1463:1;1458:3;1454:11;1447:39;1419:2;1416:1;1412:10;1407:15;;1383:113;;;1514:6;1511:1;1508:13;1505:101;;;1594:1;1585:6;1580:3;1576:16;1569:27;1505:101;1354:258;1305:307;;;:::o;1618:102::-;1659:6;1710:2;1706:7;1701:2;1694:5;1690:14;1686:28;1676:38;;1618:102;;;:::o;1726:364::-;1814:3;1842:39;1875:5;1842:39;:::i;:::-;1897:71;1961:6;1956:3;1897:71;:::i;:::-;1890:78;;1977:52;2022:6;2017:3;2010:4;2003:5;1999:16;1977:52;:::i;:::-;2054:29;2076:6;2054:29;:::i;:::-;2049:3;2045:39;2038:46;;1818:272;1726:364;;;;:::o;2096:313::-;2209:4;2247:2;2236:9;2232:18;2224:26;;2296:9;2290:4;2286:20;2282:1;2271:9;2267:17;2260:47;2324:78;2397:4;2388:6;2324:78;:::i;:::-;2316:86;;2096:313;;;;:::o;2415:126::-;2452:7;2492:42;2485:5;2481:54;2470:65;;2415:126;;;:::o;2547:96::-;2584:7;2613:24;2631:5;2613:24;:::i;:::-;2602:35;;2547:96;;;:::o;2649:122::-;2722:24;2740:5;2722:24;:::i;:::-;2715:5;2712:35;2702:63;;2761:1;2758;2751:12;2702:63;2649:122;:::o;2777:139::-;2823:5;2861:6;2848:20;2839:29;;2877:33;2904:5;2877:33;:::i;:::-;2777:139;;;;:::o;2922:474::-;2990:6;2998;3047:2;3035:9;3026:7;3022:23;3018:32;3015:119;;;3053:79;;:::i;:::-;3015:119;3173:1;3198:53;3243:7;3234:6;3223:9;3219:22;3198:53;:::i;:::-;3188:63;;3144:117;3300:2;3326:53;3371:7;3362:6;3351:9;3347:22;3326:53;:::i;:::-;3316:63;;3271:118;2922:474;;;;;:::o;3402:90::-;3436:7;3479:5;3472:13;3465:21;3454:32;;3402:90;;;:::o;3498:109::-;3579:21;3594:5;3579:21;:::i;:::-;3574:3;3567:34;3498:109;;:::o;3613:210::-;3700:4;3738:2;3727:9;3723:18;3715:26;;3751:65;3813:1;3802:9;3798:17;3789:6;3751:65;:::i;:::-;3613:210;;;;:::o;3829:329::-;3888:6;3937:2;3925:9;3916:7;3912:23;3908:32;3905:119;;;3943:79;;:::i;:::-;3905:119;4063:1;4088:53;4133:7;4124:6;4113:9;4109:22;4088:53;:::i;:::-;4078:63;;4034:117;3829:329;;;;:::o;4164:60::-;4192:3;4213:5;4206:12;;4164:60;;;:::o;4230:142::-;4280:9;4313:53;4331:34;4340:24;4358:5;4340:24;:::i;:::-;4331:34;:::i;:::-;4313:53;:::i;:::-;4300:66;;4230:142;;;:::o;4378:126::-;4428:9;4461:37;4492:5;4461:37;:::i;:::-;4448:50;;4378:126;;;:::o;4510:153::-;4587:9;4620:37;4651:5;4620:37;:::i;:::-;4607:50;;4510:153;;;:::o;4669:185::-;4783:64;4841:5;4783:64;:::i;:::-;4778:3;4771:77;4669:185;;:::o;4860:276::-;4980:4;5018:2;5007:9;5003:18;4995:26;;5031:98;5126:1;5115:9;5111:17;5102:6;5031:98;:::i;:::-;4860:276;;;;:::o;5142:118::-;5229:24;5247:5;5229:24;:::i;:::-;5224:3;5217:37;5142:118;;:::o;5266:222::-;5359:4;5397:2;5386:9;5382:18;5374:26;;5410:71;5478:1;5467:9;5463:17;5454:6;5410:71;:::i;:::-;5266:222;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:118::-;6206:24;6224:5;6206:24;:::i;:::-;6201:3;6194:37;6119:118;;:::o;6243:222::-;6336:4;6374:2;6363:9;6359:18;6351:26;;6387:71;6455:1;6444:9;6440:17;6431:6;6387:71;:::i;:::-;6243:222;;;;:::o;6471:86::-;6506:7;6546:4;6539:5;6535:16;6524:27;;6471:86;;;:::o;6563:112::-;6646:22;6662:5;6646:22;:::i;:::-;6641:3;6634:35;6563:112;;:::o;6681:214::-;6770:4;6808:2;6797:9;6793:18;6785:26;;6821:67;6885:1;6874:9;6870:17;6861:6;6821:67;:::i;:::-;6681:214;;;;:::o;6901:765::-;6987:6;6995;7003;7011;7060:3;7048:9;7039:7;7035:23;7031:33;7028:120;;;7067:79;;:::i;:::-;7028:120;7187:1;7212:53;7257:7;7248:6;7237:9;7233:22;7212:53;:::i;:::-;7202:63;;7158:117;7314:2;7340:53;7385:7;7376:6;7365:9;7361:22;7340:53;:::i;:::-;7330:63;;7285:118;7442:2;7468:53;7513:7;7504:6;7493:9;7489:22;7468:53;:::i;:::-;7458:63;;7413:118;7570:2;7596:53;7641:7;7632:6;7621:9;7617:22;7596:53;:::i;:::-;7586:63;;7541:118;6901:765;;;;;;;:::o;7672:116::-;7742:21;7757:5;7742:21;:::i;:::-;7735:5;7732:32;7722:60;;7778:1;7775;7768:12;7722:60;7672:116;:::o;7794:133::-;7837:5;7875:6;7862:20;7853:29;;7891:30;7915:5;7891:30;:::i;:::-;7794:133;;;;:::o;7933:323::-;7989:6;8038:2;8026:9;8017:7;8013:23;8009:32;8006:119;;;8044:79;;:::i;:::-;8006:119;8164:1;8189:50;8231:7;8222:6;8211:9;8207:22;8189:50;:::i;:::-;8179:60;;8135:114;7933:323;;;;:::o;8262:468::-;8327:6;8335;8384:2;8372:9;8363:7;8359:23;8355:32;8352:119;;;8390:79;;:::i;:::-;8352:119;8510:1;8535:53;8580:7;8571:6;8560:9;8556:22;8535:53;:::i;:::-;8525:63;;8481:117;8637:2;8663:50;8705:7;8696:6;8685:9;8681:22;8663:50;:::i;:::-;8653:60;;8608:115;8262:468;;;;;:::o;8736:117::-;8845:1;8842;8835:12;8859:117;8968:1;8965;8958:12;8982:117;9091:1;9088;9081:12;9122:568;9195:8;9205:6;9255:3;9248:4;9240:6;9236:17;9232:27;9222:122;;9263:79;;:::i;:::-;9222:122;9376:6;9363:20;9353:30;;9406:18;9398:6;9395:30;9392:117;;;9428:79;;:::i;:::-;9392:117;9542:4;9534:6;9530:17;9518:29;;9596:3;9588:4;9580:6;9576:17;9566:8;9562:32;9559:41;9556:128;;;9603:79;;:::i;:::-;9556:128;9122:568;;;;;:::o;9696:698::-;9788:6;9796;9804;9853:2;9841:9;9832:7;9828:23;9824:32;9821:119;;;9859:79;;:::i;:::-;9821:119;10007:1;9996:9;9992:17;9979:31;10037:18;10029:6;10026:30;10023:117;;;10059:79;;:::i;:::-;10023:117;10172:80;10244:7;10235:6;10224:9;10220:22;10172:80;:::i;:::-;10154:98;;;;9950:312;10301:2;10327:50;10369:7;10360:6;10349:9;10345:22;10327:50;:::i;:::-;10317:60;;10272:115;9696:698;;;;;:::o;10400:474::-;10468:6;10476;10525:2;10513:9;10504:7;10500:23;10496:32;10493:119;;;10531:79;;:::i;:::-;10493:119;10651:1;10676:53;10721:7;10712:6;10701:9;10697:22;10676:53;:::i;:::-;10666:63;;10622:117;10778:2;10804:53;10849:7;10840:6;10829:9;10825:22;10804:53;:::i;:::-;10794:63;;10749:118;10400:474;;;;;:::o;10880:182::-;11020:34;11016:1;11008:6;11004:14;10997:58;10880:182;:::o;11068:366::-;11210:3;11231:67;11295:2;11290:3;11231:67;:::i;:::-;11224:74;;11307:93;11396:3;11307:93;:::i;:::-;11425:2;11420:3;11416:12;11409:19;;11068:366;;;:::o;11440:419::-;11606:4;11644:2;11633:9;11629:18;11621:26;;11693:9;11687:4;11683:20;11679:1;11668:9;11664:17;11657:47;11721:131;11847:4;11721:131;:::i;:::-;11713:139;;11440:419;;;:::o;11865:180::-;11913:77;11910:1;11903:88;12010:4;12007:1;12000:15;12034:4;12031:1;12024:15;12051:348;12091:7;12114:20;12132:1;12114:20;:::i;:::-;12109:25;;12148:20;12166:1;12148:20;:::i;:::-;12143:25;;12336:1;12268:66;12264:74;12261:1;12258:81;12253:1;12246:9;12239:17;12235:105;12232:131;;;12343:18;;:::i;:::-;12232:131;12391:1;12388;12384:9;12373:20;;12051:348;;;;:::o;12405:180::-;12453:77;12450:1;12443:88;12550:4;12547:1;12540:15;12574:4;12571:1;12564:15;12591:185;12631:1;12648:20;12666:1;12648:20;:::i;:::-;12643:25;;12682:20;12700:1;12682:20;:::i;:::-;12677:25;;12721:1;12711:35;;12726:18;;:::i;:::-;12711:35;12768:1;12765;12761:9;12756:14;;12591:185;;;;:::o;12782:223::-;12922:34;12918:1;12910:6;12906:14;12899:58;12991:6;12986:2;12978:6;12974:15;12967:31;12782:223;:::o;13011:366::-;13153:3;13174:67;13238:2;13233:3;13174:67;:::i;:::-;13167:74;;13250:93;13339:3;13250:93;:::i;:::-;13368:2;13363:3;13359:12;13352:19;;13011:366;;;:::o;13383:419::-;13549:4;13587:2;13576:9;13572:18;13564:26;;13636:9;13630:4;13626:20;13622:1;13611:9;13607:17;13600:47;13664:131;13790:4;13664:131;:::i;:::-;13656:139;;13383:419;;;:::o;13808:180::-;13856:77;13853:1;13846:88;13953:4;13950:1;13943:15;13977:4;13974:1;13967:15;13994:320;14038:6;14075:1;14069:4;14065:12;14055:22;;14122:1;14116:4;14112:12;14143:18;14133:81;;14199:4;14191:6;14187:17;14177:27;;14133:81;14261:2;14253:6;14250:14;14230:18;14227:38;14224:84;;;14280:18;;:::i;:::-;14224:84;14045:269;13994:320;;;:::o;14320:240::-;14460:34;14456:1;14448:6;14444:14;14437:58;14529:23;14524:2;14516:6;14512:15;14505:48;14320:240;:::o;14566:366::-;14708:3;14729:67;14793:2;14788:3;14729:67;:::i;:::-;14722:74;;14805:93;14894:3;14805:93;:::i;:::-;14923:2;14918:3;14914:12;14907:19;;14566:366;;;:::o;14938:419::-;15104:4;15142:2;15131:9;15127:18;15119:26;;15191:9;15185:4;15181:20;15177:1;15166:9;15162:17;15155:47;15219:131;15345:4;15219:131;:::i;:::-;15211:139;;14938:419;;;:::o;15363:239::-;15503:34;15499:1;15491:6;15487:14;15480:58;15572:22;15567:2;15559:6;15555:15;15548:47;15363:239;:::o;15608:366::-;15750:3;15771:67;15835:2;15830:3;15771:67;:::i;:::-;15764:74;;15847:93;15936:3;15847:93;:::i;:::-;15965:2;15960:3;15956:12;15949:19;;15608:366;;;:::o;15980:419::-;16146:4;16184:2;16173:9;16169:18;16161:26;;16233:9;16227:4;16223:20;16219:1;16208:9;16204:17;16197:47;16261:131;16387:4;16261:131;:::i;:::-;16253:139;;15980:419;;;:::o;16405:227::-;16545:34;16541:1;16533:6;16529:14;16522:58;16614:10;16609:2;16601:6;16597:15;16590:35;16405:227;:::o;16638:366::-;16780:3;16801:67;16865:2;16860:3;16801:67;:::i;:::-;16794:74;;16877:93;16966:3;16877:93;:::i;:::-;16995:2;16990:3;16986:12;16979:19;;16638:366;;;:::o;17010:419::-;17176:4;17214:2;17203:9;17199:18;17191:26;;17263:9;17257:4;17253:20;17249:1;17238:9;17234:17;17227:47;17291:131;17417:4;17291:131;:::i;:::-;17283:139;;17010:419;;;:::o;17435:305::-;17475:3;17494:20;17512:1;17494:20;:::i;:::-;17489:25;;17528:20;17546:1;17528:20;:::i;:::-;17523:25;;17682:1;17614:66;17610:74;17607:1;17604:81;17601:107;;;17688:18;;:::i;:::-;17601:107;17732:1;17729;17725:9;17718:16;;17435:305;;;;:::o;17746:234::-;17886:34;17882:1;17874:6;17870:14;17863:58;17955:17;17950:2;17942:6;17938:15;17931:42;17746:234;:::o;17986:366::-;18128:3;18149:67;18213:2;18208:3;18149:67;:::i;:::-;18142:74;;18225:93;18314:3;18225:93;:::i;:::-;18343:2;18338:3;18334:12;18327:19;;17986:366;;;:::o;18358:419::-;18524:4;18562:2;18551:9;18547:18;18539:26;;18611:9;18605:4;18601:20;18597:1;18586:9;18582:17;18575:47;18639:131;18765:4;18639:131;:::i;:::-;18631:139;;18358:419;;;:::o;18783:244::-;18923:34;18919:1;18911:6;18907:14;18900:58;18992:27;18987:2;18979:6;18975:15;18968:52;18783:244;:::o;19033:366::-;19175:3;19196:67;19260:2;19255:3;19196:67;:::i;:::-;19189:74;;19272:93;19361:3;19272:93;:::i;:::-;19390:2;19385:3;19381:12;19374:19;;19033:366;;;:::o;19405:419::-;19571:4;19609:2;19598:9;19594:18;19586:26;;19658:9;19652:4;19648:20;19644:1;19633:9;19629:17;19622:47;19686:131;19812:4;19686:131;:::i;:::-;19678:139;;19405:419;;;:::o;19830:224::-;19970:34;19966:1;19958:6;19954:14;19947:58;20039:7;20034:2;20026:6;20022:15;20015:32;19830:224;:::o;20060:366::-;20202:3;20223:67;20287:2;20282:3;20223:67;:::i;:::-;20216:74;;20299:93;20388:3;20299:93;:::i;:::-;20417:2;20412:3;20408:12;20401:19;;20060:366;;;:::o;20432:419::-;20598:4;20636:2;20625:9;20621:18;20613:26;;20685:9;20679:4;20675:20;20671:1;20660:9;20656:17;20649:47;20713:131;20839:4;20713:131;:::i;:::-;20705:139;;20432:419;;;:::o;20857:180::-;20905:77;20902:1;20895:88;21002:4;20999:1;20992:15;21026:4;21023:1;21016:15;21043:233;21082:3;21105:24;21123:5;21105:24;:::i;:::-;21096:33;;21151:66;21144:5;21141:77;21138:103;;;21221:18;;:::i;:::-;21138:103;21268:1;21261:5;21257:13;21250:20;;21043:233;;;:::o;21282:164::-;21422:16;21418:1;21410:6;21406:14;21399:40;21282:164;:::o;21452:366::-;21594:3;21615:67;21679:2;21674:3;21615:67;:::i;:::-;21608:74;;21691:93;21780:3;21691:93;:::i;:::-;21809:2;21804:3;21800:12;21793:19;;21452:366;;;:::o;21824:419::-;21990:4;22028:2;22017:9;22013:18;22005:26;;22077:9;22071:4;22067:20;22063:1;22052:9;22048:17;22041:47;22105:131;22231:4;22105:131;:::i;:::-;22097:139;;21824:419;;;:::o;22249:191::-;22289:4;22309:20;22327:1;22309:20;:::i;:::-;22304:25;;22343:20;22361:1;22343:20;:::i;:::-;22338:25;;22382:1;22379;22376:8;22373:34;;;22387:18;;:::i;:::-;22373:34;22432:1;22429;22425:9;22417:17;;22249:191;;;;:::o;22446:225::-;22586:34;22582:1;22574:6;22570:14;22563:58;22655:8;22650:2;22642:6;22638:15;22631:33;22446:225;:::o;22677:366::-;22819:3;22840:67;22904:2;22899:3;22840:67;:::i;:::-;22833:74;;22916:93;23005:3;22916:93;:::i;:::-;23034:2;23029:3;23025:12;23018:19;;22677:366;;;:::o;23049:419::-;23215:4;23253:2;23242:9;23238:18;23230:26;;23302:9;23296:4;23292:20;23288:1;23277:9;23273:17;23266:47;23330:131;23456:4;23330:131;:::i;:::-;23322:139;;23049:419;;;:::o;23474:223::-;23614:34;23610:1;23602:6;23598:14;23591:58;23683:6;23678:2;23670:6;23666:15;23659:31;23474:223;:::o;23703:366::-;23845:3;23866:67;23930:2;23925:3;23866:67;:::i;:::-;23859:74;;23942:93;24031:3;23942:93;:::i;:::-;24060:2;24055:3;24051:12;24044:19;;23703:366;;;:::o;24075:419::-;24241:4;24279:2;24268:9;24264:18;24256:26;;24328:9;24322:4;24318:20;24314:1;24303:9;24299:17;24292:47;24356:131;24482:4;24356:131;:::i;:::-;24348:139;;24075:419;;;:::o;24500:221::-;24640:34;24636:1;24628:6;24624:14;24617:58;24709:4;24704:2;24696:6;24692:15;24685:29;24500:221;:::o;24727:366::-;24869:3;24890:67;24954:2;24949:3;24890:67;:::i;:::-;24883:74;;24966:93;25055:3;24966:93;:::i;:::-;25084:2;25079:3;25075:12;25068:19;;24727:366;;;:::o;25099:419::-;25265:4;25303:2;25292:9;25288:18;25280:26;;25352:9;25346:4;25342:20;25338:1;25327:9;25323:17;25316:47;25380:131;25506:4;25380:131;:::i;:::-;25372:139;;25099:419;;;:::o;25524:224::-;25664:34;25660:1;25652:6;25648:14;25641:58;25733:7;25728:2;25720:6;25716:15;25709:32;25524:224;:::o;25754:366::-;25896:3;25917:67;25981:2;25976:3;25917:67;:::i;:::-;25910:74;;25993:93;26082:3;25993:93;:::i;:::-;26111:2;26106:3;26102:12;26095:19;;25754:366;;;:::o;26126:419::-;26292:4;26330:2;26319:9;26315:18;26307:26;;26379:9;26373:4;26369:20;26365:1;26354:9;26350:17;26343:47;26407:131;26533:4;26407:131;:::i;:::-;26399:139;;26126:419;;;:::o;26551:222::-;26691:34;26687:1;26679:6;26675:14;26668:58;26760:5;26755:2;26747:6;26743:15;26736:30;26551:222;:::o;26779:366::-;26921:3;26942:67;27006:2;27001:3;26942:67;:::i;:::-;26935:74;;27018:93;27107:3;27018:93;:::i;:::-;27136:2;27131:3;27127:12;27120:19;;26779:366;;;:::o;27151:419::-;27317:4;27355:2;27344:9;27340:18;27332:26;;27404:9;27398:4;27394:20;27390:1;27379:9;27375:17;27368:47;27432:131;27558:4;27432:131;:::i;:::-;27424:139;;27151:419;;;:::o;27576:164::-;27716:16;27712:1;27704:6;27700:14;27693:40;27576:164;:::o;27746:366::-;27888:3;27909:67;27973:2;27968:3;27909:67;:::i;:::-;27902:74;;27985:93;28074:3;27985:93;:::i;:::-;28103:2;28098:3;28094:12;28087:19;;27746:366;;;:::o;28118:419::-;28284:4;28322:2;28311:9;28307:18;28299:26;;28371:9;28365:4;28361:20;28357:1;28346:9;28342:17;28335:47;28399:131;28525:4;28399:131;:::i;:::-;28391:139;;28118:419;;;:::o;28543:172::-;28683:24;28679:1;28671:6;28667:14;28660:48;28543:172;:::o;28721:366::-;28863:3;28884:67;28948:2;28943:3;28884:67;:::i;:::-;28877:74;;28960:93;29049:3;28960:93;:::i;:::-;29078:2;29073:3;29069:12;29062:19;;28721:366;;;:::o;29093:419::-;29259:4;29297:2;29286:9;29282:18;29274:26;;29346:9;29340:4;29336:20;29332:1;29321:9;29317:17;29310:47;29374:131;29500:4;29374:131;:::i;:::-;29366:139;;29093:419;;;:::o;29518:297::-;29658:34;29654:1;29646:6;29642:14;29635:58;29727:34;29722:2;29714:6;29710:15;29703:59;29796:11;29791:2;29783:6;29779:15;29772:36;29518:297;:::o;29821:366::-;29963:3;29984:67;30048:2;30043:3;29984:67;:::i;:::-;29977:74;;30060:93;30149:3;30060:93;:::i;:::-;30178:2;30173:3;30169:12;30162:19;;29821:366;;;:::o;30193:419::-;30359:4;30397:2;30386:9;30382:18;30374:26;;30446:9;30440:4;30436:20;30432:1;30421:9;30417:17;30410:47;30474:131;30600:4;30474:131;:::i;:::-;30466:139;;30193:419;;;:::o;30618:240::-;30758:34;30754:1;30746:6;30742:14;30735:58;30827:23;30822:2;30814:6;30810:15;30803:48;30618:240;:::o;30864:366::-;31006:3;31027:67;31091:2;31086:3;31027:67;:::i;:::-;31020:74;;31103:93;31192:3;31103:93;:::i;:::-;31221:2;31216:3;31212:12;31205:19;;30864:366;;;:::o;31236:419::-;31402:4;31440:2;31429:9;31425:18;31417:26;;31489:9;31483:4;31479:20;31475:1;31464:9;31460:17;31453:47;31517:131;31643:4;31517:131;:::i;:::-;31509:139;;31236:419;;;:::o;31661:169::-;31801:21;31797:1;31789:6;31785:14;31778:45;31661:169;:::o;31836:366::-;31978:3;31999:67;32063:2;32058:3;31999:67;:::i;:::-;31992:74;;32075:93;32164:3;32075:93;:::i;:::-;32193:2;32188:3;32184:12;32177:19;;31836:366;;;:::o;32208:419::-;32374:4;32412:2;32401:9;32397:18;32389:26;;32461:9;32455:4;32451:20;32447:1;32436:9;32432:17;32425:47;32489:131;32615:4;32489:131;:::i;:::-;32481:139;;32208:419;;;:::o;32633:241::-;32773:34;32769:1;32761:6;32757:14;32750:58;32842:24;32837:2;32829:6;32825:15;32818:49;32633:241;:::o;32880:366::-;33022:3;33043:67;33107:2;33102:3;33043:67;:::i;:::-;33036:74;;33119:93;33208:3;33119:93;:::i;:::-;33237:2;33232:3;33228:12;33221:19;;32880:366;;;:::o;33252:419::-;33418:4;33456:2;33445:9;33441:18;33433:26;;33505:9;33499:4;33495:20;33491:1;33480:9;33476:17;33469:47;33533:131;33659:4;33533:131;:::i;:::-;33525:139;;33252:419;;;:::o;33677:225::-;33817:34;33813:1;33805:6;33801:14;33794:58;33886:8;33881:2;33873:6;33869:15;33862:33;33677:225;:::o;33908:366::-;34050:3;34071:67;34135:2;34130:3;34071:67;:::i;:::-;34064:74;;34147:93;34236:3;34147:93;:::i;:::-;34265:2;34260:3;34256:12;34249:19;;33908:366;;;:::o;34280:419::-;34446:4;34484:2;34473:9;34469:18;34461:26;;34533:9;34527:4;34523:20;34519:1;34508:9;34504:17;34497:47;34561:131;34687:4;34561:131;:::i;:::-;34553:139;;34280:419;;;:::o;34705:147::-;34806:11;34843:3;34828:18;;34705:147;;;;:::o;34858:114::-;;:::o;34978:398::-;35137:3;35158:83;35239:1;35234:3;35158:83;:::i;:::-;35151:90;;35250:93;35339:3;35250:93;:::i;:::-;35368:1;35363:3;35359:11;35352:18;;34978:398;;;:::o;35382:379::-;35566:3;35588:147;35731:3;35588:147;:::i;:::-;35581:154;;35752:3;35745:10;;35382:379;;;:::o;35767:442::-;35916:4;35954:2;35943:9;35939:18;35931:26;;35967:71;36035:1;36024:9;36020:17;36011:6;35967:71;:::i;:::-;36048:72;36116:2;36105:9;36101:18;36092:6;36048:72;:::i;:::-;36130;36198:2;36187:9;36183:18;36174:6;36130:72;:::i;:::-;35767:442;;;;;;:::o;36215:180::-;36263:77;36260:1;36253:88;36360:4;36357:1;36350:15;36384:4;36381:1;36374:15;36401:143;36458:5;36489:6;36483:13;36474:22;;36505:33;36532:5;36505:33;:::i;:::-;36401:143;;;;:::o;36550:351::-;36620:6;36669:2;36657:9;36648:7;36644:23;36640:32;36637:119;;;36675:79;;:::i;:::-;36637:119;36795:1;36820:64;36876:7;36867:6;36856:9;36852:22;36820:64;:::i;:::-;36810:74;;36766:128;36550:351;;;;:::o;36907:85::-;36952:7;36981:5;36970:16;;36907:85;;;:::o;36998:158::-;37056:9;37089:61;37107:42;37116:32;37142:5;37116:32;:::i;:::-;37107:42;:::i;:::-;37089:61;:::i;:::-;37076:74;;36998:158;;;:::o;37162:147::-;37257:45;37296:5;37257:45;:::i;:::-;37252:3;37245:58;37162:147;;:::o;37315:114::-;37382:6;37416:5;37410:12;37400:22;;37315:114;;;:::o;37435:184::-;37534:11;37568:6;37563:3;37556:19;37608:4;37603:3;37599:14;37584:29;;37435:184;;;;:::o;37625:132::-;37692:4;37715:3;37707:11;;37745:4;37740:3;37736:14;37728:22;;37625:132;;;:::o;37763:108::-;37840:24;37858:5;37840:24;:::i;:::-;37835:3;37828:37;37763:108;;:::o;37877:179::-;37946:10;37967:46;38009:3;38001:6;37967:46;:::i;:::-;38045:4;38040:3;38036:14;38022:28;;37877:179;;;;:::o;38062:113::-;38132:4;38164;38159:3;38155:14;38147:22;;38062:113;;;:::o;38211:732::-;38330:3;38359:54;38407:5;38359:54;:::i;:::-;38429:86;38508:6;38503:3;38429:86;:::i;:::-;38422:93;;38539:56;38589:5;38539:56;:::i;:::-;38618:7;38649:1;38634:284;38659:6;38656:1;38653:13;38634:284;;;38735:6;38729:13;38762:63;38821:3;38806:13;38762:63;:::i;:::-;38755:70;;38848:60;38901:6;38848:60;:::i;:::-;38838:70;;38694:224;38681:1;38678;38674:9;38669:14;;38634:284;;;38638:14;38934:3;38927:10;;38335:608;;;38211:732;;;;:::o;38949:831::-;39212:4;39250:3;39239:9;39235:19;39227:27;;39264:71;39332:1;39321:9;39317:17;39308:6;39264:71;:::i;:::-;39345:80;39421:2;39410:9;39406:18;39397:6;39345:80;:::i;:::-;39472:9;39466:4;39462:20;39457:2;39446:9;39442:18;39435:48;39500:108;39603:4;39594:6;39500:108;:::i;:::-;39492:116;;39618:72;39686:2;39675:9;39671:18;39662:6;39618:72;:::i;:::-;39700:73;39768:3;39757:9;39753:19;39744:6;39700:73;:::i;:::-;38949:831;;;;;;;;:::o;39786:807::-;40035:4;40073:3;40062:9;40058:19;40050:27;;40087:71;40155:1;40144:9;40140:17;40131:6;40087:71;:::i;:::-;40168:72;40236:2;40225:9;40221:18;40212:6;40168:72;:::i;:::-;40250:80;40326:2;40315:9;40311:18;40302:6;40250:80;:::i;:::-;40340;40416:2;40405:9;40401:18;40392:6;40340:80;:::i;:::-;40430:73;40498:3;40487:9;40483:19;40474:6;40430:73;:::i;:::-;40513;40581:3;40570:9;40566:19;40557:6;40513:73;:::i;:::-;39786:807;;;;;;;;;:::o;40599:143::-;40656:5;40687:6;40681:13;40672:22;;40703:33;40730:5;40703:33;:::i;:::-;40599:143;;;;:::o;40748:663::-;40836:6;40844;40852;40901:2;40889:9;40880:7;40876:23;40872:32;40869:119;;;40907:79;;:::i;:::-;40869:119;41027:1;41052:64;41108:7;41099:6;41088:9;41084:22;41052:64;:::i;:::-;41042:74;;40998:128;41165:2;41191:64;41247:7;41238:6;41227:9;41223:22;41191:64;:::i;:::-;41181:74;;41136:129;41304:2;41330:64;41386:7;41377:6;41366:9;41362:22;41330:64;:::i;:::-;41320:74;;41275:129;40748:663;;;;;:::o

Swarm Source

ipfs://ee09d0af2b5359ae0022d44756bf3cdbddde2eec782071f9cb6837f6e3a2f73f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.