ETH Price: $2,647.17 (+1.33%)

Token

Hold On For Dear Life (HODL)
 

Overview

Max Total Supply

1,000,000,000 HODL

Holders

25

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,223,098.14393873 HODL

Value
$0.00
0x436cbb0dc8cee4172d230913a95dca4cc509e7cc
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:
HODL

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-14
*/

/**
* 

It takes brains to learn Bitcoin. 

It takes guts to buy bitcoin. 

It takes nerve to hodl BTC.

It takes love to share HODL!

*/
// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.7;

library Address {
    /**
     * 
     */
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

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 IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

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

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

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract HODL is IERC20, Ownable {
    using Address for address;
    
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Hold On For Dear Life";
    string constant _symbol = "HODL";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 _maxBuyTxAmount = (_totalSupply * 2) / 100;
    uint256 _maxSellTxAmount = (_totalSupply * 2) / 100;
    uint256 _maxWalletSize = (_totalSupply * 2) / 100;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => uint256) public lastSell;
    mapping (address => uint256) public lastBuy;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) liquidityCreator;

    uint256 marketingFee = 500;
    uint256 liquidityFee = 100;
    uint256 totalFee = marketingFee + liquidityFee;
    uint256 sellBias = 0;
    uint256 feeDenominator = 10000;

    address payable public liquidityFeeReceiver = payable(0x70991dA3633926a254A65618E2AD510cEaf203b5);
    address payable public marketingFeeReceiver = payable(0x70991dA3633926a254A65618E2AD510cEaf203b5);

    IDEXRouter public router;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    mapping (address => bool) liquidityPools;
    mapping (address => uint256) public protected;
    bool protectionEnabled = true;
    bool protectionDisabled = false;
    uint256 protectionLimit;
    uint256 public protectionCount;
    uint256 protectionTimer;

    address public pair;

    uint256 public launchedAt;
    uint256 public launchedTime;
    uint256 public deadBlocks;
    bool startBullRun = false;
    bool pauseDisabled = false;
    uint256 public rateLimit = 2;

    bool public swapEnabled = false;
    bool processEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000;
    uint256 public swapMinimum = _totalSupply / 10000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    mapping (address => bool) teamMember;
    
    modifier onlyTeam() {
        require(teamMember[_msgSender()] || msg.sender == owner(), "Caller is not a team member");
        _;
    }
    
    event ProtectedWallet(address, address, uint256, uint8);

    constructor () {
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        liquidityPools[pair] = true;
        _allowances[owner()][routerAddress] = type(uint256).max;
        _allowances[address(this)][routerAddress] = type(uint256).max;

        isFeeExempt[owner()] = true;
        liquidityCreator[owner()] = true;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[routerAddress] = true;
        isTxLimitExempt[DEAD] = true;

        _balances[owner()] = _totalSupply;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external pure returns (string memory) { return _symbol; }
    function name() external pure returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function maxBuyTxTokens() external view returns (uint256) { return _maxBuyTxAmount / (10 ** _decimals); }
    function maxSellTxTokens() external view returns (uint256) { return _maxSellTxAmount / (10 ** _decimals); }
    function maxWalletTokens() external view returns (uint256) { return _maxWalletSize / (10 ** _decimals); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }
    
    function setTeamMember(address _team, bool _enabled) external onlyOwner {
        teamMember[_team] = _enabled;
    }
    
    function airdrop(address[] calldata addresses, uint256[] calldata amounts) external onlyOwner {
        require(addresses.length > 0 && amounts.length == addresses.length);
        address from = msg.sender;

        for (uint i = 0; i < addresses.length; i++) {
            if(!liquidityPools[addresses[i]] && !liquidityCreator[addresses[i]]) {
                _basicTransfer(from, addresses[i], amounts[i] * (10 ** _decimals));
            }
        }
    }
    
    function clearStuckBalance(uint256 amountPercentage, address adr) external onlyTeam {
        uint256 amountETH = address(this).balance;
        payable(adr).transfer((amountETH * amountPercentage) / 100);
    }
    
    function openTrading(uint256 _deadBlocks, uint256 _protection, uint256 _limit) external onlyTeam {
        require(!startBullRun && _deadBlocks < 10);
        deadBlocks = _deadBlocks;
        startBullRun = true;
        launchedAt = block.number;
        protectionTimer = block.timestamp + _protection;
        protectionLimit = _limit * (10 ** _decimals);
    }
    
    function pauseTrading() external onlyTeam {
        require(!pauseDisabled);
        startBullRun = false;
    }
    
    function disablePause() external onlyTeam {
        pauseDisabled = true;
        startBullRun = true;
    }
    
    function setProtection(bool _protect, uint256 _addTime) external onlyTeam {
        require(!protectionDisabled);
        protectionEnabled = _protect;
        require(_addTime < 1 days);
        protectionTimer += _addTime;
    }
    
    function disableProtection() external onlyTeam {
        protectionDisabled = true;
        protectionEnabled = false;
    }
    
    function protectWallet(address[] calldata _wallets, bool _protect) external onlyTeam {
        if (_protect) {
            require(protectionEnabled);
        }
        
        for (uint i = 0; i < _wallets.length; i++) {
            
            if (_protect) {
                protectionCount++;
                emit ProtectedWallet(tx.origin, _wallets[i], block.number, 2);
            }
            else {
                if (protected[_wallets[i]] != 0)
                    protectionCount--;      
            }
            protected[_wallets[i]] = _protect ? block.number : 0;
        }
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "BEP20: transfer from 0x0");
        require(recipient != address(0), "BEP20: transfer to 0x0");
        require(amount > 0, "Amount must be > zero");
        require(_balances[sender] >= amount, "Insufficient balance");
        if(!launched() && liquidityPools[recipient]){ require(liquidityCreator[sender], "Liquidity not added yet."); launch(); }
        if(!startBullRun){ require(liquidityCreator[sender] || liquidityCreator[recipient], "Trading not open yet."); }

        checkTxLimit(sender, recipient, amount);
        
        if (!liquidityPools[recipient] && recipient != DEAD) {
            if (!isTxLimitExempt[recipient]) {
                checkWalletLimit(recipient, amount);
            }
        }
        
        if(protectionEnabled && protectionTimer > block.timestamp) {
            if(liquidityPools[sender] && tx.origin != recipient && protected[recipient] == 0) {
                protected[recipient] = block.number;
                protectionCount++;
                emit ProtectedWallet(tx.origin, recipient, block.number, 0);
            }
        }
        
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        _balances[sender] = _balances[sender] - amount;

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(recipient, amount) : amount;
        
        if(shouldSwapBack(recipient)){ if (amount > 0) swapBack(amount); }
        
        _balances[recipient] = _balances[recipient] + amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
        launchedTime = block.timestamp;
        swapEnabled = true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function checkWalletLimit(address recipient, uint256 amount) internal view {
        uint256 walletLimit = _maxWalletSize;
        require(_balances[recipient] + amount <= walletLimit, "Transfer amount exceeds the bag size.");
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal {
        require(isTxLimitExempt[sender] || amount <= (liquidityPools[sender] ? _maxBuyTxAmount : _maxSellTxAmount), "TX Limit Exceeded");
        require(isTxLimitExempt[sender] || lastBuy[recipient] + rateLimit <= block.number, "Transfer rate limit exceeded.");
        
        if (protected[sender] != 0){
            require(amount <= protectionLimit * (10 ** _decimals) && lastSell[sender] == 0 && protectionTimer > block.timestamp, "Wallet protected, please contact support.");
            lastSell[sender] = block.number;
        }
        
        if (liquidityPools[recipient]) {
            lastSell[sender] = block.number;
        } else if (shouldTakeFee(sender)) {
            if (protectionEnabled && protectionTimer > block.timestamp && lastBuy[tx.origin] == block.number && protected[recipient] == 0) {
                protected[recipient] = block.number;
                emit ProtectedWallet(tx.origin, recipient, block.number, 1);
            }
            lastBuy[recipient] = block.number;
            if (tx.origin != recipient)
                lastBuy[tx.origin] = block.number;
        }
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + deadBlocks >= block.number){ return feeDenominator - 1; }
        if (selling) return totalFee + sellBias;
        return totalFee - sellBias;
    }

    function takeFee(address recipient, uint256 amount) internal returns (uint256) {
        bool selling = liquidityPools[recipient];
        uint256 feeAmount = (amount * getTotalFee(selling)) / feeDenominator;
        
        _balances[address(this)] += feeAmount;
    
        return amount - feeAmount;
    }

    function shouldSwapBack(address recipient) internal view returns (bool) {
        return !liquidityPools[msg.sender]
        && !inSwap
        && swapEnabled
        && liquidityPools[recipient]
        && _balances[address(this)] >= swapMinimum;
    }

    function swapBack(uint256 amount) internal swapping {
        uint256 amountToSwap = amount < swapThreshold ? amount : swapThreshold;
        if (_balances[address(this)] < amountToSwap) amountToSwap = _balances[address(this)];
        
        uint256 amountToLiquify = (amountToSwap * liquidityFee / 2) / totalFee;
        amountToSwap -= amountToLiquify;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        
        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountBNB = address(this).balance - balanceBefore;
        uint256 totalBNBFee = totalFee - (liquidityFee / 2);

        uint256 amountBNBLiquidity = (amountBNB * liquidityFee / 2) / totalBNBFee;
        uint256 amountBNBMarketing = amountBNB - amountBNBLiquidity;
        
        if (amountBNBMarketing > 0)
            marketingFeeReceiver.transfer(amountBNBMarketing);
        
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityFeeReceiver,
                block.timestamp
            );
        }

        emit FundsDistributed(amountBNBMarketing, amountBNBLiquidity, amountToLiquify);
    }
    
    function addLiquidityPool(address lp, bool isPool) external onlyOwner {
        require(lp != pair, "Can't alter current liquidity pair");
        liquidityPools[lp] = isPool;
    }

    function setRateLimit(uint256 rate) external onlyOwner {
        require(rate <= 60 seconds);
        rateLimit = rate;
    }

    function setTxLimit(uint256 buyNumerator, uint256 sellNumerator, uint256 divisor) external onlyOwner {
        require(buyNumerator > 0 && sellNumerator > 0 && divisor > 0 && divisor <= 10000);
        _maxBuyTxAmount = (_totalSupply * buyNumerator) / divisor;
        _maxSellTxAmount = (_totalSupply * sellNumerator) / divisor;
    }
    
    function setMaxWallet(uint256 numerator, uint256 divisor) external onlyOwner() {
        require(numerator > 0 && divisor > 0 && divisor <= 10000);
        _maxWalletSize = (_totalSupply * numerator) / divisor;
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _sellBias, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        totalFee = _marketingFee + _liquidityFee;
        sellBias = _sellBias;
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 2);
    }

    function setFeeReceivers(address _liquidityFeeReceiver, address _marketingFeeReceiver) external onlyOwner {
        liquidityFeeReceiver = payable(_liquidityFeeReceiver);
        marketingFeeReceiver = payable(_marketingFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, bool _processEnabled, uint256 _denominator, uint256 _swapMinimum) external onlyOwner {
        require(_denominator > 0);
        swapEnabled = _enabled;
        processEnabled = _processEnabled;
        swapThreshold = _totalSupply / _denominator;
        swapMinimum = _swapMinimum * (10 ** _decimals);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - (balanceOf(DEAD) + balanceOf(ZERO));
    }

    event FundsDistributed(uint256 marketingBNB, uint256 liquidityBNB, uint256 liquidityTokens);
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"}],"name":"FundsDistributed","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":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"","type":"uint8"}],"name":"ProtectedWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"lp","type":"address"},{"internalType":"bool","name":"isPool","type":"bool"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"adr","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disablePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"},{"internalType":"uint256","name":"_protection","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"bool","name":"_protect","type":"bool"}],"name":"protectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"protected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rateLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityFeeReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellBias","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_protect","type":"bool"},{"internalType":"uint256","name":"_addTime","type":"uint256"}],"name":"setProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setRateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_processEnabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"uint256","name":"_swapMinimum","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setTeamMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyNumerator","type":"uint256"},{"internalType":"uint256","name":"sellNumerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000d47565b633b9aca00620000aa919062000d98565b60035560646002600354620000c0919062000d98565b620000cc919062000e12565b60045560646002600354620000e2919062000d98565b620000ee919062000e12565b6005556064600260035462000104919062000d98565b62000110919062000e12565b6006556101f4600e556064600f55600f54600e5462000130919062000e4a565b60105560006011556127106012557370991da3633926a254a65618e2ad510ceaf203b5601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507370991da3633926a254a65618e2ad510ceaf203b5601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601960006101000a81548160ff0219169083151502179055506000601960016101000a81548160ff0219169083151502179055506000602160006101000a81548160ff0219169083151502179055506000602160016101000a81548160ff02191690831515021790555060026022556000602360006101000a81548160ff0219169083151502179055506001602360016101000a81548160ff0219169083151502179055506103e8600354620002f6919062000e12565b6024556127106003546200030b919062000e12565b6025553480156200031b57600080fd5b5060006200032e62000b7c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200049d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c3919062000eef565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200054c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000572919062000eef565b306040518363ffffffff1660e01b81526004016200059292919062000f32565b6020604051808303816000875af1158015620005b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d8919062000eef565b601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160176000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60086000620006c762000b8460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600b60006200083d62000b8460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000620008a462000b8460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60006200096362000b8460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003546007600062000abf62000b8460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000b0d62000b8460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000b6e919062000f70565b60405180910390a362000f8d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c3b5780860481111562000c135762000c1262000bad565b5b600185161562000c235780820291505b808102905062000c338562000bdc565b945062000bf3565b94509492505050565b60008262000c56576001905062000d29565b8162000c66576000905062000d29565b816001811462000c7f576002811462000c8a5762000cc0565b600191505062000d29565b60ff84111562000c9f5762000c9e62000bad565b5b8360020a91508482111562000cb95762000cb862000bad565b5b5062000d29565b5060208310610133831016604e8410600b841016171562000cfa5782820a90508381111562000cf45762000cf362000bad565b5b62000d29565b62000d09848484600162000be9565b9250905081840481111562000d235762000d2262000bad565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d548262000d30565b915062000d618362000d3a565b925062000d907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c44565b905092915050565b600062000da58262000d30565b915062000db28362000d30565b925082820262000dc28162000d30565b9150828204841483151762000ddc5762000ddb62000bad565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e1f8262000d30565b915062000e2c8362000d30565b92508262000e3f5762000e3e62000de3565b5b828204905092915050565b600062000e578262000d30565b915062000e648362000d30565b925082820190508082111562000e7f5762000e7e62000bad565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000eb78262000e8a565b9050919050565b62000ec98162000eaa565b811462000ed557600080fd5b50565b60008151905062000ee98162000ebe565b92915050565b60006020828403121562000f085762000f0762000e85565b5b600062000f188482850162000ed8565b91505092915050565b62000f2c8162000eaa565b82525050565b600060408201905062000f49600083018562000f21565b62000f58602083018462000f21565b9392505050565b62000f6a8162000d30565b82525050565b600060208201905062000f87600083018462000f5f565b92915050565b615a058062000f9d6000396000f3fe6080604052600436106103035760003560e01c80636f4ce42811610190578063bf56b371116100dc578063e96fada211610095578063f84ba65d1161006f578063f84ba65d14610b65578063f8821a6214610b8e578063f887ea4014610bb9578063fabb0b4f14610be45761030a565b8063e96fada214610ad4578063f1f3bca314610aff578063f2fde38b14610b3c5761030a565b8063bf56b371146109b2578063bfa21d6a146109dd578063c1adf7bc14610a08578063c287184e14610a45578063d686014214610a6e578063dd62ed3e14610a975761030a565b806395d89b4111610149578063a8aa1b3111610123578063a8aa1b31146108f6578063a9059cbb14610921578063abe57e701461095e578063bafe446b146109875761030a565b806395d89b41146108775780639b02c402146108a2578063a4b45c00146108cd5761030a565b80636f4ce428146107675780636fcba377146107a457806370a08231146107cd578063715018a61461080a578063893d20e8146108215780638da5cb5b1461084c5761030a565b8063492a937b1161024f578063584f969a1161020857806363a803e1116101e257806363a803e1146106bf578063658d4b7f146106ea57806367243482146107135780636ddd17131461073c5761030a565b8063584f969a1461065457806360bba03d1461066b57806361e08e72146106945761030a565b8063492a937b14610548578063507139351461057157806354a1dfc91461059a57806356a227f2146105c3578063571ac8b0146105ec5780635804f1e4146106295761030a565b8063234e9494116102bc578063313ce56711610296578063313ce567146104a057806334848b9a146104cb578063421dd7c7146104f457806346d7edaa1461050b5761030a565b8063234e94941461040d57806323b872dd146104385780632b112e49146104755761030a565b80630445b6671461030f57806306fdde031461033a578063095db78f14610365578063095ea7b31461038e5780631031e36e146103cb57806318160ddd146103e25761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c0f565b60405161033191906143ac565b60405180910390f35b34801561034657600080fd5b5061034f610c15565b60405161035c9190614457565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190614520565b610c52565b005b34801561039a57600080fd5b506103b560048036038101906103b0919061460a565b610ef1565b6040516103c29190614659565b60405180910390f35b3480156103d757600080fd5b506103e0610fe3565b005b3480156103ee57600080fd5b506103f76110ea565b60405161040491906143ac565b60405180910390f35b34801561041957600080fd5b506104226110f4565b60405161042f91906143ac565b60405180910390f35b34801561044457600080fd5b5061045f600480360381019061045a9190614674565b611116565b60405161046c9190614659565b60405180910390f35b34801561048157600080fd5b5061048a6112d8565b60405161049791906143ac565b60405180910390f35b3480156104ac57600080fd5b506104b561134c565b6040516104c291906146e3565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed91906146fe565b611355565b005b34801561050057600080fd5b506105096114aa565b005b34801561051757600080fd5b50610532600480360381019061052d9190614751565b6115b2565b60405161053f91906143ac565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a919061477e565b6115ca565b005b34801561057d57600080fd5b50610598600480360381019061059391906146fe565b61174a565b005b3480156105a657600080fd5b506105c160048036038101906105bc91906147be565b611855565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190614825565b611964565b005b3480156105f857600080fd5b50610613600480360381019061060e9190614751565b611a9c565b6040516106209190614659565b60405180910390f35b34801561063557600080fd5b5061063e611acf565b60405161064b91906143ac565b60405180910390f35b34801561066057600080fd5b50610669611ad5565b005b34801561067757600080fd5b50610692600480360381019061068d919061477e565b611bdd565b005b3480156106a057600080fd5b506106a9611ccd565b6040516106b691906143ac565b60405180910390f35b3480156106cb57600080fd5b506106d4611cd3565b6040516106e191906143ac565b60405180910390f35b3480156106f657600080fd5b50610711600480360381019061070c919061477e565b611cf5565b005b34801561071f57600080fd5b5061073a600480360381019061073591906148bb565b611de5565b005b34801561074857600080fd5b50610751612025565b60405161075e9190614659565b60405180910390f35b34801561077357600080fd5b5061078e60048036038101906107899190614751565b612038565b60405161079b91906143ac565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c6919061493c565b612050565b005b3480156107d957600080fd5b506107f460048036038101906107ef9190614751565b612135565b60405161080191906143ac565b60405180910390f35b34801561081657600080fd5b5061081f61217e565b005b34801561082d57600080fd5b506108366122d1565b60405161084391906149b2565b60405180910390f35b34801561085857600080fd5b506108616122e0565b60405161086e91906149b2565b60405180910390f35b34801561088357600080fd5b5061088c612309565b6040516108999190614457565b60405180910390f35b3480156108ae57600080fd5b506108b7612346565b6040516108c491906143ac565b60405180910390f35b3480156108d957600080fd5b506108f460048036038101906108ef91906149cd565b61234c565b005b34801561090257600080fd5b5061090b612467565b60405161091891906149b2565b60405180910390f35b34801561092d57600080fd5b506109486004803603810190610943919061460a565b61248d565b6040516109559190614659565b60405180910390f35b34801561096a57600080fd5b5061098560048036038101906109809190614a0d565b6124a2565b005b34801561099357600080fd5b5061099c612581565b6040516109a991906143ac565b60405180910390f35b3480156109be57600080fd5b506109c76125a3565b6040516109d491906143ac565b60405180910390f35b3480156109e957600080fd5b506109f26125a9565b6040516109ff9190614a6e565b60405180910390f35b348015610a1457600080fd5b50610a2f6004803603810190610a2a9190614751565b6125cf565b604051610a3c91906143ac565b60405180910390f35b348015610a5157600080fd5b50610a6c6004803603810190610a679190614a89565b6125e7565b005b348015610a7a57600080fd5b50610a956004803603810190610a909190614ab6565b612694565b005b348015610aa357600080fd5b50610abe6004803603810190610ab991906149cd565b6127c4565b604051610acb91906143ac565b60405180910390f35b348015610ae057600080fd5b50610ae961284b565b604051610af69190614a6e565b60405180910390f35b348015610b0b57600080fd5b50610b266004803603810190610b219190614af6565b612871565b604051610b3391906143ac565b60405180910390f35b348015610b4857600080fd5b50610b636004803603810190610b5e9190614751565b6128d4565b005b348015610b7157600080fd5b50610b8c6004803603810190610b87919061477e565b612a95565b005b348015610b9a57600080fd5b50610ba3612b85565b604051610bb091906143ac565b60405180910390f35b348015610bc557600080fd5b50610bce612b8b565b604051610bdb9190614b82565b60405180910390f35b348015610bf057600080fd5b50610bf9612bb1565b604051610c0691906143ac565b60405180910390f35b60245481565b60606040518060400160405280601581526020017f486f6c64204f6e20466f722044656172204c6966650000000000000000000000815250905090565b60276000610c5e612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610ce35750610cb46122e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1990614be9565b60405180910390fd5b8015610d4257601960009054906101000a900460ff16610d4157600080fd5b5b60005b83839050811015610eeb578115610dd857601b6000815480929190610d6990614c38565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610da357610da2614c80565b5b9050602002016020810190610db89190614751565b436002604051610dcb9493929190614cea565b60405180910390a1610e60565b600060186000868685818110610df157610df0614c80565b5b9050602002016020810190610e069190614751565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e5f57601b6000815480929190610e5990614d2f565b91905055505b5b81610e6c576000610e6e565b435b60186000868685818110610e8557610e84614c80565b5b9050602002016020810190610e9a9190614751565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080610ee390614c38565b915050610d45565b50505050565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610fd191906143ac565b60405180910390a36001905092915050565b60276000610fef612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061107457506110456122e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa90614be9565b60405180910390fd5b602160019054906101000a900460ff16156110cd57600080fd5b6000602160006101000a81548160ff021916908315150217905550565b6000600354905090565b60006009600a6111049190614e8b565b6005546111119190614f05565b905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112c45781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112439190614f36565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112cf848484612bbf565b90509392505050565b6000611305600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612135565b611330600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612135565b61133a9190614f6a565b6003546113479190614f36565b905090565b60006009905090565b60276000611361612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806113e657506113b76122e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c90614be9565b60405180910390fd5b602160009054906101000a900460ff161580156114425750600a83105b61144b57600080fd5b826020819055506001602160006101000a81548160ff02191690831515021790555043601e8190555081426114809190614f6a565b601c819055506009600a6114949190614e8b565b8161149f9190614f9e565b601a81905550505050565b602760006114b6612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061153b575061150c6122e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61157a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157190614be9565b60405180910390fd5b6001601960016101000a81548160ff0219169083151502179055506000601960006101000a81548160ff021916908315150217905550565b60186020528060005260406000206000915090505481565b6115d2612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461165f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116569061502c565b60405180910390fd5b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e6906150be565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611752612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d69061502c565b60405180910390fd5b6000831180156117ef5750600082115b80156117fb5750600081115b801561180957506127108111155b61181257600080fd5b80836003546118219190614f9e565b61182b9190614f05565b60048190555080826003546118409190614f9e565b61184a9190614f05565b600581905550505050565b61185d612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e19061502c565b60405180910390fd5b600082116118f757600080fd5b83602360006101000a81548160ff02191690831515021790555082602360016101000a81548160ff021916908315150217905550816003546119399190614f05565b6024819055506009600a61194d9190614e8b565b816119589190614f9e565b60258190555050505050565b60276000611970612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119f557506119c66122e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2b90614be9565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc60648584611a619190614f9e565b611a6b9190614f05565b9081150290604051600060405180830381858888f19350505050158015611a96573d6000803e3d6000fd5b50505050565b6000611ac8827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ef1565b9050919050565b601f5481565b60276000611ae1612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b665750611b376122e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90614be9565b60405180910390fd5b6001602160016101000a81548160ff0219169083151502179055506001602160006101000a81548160ff021916908315150217905550565b611be5612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c699061502c565b60405180910390fd5b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60225481565b60006009600a611ce39190614e8b565b600654611cf09190614f05565b905090565b611cfd612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d819061502c565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611ded612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e719061502c565b60405180910390fd5b600084849050118015611e9257508383905082829050145b611e9b57600080fd5b600033905060005b8585905081101561201d5760176000878784818110611ec557611ec4614c80565b5b9050602002016020810190611eda9190614751565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fa05750600d6000878784818110611f4157611f40614c80565b5b9050602002016020810190611f569190614751565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561200a5761200882878784818110611fbc57611fbb614c80565b5b9050602002016020810190611fd19190614751565b6009600a611fdf9190614e8b565b878786818110611ff257611ff1614c80565b5b905060200201356120039190614f9e565b6133f1565b505b808061201590614c38565b915050611ea3565b505050505050565b602360009054906101000a900460ff1681565b60096020528060005260406000206000915090505481565b612058612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120dc9061502c565b60405180910390fd5b83600f8190555082600e8190555083836120ff9190614f6a565b601081905550816011819055508060128190555060026012546121229190614f05565b6010541061212f57600080fd5b50505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b612186612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220a9061502c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006122db6122e0565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f484f444c00000000000000000000000000000000000000000000000000000000815250905090565b601b5481565b612354612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d89061502c565b60405180910390fd5b81601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061249a338484612bbf565b905092915050565b6124aa612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252e9061502c565b60405180910390fd5b6000821180156125475750600081115b801561255557506127108111155b61255e57600080fd5b808260035461256d9190614f9e565b6125779190614f05565b6006819055505050565b60006009600a6125919190614e8b565b60045461259e9190614f05565b905090565b601e5481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915090505481565b6125ef612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461267c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126739061502c565b60405180910390fd5b603c81111561268a57600080fd5b8060228190555050565b602760006126a0612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061272557506126f66122e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b612764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275b90614be9565b60405180910390fd5b601960019054906101000a900460ff161561277e57600080fd5b81601960006101000a81548160ff0219169083151502179055506201518081106127a757600080fd5b80601c60008282546127b99190614f6a565b925050819055505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600043602054601e546128849190614f6a565b1061289f5760016012546128989190614f36565b90506128cf565b81156128bc576011546010546128b59190614f6a565b90506128cf565b6011546010546128cc9190614f36565b90505b919050565b6128dc612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612969576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129609061502c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cf90615150565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612a9d612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b219061502c565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60255481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60205481565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c26906151bc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9590615228565b60405180910390fd5b60008211612ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd890615294565b60405180910390fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5a90615300565b60405180910390fd5b612d6b61357f565b158015612dc15750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e5b57600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e499061536c565b60405180910390fd5b612e5a61358c565b5b602160009054906101000a900460ff16612f5057600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f105750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f46906153d8565b60405180910390fd5b5b612f5b8484846135b7565b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130035750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561306557600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613064576130638383613b74565b5b5b601960009054906101000a900460ff168015613082575042601c54115b156131f857601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561310c57508273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614155b801561315757506000601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156131f75743601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601b60008154809291906131b390614c38565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32844360006040516131ee9493929190615433565b60405180910390a15b5b602660009054906101000a900460ff161561321f576132188484846133f1565b90506133ea565b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461326a9190614f36565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006132b885613c0d565b6132c257826132cd565b6132cc8484613c64565b5b90506132d884613d47565b156132f15760008311156132f0576132ef83613e71565b5b5b80600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333c9190614f6a565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133dc91906143ac565b60405180910390a360019150505b9392505050565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343e9190614f36565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134cc9190614f6a565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161356c91906143ac565b60405180910390a3600190509392505050565b600080601e541415905090565b43601e8190555042601f819055506001602360006101000a81548160ff021916908315150217905550565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061366b5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661366357600554613667565b6004545b8111155b6136aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a1906154c4565b60405180910390fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061374e575043602254600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461374b9190614f6a565b11155b61378d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378490615530565b60405180910390fd5b6000601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146138ce576009600a6137e29190614e8b565b601a546137ef9190614f9e565b811115801561383d57506000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b801561384a575042601c54115b613889576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613880906155c2565b60405180910390fd5b43600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156139695743600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b6f565b61397283613c0d565b15613b6e57601960009054906101000a900460ff168015613994575042601c54115b80156139de575043600a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b8015613a2957506000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15613ab15743601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3283436001604051613aa8949392919061561d565b60405180910390a15b43600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614613b6d5743600a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b505050565b600060065490508082600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc79190614f6a565b1115613c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bff906156d4565b60405180910390fd5b505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000601254613cc483612871565b85613ccf9190614f9e565b613cd99190614f05565b905080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d2a9190614f6a565b925050819055508084613d3d9190614f36565b9250505092915050565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613db05750602660009054906101000a900460ff16155b8015613dc85750602360009054906101000a900460ff165b8015613e1d5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015613e6a5750602554600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b9050919050565b6001602660006101000a81548160ff02191690831515021790555060006024548210613e9f57602454613ea1565b815b905080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613f2d57600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b60006010546002600f5484613f429190614f9e565b613f4c9190614f05565b613f569190614f05565b90508082613f649190614f36565b91506000600267ffffffffffffffff811115613f8357613f826156f4565b5b604051908082528060200260200182016040528015613fb15781602001602082028036833780820191505090505b5090503081600081518110613fc957613fc8614c80565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614070573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140949190615738565b816001815181106140a8576140a7614c80565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008530426040518663ffffffff1660e01b815260040161414b959493929190615854565b600060405180830381600087803b15801561416557600080fd5b505af1158015614179573d6000803e3d6000fd5b505050506000814761418b9190614f36565b905060006002600f5461419e9190614f05565b6010546141ab9190614f36565b90506000816002600f54856141c09190614f9e565b6141ca9190614f05565b6141d49190614f05565b9050600081846141e49190614f36565b9050600081111561425957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614257573d6000803e3d6000fd5b505b600087111561433257601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016142eb969594939291906158cf565b60606040518083038185885af1158015614309573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061432e9190615945565b5050505b7fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df981838960405161436593929190615998565b60405180910390a150505050505050506000602660006101000a81548160ff02191690831515021790555050565b6000819050919050565b6143a681614393565b82525050565b60006020820190506143c1600083018461439d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144015780820151818401526020810190506143e6565b60008484015250505050565b6000601f19601f8301169050919050565b6000614429826143c7565b61443381856143d2565b93506144438185602086016143e3565b61444c8161440d565b840191505092915050565b60006020820190508181036000830152614471818461441e565b905092915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126144a8576144a7614483565b5b8235905067ffffffffffffffff8111156144c5576144c4614488565b5b6020830191508360208202830111156144e1576144e061448d565b5b9250929050565b60008115159050919050565b6144fd816144e8565b811461450857600080fd5b50565b60008135905061451a816144f4565b92915050565b60008060006040848603121561453957614538614479565b5b600084013567ffffffffffffffff8111156145575761455661447e565b5b61456386828701614492565b935093505060206145768682870161450b565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145ab82614580565b9050919050565b6145bb816145a0565b81146145c657600080fd5b50565b6000813590506145d8816145b2565b92915050565b6145e781614393565b81146145f257600080fd5b50565b600081359050614604816145de565b92915050565b6000806040838503121561462157614620614479565b5b600061462f858286016145c9565b9250506020614640858286016145f5565b9150509250929050565b614653816144e8565b82525050565b600060208201905061466e600083018461464a565b92915050565b60008060006060848603121561468d5761468c614479565b5b600061469b868287016145c9565b93505060206146ac868287016145c9565b92505060406146bd868287016145f5565b9150509250925092565b600060ff82169050919050565b6146dd816146c7565b82525050565b60006020820190506146f860008301846146d4565b92915050565b60008060006060848603121561471757614716614479565b5b6000614725868287016145f5565b9350506020614736868287016145f5565b9250506040614747868287016145f5565b9150509250925092565b60006020828403121561476757614766614479565b5b6000614775848285016145c9565b91505092915050565b6000806040838503121561479557614794614479565b5b60006147a3858286016145c9565b92505060206147b48582860161450b565b9150509250929050565b600080600080608085870312156147d8576147d7614479565b5b60006147e68782880161450b565b94505060206147f78782880161450b565b9350506040614808878288016145f5565b9250506060614819878288016145f5565b91505092959194509250565b6000806040838503121561483c5761483b614479565b5b600061484a858286016145f5565b925050602061485b858286016145c9565b9150509250929050565b60008083601f84011261487b5761487a614483565b5b8235905067ffffffffffffffff81111561489857614897614488565b5b6020830191508360208202830111156148b4576148b361448d565b5b9250929050565b600080600080604085870312156148d5576148d4614479565b5b600085013567ffffffffffffffff8111156148f3576148f261447e565b5b6148ff87828801614492565b9450945050602085013567ffffffffffffffff8111156149225761492161447e565b5b61492e87828801614865565b925092505092959194509250565b6000806000806080858703121561495657614955614479565b5b6000614964878288016145f5565b9450506020614975878288016145f5565b9350506040614986878288016145f5565b9250506060614997878288016145f5565b91505092959194509250565b6149ac816145a0565b82525050565b60006020820190506149c760008301846149a3565b92915050565b600080604083850312156149e4576149e3614479565b5b60006149f2858286016145c9565b9250506020614a03858286016145c9565b9150509250929050565b60008060408385031215614a2457614a23614479565b5b6000614a32858286016145f5565b9250506020614a43858286016145f5565b9150509250929050565b6000614a5882614580565b9050919050565b614a6881614a4d565b82525050565b6000602082019050614a836000830184614a5f565b92915050565b600060208284031215614a9f57614a9e614479565b5b6000614aad848285016145f5565b91505092915050565b60008060408385031215614acd57614acc614479565b5b6000614adb8582860161450b565b9250506020614aec858286016145f5565b9150509250929050565b600060208284031215614b0c57614b0b614479565b5b6000614b1a8482850161450b565b91505092915050565b6000819050919050565b6000614b48614b43614b3e84614580565b614b23565b614580565b9050919050565b6000614b5a82614b2d565b9050919050565b6000614b6c82614b4f565b9050919050565b614b7c81614b61565b82525050565b6000602082019050614b976000830184614b73565b92915050565b7f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000600082015250565b6000614bd3601b836143d2565b9150614bde82614b9d565b602082019050919050565b60006020820190508181036000830152614c0281614bc6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614c4382614393565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614c7557614c74614c09565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614cd4614ccf614cca84614caf565b614b23565b6146c7565b9050919050565b614ce481614cb9565b82525050565b6000608082019050614cff60008301876149a3565b614d0c60208301866149a3565b614d19604083018561439d565b614d266060830184614cdb565b95945050505050565b6000614d3a82614393565b915060008203614d4d57614d4c614c09565b5b600182039050919050565b60008160011c9050919050565b6000808291508390505b6001851115614daf57808604811115614d8b57614d8a614c09565b5b6001851615614d9a5780820291505b8081029050614da885614d58565b9450614d6f565b94509492505050565b600082614dc85760019050614e84565b81614dd65760009050614e84565b8160018114614dec5760028114614df657614e25565b6001915050614e84565b60ff841115614e0857614e07614c09565b5b8360020a915084821115614e1f57614e1e614c09565b5b50614e84565b5060208310610133831016604e8410600b8410161715614e5a5782820a905083811115614e5557614e54614c09565b5b614e84565b614e678484846001614d65565b92509050818404811115614e7e57614e7d614c09565b5b81810290505b9392505050565b6000614e9682614393565b9150614ea1836146c7565b9250614ece7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614db8565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f1082614393565b9150614f1b83614393565b925082614f2b57614f2a614ed6565b5b828204905092915050565b6000614f4182614393565b9150614f4c83614393565b9250828203905081811115614f6457614f63614c09565b5b92915050565b6000614f7582614393565b9150614f8083614393565b9250828201905080821115614f9857614f97614c09565b5b92915050565b6000614fa982614393565b9150614fb483614393565b9250828202614fc281614393565b91508282048414831517614fd957614fd8614c09565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006150166020836143d2565b915061502182614fe0565b602082019050919050565b6000602082019050818103600083015261504581615009565b9050919050565b7f43616e277420616c7465722063757272656e74206c697175696469747920706160008201527f6972000000000000000000000000000000000000000000000000000000000000602082015250565b60006150a86022836143d2565b91506150b38261504c565b604082019050919050565b600060208201905081810360008301526150d78161509b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061513a6026836143d2565b9150615145826150de565b604082019050919050565b600060208201905081810360008301526151698161512d565b9050919050565b7f42455032303a207472616e736665722066726f6d203078300000000000000000600082015250565b60006151a66018836143d2565b91506151b182615170565b602082019050919050565b600060208201905081810360008301526151d581615199565b9050919050565b7f42455032303a207472616e7366657220746f2030783000000000000000000000600082015250565b60006152126016836143d2565b915061521d826151dc565b602082019050919050565b6000602082019050818103600083015261524181615205565b9050919050565b7f416d6f756e74206d757374206265203e207a65726f0000000000000000000000600082015250565b600061527e6015836143d2565b915061528982615248565b602082019050919050565b600060208201905081810360008301526152ad81615271565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b60006152ea6014836143d2565b91506152f5826152b4565b602082019050919050565b60006020820190508181036000830152615319816152dd565b9050919050565b7f4c6971756964697479206e6f74206164646564207965742e0000000000000000600082015250565b60006153566018836143d2565b915061536182615320565b602082019050919050565b6000602082019050818103600083015261538581615349565b9050919050565b7f54726164696e67206e6f74206f70656e207965742e0000000000000000000000600082015250565b60006153c26015836143d2565b91506153cd8261538c565b602082019050919050565b600060208201905081810360008301526153f1816153b5565b9050919050565b6000819050919050565b600061541d615418615413846153f8565b614b23565b6146c7565b9050919050565b61542d81615402565b82525050565b600060808201905061544860008301876149a3565b61545560208301866149a3565b615462604083018561439d565b61546f6060830184615424565b95945050505050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006154ae6011836143d2565b91506154b982615478565b602082019050919050565b600060208201905081810360008301526154dd816154a1565b9050919050565b7f5472616e736665722072617465206c696d69742065786365656465642e000000600082015250565b600061551a601d836143d2565b9150615525826154e4565b602082019050919050565b600060208201905081810360008301526155498161550d565b9050919050565b7f57616c6c65742070726f7465637465642c20706c6561736520636f6e7461637460008201527f20737570706f72742e0000000000000000000000000000000000000000000000602082015250565b60006155ac6029836143d2565b91506155b782615550565b604082019050919050565b600060208201905081810360008301526155db8161559f565b9050919050565b6000819050919050565b60006156076156026155fd846155e2565b614b23565b6146c7565b9050919050565b615617816155ec565b82525050565b600060808201905061563260008301876149a3565b61563f60208301866149a3565b61564c604083018561439d565b615659606083018461560e565b95945050505050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b60006156be6025836143d2565b91506156c982615662565b604082019050919050565b600060208201905081810360008301526156ed816156b1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615732816145b2565b92915050565b60006020828403121561574e5761574d614479565b5b600061575c84828501615723565b91505092915050565b600061578061577b615776846153f8565b614b23565b614393565b9050919050565b61579081615765565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157cb816145a0565b82525050565b60006157dd83836157c2565b60208301905092915050565b6000602082019050919050565b600061580182615796565b61580b81856157a1565b9350615816836157b2565b8060005b8381101561584757815161582e88826157d1565b9750615839836157e9565b92505060018101905061581a565b5085935050505092915050565b600060a082019050615869600083018861439d565b6158766020830187615787565b818103604083015261588881866157f6565b905061589760608301856149a3565b6158a4608083018461439d565b9695505050505050565b60006158b982614b4f565b9050919050565b6158c9816158ae565b82525050565b600060c0820190506158e460008301896149a3565b6158f1602083018861439d565b6158fe6040830187615787565b61590b6060830186615787565b61591860808301856158c0565b61592560a083018461439d565b979650505050505050565b60008151905061593f816145de565b92915050565b60008060006060848603121561595e5761595d614479565b5b600061596c86828701615930565b935050602061597d86828701615930565b925050604061598e86828701615930565b9150509250925092565b60006060820190506159ad600083018661439d565b6159ba602083018561439d565b6159c7604083018461439d565b94935050505056fea2646970667358221220720c1e73f88ebe5012edf4529a3bffba562b235c3cc5827ba39b414bab406e9764736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103035760003560e01c80636f4ce42811610190578063bf56b371116100dc578063e96fada211610095578063f84ba65d1161006f578063f84ba65d14610b65578063f8821a6214610b8e578063f887ea4014610bb9578063fabb0b4f14610be45761030a565b8063e96fada214610ad4578063f1f3bca314610aff578063f2fde38b14610b3c5761030a565b8063bf56b371146109b2578063bfa21d6a146109dd578063c1adf7bc14610a08578063c287184e14610a45578063d686014214610a6e578063dd62ed3e14610a975761030a565b806395d89b4111610149578063a8aa1b3111610123578063a8aa1b31146108f6578063a9059cbb14610921578063abe57e701461095e578063bafe446b146109875761030a565b806395d89b41146108775780639b02c402146108a2578063a4b45c00146108cd5761030a565b80636f4ce428146107675780636fcba377146107a457806370a08231146107cd578063715018a61461080a578063893d20e8146108215780638da5cb5b1461084c5761030a565b8063492a937b1161024f578063584f969a1161020857806363a803e1116101e257806363a803e1146106bf578063658d4b7f146106ea57806367243482146107135780636ddd17131461073c5761030a565b8063584f969a1461065457806360bba03d1461066b57806361e08e72146106945761030a565b8063492a937b14610548578063507139351461057157806354a1dfc91461059a57806356a227f2146105c3578063571ac8b0146105ec5780635804f1e4146106295761030a565b8063234e9494116102bc578063313ce56711610296578063313ce567146104a057806334848b9a146104cb578063421dd7c7146104f457806346d7edaa1461050b5761030a565b8063234e94941461040d57806323b872dd146104385780632b112e49146104755761030a565b80630445b6671461030f57806306fdde031461033a578063095db78f14610365578063095ea7b31461038e5780631031e36e146103cb57806318160ddd146103e25761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c0f565b60405161033191906143ac565b60405180910390f35b34801561034657600080fd5b5061034f610c15565b60405161035c9190614457565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190614520565b610c52565b005b34801561039a57600080fd5b506103b560048036038101906103b0919061460a565b610ef1565b6040516103c29190614659565b60405180910390f35b3480156103d757600080fd5b506103e0610fe3565b005b3480156103ee57600080fd5b506103f76110ea565b60405161040491906143ac565b60405180910390f35b34801561041957600080fd5b506104226110f4565b60405161042f91906143ac565b60405180910390f35b34801561044457600080fd5b5061045f600480360381019061045a9190614674565b611116565b60405161046c9190614659565b60405180910390f35b34801561048157600080fd5b5061048a6112d8565b60405161049791906143ac565b60405180910390f35b3480156104ac57600080fd5b506104b561134c565b6040516104c291906146e3565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed91906146fe565b611355565b005b34801561050057600080fd5b506105096114aa565b005b34801561051757600080fd5b50610532600480360381019061052d9190614751565b6115b2565b60405161053f91906143ac565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a919061477e565b6115ca565b005b34801561057d57600080fd5b50610598600480360381019061059391906146fe565b61174a565b005b3480156105a657600080fd5b506105c160048036038101906105bc91906147be565b611855565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190614825565b611964565b005b3480156105f857600080fd5b50610613600480360381019061060e9190614751565b611a9c565b6040516106209190614659565b60405180910390f35b34801561063557600080fd5b5061063e611acf565b60405161064b91906143ac565b60405180910390f35b34801561066057600080fd5b50610669611ad5565b005b34801561067757600080fd5b50610692600480360381019061068d919061477e565b611bdd565b005b3480156106a057600080fd5b506106a9611ccd565b6040516106b691906143ac565b60405180910390f35b3480156106cb57600080fd5b506106d4611cd3565b6040516106e191906143ac565b60405180910390f35b3480156106f657600080fd5b50610711600480360381019061070c919061477e565b611cf5565b005b34801561071f57600080fd5b5061073a600480360381019061073591906148bb565b611de5565b005b34801561074857600080fd5b50610751612025565b60405161075e9190614659565b60405180910390f35b34801561077357600080fd5b5061078e60048036038101906107899190614751565b612038565b60405161079b91906143ac565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c6919061493c565b612050565b005b3480156107d957600080fd5b506107f460048036038101906107ef9190614751565b612135565b60405161080191906143ac565b60405180910390f35b34801561081657600080fd5b5061081f61217e565b005b34801561082d57600080fd5b506108366122d1565b60405161084391906149b2565b60405180910390f35b34801561085857600080fd5b506108616122e0565b60405161086e91906149b2565b60405180910390f35b34801561088357600080fd5b5061088c612309565b6040516108999190614457565b60405180910390f35b3480156108ae57600080fd5b506108b7612346565b6040516108c491906143ac565b60405180910390f35b3480156108d957600080fd5b506108f460048036038101906108ef91906149cd565b61234c565b005b34801561090257600080fd5b5061090b612467565b60405161091891906149b2565b60405180910390f35b34801561092d57600080fd5b506109486004803603810190610943919061460a565b61248d565b6040516109559190614659565b60405180910390f35b34801561096a57600080fd5b5061098560048036038101906109809190614a0d565b6124a2565b005b34801561099357600080fd5b5061099c612581565b6040516109a991906143ac565b60405180910390f35b3480156109be57600080fd5b506109c76125a3565b6040516109d491906143ac565b60405180910390f35b3480156109e957600080fd5b506109f26125a9565b6040516109ff9190614a6e565b60405180910390f35b348015610a1457600080fd5b50610a2f6004803603810190610a2a9190614751565b6125cf565b604051610a3c91906143ac565b60405180910390f35b348015610a5157600080fd5b50610a6c6004803603810190610a679190614a89565b6125e7565b005b348015610a7a57600080fd5b50610a956004803603810190610a909190614ab6565b612694565b005b348015610aa357600080fd5b50610abe6004803603810190610ab991906149cd565b6127c4565b604051610acb91906143ac565b60405180910390f35b348015610ae057600080fd5b50610ae961284b565b604051610af69190614a6e565b60405180910390f35b348015610b0b57600080fd5b50610b266004803603810190610b219190614af6565b612871565b604051610b3391906143ac565b60405180910390f35b348015610b4857600080fd5b50610b636004803603810190610b5e9190614751565b6128d4565b005b348015610b7157600080fd5b50610b8c6004803603810190610b87919061477e565b612a95565b005b348015610b9a57600080fd5b50610ba3612b85565b604051610bb091906143ac565b60405180910390f35b348015610bc557600080fd5b50610bce612b8b565b604051610bdb9190614b82565b60405180910390f35b348015610bf057600080fd5b50610bf9612bb1565b604051610c0691906143ac565b60405180910390f35b60245481565b60606040518060400160405280601581526020017f486f6c64204f6e20466f722044656172204c6966650000000000000000000000815250905090565b60276000610c5e612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610ce35750610cb46122e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1990614be9565b60405180910390fd5b8015610d4257601960009054906101000a900460ff16610d4157600080fd5b5b60005b83839050811015610eeb578115610dd857601b6000815480929190610d6990614c38565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610da357610da2614c80565b5b9050602002016020810190610db89190614751565b436002604051610dcb9493929190614cea565b60405180910390a1610e60565b600060186000868685818110610df157610df0614c80565b5b9050602002016020810190610e069190614751565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e5f57601b6000815480929190610e5990614d2f565b91905055505b5b81610e6c576000610e6e565b435b60186000868685818110610e8557610e84614c80565b5b9050602002016020810190610e9a9190614751565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080610ee390614c38565b915050610d45565b50505050565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610fd191906143ac565b60405180910390a36001905092915050565b60276000610fef612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061107457506110456122e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa90614be9565b60405180910390fd5b602160019054906101000a900460ff16156110cd57600080fd5b6000602160006101000a81548160ff021916908315150217905550565b6000600354905090565b60006009600a6111049190614e8b565b6005546111119190614f05565b905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112c45781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112439190614f36565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112cf848484612bbf565b90509392505050565b6000611305600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612135565b611330600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612135565b61133a9190614f6a565b6003546113479190614f36565b905090565b60006009905090565b60276000611361612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806113e657506113b76122e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c90614be9565b60405180910390fd5b602160009054906101000a900460ff161580156114425750600a83105b61144b57600080fd5b826020819055506001602160006101000a81548160ff02191690831515021790555043601e8190555081426114809190614f6a565b601c819055506009600a6114949190614e8b565b8161149f9190614f9e565b601a81905550505050565b602760006114b6612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061153b575061150c6122e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61157a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157190614be9565b60405180910390fd5b6001601960016101000a81548160ff0219169083151502179055506000601960006101000a81548160ff021916908315150217905550565b60186020528060005260406000206000915090505481565b6115d2612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461165f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116569061502c565b60405180910390fd5b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e6906150be565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611752612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d69061502c565b60405180910390fd5b6000831180156117ef5750600082115b80156117fb5750600081115b801561180957506127108111155b61181257600080fd5b80836003546118219190614f9e565b61182b9190614f05565b60048190555080826003546118409190614f9e565b61184a9190614f05565b600581905550505050565b61185d612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e19061502c565b60405180910390fd5b600082116118f757600080fd5b83602360006101000a81548160ff02191690831515021790555082602360016101000a81548160ff021916908315150217905550816003546119399190614f05565b6024819055506009600a61194d9190614e8b565b816119589190614f9e565b60258190555050505050565b60276000611970612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119f557506119c66122e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2b90614be9565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc60648584611a619190614f9e565b611a6b9190614f05565b9081150290604051600060405180830381858888f19350505050158015611a96573d6000803e3d6000fd5b50505050565b6000611ac8827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ef1565b9050919050565b601f5481565b60276000611ae1612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b665750611b376122e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90614be9565b60405180910390fd5b6001602160016101000a81548160ff0219169083151502179055506001602160006101000a81548160ff021916908315150217905550565b611be5612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c699061502c565b60405180910390fd5b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60225481565b60006009600a611ce39190614e8b565b600654611cf09190614f05565b905090565b611cfd612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d819061502c565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611ded612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e719061502c565b60405180910390fd5b600084849050118015611e9257508383905082829050145b611e9b57600080fd5b600033905060005b8585905081101561201d5760176000878784818110611ec557611ec4614c80565b5b9050602002016020810190611eda9190614751565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fa05750600d6000878784818110611f4157611f40614c80565b5b9050602002016020810190611f569190614751565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561200a5761200882878784818110611fbc57611fbb614c80565b5b9050602002016020810190611fd19190614751565b6009600a611fdf9190614e8b565b878786818110611ff257611ff1614c80565b5b905060200201356120039190614f9e565b6133f1565b505b808061201590614c38565b915050611ea3565b505050505050565b602360009054906101000a900460ff1681565b60096020528060005260406000206000915090505481565b612058612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120dc9061502c565b60405180910390fd5b83600f8190555082600e8190555083836120ff9190614f6a565b601081905550816011819055508060128190555060026012546121229190614f05565b6010541061212f57600080fd5b50505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b612186612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220a9061502c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006122db6122e0565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f484f444c00000000000000000000000000000000000000000000000000000000815250905090565b601b5481565b612354612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d89061502c565b60405180910390fd5b81601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061249a338484612bbf565b905092915050565b6124aa612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252e9061502c565b60405180910390fd5b6000821180156125475750600081115b801561255557506127108111155b61255e57600080fd5b808260035461256d9190614f9e565b6125779190614f05565b6006819055505050565b60006009600a6125919190614e8b565b60045461259e9190614f05565b905090565b601e5481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915090505481565b6125ef612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461267c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126739061502c565b60405180910390fd5b603c81111561268a57600080fd5b8060228190555050565b602760006126a0612bb7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061272557506126f66122e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b612764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275b90614be9565b60405180910390fd5b601960019054906101000a900460ff161561277e57600080fd5b81601960006101000a81548160ff0219169083151502179055506201518081106127a757600080fd5b80601c60008282546127b99190614f6a565b925050819055505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600043602054601e546128849190614f6a565b1061289f5760016012546128989190614f36565b90506128cf565b81156128bc576011546010546128b59190614f6a565b90506128cf565b6011546010546128cc9190614f36565b90505b919050565b6128dc612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612969576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129609061502c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cf90615150565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612a9d612bb7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b219061502c565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60255481565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60205481565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c26906151bc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9590615228565b60405180910390fd5b60008211612ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd890615294565b60405180910390fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5a90615300565b60405180910390fd5b612d6b61357f565b158015612dc15750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e5b57600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e499061536c565b60405180910390fd5b612e5a61358c565b5b602160009054906101000a900460ff16612f5057600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f105750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f46906153d8565b60405180910390fd5b5b612f5b8484846135b7565b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130035750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561306557600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613064576130638383613b74565b5b5b601960009054906101000a900460ff168015613082575042601c54115b156131f857601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561310c57508273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614155b801561315757506000601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156131f75743601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601b60008154809291906131b390614c38565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32844360006040516131ee9493929190615433565b60405180910390a15b5b602660009054906101000a900460ff161561321f576132188484846133f1565b90506133ea565b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461326a9190614f36565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006132b885613c0d565b6132c257826132cd565b6132cc8484613c64565b5b90506132d884613d47565b156132f15760008311156132f0576132ef83613e71565b5b5b80600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461333c9190614f6a565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133dc91906143ac565b60405180910390a360019150505b9392505050565b600081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343e9190614f36565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134cc9190614f6a565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161356c91906143ac565b60405180910390a3600190509392505050565b600080601e541415905090565b43601e8190555042601f819055506001602360006101000a81548160ff021916908315150217905550565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061366b5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661366357600554613667565b6004545b8111155b6136aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a1906154c4565b60405180910390fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061374e575043602254600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461374b9190614f6a565b11155b61378d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378490615530565b60405180910390fd5b6000601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146138ce576009600a6137e29190614e8b565b601a546137ef9190614f9e565b811115801561383d57506000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b801561384a575042601c54115b613889576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613880906155c2565b60405180910390fd5b43600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156139695743600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b6f565b61397283613c0d565b15613b6e57601960009054906101000a900460ff168015613994575042601c54115b80156139de575043600a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b8015613a2957506000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15613ab15743601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3283436001604051613aa8949392919061561d565b60405180910390a15b43600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614613b6d5743600a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b505050565b600060065490508082600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc79190614f6a565b1115613c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bff906156d4565b60405180910390fd5b505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000601254613cc483612871565b85613ccf9190614f9e565b613cd99190614f05565b905080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d2a9190614f6a565b925050819055508084613d3d9190614f36565b9250505092915050565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613db05750602660009054906101000a900460ff16155b8015613dc85750602360009054906101000a900460ff165b8015613e1d5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015613e6a5750602554600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b9050919050565b6001602660006101000a81548160ff02191690831515021790555060006024548210613e9f57602454613ea1565b815b905080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613f2d57600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b60006010546002600f5484613f429190614f9e565b613f4c9190614f05565b613f569190614f05565b90508082613f649190614f36565b91506000600267ffffffffffffffff811115613f8357613f826156f4565b5b604051908082528060200260200182016040528015613fb15781602001602082028036833780820191505090505b5090503081600081518110613fc957613fc8614c80565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614070573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140949190615738565b816001815181106140a8576140a7614c80565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008530426040518663ffffffff1660e01b815260040161414b959493929190615854565b600060405180830381600087803b15801561416557600080fd5b505af1158015614179573d6000803e3d6000fd5b505050506000814761418b9190614f36565b905060006002600f5461419e9190614f05565b6010546141ab9190614f36565b90506000816002600f54856141c09190614f9e565b6141ca9190614f05565b6141d49190614f05565b9050600081846141e49190614f36565b9050600081111561425957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614257573d6000803e3d6000fd5b505b600087111561433257601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016142eb969594939291906158cf565b60606040518083038185885af1158015614309573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061432e9190615945565b5050505b7fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df981838960405161436593929190615998565b60405180910390a150505050505050506000602660006101000a81548160ff02191690831515021790555050565b6000819050919050565b6143a681614393565b82525050565b60006020820190506143c1600083018461439d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144015780820151818401526020810190506143e6565b60008484015250505050565b6000601f19601f8301169050919050565b6000614429826143c7565b61443381856143d2565b93506144438185602086016143e3565b61444c8161440d565b840191505092915050565b60006020820190508181036000830152614471818461441e565b905092915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126144a8576144a7614483565b5b8235905067ffffffffffffffff8111156144c5576144c4614488565b5b6020830191508360208202830111156144e1576144e061448d565b5b9250929050565b60008115159050919050565b6144fd816144e8565b811461450857600080fd5b50565b60008135905061451a816144f4565b92915050565b60008060006040848603121561453957614538614479565b5b600084013567ffffffffffffffff8111156145575761455661447e565b5b61456386828701614492565b935093505060206145768682870161450b565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145ab82614580565b9050919050565b6145bb816145a0565b81146145c657600080fd5b50565b6000813590506145d8816145b2565b92915050565b6145e781614393565b81146145f257600080fd5b50565b600081359050614604816145de565b92915050565b6000806040838503121561462157614620614479565b5b600061462f858286016145c9565b9250506020614640858286016145f5565b9150509250929050565b614653816144e8565b82525050565b600060208201905061466e600083018461464a565b92915050565b60008060006060848603121561468d5761468c614479565b5b600061469b868287016145c9565b93505060206146ac868287016145c9565b92505060406146bd868287016145f5565b9150509250925092565b600060ff82169050919050565b6146dd816146c7565b82525050565b60006020820190506146f860008301846146d4565b92915050565b60008060006060848603121561471757614716614479565b5b6000614725868287016145f5565b9350506020614736868287016145f5565b9250506040614747868287016145f5565b9150509250925092565b60006020828403121561476757614766614479565b5b6000614775848285016145c9565b91505092915050565b6000806040838503121561479557614794614479565b5b60006147a3858286016145c9565b92505060206147b48582860161450b565b9150509250929050565b600080600080608085870312156147d8576147d7614479565b5b60006147e68782880161450b565b94505060206147f78782880161450b565b9350506040614808878288016145f5565b9250506060614819878288016145f5565b91505092959194509250565b6000806040838503121561483c5761483b614479565b5b600061484a858286016145f5565b925050602061485b858286016145c9565b9150509250929050565b60008083601f84011261487b5761487a614483565b5b8235905067ffffffffffffffff81111561489857614897614488565b5b6020830191508360208202830111156148b4576148b361448d565b5b9250929050565b600080600080604085870312156148d5576148d4614479565b5b600085013567ffffffffffffffff8111156148f3576148f261447e565b5b6148ff87828801614492565b9450945050602085013567ffffffffffffffff8111156149225761492161447e565b5b61492e87828801614865565b925092505092959194509250565b6000806000806080858703121561495657614955614479565b5b6000614964878288016145f5565b9450506020614975878288016145f5565b9350506040614986878288016145f5565b9250506060614997878288016145f5565b91505092959194509250565b6149ac816145a0565b82525050565b60006020820190506149c760008301846149a3565b92915050565b600080604083850312156149e4576149e3614479565b5b60006149f2858286016145c9565b9250506020614a03858286016145c9565b9150509250929050565b60008060408385031215614a2457614a23614479565b5b6000614a32858286016145f5565b9250506020614a43858286016145f5565b9150509250929050565b6000614a5882614580565b9050919050565b614a6881614a4d565b82525050565b6000602082019050614a836000830184614a5f565b92915050565b600060208284031215614a9f57614a9e614479565b5b6000614aad848285016145f5565b91505092915050565b60008060408385031215614acd57614acc614479565b5b6000614adb8582860161450b565b9250506020614aec858286016145f5565b9150509250929050565b600060208284031215614b0c57614b0b614479565b5b6000614b1a8482850161450b565b91505092915050565b6000819050919050565b6000614b48614b43614b3e84614580565b614b23565b614580565b9050919050565b6000614b5a82614b2d565b9050919050565b6000614b6c82614b4f565b9050919050565b614b7c81614b61565b82525050565b6000602082019050614b976000830184614b73565b92915050565b7f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000600082015250565b6000614bd3601b836143d2565b9150614bde82614b9d565b602082019050919050565b60006020820190508181036000830152614c0281614bc6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614c4382614393565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614c7557614c74614c09565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614cd4614ccf614cca84614caf565b614b23565b6146c7565b9050919050565b614ce481614cb9565b82525050565b6000608082019050614cff60008301876149a3565b614d0c60208301866149a3565b614d19604083018561439d565b614d266060830184614cdb565b95945050505050565b6000614d3a82614393565b915060008203614d4d57614d4c614c09565b5b600182039050919050565b60008160011c9050919050565b6000808291508390505b6001851115614daf57808604811115614d8b57614d8a614c09565b5b6001851615614d9a5780820291505b8081029050614da885614d58565b9450614d6f565b94509492505050565b600082614dc85760019050614e84565b81614dd65760009050614e84565b8160018114614dec5760028114614df657614e25565b6001915050614e84565b60ff841115614e0857614e07614c09565b5b8360020a915084821115614e1f57614e1e614c09565b5b50614e84565b5060208310610133831016604e8410600b8410161715614e5a5782820a905083811115614e5557614e54614c09565b5b614e84565b614e678484846001614d65565b92509050818404811115614e7e57614e7d614c09565b5b81810290505b9392505050565b6000614e9682614393565b9150614ea1836146c7565b9250614ece7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614db8565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f1082614393565b9150614f1b83614393565b925082614f2b57614f2a614ed6565b5b828204905092915050565b6000614f4182614393565b9150614f4c83614393565b9250828203905081811115614f6457614f63614c09565b5b92915050565b6000614f7582614393565b9150614f8083614393565b9250828201905080821115614f9857614f97614c09565b5b92915050565b6000614fa982614393565b9150614fb483614393565b9250828202614fc281614393565b91508282048414831517614fd957614fd8614c09565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006150166020836143d2565b915061502182614fe0565b602082019050919050565b6000602082019050818103600083015261504581615009565b9050919050565b7f43616e277420616c7465722063757272656e74206c697175696469747920706160008201527f6972000000000000000000000000000000000000000000000000000000000000602082015250565b60006150a86022836143d2565b91506150b38261504c565b604082019050919050565b600060208201905081810360008301526150d78161509b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061513a6026836143d2565b9150615145826150de565b604082019050919050565b600060208201905081810360008301526151698161512d565b9050919050565b7f42455032303a207472616e736665722066726f6d203078300000000000000000600082015250565b60006151a66018836143d2565b91506151b182615170565b602082019050919050565b600060208201905081810360008301526151d581615199565b9050919050565b7f42455032303a207472616e7366657220746f2030783000000000000000000000600082015250565b60006152126016836143d2565b915061521d826151dc565b602082019050919050565b6000602082019050818103600083015261524181615205565b9050919050565b7f416d6f756e74206d757374206265203e207a65726f0000000000000000000000600082015250565b600061527e6015836143d2565b915061528982615248565b602082019050919050565b600060208201905081810360008301526152ad81615271565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b60006152ea6014836143d2565b91506152f5826152b4565b602082019050919050565b60006020820190508181036000830152615319816152dd565b9050919050565b7f4c6971756964697479206e6f74206164646564207965742e0000000000000000600082015250565b60006153566018836143d2565b915061536182615320565b602082019050919050565b6000602082019050818103600083015261538581615349565b9050919050565b7f54726164696e67206e6f74206f70656e207965742e0000000000000000000000600082015250565b60006153c26015836143d2565b91506153cd8261538c565b602082019050919050565b600060208201905081810360008301526153f1816153b5565b9050919050565b6000819050919050565b600061541d615418615413846153f8565b614b23565b6146c7565b9050919050565b61542d81615402565b82525050565b600060808201905061544860008301876149a3565b61545560208301866149a3565b615462604083018561439d565b61546f6060830184615424565b95945050505050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006154ae6011836143d2565b91506154b982615478565b602082019050919050565b600060208201905081810360008301526154dd816154a1565b9050919050565b7f5472616e736665722072617465206c696d69742065786365656465642e000000600082015250565b600061551a601d836143d2565b9150615525826154e4565b602082019050919050565b600060208201905081810360008301526155498161550d565b9050919050565b7f57616c6c65742070726f7465637465642c20706c6561736520636f6e7461637460008201527f20737570706f72742e0000000000000000000000000000000000000000000000602082015250565b60006155ac6029836143d2565b91506155b782615550565b604082019050919050565b600060208201905081810360008301526155db8161559f565b9050919050565b6000819050919050565b60006156076156026155fd846155e2565b614b23565b6146c7565b9050919050565b615617816155ec565b82525050565b600060808201905061563260008301876149a3565b61563f60208301866149a3565b61564c604083018561439d565b615659606083018461560e565b95945050505050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b60006156be6025836143d2565b91506156c982615662565b604082019050919050565b600060208201905081810360008301526156ed816156b1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615732816145b2565b92915050565b60006020828403121561574e5761574d614479565b5b600061575c84828501615723565b91505092915050565b600061578061577b615776846153f8565b614b23565b614393565b9050919050565b61579081615765565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157cb816145a0565b82525050565b60006157dd83836157c2565b60208301905092915050565b6000602082019050919050565b600061580182615796565b61580b81856157a1565b9350615816836157b2565b8060005b8381101561584757815161582e88826157d1565b9750615839836157e9565b92505060018101905061581a565b5085935050505092915050565b600060a082019050615869600083018861439d565b6158766020830187615787565b818103604083015261588881866157f6565b905061589760608301856149a3565b6158a4608083018461439d565b9695505050505050565b60006158b982614b4f565b9050919050565b6158c9816158ae565b82525050565b600060c0820190506158e460008301896149a3565b6158f1602083018861439d565b6158fe6040830187615787565b61590b6060830186615787565b61591860808301856158c0565b61592560a083018461439d565b979650505050505050565b60008151905061593f816145de565b92915050565b60008060006060848603121561595e5761595d614479565b5b600061596c86828701615930565b935050602061597d86828701615930565b925050604061598e86828701615930565b9150509250925092565b60006060820190506159ad600083018661439d565b6159ba602083018561439d565b6159c7604083018461439d565b94935050505056fea2646970667358221220720c1e73f88ebe5012edf4529a3bffba562b235c3cc5827ba39b414bab406e9764736f6c63430008110033

Deployed Bytecode Sourcemap

5170:16301:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7173:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8637:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11593:617;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9378:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10957:115;;;;;;;;;;;;;:::i;:::-;;8385:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8902:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12382:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21224:138;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8479:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10573:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11454:127;;;;;;;;;;;;;:::i;:::-;;6649:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19044:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19372:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20856:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10347:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9602:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6934:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11084:111;;;;;;;;;;;;;:::i;:::-;;9736:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7065:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9015:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19950:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9867:468;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7102:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5857:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20212:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9126:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4765:148;;;;;;;;;;;;;:::i;:::-;;8714:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4555:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8556:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6805:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20606:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6874:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12218:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19723:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8791:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6902:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6288:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5908:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19236:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11207:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9237:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6392:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16629:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4919:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20077:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7230:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6498:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6968:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7173:50;;;;:::o;8637:71::-;8676:13;8700:5;;;;;;;;;;;;;;;;;8693:12;;8637:71;:::o;11593:617::-;7461:10;:24;7472:12;:10;:12::i;:::-;7461:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7503:7;:5;:7::i;:::-;7489:21;;:10;:21;;;7461:49;7453:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11693:8:::1;11689:67;;;11726:17;;;;;;;;;;;11718:26;;;::::0;::::1;;11689:67;11781:6;11776:427;11797:8;;:15;;11793:1;:19;11776:427;;;11852:8;11848:277;;;11881:15;;:17;;;;;;;;;:::i;:::-;;;;;;11922:56;11938:9;11949:8;;11958:1;11949:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11962:12;11976:1;11922:56;;;;;;;;;:::i;:::-;;;;;;;;11848:277;;;12062:1;12036:9;:22;12046:8;;12055:1;12046:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12036:22;;;;;;;;;;;;;;;;:27;12032:71;;12086:15;;:17;;;;;;;;;:::i;:::-;;;;;;12032:71;11848:277;12164:8;:27;;12190:1;12164:27;;;12175:12;12164:27;12139:9;:22;12149:8;;12158:1;12149:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12139:22;;;;;;;;;;;;;;;:52;;;;11814:3;;;;;:::i;:::-;;;;11776:427;;;;11593:617:::0;;;:::o;9378:216::-;9453:4;9505:6;9470:11;:23;9482:10;9470:23;;;;;;;;;;;;;;;:32;9494:7;9470:32;;;;;;;;;;;;;;;:41;;;;9548:7;9527:37;;9536:10;9527:37;;;9557:6;9527:37;;;;;;:::i;:::-;;;;;;;;9582:4;9575:11;;9378:216;;;;:::o;10957:115::-;7461:10;:24;7472:12;:10;:12::i;:::-;7461:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7503:7;:5;:7::i;:::-;7489:21;;:10;:21;;;7461:49;7453:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11019:13:::1;;;;;;;;;;;11018:14;11010:23;;;::::0;::::1;;11059:5;11044:12;;:20;;;;;;;;;;;;;;;;;;10957:115::o:0;8385:88::-;8440:7;8458:12;;8451:19;;8385:88;:::o;8902:107::-;8952:7;5498:1;8990:2;:15;;;;:::i;:::-;8970:16;;:36;;;;:::i;:::-;8963:43;;8902:107;:::o;12382:341::-;12482:4;12537:17;12502:11;:19;12514:6;12502:19;;;;;;;;;;;;;;;:31;12522:10;12502:31;;;;;;;;;;;;;;;;:52;12499:157;;12638:6;12604:11;:19;12616:6;12604:19;;;;;;;;;;;;;;;:31;12624:10;12604:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;12570:11;:19;12582:6;12570:19;;;;;;;;;;;;;;;:31;12590:10;12570:31;;;;;;;;;;;;;;;:74;;;;12499:157;12675:40;12689:6;12697:9;12708:6;12675:13;:40::i;:::-;12668:47;;12382:341;;;;;:::o;21224:138::-;21277:7;21338:15;21348:4;;;;;;;;;;;21338:9;:15::i;:::-;21320;21330:4;;;;;;;;;;;21320:9;:15::i;:::-;:33;;;;:::i;:::-;21304:12;;:50;;;;:::i;:::-;21297:57;;21224:138;:::o;8479:71::-;8522:5;5498:1;8531:16;;8479:71;:::o;10573:372::-;7461:10;:24;7472:12;:10;:12::i;:::-;7461:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7503:7;:5;:7::i;:::-;7489:21;;:10;:21;;;7461:49;7453:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;10690:12:::1;;;;;;;;;;;10689:13;:33;;;;;10720:2;10706:11;:16;10689:33;10681:42;;;::::0;::::1;;10747:11;10734:10;:24;;;;10784:4;10769:12;;:19;;;;;;;;;;;;;;;;;;10812:12;10799:10;:25;;;;10871:11;10853:15;:29;;;;:::i;:::-;10835:15;:47;;;;5498:1;10921:2;:15;;;;:::i;:::-;10911:6;:26;;;;:::i;:::-;10893:15;:44;;;;10573:372:::0;;;:::o;11454:127::-;7461:10;:24;7472:12;:10;:12::i;:::-;7461:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7503:7;:5;:7::i;:::-;7489:21;;:10;:21;;;7461:49;7453:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11533:4:::1;11512:18;;:25;;;;;;;;;;;;;;;;;;11568:5;11548:17;;:25;;;;;;;;;;;;;;;;;;11454:127::o:0;6649:45::-;;;;;;;;;;;;;;;;;:::o;19044:184::-;4690:12;:10;:12::i;:::-;4680:22;;:6;;;;;;;;;;:22;;;4672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19139:4:::1;;;;;;;;;;;19133:10;;:2;:10;;::::0;19125:57:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19214:6;19193:14;:18;19208:2;19193:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;19044:184:::0;;:::o;19372:339::-;4690:12;:10;:12::i;:::-;4680:22;;:6;;;;;;;;;;:22;;;4672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19507:1:::1;19492:12;:16;:37;;;;;19528:1;19512:13;:17;19492:37;:52;;;;;19543:1;19533:7;:11;19492:52;:72;;;;;19559:5;19548:7;:16;;19492:72;19484:81;;;::::0;::::1;;19626:7;19610:12;19595;;:27;;;;:::i;:::-;19594:39;;;;:::i;:::-;19576:15;:57;;;;19696:7;19679:13;19664:12;;:28;;;;:::i;:::-;19663:40;;;;:::i;:::-;19644:16;:59;;;;19372:339:::0;;;:::o;20856:360::-;4690:12;:10;:12::i;:::-;4680:22;;:6;;;;;;;;;;:22;;;4672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21019:1:::1;21004:12;:16;20996:25;;;::::0;::::1;;21046:8;21032:11;;:22;;;;;;;;;;;;;;;;;;21082:15;21065:14;;:32;;;;;;;;;;;;;;;;;;21139:12;21124;;:27;;;;:::i;:::-;21108:13;:43;;;;5498:1;21192:2;:15;;;;:::i;:::-;21176:12;:32;;;;:::i;:::-;21162:11;:46;;;;20856:360:::0;;;;:::o;10347:214::-;7461:10;:24;7472:12;:10;:12::i;:::-;7461:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7503:7;:5;:7::i;:::-;7489:21;;:10;:21;;;7461:49;7453:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;10442:17:::1;10462:21;10442:41;;10502:3;10494:21;;:59;10549:3;10529:16;10517:9;:28;;;;:::i;:::-;10516:36;;;;:::i;:::-;10494:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10431:130;10347:214:::0;;:::o;9602:122::-;9657:4;9681:35;9689:7;9698:17;9681:7;:35::i;:::-;9674:42;;9602:122;;;:::o;6934:27::-;;;;:::o;11084:111::-;7461:10;:24;7472:12;:10;:12::i;:::-;7461:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7503:7;:5;:7::i;:::-;7489:21;;:10;:21;;;7461:49;7453:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11153:4:::1;11137:13;;:20;;;;;;;;;;;;;;;;;;11183:4;11168:12;;:19;;;;;;;;;;;;;;;;;;11084:111::o:0;9736:119::-;4690:12;:10;:12::i;:::-;4680:22;;:6;;;;;;;;;;:22;;;4672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9839:8:::1;9819:10;:17;9830:5;9819:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;9736:119:::0;;:::o;7065:28::-;;;;:::o;9015:105::-;9065:7;5498:1;9101:2;:15;;;;:::i;:::-;9083:14;;:34;;;;:::i;:::-;9076:41;;9015:105;:::o;19950:119::-;4690:12;:10;:12::i;:::-;4680:22;;:6;;;;;;;;;;:22;;;4672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20055:6:::1;20033:11;:19;20045:6;20033:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;19950:119:::0;;:::o;9867:468::-;4690:12;:10;:12::i;:::-;4680:22;;:6;;;;;;;;;;:22;;;4672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9999:1:::1;9980:9;;:16;;:20;:58;;;;;10022:9;;:16;;10004:7;;:14;;:34;9980:58;9972:67;;;::::0;::::1;;10050:12;10065:10;10050:25;;10093:6;10088:240;10109:9;;:16;;10105:1;:20;10088:240;;;10151:14;:28;10166:9;;10176:1;10166:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10151:28;;;;;;;;;;;;;;;;;;;;;;;;;10150:29;:64;;;;;10184:16;:30;10201:9;;10211:1;10201:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10184:30;;;;;;;;;;;;;;;;;;;;;;;;;10183:31;10150:64;10147:170;;;10235:66;10250:4;10256:9;;10266:1;10256:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;5498:1;10284:2;:15;;;;:::i;:::-;10270:7;;10278:1;10270:10;;;;;;;:::i;:::-;;;;;;;;:30;;;;:::i;:::-;10235:14;:66::i;:::-;;10147:170;10127:3;;;;;:::i;:::-;;;;10088:240;;;;9961:374;9867:468:::0;;;;:::o;7102:31::-;;;;;;;;;;;;;:::o;5857:44::-;;;;;;;;;;;;;;;;;:::o;20212:386::-;4690:12;:10;:12::i;:::-;4680:22;;:6;;;;;;;;;;:22;;;4672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20364:13:::1;20349:12;:28;;;;20403:13;20388:12;:28;;;;20454:13;20438;:29;;;;:::i;:::-;20427:8;:40;;;;20489:9;20478:8;:20;;;;20526:15;20509:14;:32;;;;20588:1;20571:14;;:18;;;;:::i;:::-;20560:8;;:29;20552:38;;;::::0;::::1;;20212:386:::0;;;;:::o;9126:105::-;9192:7;9210:9;:18;9220:7;9210:18;;;;;;;;;;;;;;;;9203:25;;9126:105;;;:::o;4765:148::-;4690:12;:10;:12::i;:::-;4680:22;;:6;;;;;;;;;;:22;;;4672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4872:1:::1;4835:40;;4856:6;::::0;::::1;;;;;;;;4835:40;;;;;;;;;;;;4903:1;4886:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4765:148::o:0;8714:71::-;8757:7;8775;:5;:7::i;:::-;8768:14;;8714:71;:::o;4555:79::-;4593:7;4620:6;;;;;;;;;;;4613:13;;4555:79;:::o;8556:75::-;8597:13;8621:7;;;;;;;;;;;;;;;;;8614:14;;8556:75;:::o;6805:30::-;;;;:::o;20606:242::-;4690:12;:10;:12::i;:::-;4680:22;;:6;;;;;;;;;;:22;;;4672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20754:21:::1;20723:20;;:53;;;;;;;;;;;;;;;;;;20818:21;20787:20;;:53;;;;;;;;;;;;;;;;;;20606:242:::0;;:::o;6874:19::-;;;;;;;;;;;;;:::o;12218:156::-;12298:4;12322:44;12336:10;12348:9;12359:6;12322:13;:44::i;:::-;12315:51;;12218:156;;;;:::o;19723:219::-;4690:12;:10;:12::i;:::-;4680:22;;:6;;;;;;;;;;:22;;;4672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19833:1:::1;19821:9;:13;:28;;;;;19848:1;19838:7;:11;19821:28;:48;;;;;19864:5;19853:7;:16;;19821:48;19813:57;;;::::0;::::1;;19927:7;19914:9;19899:12;;:24;;;;:::i;:::-;19898:36;;;;:::i;:::-;19881:14;:53;;;;19723:219:::0;;:::o;8791:105::-;8840:7;5498:1;8877:2;:15;;;;:::i;:::-;8858;;:35;;;;:::i;:::-;8851:42;;8791:105;:::o;6902:25::-;;;;:::o;6288:97::-;;;;;;;;;;;;;:::o;5908:43::-;;;;;;;;;;;;;;;;;:::o;19236:128::-;4690:12;:10;:12::i;:::-;4680:22;;:6;;;;;;;;;;:22;;;4672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19318:10:::1;19310:4;:18;;19302:27;;;::::0;::::1;;19352:4;19340:9;:16;;;;19236:128:::0;:::o;11207:235::-;7461:10;:24;7472:12;:10;:12::i;:::-;7461:24;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;7503:7;:5;:7::i;:::-;7489:21;;:10;:21;;;7461:49;7453:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11301:18:::1;;;;;;;;;;;11300:19;11292:28;;;::::0;::::1;;11351:8;11331:17;;:28;;;;;;;;;;;;;;;;;;11389:6;11378:8;:17;11370:26;;;::::0;::::1;;11426:8;11407:15;;:27;;;;;;;:::i;:::-;;;;;;;;11207:235:::0;;:::o;9237:133::-;9321:7;9339:11;:19;9351:6;9339:19;;;;;;;;;;;;;;;:28;9359:7;9339:28;;;;;;;;;;;;;;;;9332:35;;9237:133;;;;:::o;6392:97::-;;;;;;;;;;;;;:::o;16629:243::-;16685:7;16735:12;16721:10;;16708;;:23;;;;:::i;:::-;:39;16705:73;;16774:1;16757:14;;:18;;;;:::i;:::-;16750:25;;;;16705:73;16792:7;16788:39;;;16819:8;;16808;;:19;;;;:::i;:::-;16801:26;;;;16788:39;16856:8;;16845;;:19;;;;:::i;:::-;16838:26;;16629:243;;;;:::o;4919:244::-;4690:12;:10;:12::i;:::-;4680:22;;:6;;;;;;;;;;:22;;;4672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5028:1:::1;5008:22;;:8;:22;;::::0;5000:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5118:8;5089:38;;5110:6;::::0;::::1;;;;;;;;5089:38;;;;;;;;;;;;5147:8;5138:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4919:244:::0;:::o;20077:127::-;4690:12;:10;:12::i;:::-;4680:22;;:6;;;;;;;;;;:22;;;4672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20190:6:::1;20164:15;:23;20180:6;20164:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20077:127:::0;;:::o;7230:49::-;;;;:::o;6498:24::-;;;;;;;;;;;;;:::o;6968:25::-;;;;:::o;2582:107::-;2627:15;2670:10;2655:26;;2582:107;:::o;12731:1734::-;12823:4;12866:1;12848:20;;:6;:20;;;12840:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12937:1;12916:23;;:9;:23;;;12908:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;12994:1;12985:6;:10;12977:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;13061:6;13040:9;:17;13050:6;13040:17;;;;;;;;;;;;;;;;:27;;13032:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13107:10;:8;:10::i;:::-;13106:11;:40;;;;;13121:14;:25;13136:9;13121:25;;;;;;;;;;;;;;;;;;;;;;;;;13106:40;13103:120;;;13157:16;:24;13174:6;13157:24;;;;;;;;;;;;;;;;;;;;;;;;;13149:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13212:8;:6;:8::i;:::-;13103:120;13237:12;;;;;;;;;;;13233:111;;13260:16;:24;13277:6;13260:24;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;13288:16;:27;13305:9;13288:27;;;;;;;;;;;;;;;;;;;;;;;;;13260:55;13252:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;13233:111;13356:39;13369:6;13377:9;13388:6;13356:12;:39::i;:::-;13421:14;:25;13436:9;13421:25;;;;;;;;;;;;;;;;;;;;;;;;;13420:26;:47;;;;;13463:4;;;;;;;;;;;13450:17;;:9;:17;;;;13420:47;13416:182;;;13489:15;:26;13505:9;13489:26;;;;;;;;;;;;;;;;;;;;;;;;;13484:103;;13536:35;13553:9;13564:6;13536:16;:35::i;:::-;13484:103;13416:182;13621:17;;;;;;;;;;;:54;;;;;13660:15;13642;;:33;13621:54;13618:351;;;13695:14;:22;13710:6;13695:22;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;;13734:9;13721:22;;:9;:22;;;;13695:48;:77;;;;;13771:1;13747:9;:20;13757:9;13747:20;;;;;;;;;;;;;;;;:25;13695:77;13692:266;;;13816:12;13793:9;:20;13803:9;13793:20;;;;;;;;;;;;;;;:35;;;;13847:15;;:17;;;;;;;;;:::i;:::-;;;;;;13888:54;13904:9;13915;13926:12;13940:1;13888:54;;;;;;;;;:::i;:::-;;;;;;;;13692:266;13618:351;13992:6;;;;;;;;;;;13989:63;;;14008:41;14023:6;14031:9;14042:6;14008:14;:41::i;:::-;14001:48;;;;13989:63;14104:6;14084:9;:17;14094:6;14084:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;14064:9;:17;14074:6;14064:17;;;;;;;;;;;;;;;:46;;;;14123:22;14148:21;14162:6;14148:13;:21::i;:::-;:59;;14201:6;14148:59;;;14172:26;14180:9;14191:6;14172:7;:26::i;:::-;14148:59;14123:84;;14231:25;14246:9;14231:14;:25::i;:::-;14228:66;;;14272:1;14263:6;:10;14259:32;;;14275:16;14284:6;14275:8;:16::i;:::-;14259:32;14228:66;14360:14;14337:9;:20;14347:9;14337:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;14314:9;:20;14324:9;14314:20;;;;;;;;;;;;;;;:60;;;;14409:9;14392:43;;14401:6;14392:43;;;14420:14;14392:43;;;;;;:::i;:::-;;;;;;;;14453:4;14446:11;;;12731:1734;;;;;;:::o;14724:300::-;14817:4;14874:6;14854:9;:17;14864:6;14854:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;14834:9;:17;14844:6;14834:17;;;;;;;;;;;;;;;:46;;;;14937:6;14914:9;:20;14924:9;14914:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;14891:9;:20;14901:9;14891:20;;;;;;;;;;;;;;;:52;;;;14976:9;14959:35;;14968:6;14959:35;;;14987:6;14959:35;;;;;;:::i;:::-;;;;;;;;15012:4;15005:11;;14724:300;;;;;:::o;14477:90::-;14520:4;14558:1;14544:10;;:15;;14537:22;;14477:90;:::o;14575:141::-;14626:12;14613:10;:25;;;;14664:15;14649:12;:30;;;;14704:4;14690:11;;:18;;;;;;;;;;;;;;;;;;14575:141::o;15279:1220::-;15380:15;:23;15396:6;15380:23;;;;;;;;;;;;;;;;;;;;;;;;;:98;;;;15418:14;:22;15433:6;15418:22;;;;;;;;;;;;;;;;;;;;;;;;;:59;;15461:16;;15418:59;;;15443:15;;15418:59;15407:6;:71;;15380:98;15372:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;15519:15;:23;15535:6;15519:23;;;;;;;;;;;;;;;;;;;;;;;;;:73;;;;15580:12;15567:9;;15546:7;:18;15554:9;15546:18;;;;;;;;;;;;;;;;:30;;;;:::i;:::-;:46;;15519:73;15511:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;15672:1;15651:9;:17;15661:6;15651:17;;;;;;;;;;;;;;;;:22;15647:261;;5498:1;15726:2;:15;;;;:::i;:::-;15707;;:35;;;;:::i;:::-;15697:6;:45;;:70;;;;;15766:1;15746:8;:16;15755:6;15746:16;;;;;;;;;;;;;;;;:21;15697:70;:107;;;;;15789:15;15771;;:33;15697:107;15689:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;15884:12;15865:8;:16;15874:6;15865:16;;;;;;;;;;;;;;;:31;;;;15647:261;15932:14;:25;15947:9;15932:25;;;;;;;;;;;;;;;;;;;;;;;;;15928:564;;;15993:12;15974:8;:16;15983:6;15974:16;;;;;;;;;;;;;;;:31;;;;15928:564;;;16027:21;16041:6;16027:13;:21::i;:::-;16023:469;;;16069:17;;;;;;;;;;;:54;;;;;16108:15;16090;;:33;16069:54;:92;;;;;16149:12;16127:7;:18;16135:9;16127:18;;;;;;;;;;;;;;;;:34;16069:92;:121;;;;;16189:1;16165:9;:20;16175:9;16165:20;;;;;;;;;;;;;;;;:25;16069:121;16065:275;;;16234:12;16211:9;:20;16221:9;16211:20;;;;;;;;;;;;;;;:35;;;;16270:54;16286:9;16297;16308:12;16322:1;16270:54;;;;;;;;;:::i;:::-;;;;;;;;16065:275;16375:12;16354:7;:18;16362:9;16354:18;;;;;;;;;;;;;;;:33;;;;16419:9;16406:22;;:9;:22;;;16402:78;;16468:12;16447:7;:18;16455:9;16447:18;;;;;;;;;;;;;;;:33;;;;16402:78;16023:469;15928:564;15279:1220;;;:::o;15036:235::-;15122:19;15144:14;;15122:36;;15210:11;15200:6;15177:9;:20;15187:9;15177:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:44;;15169:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;15111:160;15036:235;;:::o;16507:114::-;16569:4;16594:11;:19;16606:6;16594:19;;;;;;;;;;;;;;;;;;;;;;;;;16593:20;16586:27;;16507:114;;;:::o;16880:317::-;16950:7;16970:12;16985:14;:25;17000:9;16985:25;;;;;;;;;;;;;;;;;;;;;;;;;16970:40;;17021:17;17075:14;;17051:20;17063:7;17051:11;:20::i;:::-;17042:6;:29;;;;:::i;:::-;17041:48;;;;:::i;:::-;17021:68;;17138:9;17110;:24;17128:4;17110:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;17180:9;17171:6;:18;;;;:::i;:::-;17164:25;;;;16880:317;;;;:::o;17205:259::-;17271:4;17296:14;:26;17311:10;17296:26;;;;;;;;;;;;;;;;;;;;;;;;;17295:27;:47;;;;;17336:6;;;;;;;;;;;17335:7;17295:47;:71;;;;;17355:11;;;;;;;;;;;17295:71;:109;;;;;17379:14;:25;17394:9;17379:25;;;;;;;;;;;;;;;;;;;;;;;;;17295:109;:161;;;;;17445:11;;17417:9;:24;17435:4;17417:24;;;;;;;;;;;;;;;;:39;;17295:161;17288:168;;17205:259;;;:::o;17472:1560::-;7335:4;7326:6;;:13;;;;;;;;;;;;;;;;;;17535:20:::1;17567:13;;17558:6;:22;:47;;17592:13;;17558:47;;;17583:6;17558:47;17535:70;;17647:12;17620:9;:24;17638:4;17620:24;;;;;;;;;;;;;;;;:39;17616:84;;;17676:9;:24;17694:4;17676:24;;;;;;;;;;;;;;;;17661:39;;17616:84;17721:23;17783:8;;17778:1;17763:12;;17748;:27;;;;:::i;:::-;:31;;;;:::i;:::-;17747:44;;;;:::i;:::-;17721:70;;17818:15;17802:31;;;;;:::i;:::-;;;17846:21;17884:1;17870:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17846:40;;17915:4;17897;17902:1;17897:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;17941:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17931:4;17936:1;17931:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;17975:21;17999;17975:45;;18033:6;;;;;;;;;;;:57;;;18105:12;18132:1;18148:4;18175;18195:15;18033:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18234:17;18278:13;18254:21;:37;;;;:::i;:::-;18234:57;;18302:19;18351:1;18336:12;;:16;;;;:::i;:::-;18324:8;;:29;;;;:::i;:::-;18302:51;;18366:26;18428:11;18423:1;18408:12;;18396:9;:24;;;;:::i;:::-;:28;;;;:::i;:::-;18395:44;;;;:::i;:::-;18366:73;;18450:26;18491:18;18479:9;:30;;;;:::i;:::-;18450:59;;18555:1;18534:18;:22;18530:90;;;18571:20;;;;;;;;;;;:29;;:49;18601:18;18571:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18530:90;18662:1;18644:15;:19;18641:293;;;18679:6;;;;;;;;;;;:22;;;18709:18;18755:4;18779:15;18813:1;18833::::0;18853:20:::1;;;;;;;;;;;18892:15;18679:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18641:293;18951:73;18968:18;18988;19008:15;18951:73;;;;;;;;:::i;:::-;;;;;;;;17524:1508;;;;;;;;7353:5:::0;7344:6;;:14;;;;;;;;;;;;;;;;;;17472:1560;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:117;2220:1;2217;2210:12;2234:117;2343:1;2340;2333:12;2357:117;2466:1;2463;2456:12;2497:568;2570:8;2580:6;2630:3;2623:4;2615:6;2611:17;2607:27;2597:122;;2638:79;;:::i;:::-;2597:122;2751:6;2738:20;2728:30;;2781:18;2773:6;2770:30;2767:117;;;2803:79;;:::i;:::-;2767:117;2917:4;2909:6;2905:17;2893:29;;2971:3;2963:4;2955:6;2951:17;2941:8;2937:32;2934:41;2931:128;;;2978:79;;:::i;:::-;2931:128;2497:568;;;;;:::o;3071:90::-;3105:7;3148:5;3141:13;3134:21;3123:32;;3071:90;;;:::o;3167:116::-;3237:21;3252:5;3237:21;:::i;:::-;3230:5;3227:32;3217:60;;3273:1;3270;3263:12;3217:60;3167:116;:::o;3289:133::-;3332:5;3370:6;3357:20;3348:29;;3386:30;3410:5;3386:30;:::i;:::-;3289:133;;;;:::o;3428:698::-;3520:6;3528;3536;3585:2;3573:9;3564:7;3560:23;3556:32;3553:119;;;3591:79;;:::i;:::-;3553:119;3739:1;3728:9;3724:17;3711:31;3769:18;3761:6;3758:30;3755:117;;;3791:79;;:::i;:::-;3755:117;3904:80;3976:7;3967:6;3956:9;3952:22;3904:80;:::i;:::-;3886:98;;;;3682:312;4033:2;4059:50;4101:7;4092:6;4081:9;4077:22;4059:50;:::i;:::-;4049:60;;4004:115;3428:698;;;;;:::o;4132:126::-;4169:7;4209:42;4202:5;4198:54;4187:65;;4132:126;;;:::o;4264:96::-;4301:7;4330:24;4348:5;4330:24;:::i;:::-;4319:35;;4264:96;;;:::o;4366:122::-;4439:24;4457:5;4439:24;:::i;:::-;4432:5;4429:35;4419:63;;4478:1;4475;4468:12;4419:63;4366:122;:::o;4494:139::-;4540:5;4578:6;4565:20;4556:29;;4594:33;4621:5;4594:33;:::i;:::-;4494:139;;;;:::o;4639:122::-;4712:24;4730:5;4712:24;:::i;:::-;4705:5;4702:35;4692:63;;4751:1;4748;4741:12;4692:63;4639:122;:::o;4767:139::-;4813:5;4851:6;4838:20;4829:29;;4867:33;4894:5;4867:33;:::i;:::-;4767:139;;;;:::o;4912:474::-;4980:6;4988;5037:2;5025:9;5016:7;5012:23;5008:32;5005:119;;;5043:79;;:::i;:::-;5005:119;5163:1;5188:53;5233:7;5224:6;5213:9;5209:22;5188:53;:::i;:::-;5178:63;;5134:117;5290:2;5316:53;5361:7;5352:6;5341:9;5337:22;5316:53;:::i;:::-;5306:63;;5261:118;4912:474;;;;;:::o;5392:109::-;5473:21;5488:5;5473:21;:::i;:::-;5468:3;5461:34;5392:109;;:::o;5507:210::-;5594:4;5632:2;5621:9;5617:18;5609:26;;5645:65;5707:1;5696:9;5692:17;5683:6;5645:65;:::i;:::-;5507:210;;;;:::o;5723:619::-;5800:6;5808;5816;5865:2;5853:9;5844:7;5840:23;5836:32;5833:119;;;5871:79;;:::i;:::-;5833:119;5991:1;6016:53;6061:7;6052:6;6041:9;6037:22;6016:53;:::i;:::-;6006:63;;5962:117;6118:2;6144:53;6189:7;6180:6;6169:9;6165:22;6144:53;:::i;:::-;6134:63;;6089:118;6246:2;6272:53;6317:7;6308:6;6297:9;6293:22;6272:53;:::i;:::-;6262:63;;6217:118;5723:619;;;;;:::o;6348:86::-;6383:7;6423:4;6416:5;6412:16;6401:27;;6348:86;;;:::o;6440:112::-;6523:22;6539:5;6523:22;:::i;:::-;6518:3;6511:35;6440:112;;:::o;6558:214::-;6647:4;6685:2;6674:9;6670:18;6662:26;;6698:67;6762:1;6751:9;6747:17;6738:6;6698:67;:::i;:::-;6558:214;;;;:::o;6778:619::-;6855:6;6863;6871;6920:2;6908:9;6899:7;6895:23;6891:32;6888:119;;;6926:79;;:::i;:::-;6888:119;7046:1;7071:53;7116:7;7107:6;7096:9;7092:22;7071:53;:::i;:::-;7061:63;;7017:117;7173:2;7199:53;7244:7;7235:6;7224:9;7220:22;7199:53;:::i;:::-;7189:63;;7144:118;7301:2;7327:53;7372:7;7363:6;7352:9;7348:22;7327:53;:::i;:::-;7317:63;;7272:118;6778:619;;;;;:::o;7403:329::-;7462:6;7511:2;7499:9;7490:7;7486:23;7482:32;7479:119;;;7517:79;;:::i;:::-;7479:119;7637:1;7662:53;7707:7;7698:6;7687:9;7683:22;7662:53;:::i;:::-;7652:63;;7608:117;7403:329;;;;:::o;7738:468::-;7803:6;7811;7860:2;7848:9;7839:7;7835:23;7831:32;7828:119;;;7866:79;;:::i;:::-;7828:119;7986:1;8011:53;8056:7;8047:6;8036:9;8032:22;8011:53;:::i;:::-;8001:63;;7957:117;8113:2;8139:50;8181:7;8172:6;8161:9;8157:22;8139:50;:::i;:::-;8129:60;;8084:115;7738:468;;;;;:::o;8212:753::-;8292:6;8300;8308;8316;8365:3;8353:9;8344:7;8340:23;8336:33;8333:120;;;8372:79;;:::i;:::-;8333:120;8492:1;8517:50;8559:7;8550:6;8539:9;8535:22;8517:50;:::i;:::-;8507:60;;8463:114;8616:2;8642:50;8684:7;8675:6;8664:9;8660:22;8642:50;:::i;:::-;8632:60;;8587:115;8741:2;8767:53;8812:7;8803:6;8792:9;8788:22;8767:53;:::i;:::-;8757:63;;8712:118;8869:2;8895:53;8940:7;8931:6;8920:9;8916:22;8895:53;:::i;:::-;8885:63;;8840:118;8212:753;;;;;;;:::o;8971:474::-;9039:6;9047;9096:2;9084:9;9075:7;9071:23;9067:32;9064:119;;;9102:79;;:::i;:::-;9064:119;9222:1;9247:53;9292:7;9283:6;9272:9;9268:22;9247:53;:::i;:::-;9237:63;;9193:117;9349:2;9375:53;9420:7;9411:6;9400:9;9396:22;9375:53;:::i;:::-;9365:63;;9320:118;8971:474;;;;;:::o;9468:568::-;9541:8;9551:6;9601:3;9594:4;9586:6;9582:17;9578:27;9568:122;;9609:79;;:::i;:::-;9568:122;9722:6;9709:20;9699:30;;9752:18;9744:6;9741:30;9738:117;;;9774:79;;:::i;:::-;9738:117;9888:4;9880:6;9876:17;9864:29;;9942:3;9934:4;9926:6;9922:17;9912:8;9908:32;9905:41;9902:128;;;9949:79;;:::i;:::-;9902:128;9468:568;;;;;:::o;10042:934::-;10164:6;10172;10180;10188;10237:2;10225:9;10216:7;10212:23;10208:32;10205:119;;;10243:79;;:::i;:::-;10205:119;10391:1;10380:9;10376:17;10363:31;10421:18;10413:6;10410:30;10407:117;;;10443:79;;:::i;:::-;10407:117;10556:80;10628:7;10619:6;10608:9;10604:22;10556:80;:::i;:::-;10538:98;;;;10334:312;10713:2;10702:9;10698:18;10685:32;10744:18;10736:6;10733:30;10730:117;;;10766:79;;:::i;:::-;10730:117;10879:80;10951:7;10942:6;10931:9;10927:22;10879:80;:::i;:::-;10861:98;;;;10656:313;10042:934;;;;;;;:::o;10982:765::-;11068:6;11076;11084;11092;11141:3;11129:9;11120:7;11116:23;11112:33;11109:120;;;11148:79;;:::i;:::-;11109:120;11268:1;11293:53;11338:7;11329:6;11318:9;11314:22;11293:53;:::i;:::-;11283:63;;11239:117;11395:2;11421:53;11466:7;11457:6;11446:9;11442:22;11421:53;:::i;:::-;11411:63;;11366:118;11523:2;11549:53;11594:7;11585:6;11574:9;11570:22;11549:53;:::i;:::-;11539:63;;11494:118;11651:2;11677:53;11722:7;11713:6;11702:9;11698:22;11677:53;:::i;:::-;11667:63;;11622:118;10982:765;;;;;;;:::o;11753:118::-;11840:24;11858:5;11840:24;:::i;:::-;11835:3;11828:37;11753:118;;:::o;11877:222::-;11970:4;12008:2;11997:9;11993:18;11985:26;;12021:71;12089:1;12078:9;12074:17;12065:6;12021:71;:::i;:::-;11877:222;;;;:::o;12105:474::-;12173:6;12181;12230:2;12218:9;12209:7;12205:23;12201:32;12198:119;;;12236:79;;:::i;:::-;12198:119;12356:1;12381:53;12426:7;12417:6;12406:9;12402:22;12381:53;:::i;:::-;12371:63;;12327:117;12483:2;12509:53;12554:7;12545:6;12534:9;12530:22;12509:53;:::i;:::-;12499:63;;12454:118;12105:474;;;;;:::o;12585:::-;12653:6;12661;12710:2;12698:9;12689:7;12685:23;12681:32;12678:119;;;12716:79;;:::i;:::-;12678:119;12836:1;12861:53;12906:7;12897:6;12886:9;12882:22;12861:53;:::i;:::-;12851:63;;12807:117;12963:2;12989:53;13034:7;13025:6;13014:9;13010:22;12989:53;:::i;:::-;12979:63;;12934:118;12585:474;;;;;:::o;13065:104::-;13110:7;13139:24;13157:5;13139:24;:::i;:::-;13128:35;;13065:104;;;:::o;13175:142::-;13278:32;13304:5;13278:32;:::i;:::-;13273:3;13266:45;13175:142;;:::o;13323:254::-;13432:4;13470:2;13459:9;13455:18;13447:26;;13483:87;13567:1;13556:9;13552:17;13543:6;13483:87;:::i;:::-;13323:254;;;;:::o;13583:329::-;13642:6;13691:2;13679:9;13670:7;13666:23;13662:32;13659:119;;;13697:79;;:::i;:::-;13659:119;13817:1;13842:53;13887:7;13878:6;13867:9;13863:22;13842:53;:::i;:::-;13832:63;;13788:117;13583:329;;;;:::o;13918:468::-;13983:6;13991;14040:2;14028:9;14019:7;14015:23;14011:32;14008:119;;;14046:79;;:::i;:::-;14008:119;14166:1;14191:50;14233:7;14224:6;14213:9;14209:22;14191:50;:::i;:::-;14181:60;;14137:114;14290:2;14316:53;14361:7;14352:6;14341:9;14337:22;14316:53;:::i;:::-;14306:63;;14261:118;13918:468;;;;;:::o;14392:323::-;14448:6;14497:2;14485:9;14476:7;14472:23;14468:32;14465:119;;;14503:79;;:::i;:::-;14465:119;14623:1;14648:50;14690:7;14681:6;14670:9;14666:22;14648:50;:::i;:::-;14638:60;;14594:114;14392:323;;;;:::o;14721:60::-;14749:3;14770:5;14763:12;;14721:60;;;:::o;14787:142::-;14837:9;14870:53;14888:34;14897:24;14915:5;14897:24;:::i;:::-;14888:34;:::i;:::-;14870:53;:::i;:::-;14857:66;;14787:142;;;:::o;14935:126::-;14985:9;15018:37;15049:5;15018:37;:::i;:::-;15005:50;;14935:126;;;:::o;15067:144::-;15135:9;15168:37;15199:5;15168:37;:::i;:::-;15155:50;;15067:144;;;:::o;15217:167::-;15322:55;15371:5;15322:55;:::i;:::-;15317:3;15310:68;15217:167;;:::o;15390:258::-;15501:4;15539:2;15528:9;15524:18;15516:26;;15552:89;15638:1;15627:9;15623:17;15614:6;15552:89;:::i;:::-;15390:258;;;;:::o;15654:177::-;15794:29;15790:1;15782:6;15778:14;15771:53;15654:177;:::o;15837:366::-;15979:3;16000:67;16064:2;16059:3;16000:67;:::i;:::-;15993:74;;16076:93;16165:3;16076:93;:::i;:::-;16194:2;16189:3;16185:12;16178:19;;15837:366;;;:::o;16209:419::-;16375:4;16413:2;16402:9;16398:18;16390:26;;16462:9;16456:4;16452:20;16448:1;16437:9;16433:17;16426:47;16490:131;16616:4;16490:131;:::i;:::-;16482:139;;16209:419;;;:::o;16634:180::-;16682:77;16679:1;16672:88;16779:4;16776:1;16769:15;16803:4;16800:1;16793:15;16820:233;16859:3;16882:24;16900:5;16882:24;:::i;:::-;16873:33;;16928:66;16921:5;16918:77;16915:103;;16998:18;;:::i;:::-;16915:103;17045:1;17038:5;17034:13;17027:20;;16820:233;;;:::o;17059:180::-;17107:77;17104:1;17097:88;17204:4;17201:1;17194:15;17228:4;17225:1;17218:15;17245:85;17290:7;17319:5;17308:16;;17245:85;;;:::o;17336:154::-;17392:9;17425:59;17441:42;17450:32;17476:5;17450:32;:::i;:::-;17441:42;:::i;:::-;17425:59;:::i;:::-;17412:72;;17336:154;;;:::o;17496:143::-;17589:43;17626:5;17589:43;:::i;:::-;17584:3;17577:56;17496:143;;:::o;17645:565::-;17828:4;17866:3;17855:9;17851:19;17843:27;;17880:71;17948:1;17937:9;17933:17;17924:6;17880:71;:::i;:::-;17961:72;18029:2;18018:9;18014:18;18005:6;17961:72;:::i;:::-;18043;18111:2;18100:9;18096:18;18087:6;18043:72;:::i;:::-;18125:78;18199:2;18188:9;18184:18;18175:6;18125:78;:::i;:::-;17645:565;;;;;;;:::o;18216:171::-;18255:3;18278:24;18296:5;18278:24;:::i;:::-;18269:33;;18324:4;18317:5;18314:15;18311:41;;18332:18;;:::i;:::-;18311:41;18379:1;18372:5;18368:13;18361:20;;18216:171;;;:::o;18393:102::-;18435:8;18482:5;18479:1;18475:13;18454:34;;18393:102;;;:::o;18501:848::-;18562:5;18569:4;18593:6;18584:15;;18617:5;18608:14;;18631:712;18652:1;18642:8;18639:15;18631:712;;;18747:4;18742:3;18738:14;18732:4;18729:24;18726:50;;;18756:18;;:::i;:::-;18726:50;18806:1;18796:8;18792:16;18789:451;;;19221:4;19214:5;19210:16;19201:25;;18789:451;19271:4;19265;19261:15;19253:23;;19301:32;19324:8;19301:32;:::i;:::-;19289:44;;18631:712;;;18501:848;;;;;;;:::o;19355:1073::-;19409:5;19600:8;19590:40;;19621:1;19612:10;;19623:5;;19590:40;19649:4;19639:36;;19666:1;19657:10;;19668:5;;19639:36;19735:4;19783:1;19778:27;;;;19819:1;19814:191;;;;19728:277;;19778:27;19796:1;19787:10;;19798:5;;;19814:191;19859:3;19849:8;19846:17;19843:43;;;19866:18;;:::i;:::-;19843:43;19915:8;19912:1;19908:16;19899:25;;19950:3;19943:5;19940:14;19937:40;;;19957:18;;:::i;:::-;19937:40;19990:5;;;19728:277;;20114:2;20104:8;20101:16;20095:3;20089:4;20086:13;20082:36;20064:2;20054:8;20051:16;20046:2;20040:4;20037:12;20033:35;20017:111;20014:246;;;20170:8;20164:4;20160:19;20151:28;;20205:3;20198:5;20195:14;20192:40;;;20212:18;;:::i;:::-;20192:40;20245:5;;20014:246;20285:42;20323:3;20313:8;20307:4;20304:1;20285:42;:::i;:::-;20270:57;;;;20359:4;20354:3;20350:14;20343:5;20340:25;20337:51;;;20368:18;;:::i;:::-;20337:51;20417:4;20410:5;20406:16;20397:25;;19355:1073;;;;;;:::o;20434:281::-;20492:5;20516:23;20534:4;20516:23;:::i;:::-;20508:31;;20560:25;20576:8;20560:25;:::i;:::-;20548:37;;20604:104;20641:66;20631:8;20625:4;20604:104;:::i;:::-;20595:113;;20434:281;;;;:::o;20721:180::-;20769:77;20766:1;20759:88;20866:4;20863:1;20856:15;20890:4;20887:1;20880:15;20907:185;20947:1;20964:20;20982:1;20964:20;:::i;:::-;20959:25;;20998:20;21016:1;20998:20;:::i;:::-;20993:25;;21037:1;21027:35;;21042:18;;:::i;:::-;21027:35;21084:1;21081;21077:9;21072:14;;20907:185;;;;:::o;21098:194::-;21138:4;21158:20;21176:1;21158:20;:::i;:::-;21153:25;;21192:20;21210:1;21192:20;:::i;:::-;21187:25;;21236:1;21233;21229:9;21221:17;;21260:1;21254:4;21251:11;21248:37;;;21265:18;;:::i;:::-;21248:37;21098:194;;;;:::o;21298:191::-;21338:3;21357:20;21375:1;21357:20;:::i;:::-;21352:25;;21391:20;21409:1;21391:20;:::i;:::-;21386:25;;21434:1;21431;21427:9;21420:16;;21455:3;21452:1;21449:10;21446:36;;;21462:18;;:::i;:::-;21446:36;21298:191;;;;:::o;21495:410::-;21535:7;21558:20;21576:1;21558:20;:::i;:::-;21553:25;;21592:20;21610:1;21592:20;:::i;:::-;21587:25;;21647:1;21644;21640:9;21669:30;21687:11;21669:30;:::i;:::-;21658:41;;21848:1;21839:7;21835:15;21832:1;21829:22;21809:1;21802:9;21782:83;21759:139;;21878:18;;:::i;:::-;21759:139;21543:362;21495:410;;;;:::o;21911:182::-;22051:34;22047:1;22039:6;22035:14;22028:58;21911:182;:::o;22099:366::-;22241:3;22262:67;22326:2;22321:3;22262:67;:::i;:::-;22255:74;;22338:93;22427:3;22338:93;:::i;:::-;22456:2;22451:3;22447:12;22440:19;;22099:366;;;:::o;22471:419::-;22637:4;22675:2;22664:9;22660:18;22652:26;;22724:9;22718:4;22714:20;22710:1;22699:9;22695:17;22688:47;22752:131;22878:4;22752:131;:::i;:::-;22744:139;;22471:419;;;:::o;22896:221::-;23036:34;23032:1;23024:6;23020:14;23013:58;23105:4;23100:2;23092:6;23088:15;23081:29;22896:221;:::o;23123:366::-;23265:3;23286:67;23350:2;23345:3;23286:67;:::i;:::-;23279:74;;23362:93;23451:3;23362:93;:::i;:::-;23480:2;23475:3;23471:12;23464:19;;23123:366;;;:::o;23495:419::-;23661:4;23699:2;23688:9;23684:18;23676:26;;23748:9;23742:4;23738:20;23734:1;23723:9;23719:17;23712:47;23776:131;23902:4;23776:131;:::i;:::-;23768:139;;23495:419;;;:::o;23920:225::-;24060:34;24056:1;24048:6;24044:14;24037:58;24129:8;24124:2;24116:6;24112:15;24105:33;23920:225;:::o;24151:366::-;24293:3;24314:67;24378:2;24373:3;24314:67;:::i;:::-;24307:74;;24390:93;24479:3;24390:93;:::i;:::-;24508:2;24503:3;24499:12;24492:19;;24151:366;;;:::o;24523:419::-;24689:4;24727:2;24716:9;24712:18;24704:26;;24776:9;24770:4;24766:20;24762:1;24751:9;24747:17;24740:47;24804:131;24930:4;24804:131;:::i;:::-;24796:139;;24523:419;;;:::o;24948:174::-;25088:26;25084:1;25076:6;25072:14;25065:50;24948:174;:::o;25128:366::-;25270:3;25291:67;25355:2;25350:3;25291:67;:::i;:::-;25284:74;;25367:93;25456:3;25367:93;:::i;:::-;25485:2;25480:3;25476:12;25469:19;;25128:366;;;:::o;25500:419::-;25666:4;25704:2;25693:9;25689:18;25681:26;;25753:9;25747:4;25743:20;25739:1;25728:9;25724:17;25717:47;25781:131;25907:4;25781:131;:::i;:::-;25773:139;;25500:419;;;:::o;25925:172::-;26065:24;26061:1;26053:6;26049:14;26042:48;25925:172;:::o;26103:366::-;26245:3;26266:67;26330:2;26325:3;26266:67;:::i;:::-;26259:74;;26342:93;26431:3;26342:93;:::i;:::-;26460:2;26455:3;26451:12;26444:19;;26103:366;;;:::o;26475:419::-;26641:4;26679:2;26668:9;26664:18;26656:26;;26728:9;26722:4;26718:20;26714:1;26703:9;26699:17;26692:47;26756:131;26882:4;26756:131;:::i;:::-;26748:139;;26475:419;;;:::o;26900:171::-;27040:23;27036:1;27028:6;27024:14;27017:47;26900:171;:::o;27077:366::-;27219:3;27240:67;27304:2;27299:3;27240:67;:::i;:::-;27233:74;;27316:93;27405:3;27316:93;:::i;:::-;27434:2;27429:3;27425:12;27418:19;;27077:366;;;:::o;27449:419::-;27615:4;27653:2;27642:9;27638:18;27630:26;;27702:9;27696:4;27692:20;27688:1;27677:9;27673:17;27666:47;27730:131;27856:4;27730:131;:::i;:::-;27722:139;;27449:419;;;:::o;27874:170::-;28014:22;28010:1;28002:6;27998:14;27991:46;27874:170;:::o;28050:366::-;28192:3;28213:67;28277:2;28272:3;28213:67;:::i;:::-;28206:74;;28289:93;28378:3;28289:93;:::i;:::-;28407:2;28402:3;28398:12;28391:19;;28050:366;;;:::o;28422:419::-;28588:4;28626:2;28615:9;28611:18;28603:26;;28675:9;28669:4;28665:20;28661:1;28650:9;28646:17;28639:47;28703:131;28829:4;28703:131;:::i;:::-;28695:139;;28422:419;;;:::o;28847:174::-;28987:26;28983:1;28975:6;28971:14;28964:50;28847:174;:::o;29027:366::-;29169:3;29190:67;29254:2;29249:3;29190:67;:::i;:::-;29183:74;;29266:93;29355:3;29266:93;:::i;:::-;29384:2;29379:3;29375:12;29368:19;;29027:366;;;:::o;29399:419::-;29565:4;29603:2;29592:9;29588:18;29580:26;;29652:9;29646:4;29642:20;29638:1;29627:9;29623:17;29616:47;29680:131;29806:4;29680:131;:::i;:::-;29672:139;;29399:419;;;:::o;29824:171::-;29964:23;29960:1;29952:6;29948:14;29941:47;29824:171;:::o;30001:366::-;30143:3;30164:67;30228:2;30223:3;30164:67;:::i;:::-;30157:74;;30240:93;30329:3;30240:93;:::i;:::-;30358:2;30353:3;30349:12;30342:19;;30001:366;;;:::o;30373:419::-;30539:4;30577:2;30566:9;30562:18;30554:26;;30626:9;30620:4;30616:20;30612:1;30601:9;30597:17;30590:47;30654:131;30780:4;30654:131;:::i;:::-;30646:139;;30373:419;;;:::o;30798:85::-;30843:7;30872:5;30861:16;;30798:85;;;:::o;30889:154::-;30945:9;30978:59;30994:42;31003:32;31029:5;31003:32;:::i;:::-;30994:42;:::i;:::-;30978:59;:::i;:::-;30965:72;;30889:154;;;:::o;31049:143::-;31142:43;31179:5;31142:43;:::i;:::-;31137:3;31130:56;31049:143;;:::o;31198:565::-;31381:4;31419:3;31408:9;31404:19;31396:27;;31433:71;31501:1;31490:9;31486:17;31477:6;31433:71;:::i;:::-;31514:72;31582:2;31571:9;31567:18;31558:6;31514:72;:::i;:::-;31596;31664:2;31653:9;31649:18;31640:6;31596:72;:::i;:::-;31678:78;31752:2;31741:9;31737:18;31728:6;31678:78;:::i;:::-;31198:565;;;;;;;:::o;31769:167::-;31909:19;31905:1;31897:6;31893:14;31886:43;31769:167;:::o;31942:366::-;32084:3;32105:67;32169:2;32164:3;32105:67;:::i;:::-;32098:74;;32181:93;32270:3;32181:93;:::i;:::-;32299:2;32294:3;32290:12;32283:19;;31942:366;;;:::o;32314:419::-;32480:4;32518:2;32507:9;32503:18;32495:26;;32567:9;32561:4;32557:20;32553:1;32542:9;32538:17;32531:47;32595:131;32721:4;32595:131;:::i;:::-;32587:139;;32314:419;;;:::o;32739:179::-;32879:31;32875:1;32867:6;32863:14;32856:55;32739:179;:::o;32924:366::-;33066:3;33087:67;33151:2;33146:3;33087:67;:::i;:::-;33080:74;;33163:93;33252:3;33163:93;:::i;:::-;33281:2;33276:3;33272:12;33265:19;;32924:366;;;:::o;33296:419::-;33462:4;33500:2;33489:9;33485:18;33477:26;;33549:9;33543:4;33539:20;33535:1;33524:9;33520:17;33513:47;33577:131;33703:4;33577:131;:::i;:::-;33569:139;;33296:419;;;:::o;33721:228::-;33861:34;33857:1;33849:6;33845:14;33838:58;33930:11;33925:2;33917:6;33913:15;33906:36;33721:228;:::o;33955:366::-;34097:3;34118:67;34182:2;34177:3;34118:67;:::i;:::-;34111:74;;34194:93;34283:3;34194:93;:::i;:::-;34312:2;34307:3;34303:12;34296:19;;33955:366;;;:::o;34327:419::-;34493:4;34531:2;34520:9;34516:18;34508:26;;34580:9;34574:4;34570:20;34566:1;34555:9;34551:17;34544:47;34608:131;34734:4;34608:131;:::i;:::-;34600:139;;34327:419;;;:::o;34752:85::-;34797:7;34826:5;34815:16;;34752:85;;;:::o;34843:154::-;34899:9;34932:59;34948:42;34957:32;34983:5;34957:32;:::i;:::-;34948:42;:::i;:::-;34932:59;:::i;:::-;34919:72;;34843:154;;;:::o;35003:143::-;35096:43;35133:5;35096:43;:::i;:::-;35091:3;35084:56;35003:143;;:::o;35152:565::-;35335:4;35373:3;35362:9;35358:19;35350:27;;35387:71;35455:1;35444:9;35440:17;35431:6;35387:71;:::i;:::-;35468:72;35536:2;35525:9;35521:18;35512:6;35468:72;:::i;:::-;35550;35618:2;35607:9;35603:18;35594:6;35550:72;:::i;:::-;35632:78;35706:2;35695:9;35691:18;35682:6;35632:78;:::i;:::-;35152:565;;;;;;;:::o;35723:224::-;35863:34;35859:1;35851:6;35847:14;35840:58;35932:7;35927:2;35919:6;35915:15;35908:32;35723:224;:::o;35953:366::-;36095:3;36116:67;36180:2;36175:3;36116:67;:::i;:::-;36109:74;;36192:93;36281:3;36192:93;:::i;:::-;36310:2;36305:3;36301:12;36294:19;;35953:366;;;:::o;36325:419::-;36491:4;36529:2;36518:9;36514:18;36506:26;;36578:9;36572:4;36568:20;36564:1;36553:9;36549:17;36542:47;36606:131;36732:4;36606:131;:::i;:::-;36598:139;;36325:419;;;:::o;36750:180::-;36798:77;36795:1;36788:88;36895:4;36892:1;36885:15;36919:4;36916:1;36909:15;36936:143;36993:5;37024:6;37018:13;37009:22;;37040:33;37067:5;37040:33;:::i;:::-;36936:143;;;;:::o;37085:351::-;37155:6;37204:2;37192:9;37183:7;37179:23;37175:32;37172:119;;;37210:79;;:::i;:::-;37172:119;37330:1;37355:64;37411:7;37402:6;37391:9;37387:22;37355:64;:::i;:::-;37345:74;;37301:128;37085:351;;;;:::o;37442:158::-;37500:9;37533:61;37551:42;37560:32;37586:5;37560:32;:::i;:::-;37551:42;:::i;:::-;37533:61;:::i;:::-;37520:74;;37442:158;;;:::o;37606:147::-;37701:45;37740:5;37701:45;:::i;:::-;37696:3;37689:58;37606:147;;:::o;37759:114::-;37826:6;37860:5;37854:12;37844:22;;37759:114;;;:::o;37879:184::-;37978:11;38012:6;38007:3;38000:19;38052:4;38047:3;38043:14;38028:29;;37879:184;;;;:::o;38069:132::-;38136:4;38159:3;38151:11;;38189:4;38184:3;38180:14;38172:22;;38069:132;;;:::o;38207:108::-;38284:24;38302:5;38284:24;:::i;:::-;38279:3;38272:37;38207:108;;:::o;38321:179::-;38390:10;38411:46;38453:3;38445:6;38411:46;:::i;:::-;38489:4;38484:3;38480:14;38466:28;;38321:179;;;;:::o;38506:113::-;38576:4;38608;38603:3;38599:14;38591:22;;38506:113;;;:::o;38655:732::-;38774:3;38803:54;38851:5;38803:54;:::i;:::-;38873:86;38952:6;38947:3;38873:86;:::i;:::-;38866:93;;38983:56;39033:5;38983:56;:::i;:::-;39062:7;39093:1;39078:284;39103:6;39100:1;39097:13;39078:284;;;39179:6;39173:13;39206:63;39265:3;39250:13;39206:63;:::i;:::-;39199:70;;39292:60;39345:6;39292:60;:::i;:::-;39282:70;;39138:224;39125:1;39122;39118:9;39113:14;;39078:284;;;39082:14;39378:3;39371:10;;38779:608;;;38655:732;;;;:::o;39393:831::-;39656:4;39694:3;39683:9;39679:19;39671:27;;39708:71;39776:1;39765:9;39761:17;39752:6;39708:71;:::i;:::-;39789:80;39865:2;39854:9;39850:18;39841:6;39789:80;:::i;:::-;39916:9;39910:4;39906:20;39901:2;39890:9;39886:18;39879:48;39944:108;40047:4;40038:6;39944:108;:::i;:::-;39936:116;;40062:72;40130:2;40119:9;40115:18;40106:6;40062:72;:::i;:::-;40144:73;40212:3;40201:9;40197:19;40188:6;40144:73;:::i;:::-;39393:831;;;;;;;;:::o;40230:134::-;40288:9;40321:37;40352:5;40321:37;:::i;:::-;40308:50;;40230:134;;;:::o;40370:147::-;40465:45;40504:5;40465:45;:::i;:::-;40460:3;40453:58;40370:147;;:::o;40523:823::-;40780:4;40818:3;40807:9;40803:19;40795:27;;40832:71;40900:1;40889:9;40885:17;40876:6;40832:71;:::i;:::-;40913:72;40981:2;40970:9;40966:18;40957:6;40913:72;:::i;:::-;40995:80;41071:2;41060:9;41056:18;41047:6;40995:80;:::i;:::-;41085;41161:2;41150:9;41146:18;41137:6;41085:80;:::i;:::-;41175:81;41251:3;41240:9;41236:19;41227:6;41175:81;:::i;:::-;41266:73;41334:3;41323:9;41319:19;41310:6;41266:73;:::i;:::-;40523:823;;;;;;;;;:::o;41352:143::-;41409:5;41440:6;41434:13;41425:22;;41456:33;41483:5;41456:33;:::i;:::-;41352:143;;;;:::o;41501:663::-;41589:6;41597;41605;41654:2;41642:9;41633:7;41629:23;41625:32;41622:119;;;41660:79;;:::i;:::-;41622:119;41780:1;41805:64;41861:7;41852:6;41841:9;41837:22;41805:64;:::i;:::-;41795:74;;41751:128;41918:2;41944:64;42000:7;41991:6;41980:9;41976:22;41944:64;:::i;:::-;41934:74;;41889:129;42057:2;42083:64;42139:7;42130:6;42119:9;42115:22;42083:64;:::i;:::-;42073:74;;42028:129;41501:663;;;;;:::o;42170:442::-;42319:4;42357:2;42346:9;42342:18;42334:26;;42370:71;42438:1;42427:9;42423:17;42414:6;42370:71;:::i;:::-;42451:72;42519:2;42508:9;42504:18;42495:6;42451:72;:::i;:::-;42533;42601:2;42590:9;42586:18;42577:6;42533:72;:::i;:::-;42170:442;;;;;;:::o

Swarm Source

ipfs://720c1e73f88ebe5012edf4529a3bffba562b235c3cc5827ba39b414bab406e97
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.