ETH Price: $3,484.80 (+2.24%)

Token

Brandon weird OF Fan (RUBI)
 

Overview

Max Total Supply

1,000,000,000 RUBI

Holders

26

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 RUBI

Value
$0.00
0x2dd238923037b5fb2b8919b52a285a2be9755d76
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:
RUBI

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
WEB     : https://brandonweirdoffan.com
TWITTER : https://x.com/rubitoken
TELEGRAM: t.me/rubierc
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.12;

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

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

interface IERC20 {
  function totalSupply() external view returns (uint256);
  function decimals() external view returns (uint8);
  function symbol() external view returns (string memory);
  function name() external view returns (string memory);
  function getOwner() external view returns (address);
  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 IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function factory() external view returns (address);
}

interface IUniswapV2Router01 {
    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);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract RUBI is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public ExcludedFromWalletRestrictions;

    mapping (address => bool) private _isSniper;
    
    bool private sameBlockActive = true;
    mapping (address => uint256) private lastTrade;    

    uint256 private startingSupply = 1_000_000_000;

    string private _name = "Brandon weird OF Fan";
    string private _symbol = "RUBI";
//==========================
    // FEES
    struct taxes {
    uint buyFee;
    uint sellFee;
    uint transferFee;
    }

    taxes public Fees = taxes(
    {buyFee: 2000, sellFee: 4000, transferFee: 0});
//==========================
    // Maxima

    struct Maxima {
    uint maxBuy;
    uint maxSell;
    uint maxTransfer;
    }

    Maxima public maxFees = Maxima(
    {maxBuy: 1600, maxSell: 4000, maxTransfer: 1600});
//==========================    
    //Proportions of Taxes
    struct feeProportions {
    uint liquidity;
    uint tokenFee;
    uint DevIDFee;
    uint OperationsFee;
    }

    feeProportions public Ratios = feeProportions(
    { liquidity: 0, tokenFee: 0, DevIDFee: 500, OperationsFee: 500});

    uint256 private constant masterTaxDivisor = 10000;
    uint256 private constant MAX = ~uint256(0);
    uint8 constant private _decimals = 9;
 
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    address constant private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // UNISWAP ROUTER
    
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    
    address payable public _DevIDWallet = payable(0x05b72afeE36D9C45C6785e2a5DAE2aE6Ea08F610);  // DevID, receives taxes
    address payable public _OperationsWallet = payable(0x05b72afeE36D9C45C6785e2a5DAE2aE6Ea08F610);  // This wallet will deploy the Operations share dApp.
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent = 2;
    uint256 private maxTxDivisor = 100;
    uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
    
    uint256 private maxWalletPercent = 2;
    uint256 private maxWalletDivisor = 100;
    uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
    
    uint256 private swapThreshold = (_tTotal * 5) / 10_000;
    uint256 private swapAmount = (_tTotal * 5) / 1_000;

    bool private sniperProtection = true;
    bool public _hasLiqBeenAdded = false;
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0; // make constant
    uint256 private snipeBlockAmt = 0;
    uint256 public snipersCaught = 0;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller != owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[_msgSender()] = _tTotal;

        // Set the owner.
        _owner = msg.sender;

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[_DevIDWallet] = true;
        _isExcludedFromFees[DEAD] = true;

        _liquidityHolders[owner()] = true;
        _liquidityHolders[_DevIDWallet] = true;
        _liquidityHolders[_OperationsWallet] = true;

        // Approve the owner for Uniswap, timesaver.
        _approve(_msgSender(), _routerAddress, _tTotal);

        // Event regarding the tTotal transferred to the _msgSender.
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        

        _allowances[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

    function renounceOwnership() public virtual onlyOwner() {
        setExcludedFromFees(_owner, false);
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
    
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

    function _approve(address sender, address spender, uint256 amount) private {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

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

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

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

        return _transfer(sender, recipient, amount);
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 1 weeks, "One week cooldown.");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

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

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }


    function excludeFromWalletRestrictions(address excludeAddress) public onlyOwner{
        ExcludedFromWalletRestrictions[excludeAddress] = true;
    }

    function revokeExcludedFromWalletRestrictions(address includeAddress) public onlyOwner{
        ExcludedFromWalletRestrictions[includeAddress] = false;
    }

    function isSniper(address account) public view returns (bool) {
        return _isSniper[account];
    }

    function init() external onlyOwner {
        require (_liqAddStatus == 0, "Error.");
        _liqAddStatus = 1;
        snipeBlockAmt = 0;
    }

    // function setBlacklistEnabled(address account, bool enabled) external onlyOwner() {
    //     _isSniper[account] = enabled;
    // }

    // we are not racists

    function setRatios(uint _liquidity, uint _DevIDFee, uint _OperationsFee , uint _tokenFee) external onlyOwner {
        require ( (_liquidity + _DevIDFee + _OperationsFee + _tokenFee) == 1000, "!1K"); // to change the ratio, it must require the sum equal 1000
        Ratios.liquidity = _liquidity;
        Ratios.DevIDFee = _DevIDFee;
        Ratios.OperationsFee = _OperationsFee;
        Ratios.tokenFee = _tokenFee;
}

    function setTaxes(uint _buyFee, uint _sellFee, uint _transferFee) external onlyOwner {
        require(_buyFee <= maxFees.maxBuy
                && _sellFee <= maxFees.maxSell
                && _transferFee <= maxFees.maxTransfer,
                "Cannot exceed maximums.");
         Fees.buyFee = _buyFee;
         Fees.sellFee = _sellFee;
         Fees.transferFee = _transferFee;
    }

    function changeMaxTx(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxTxAmount = check;
    }

    function changeMaxWallet(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxWalletSize = check;

    }


    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    // function setWallets(address payable DevIDWallet, address payable OperationsWallet) external onlyOwner {
    //     _DevIDWallet = payable(DevIDWallet);
    //     _OperationsWallet = payable(OperationsWallet);
    // }
    // removed 

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: Zero address.");
        require(to != address(0), "ERC20: Zero address.");
        require(amount > 0, "Must >0.");
        if(_hasLimits(from, to)) {

            if(!(ExcludedFromWalletRestrictions[from] || ExcludedFromWalletRestrictions[to])) {
                if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
                }
                if(to != _routerAddress && !lpPairs[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                }

            }
            
        }
        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        if (lpPairs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (Ratios.liquidity + Ratios.DevIDFee + Ratios.OperationsFee == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.DevIDFee + Ratios.OperationsFee) ) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;
        swapTokensForEth(toSwapForEth);

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.DevIDFee + Ratios.OperationsFee) ) / 2;

        bool success;

        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {
            uint ethBal = address(this).balance;
            uint ethBalForOperations = ((ethBal * Ratios.DevIDFee) / (Ratios.DevIDFee + Ratios.OperationsFee));

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

            // _OperationsWallet.transfer(address(this).balance);

        }
    }

    function swapTokensForEth(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _DevIDWallet,
            block.timestamp
        );
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            if (snipeBlockAmt != 0) {
                _liqAddBlock = block.number; // removed + 5000
            } else {
                _liqAddBlock = block.number;
            }
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (sniperProtection){
            if (isSniper(from) || isSniper(to)) {
                revert("Sniper rejected.");
            }

            if (!_hasLiqBeenAdded) {
                _checkLiquidityAdd(from, to);
                if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                    revert("Only owner can transfer at this time.");
                }
            } else {
                if (_liqAddBlock > 0 
                    && lpPairs[from] 
                    && _hasLimits(from, to)
                ) {
                    if (block.number - _liqAddBlock < snipeBlockAmt) {
                        _isSniper[to] = true;
                        snipersCaught ++;
                        emit SniperCaught(to);
                    }
                }
            }
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount; //A
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;

        if (to == lpPair) {currentFee = Fees.sellFee;}

        else if (from == lpPair) {currentFee = Fees.buyFee;} 

        else {currentFee = Fees.transferFee;}

        if (_hasLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != (1)) {
                revert();
            }
        }
        uint256 tokenFeeAmt = (amount * currentFee * Ratios.tokenFee) / (Ratios.tokenFee + Ratios.liquidity + Ratios.DevIDFee + Ratios.OperationsFee ) / masterTaxDivisor;
        uint256 feeAmount = (amount * currentFee / masterTaxDivisor) - tokenFeeAmt;
        _tOwned[_DevIDWallet] += tokenFeeAmt;
        _tOwned[address(this)] += (feeAmount);
        emit Transfer(from, _DevIDWallet, tokenFeeAmt);
        emit Transfer(from, address(this), feeAmount);
        return amount - feeAmount - tokenFeeAmt;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedFromWalletRestrictions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Fees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ratios","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"tokenFee","type":"uint256"},{"internalType":"uint256","name":"DevIDFee","type":"uint256"},{"internalType":"uint256","name":"OperationsFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_DevIDWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_OperationsWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"changeMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"changeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"excludeAddress","type":"address"}],"name":"excludeFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFees","outputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxTransfer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"includeAddress","type":"address"}],"name":"revokeExcludedFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_DevIDFee","type":"uint256"},{"internalType":"uint256","name":"_OperationsFee","type":"uint256"},{"internalType":"uint256","name":"_tokenFee","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_transferFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006003556001600960006101000a81548160ff021916908315150217905550633b9aca00600b556040518060400160405280601481526020017f4272616e646f6e207765697264204f462046616e000000000000000000000000815250600c90805190602001906200007992919062000d36565b506040518060400160405280600481526020017f5255424900000000000000000000000000000000000000000000000000000000815250600d9080519060200190620000c792919062000d36565b5060405180606001604052806107d08152602001610fa081526020016000815250600e600082015181600001556020820151816001015560408201518160020155505060405180606001604052806106408152602001610fa0815260200161064081525060116000820151816000015560208201518160010155604082015181600201555050604051806080016040528060008152602001600081526020016101f481526020016101f481525060146000820151816000015560208201518160010155604082015181600201556060820151816003015550506009600a620001b0919062000f80565b600b54620001bf919062000fd1565b6018557305b72afee36d9c45c6785e2a5dae2ae6ea08f610601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507305b72afee36d9c45c6785e2a5dae2ae6ea08f610601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601d60156101000a81548160ff0219169083151502179055506002601e556064601f55601f54601e54601854620002a6919062000fd1565b620002b2919062001061565b60205560026021556064602255602254602154601854620002d4919062000fd1565b620002e0919062001061565b6023556127106005601854620002f7919062000fd1565b62000303919062001061565b6024556103e860056018546200031a919062000fd1565b62000326919062001061565b6025556001602660006101000a81548160ff0219169083151502179055506000602660016101000a81548160ff0219169083151502179055506000602755600060285560006029556000602a556000602b556000602c55601854600160006200039462000b3260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fb919062001103565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005aa919062001103565b306040518363ffffffff1660e01b8152600401620005ca92919062001146565b6020604051808303816000875af1158015620005ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000610919062001103565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160026000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160066000620007a362000b3a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560006200093662000b3a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000ab362000a8f62000b3260201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d60185462000b6360201b60201c565b62000ac362000b3260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60185460405162000b24919062001184565b60405180910390a362001289565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bcd9062001202565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c409062001202565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000d29919062001184565b60405180910390a3505050565b82805462000d449062001253565b90600052602060002090601f01602090048101928262000d68576000855562000db4565b82601f1062000d8357805160ff191683800117855562000db4565b8280016001018555821562000db4579182015b8281111562000db357825182559160200191906001019062000d96565b5b50905062000dc3919062000dc7565b5090565b5b8082111562000de257600081600090555060010162000dc8565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000e745780860481111562000e4c5762000e4b62000de6565b5b600185161562000e5c5780820291505b808102905062000e6c8562000e15565b945062000e2c565b94509492505050565b60008262000e8f576001905062000f62565b8162000e9f576000905062000f62565b816001811462000eb8576002811462000ec35762000ef9565b600191505062000f62565b60ff84111562000ed85762000ed762000de6565b5b8360020a91508482111562000ef25762000ef162000de6565b5b5062000f62565b5060208310610133831016604e8410600b841016171562000f335782820a90508381111562000f2d5762000f2c62000de6565b5b62000f62565b62000f42848484600162000e22565b9250905081840481111562000f5c5762000f5b62000de6565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000f8d8262000f69565b915062000f9a8362000f73565b925062000fc97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e7d565b905092915050565b600062000fde8262000f69565b915062000feb8362000f69565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001027576200102662000de6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200106e8262000f69565b91506200107b8362000f69565b9250826200108e576200108d62001032565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010cb826200109e565b9050919050565b620010dd81620010be565b8114620010e957600080fd5b50565b600081519050620010fd81620010d2565b92915050565b6000602082840312156200111c576200111b62001099565b5b60006200112c84828501620010ec565b91505092915050565b6200114081620010be565b82525050565b60006040820190506200115d600083018562001135565b6200116c602083018462001135565b9392505050565b6200117e8162000f69565b82525050565b60006020820190506200119b600083018462001173565b92915050565b600082825260208201905092915050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000620011ea601383620011a1565b9150620011f782620011b2565b602082019050919050565b600060208201905081810360008301526200121d81620011db565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200126c57607f821691505b6020821081141562001283576200128262001224565b5b50919050565b61500280620012996000396000f3fe6080604052600436106102555760003560e01c806380c581d111610139578063c49b9a80116100b6578063e79d41601161007a578063e79d416014610900578063e83e34b11461092b578063e9dae5ed14610958578063eafb5a3c14610981578063f75282e1146109aa578063fb78680d146109d35761025c565b8063c49b9a801461081d578063ce8b79c914610846578063d1d2b9be1461086f578063dd62ed3e146108ac578063e1c7392a146108e95761025c565b8063a457c2d7116100fd578063a457c2d714610723578063a9059cbb14610760578063b5f7bfa21461079d578063bae19235146107cb578063bc1323e8146107f45761025c565b806380c581d11461064e5780638824b50a14610677578063893d20e8146106a25780638da5cb5b146106cd57806395d89b41146106f85761025c565b806339509351116101d25780634fbee193116101965780634fbee1931461052c57806350a8e01614610569578063571ac8b014610594578063590ffdce146105d157806370a08231146105fa578063715018a6146106375761025c565b806339509351146104435780633aaa36e614610480578063452ed4f1146104ad5780634a74bb02146104d85780634fb2e45d146105035761025c565b80631793fe4e116102195780631793fe4e1461035c57806318160ddd1461038557806323b872dd146103b05780632bd1f9bb146103ed578063313ce567146104185761025c565b806303fd2a451461026157806306fdde031461028c5780630758d924146102b7578063095ea7b3146102e25780630f3a325f1461031f5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109fc565b6040516102839190613dde565b60405180910390f35b34801561029857600080fd5b506102a1610a02565b6040516102ae9190613e92565b60405180910390f35b3480156102c357600080fd5b506102cc610a94565b6040516102d99190613f13565b60405180910390f35b3480156102ee57600080fd5b5061030960048036038101906103049190613f95565b610aba565b6040516103169190613ff0565b60405180910390f35b34801561032b57600080fd5b506103466004803603810190610341919061400b565b610ad8565b6040516103539190613ff0565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e9190614038565b610b2e565b005b34801561039157600080fd5b5061039a610c56565b6040516103a791906140ae565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d291906140c9565b610c60565b6040516103e49190613ff0565b60405180910390f35b3480156103f957600080fd5b50610402610dad565b60405161040f919061413d565b60405180910390f35b34801561042457600080fd5b5061042d610dd3565b60405161043a9190614174565b60405180910390f35b34801561044f57600080fd5b5061046a60048036038101906104659190613f95565b610ddc565b6040516104779190613ff0565b60405180910390f35b34801561048c57600080fd5b50610495610e88565b6040516104a49392919061418f565b60405180910390f35b3480156104b957600080fd5b506104c2610ea0565b6040516104cf9190613dde565b60405180910390f35b3480156104e457600080fd5b506104ed610ec6565b6040516104fa9190613ff0565b60405180910390f35b34801561050f57600080fd5b5061052a6004803603810190610525919061400b565b610ed9565b005b34801561053857600080fd5b50610553600480360381019061054e919061400b565b611292565b6040516105609190613ff0565b60405180910390f35b34801561057557600080fd5b5061057e6112e8565b60405161058b9190613ff0565b60405180910390f35b3480156105a057600080fd5b506105bb60048036038101906105b6919061400b565b6112fb565b6040516105c89190613ff0565b60405180910390f35b3480156105dd57600080fd5b506105f860048036038101906105f391906141f2565b61132e565b005b34801561060657600080fd5b50610621600480360381019061061c919061400b565b61141e565b60405161062e91906140ae565b60405180910390f35b34801561064357600080fd5b5061064c611467565b005b34801561065a57600080fd5b50610675600480360381019061067091906141f2565b6115e5565b005b34801561068357600080fd5b5061068c6117a5565b604051610699919061413d565b60405180910390f35b3480156106ae57600080fd5b506106b76117cb565b6040516106c49190613dde565b60405180910390f35b3480156106d957600080fd5b506106e26117da565b6040516106ef9190613dde565b60405180910390f35b34801561070457600080fd5b5061070d611803565b60405161071a9190613e92565b60405180910390f35b34801561072f57600080fd5b5061074a60048036038101906107459190613f95565b611895565b6040516107579190613ff0565b60405180910390f35b34801561076c57600080fd5b5061078760048036038101906107829190613f95565b611941565b6040516107949190613ff0565b60405180910390f35b3480156107a957600080fd5b506107b2611960565b6040516107c29493929190614232565b60405180910390f35b3480156107d757600080fd5b506107f260048036038101906107ed9190614277565b61197e565b005b34801561080057600080fd5b5061081b6004803603810190610816919061400b565b611a8e565b005b34801561082957600080fd5b50610844600480360381019061083f91906142b7565b611b7e565b005b34801561085257600080fd5b5061086d6004803603810190610868919061400b565b611c67565b005b34801561087b57600080fd5b506108966004803603810190610891919061400b565b611d57565b6040516108a39190613ff0565b60405180910390f35b3480156108b857600080fd5b506108d360048036038101906108ce91906142e4565b611d77565b6040516108e091906140ae565b60405180910390f35b3480156108f557600080fd5b506108fe611dfe565b005b34801561090c57600080fd5b50610915611eea565b60405161092291906140ae565b60405180910390f35b34801561093757600080fd5b50610940611ef0565b60405161094f9392919061418f565b60405180910390f35b34801561096457600080fd5b5061097f600480360381019061097a9190614324565b611f08565b005b34801561098d57600080fd5b506109a860048036038101906109a3919061400b565b61202a565b005b3480156109b657600080fd5b506109d160048036038101906109cc9190614277565b61247c565b005b3480156109df57600080fd5b506109fa60048036038101906109f59190614038565b61258c565b005b61dead81565b6060600c8054610a11906143a6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3d906143a6565b8015610a8a5780601f10610a5f57610100808354040283529160200191610a8a565b820191906000526020600020905b815481529060010190602001808311610a6d57829003601f168201915b5050505050905090565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ace610ac7612665565b848461266d565b6001905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b36612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba90614424565b60405180910390fd5b6103e881838587610bd49190614473565b610bde9190614473565b610be89190614473565b14610c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1f90614515565b60405180910390fd5b8360146000018190555082601460020181905550816014600301819055508060146001018190555050505050565b6000601854905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d995781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d919190614535565b925050819055505b610da4848484612838565b90509392505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009905090565b6000610e7e610de9612665565b848460046000610df7612665565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e799190614473565b61266d565b6001905092915050565b600e8060000154908060010154908060020154905083565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60159054906101000a900460ff1681565b610ee1612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6590614424565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd5906145db565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561104f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611046906145db565b60405180910390fd5b61107a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600061132e565b61108581600161132e565b6110ae60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661141e565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061117a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661141e565b11156111d5576111d360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826111ce60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661141e565b612838565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602660019054906101000a900460ff1681565b6000611327827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610aba565b9050919050565b611336612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba90614424565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61146f612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f390614424565b60405180910390fd5b61152760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600061132e565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b6115ed612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461167a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167190614424565b60405180910390fd5b6000151581151514156116e4576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506117a1565b6000600354146117415762093a80600354426117009190614535565b11611740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173790614647565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006117d56117da565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d8054611812906143a6565b80601f016020809104026020016040519081016040528092919081815260200182805461183e906143a6565b801561188b5780601f106118605761010080835404028352916020019161188b565b820191906000526020600020905b81548152906001019060200180831161186e57829003601f168201915b5050505050905090565b60006119376118a2612665565b8484600460006118b0612665565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119329190614535565b61266d565b6001905092915050565b600061195561194e612665565b8484612838565b506001905092915050565b60148060000154908060010154908060020154908060030154905084565b611986612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a90614424565b60405180910390fd5b60008183601854611a249190614667565b611a2e91906146f0565b905061012c601854611a4091906146f0565b811015611a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7990614793565b60405180910390fd5b80602381905550505050565b611a96612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1a90614424565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611b86612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0a90614424565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611c5c9190613ff0565b60405180910390a150565b611c6f612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf390614424565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e06612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8a90614424565b60405180910390fd5b600060275414611ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecf906147ff565b60405180910390fd5b60016027819055506000602b81905550565b602c5481565b60118060000154908060010154908060020154905083565b611f10612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9490614424565b60405180910390fd5b6011600001548311158015611fb757506011600101548211155b8015611fc857506011600201548111155b612007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffe9061486b565b60405180910390fd5b82600e6000018190555081600e6001018190555080600e60020181905550505050565b612032612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b690614424565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612111573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213591906148a0565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561219c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c091906148a0565b6040518363ffffffff1660e01b81526004016121dd9291906148cd565b602060405180830381865afa1580156121fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221e91906148a0565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123f4578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c491906148a0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561232b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234f91906148a0565b6040518363ffffffff1660e01b815260040161236c9291906148cd565b6020604051808303816000875af115801561238b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123af91906148a0565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612436565b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b612484612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250890614424565b60405180910390fd5b600081836018546125229190614667565b61252c91906146f0565b905061012c60185461253e91906146f0565b811015612580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257790614793565b60405180910390fd5b80602081905550505050565b612594612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261890614424565b60405180910390fd5b82846018546126309190614667565b61263a91906146f0565b602481905550808260185461264f9190614667565b61265991906146f0565b60258190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d490614942565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561274d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274490614942565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161282b91906140ae565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156128a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a0906149ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612919576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612910906149ae565b60405180910390fd5b6000821161295c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295390614a1a565b60405180910390fd5b6129668484612d6f565b15612bf657600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a0c5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612bf557600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ab15750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612afc57602054821115612afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af290614a86565b60405180910390fd5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b965750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bf45760235482612ba88561141e565b612bb29190614473565b1115612bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bea90614af2565b60405180910390fd5b5b5b5b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c9d5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ca757600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612d5957601d60149054906101000a900460ff16158015612d225750601d60159054906101000a900460ff165b15612d58576000612d323061141e565b90506024548110612d56576025548110612d4c5760255490505b612d5581612f46565b5b505b5b612d6585858584613235565b9150509392505050565b6000612d796117da565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612de75750612db76117da565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e3d5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e935750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ecd575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f065750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f3e57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001601d60146101000a81548160ff0219169083151502179055506000601460030154601460020154601460000154612f7f9190614473565b612f899190614473565b1415612f9457613217565b60006002601460030154601460020154601460000154612fb49190614473565b612fbe9190614473565b60146000015484612fcf9190614667565b612fd991906146f0565b612fe391906146f0565b905060008183612ff39190614535565b9050612ffe81613598565b6000479050600060026014600301546014600201546014600001546130239190614473565b61302d9190614473565b6014600001548461303e9190614667565b61304891906146f0565b61305291906146f0565b90506000808511156130a45761306885836137ae565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185838760405161309b9392919061418f565b60405180910390a15b600085876130b29190614535565b111561321157600047905060006014600301546014600201546130d59190614473565b601460020154836130e69190614667565b6130f091906146f0565b9050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161313890614b43565b60006040518083038185875af1925050503d8060008114613175576040519150601f19603f3d011682016040523d82523d6000602084013e61317a565b606091505b505080935050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516131c690614b43565b60006040518083038185875af1925050503d8060008114613203576040519150601f19603f3d011682016040523d82523d6000602084013e613208565b606091505b50508093505050505b50505050505b6000601d60146101000a81548160ff02191690831515021790555050565b6000602660009054906101000a900460ff161561345f5761325585610ad8565b80613265575061326484610ad8565b5b156132a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329c90614ba4565b60405180910390fd5b602660019054906101000a900460ff1661332b576132c38585613881565b602660019054906101000a900460ff161580156132e657506132e58585612d6f565b5b15613326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331d90614c36565b60405180910390fd5b61345e565b60006028541180156133865750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561339857506133978585612d6f565b5b1561345d57602b54602854436133ae9190614535565b101561345c576001600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602c600081548092919061341f90614c56565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e5846040516134539190613dde565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134ae9190614535565b925050819055506000826134c257836134ce565b6134cd868686613a2a565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461351f9190614473565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161358391906140ae565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff8111156135b5576135b4614c9f565b5b6040519080825280602002602001820160405280156135e35781602001602082028036833780820191505090505b50905030816000815181106135fb576135fa614cce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c691906148a0565b816001815181106136da576136d9614cce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613778959493929190614df6565b600060405180830381600087803b15801561379257600080fd5b505af11580156137a6573d6000803e3d6000fd5b505050505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161383796959493929190614e71565b60606040518083038185885af1158015613855573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061387a9190614ee7565b5050505050565b602660019054906101000a900460ff16156138d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c890614fac565b60405180910390fd5b6138db8282612d6f565b1580156139355750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15613a26576000602b54146139505743602881905550613958565b436028819055505b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602660016101000a81548160ff021916908315150217905550426029819055506001601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1596001604051613a1d9190613ff0565b60405180910390a15b5050565b600080601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613a9057600e600101549050613afd565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613af357600e600001549050613afc565b600e6002015490505b5b613b078585612d6f565b15613b2b5760006027541480613b205750600160275414155b15613b2a57600080fd5b5b6000612710601460030154601460020154601460000154601460010154613b529190614473565b613b5c9190614473565b613b669190614473565b6014600101548487613b789190614667565b613b829190614667565b613b8c91906146f0565b613b9691906146f0565b90506000816127108487613baa9190614667565b613bb491906146f0565b613bbe9190614535565b90508160016000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c319190614473565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c879190614473565b92505081905550601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d0d91906140ae565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d7291906140ae565b60405180910390a3818186613d879190614535565b613d919190614535565b93505050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613dc882613d9d565b9050919050565b613dd881613dbd565b82525050565b6000602082019050613df36000830184613dcf565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e33578082015181840152602081019050613e18565b83811115613e42576000848401525b50505050565b6000601f19601f8301169050919050565b6000613e6482613df9565b613e6e8185613e04565b9350613e7e818560208601613e15565b613e8781613e48565b840191505092915050565b60006020820190508181036000830152613eac8184613e59565b905092915050565b6000819050919050565b6000613ed9613ed4613ecf84613d9d565b613eb4565b613d9d565b9050919050565b6000613eeb82613ebe565b9050919050565b6000613efd82613ee0565b9050919050565b613f0d81613ef2565b82525050565b6000602082019050613f286000830184613f04565b92915050565b600080fd5b613f3c81613dbd565b8114613f4757600080fd5b50565b600081359050613f5981613f33565b92915050565b6000819050919050565b613f7281613f5f565b8114613f7d57600080fd5b50565b600081359050613f8f81613f69565b92915050565b60008060408385031215613fac57613fab613f2e565b5b6000613fba85828601613f4a565b9250506020613fcb85828601613f80565b9150509250929050565b60008115159050919050565b613fea81613fd5565b82525050565b60006020820190506140056000830184613fe1565b92915050565b60006020828403121561402157614020613f2e565b5b600061402f84828501613f4a565b91505092915050565b6000806000806080858703121561405257614051613f2e565b5b600061406087828801613f80565b945050602061407187828801613f80565b935050604061408287828801613f80565b925050606061409387828801613f80565b91505092959194509250565b6140a881613f5f565b82525050565b60006020820190506140c3600083018461409f565b92915050565b6000806000606084860312156140e2576140e1613f2e565b5b60006140f086828701613f4a565b935050602061410186828701613f4a565b925050604061411286828701613f80565b9150509250925092565b600061412782613d9d565b9050919050565b6141378161411c565b82525050565b6000602082019050614152600083018461412e565b92915050565b600060ff82169050919050565b61416e81614158565b82525050565b60006020820190506141896000830184614165565b92915050565b60006060820190506141a4600083018661409f565b6141b1602083018561409f565b6141be604083018461409f565b949350505050565b6141cf81613fd5565b81146141da57600080fd5b50565b6000813590506141ec816141c6565b92915050565b6000806040838503121561420957614208613f2e565b5b600061421785828601613f4a565b9250506020614228858286016141dd565b9150509250929050565b6000608082019050614247600083018761409f565b614254602083018661409f565b614261604083018561409f565b61426e606083018461409f565b95945050505050565b6000806040838503121561428e5761428d613f2e565b5b600061429c85828601613f80565b92505060206142ad85828601613f80565b9150509250929050565b6000602082840312156142cd576142cc613f2e565b5b60006142db848285016141dd565b91505092915050565b600080604083850312156142fb576142fa613f2e565b5b600061430985828601613f4a565b925050602061431a85828601613f4a565b9150509250929050565b60008060006060848603121561433d5761433c613f2e565b5b600061434b86828701613f80565b935050602061435c86828701613f80565b925050604061436d86828701613f80565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806143be57607f821691505b602082108114156143d2576143d1614377565b5b50919050565b7f43616c6c657220213d206f776e65722e00000000000000000000000000000000600082015250565b600061440e601083613e04565b9150614419826143d8565b602082019050919050565b6000602082019050818103600083015261443d81614401565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061447e82613f5f565b915061448983613f5f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144be576144bd614444565b5b828201905092915050565b7f21314b0000000000000000000000000000000000000000000000000000000000600082015250565b60006144ff600383613e04565b915061450a826144c9565b602082019050919050565b6000602082019050818103600083015261452e816144f2565b9050919050565b600061454082613f5f565b915061454b83613f5f565b92508282101561455e5761455d614444565b5b828203905092915050565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b60006145c5603d83613e04565b91506145d082614569565b604082019050919050565b600060208201905081810360008301526145f4816145b8565b9050919050565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b6000614631601283613e04565b915061463c826145fb565b602082019050919050565b6000602082019050818103600083015261466081614624565b9050919050565b600061467282613f5f565b915061467d83613f5f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146b6576146b5614444565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006146fb82613f5f565b915061470683613f5f565b925082614716576147156146c1565b5b828204905092915050565b7f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560008201527f70706c792e000000000000000000000000000000000000000000000000000000602082015250565b600061477d602583613e04565b915061478882614721565b604082019050919050565b600060208201905081810360008301526147ac81614770565b9050919050565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b60006147e9600683613e04565b91506147f4826147b3565b602082019050919050565b60006020820190508181036000830152614818816147dc565b9050919050565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b6000614855601783613e04565b91506148608261481f565b602082019050919050565b6000602082019050818103600083015261488481614848565b9050919050565b60008151905061489a81613f33565b92915050565b6000602082840312156148b6576148b5613f2e565b5b60006148c48482850161488b565b91505092915050565b60006040820190506148e26000830185613dcf565b6148ef6020830184613dcf565b9392505050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b600061492c601383613e04565b9150614937826148f6565b602082019050919050565b6000602082019050818103600083015261495b8161491f565b9050919050565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b6000614998601483613e04565b91506149a382614962565b602082019050919050565b600060208201905081810360008301526149c78161498b565b9050919050565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b6000614a04600883613e04565b9150614a0f826149ce565b602082019050919050565b60006020820190508181036000830152614a33816149f7565b9050919050565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b6000614a70601883613e04565b9150614a7b82614a3a565b602082019050919050565b60006020820190508181036000830152614a9f81614a63565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000614adc601a83613e04565b9150614ae782614aa6565b602082019050919050565b60006020820190508181036000830152614b0b81614acf565b9050919050565b600081905092915050565b50565b6000614b2d600083614b12565b9150614b3882614b1d565b600082019050919050565b6000614b4e82614b20565b9150819050919050565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b6000614b8e601083613e04565b9150614b9982614b58565b602082019050919050565b60006020820190508181036000830152614bbd81614b81565b9050919050565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b6000614c20602583613e04565b9150614c2b82614bc4565b604082019050919050565b60006020820190508181036000830152614c4f81614c13565b9050919050565b6000614c6182613f5f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c9457614c93614444565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614d22614d1d614d1884614cfd565b613eb4565b613f5f565b9050919050565b614d3281614d07565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d6d81613dbd565b82525050565b6000614d7f8383614d64565b60208301905092915050565b6000602082019050919050565b6000614da382614d38565b614dad8185614d43565b9350614db883614d54565b8060005b83811015614de9578151614dd08882614d73565b9750614ddb83614d8b565b925050600181019050614dbc565b5085935050505092915050565b600060a082019050614e0b600083018861409f565b614e186020830187614d29565b8181036040830152614e2a8186614d98565b9050614e396060830185613dcf565b614e46608083018461409f565b9695505050505050565b6000614e5b82613ee0565b9050919050565b614e6b81614e50565b82525050565b600060c082019050614e866000830189613dcf565b614e93602083018861409f565b614ea06040830187614d29565b614ead6060830186614d29565b614eba6080830185614e62565b614ec760a083018461409f565b979650505050505050565b600081519050614ee181613f69565b92915050565b600080600060608486031215614f0057614eff613f2e565b5b6000614f0e86828701614ed2565b9350506020614f1f86828701614ed2565b9250506040614f3086828701614ed2565b9150509250925092565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b6000614f96602383613e04565b9150614fa182614f3a565b604082019050919050565b60006020820190508181036000830152614fc581614f89565b905091905056fea264697066735822122051b50975e3e2aa8f53c9ad1ea0a2059f5cb756581e7f1ec619104ae112e462d664736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106102555760003560e01c806380c581d111610139578063c49b9a80116100b6578063e79d41601161007a578063e79d416014610900578063e83e34b11461092b578063e9dae5ed14610958578063eafb5a3c14610981578063f75282e1146109aa578063fb78680d146109d35761025c565b8063c49b9a801461081d578063ce8b79c914610846578063d1d2b9be1461086f578063dd62ed3e146108ac578063e1c7392a146108e95761025c565b8063a457c2d7116100fd578063a457c2d714610723578063a9059cbb14610760578063b5f7bfa21461079d578063bae19235146107cb578063bc1323e8146107f45761025c565b806380c581d11461064e5780638824b50a14610677578063893d20e8146106a25780638da5cb5b146106cd57806395d89b41146106f85761025c565b806339509351116101d25780634fbee193116101965780634fbee1931461052c57806350a8e01614610569578063571ac8b014610594578063590ffdce146105d157806370a08231146105fa578063715018a6146106375761025c565b806339509351146104435780633aaa36e614610480578063452ed4f1146104ad5780634a74bb02146104d85780634fb2e45d146105035761025c565b80631793fe4e116102195780631793fe4e1461035c57806318160ddd1461038557806323b872dd146103b05780632bd1f9bb146103ed578063313ce567146104185761025c565b806303fd2a451461026157806306fdde031461028c5780630758d924146102b7578063095ea7b3146102e25780630f3a325f1461031f5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109fc565b6040516102839190613dde565b60405180910390f35b34801561029857600080fd5b506102a1610a02565b6040516102ae9190613e92565b60405180910390f35b3480156102c357600080fd5b506102cc610a94565b6040516102d99190613f13565b60405180910390f35b3480156102ee57600080fd5b5061030960048036038101906103049190613f95565b610aba565b6040516103169190613ff0565b60405180910390f35b34801561032b57600080fd5b506103466004803603810190610341919061400b565b610ad8565b6040516103539190613ff0565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e9190614038565b610b2e565b005b34801561039157600080fd5b5061039a610c56565b6040516103a791906140ae565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d291906140c9565b610c60565b6040516103e49190613ff0565b60405180910390f35b3480156103f957600080fd5b50610402610dad565b60405161040f919061413d565b60405180910390f35b34801561042457600080fd5b5061042d610dd3565b60405161043a9190614174565b60405180910390f35b34801561044f57600080fd5b5061046a60048036038101906104659190613f95565b610ddc565b6040516104779190613ff0565b60405180910390f35b34801561048c57600080fd5b50610495610e88565b6040516104a49392919061418f565b60405180910390f35b3480156104b957600080fd5b506104c2610ea0565b6040516104cf9190613dde565b60405180910390f35b3480156104e457600080fd5b506104ed610ec6565b6040516104fa9190613ff0565b60405180910390f35b34801561050f57600080fd5b5061052a6004803603810190610525919061400b565b610ed9565b005b34801561053857600080fd5b50610553600480360381019061054e919061400b565b611292565b6040516105609190613ff0565b60405180910390f35b34801561057557600080fd5b5061057e6112e8565b60405161058b9190613ff0565b60405180910390f35b3480156105a057600080fd5b506105bb60048036038101906105b6919061400b565b6112fb565b6040516105c89190613ff0565b60405180910390f35b3480156105dd57600080fd5b506105f860048036038101906105f391906141f2565b61132e565b005b34801561060657600080fd5b50610621600480360381019061061c919061400b565b61141e565b60405161062e91906140ae565b60405180910390f35b34801561064357600080fd5b5061064c611467565b005b34801561065a57600080fd5b50610675600480360381019061067091906141f2565b6115e5565b005b34801561068357600080fd5b5061068c6117a5565b604051610699919061413d565b60405180910390f35b3480156106ae57600080fd5b506106b76117cb565b6040516106c49190613dde565b60405180910390f35b3480156106d957600080fd5b506106e26117da565b6040516106ef9190613dde565b60405180910390f35b34801561070457600080fd5b5061070d611803565b60405161071a9190613e92565b60405180910390f35b34801561072f57600080fd5b5061074a60048036038101906107459190613f95565b611895565b6040516107579190613ff0565b60405180910390f35b34801561076c57600080fd5b5061078760048036038101906107829190613f95565b611941565b6040516107949190613ff0565b60405180910390f35b3480156107a957600080fd5b506107b2611960565b6040516107c29493929190614232565b60405180910390f35b3480156107d757600080fd5b506107f260048036038101906107ed9190614277565b61197e565b005b34801561080057600080fd5b5061081b6004803603810190610816919061400b565b611a8e565b005b34801561082957600080fd5b50610844600480360381019061083f91906142b7565b611b7e565b005b34801561085257600080fd5b5061086d6004803603810190610868919061400b565b611c67565b005b34801561087b57600080fd5b506108966004803603810190610891919061400b565b611d57565b6040516108a39190613ff0565b60405180910390f35b3480156108b857600080fd5b506108d360048036038101906108ce91906142e4565b611d77565b6040516108e091906140ae565b60405180910390f35b3480156108f557600080fd5b506108fe611dfe565b005b34801561090c57600080fd5b50610915611eea565b60405161092291906140ae565b60405180910390f35b34801561093757600080fd5b50610940611ef0565b60405161094f9392919061418f565b60405180910390f35b34801561096457600080fd5b5061097f600480360381019061097a9190614324565b611f08565b005b34801561098d57600080fd5b506109a860048036038101906109a3919061400b565b61202a565b005b3480156109b657600080fd5b506109d160048036038101906109cc9190614277565b61247c565b005b3480156109df57600080fd5b506109fa60048036038101906109f59190614038565b61258c565b005b61dead81565b6060600c8054610a11906143a6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3d906143a6565b8015610a8a5780601f10610a5f57610100808354040283529160200191610a8a565b820191906000526020600020905b815481529060010190602001808311610a6d57829003601f168201915b5050505050905090565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ace610ac7612665565b848461266d565b6001905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b36612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba90614424565b60405180910390fd5b6103e881838587610bd49190614473565b610bde9190614473565b610be89190614473565b14610c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1f90614515565b60405180910390fd5b8360146000018190555082601460020181905550816014600301819055508060146001018190555050505050565b6000601854905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d995781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d919190614535565b925050819055505b610da4848484612838565b90509392505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009905090565b6000610e7e610de9612665565b848460046000610df7612665565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e799190614473565b61266d565b6001905092915050565b600e8060000154908060010154908060020154905083565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60159054906101000a900460ff1681565b610ee1612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6590614424565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd5906145db565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561104f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611046906145db565b60405180910390fd5b61107a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600061132e565b61108581600161132e565b6110ae60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661141e565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061117a60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661141e565b11156111d5576111d360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826111ce60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661141e565b612838565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602660019054906101000a900460ff1681565b6000611327827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610aba565b9050919050565b611336612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba90614424565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61146f612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f390614424565b60405180910390fd5b61152760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600061132e565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b6115ed612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461167a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167190614424565b60405180910390fd5b6000151581151514156116e4576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506117a1565b6000600354146117415762093a80600354426117009190614535565b11611740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173790614647565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006117d56117da565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d8054611812906143a6565b80601f016020809104026020016040519081016040528092919081815260200182805461183e906143a6565b801561188b5780601f106118605761010080835404028352916020019161188b565b820191906000526020600020905b81548152906001019060200180831161186e57829003601f168201915b5050505050905090565b60006119376118a2612665565b8484600460006118b0612665565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119329190614535565b61266d565b6001905092915050565b600061195561194e612665565b8484612838565b506001905092915050565b60148060000154908060010154908060020154908060030154905084565b611986612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a90614424565b60405180910390fd5b60008183601854611a249190614667565b611a2e91906146f0565b905061012c601854611a4091906146f0565b811015611a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7990614793565b60405180910390fd5b80602381905550505050565b611a96612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1a90614424565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611b86612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0a90614424565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611c5c9190613ff0565b60405180910390a150565b611c6f612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf390614424565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e06612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8a90614424565b60405180910390fd5b600060275414611ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecf906147ff565b60405180910390fd5b60016027819055506000602b81905550565b602c5481565b60118060000154908060010154908060020154905083565b611f10612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9490614424565b60405180910390fd5b6011600001548311158015611fb757506011600101548211155b8015611fc857506011600201548111155b612007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffe9061486b565b60405180910390fd5b82600e6000018190555081600e6001018190555080600e60020181905550505050565b612032612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b690614424565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612111573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213591906148a0565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561219c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c091906148a0565b6040518363ffffffff1660e01b81526004016121dd9291906148cd565b602060405180830381865afa1580156121fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221e91906148a0565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123f4578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c491906148a0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561232b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234f91906148a0565b6040518363ffffffff1660e01b815260040161236c9291906148cd565b6020604051808303816000875af115801561238b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123af91906148a0565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612436565b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b612484612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250890614424565b60405180910390fd5b600081836018546125229190614667565b61252c91906146f0565b905061012c60185461253e91906146f0565b811015612580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257790614793565b60405180910390fd5b80602081905550505050565b612594612665565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261890614424565b60405180910390fd5b82846018546126309190614667565b61263a91906146f0565b602481905550808260185461264f9190614667565b61265991906146f0565b60258190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d490614942565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561274d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274490614942565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161282b91906140ae565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156128a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a0906149ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612919576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612910906149ae565b60405180910390fd5b6000821161295c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295390614a1a565b60405180910390fd5b6129668484612d6f565b15612bf657600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a0c5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612bf557600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ab15750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612afc57602054821115612afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af290614a86565b60405180910390fd5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b965750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bf45760235482612ba88561141e565b612bb29190614473565b1115612bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bea90614af2565b60405180910390fd5b5b5b5b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c9d5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ca757600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612d5957601d60149054906101000a900460ff16158015612d225750601d60159054906101000a900460ff165b15612d58576000612d323061141e565b90506024548110612d56576025548110612d4c5760255490505b612d5581612f46565b5b505b5b612d6585858584613235565b9150509392505050565b6000612d796117da565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612de75750612db76117da565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e3d5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e935750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ecd575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f065750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f3e57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001601d60146101000a81548160ff0219169083151502179055506000601460030154601460020154601460000154612f7f9190614473565b612f899190614473565b1415612f9457613217565b60006002601460030154601460020154601460000154612fb49190614473565b612fbe9190614473565b60146000015484612fcf9190614667565b612fd991906146f0565b612fe391906146f0565b905060008183612ff39190614535565b9050612ffe81613598565b6000479050600060026014600301546014600201546014600001546130239190614473565b61302d9190614473565b6014600001548461303e9190614667565b61304891906146f0565b61305291906146f0565b90506000808511156130a45761306885836137ae565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185838760405161309b9392919061418f565b60405180910390a15b600085876130b29190614535565b111561321157600047905060006014600301546014600201546130d59190614473565b601460020154836130e69190614667565b6130f091906146f0565b9050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161313890614b43565b60006040518083038185875af1925050503d8060008114613175576040519150601f19603f3d011682016040523d82523d6000602084013e61317a565b606091505b505080935050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516131c690614b43565b60006040518083038185875af1925050503d8060008114613203576040519150601f19603f3d011682016040523d82523d6000602084013e613208565b606091505b50508093505050505b50505050505b6000601d60146101000a81548160ff02191690831515021790555050565b6000602660009054906101000a900460ff161561345f5761325585610ad8565b80613265575061326484610ad8565b5b156132a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329c90614ba4565b60405180910390fd5b602660019054906101000a900460ff1661332b576132c38585613881565b602660019054906101000a900460ff161580156132e657506132e58585612d6f565b5b15613326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331d90614c36565b60405180910390fd5b61345e565b60006028541180156133865750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561339857506133978585612d6f565b5b1561345d57602b54602854436133ae9190614535565b101561345c576001600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602c600081548092919061341f90614c56565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e5846040516134539190613dde565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134ae9190614535565b925050819055506000826134c257836134ce565b6134cd868686613a2a565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461351f9190614473565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161358391906140ae565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff8111156135b5576135b4614c9f565b5b6040519080825280602002602001820160405280156135e35781602001602082028036833780820191505090505b50905030816000815181106135fb576135fa614cce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c691906148a0565b816001815181106136da576136d9614cce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613778959493929190614df6565b600060405180830381600087803b15801561379257600080fd5b505af11580156137a6573d6000803e3d6000fd5b505050505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161383796959493929190614e71565b60606040518083038185885af1158015613855573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061387a9190614ee7565b5050505050565b602660019054906101000a900460ff16156138d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c890614fac565b60405180910390fd5b6138db8282612d6f565b1580156139355750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15613a26576000602b54146139505743602881905550613958565b436028819055505b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602660016101000a81548160ff021916908315150217905550426029819055506001601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1596001604051613a1d9190613ff0565b60405180910390a15b5050565b600080601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613a9057600e600101549050613afd565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613af357600e600001549050613afc565b600e6002015490505b5b613b078585612d6f565b15613b2b5760006027541480613b205750600160275414155b15613b2a57600080fd5b5b6000612710601460030154601460020154601460000154601460010154613b529190614473565b613b5c9190614473565b613b669190614473565b6014600101548487613b789190614667565b613b829190614667565b613b8c91906146f0565b613b9691906146f0565b90506000816127108487613baa9190614667565b613bb491906146f0565b613bbe9190614535565b90508160016000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c319190614473565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c879190614473565b92505081905550601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d0d91906140ae565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d7291906140ae565b60405180910390a3818186613d879190614535565b613d919190614535565b93505050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613dc882613d9d565b9050919050565b613dd881613dbd565b82525050565b6000602082019050613df36000830184613dcf565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e33578082015181840152602081019050613e18565b83811115613e42576000848401525b50505050565b6000601f19601f8301169050919050565b6000613e6482613df9565b613e6e8185613e04565b9350613e7e818560208601613e15565b613e8781613e48565b840191505092915050565b60006020820190508181036000830152613eac8184613e59565b905092915050565b6000819050919050565b6000613ed9613ed4613ecf84613d9d565b613eb4565b613d9d565b9050919050565b6000613eeb82613ebe565b9050919050565b6000613efd82613ee0565b9050919050565b613f0d81613ef2565b82525050565b6000602082019050613f286000830184613f04565b92915050565b600080fd5b613f3c81613dbd565b8114613f4757600080fd5b50565b600081359050613f5981613f33565b92915050565b6000819050919050565b613f7281613f5f565b8114613f7d57600080fd5b50565b600081359050613f8f81613f69565b92915050565b60008060408385031215613fac57613fab613f2e565b5b6000613fba85828601613f4a565b9250506020613fcb85828601613f80565b9150509250929050565b60008115159050919050565b613fea81613fd5565b82525050565b60006020820190506140056000830184613fe1565b92915050565b60006020828403121561402157614020613f2e565b5b600061402f84828501613f4a565b91505092915050565b6000806000806080858703121561405257614051613f2e565b5b600061406087828801613f80565b945050602061407187828801613f80565b935050604061408287828801613f80565b925050606061409387828801613f80565b91505092959194509250565b6140a881613f5f565b82525050565b60006020820190506140c3600083018461409f565b92915050565b6000806000606084860312156140e2576140e1613f2e565b5b60006140f086828701613f4a565b935050602061410186828701613f4a565b925050604061411286828701613f80565b9150509250925092565b600061412782613d9d565b9050919050565b6141378161411c565b82525050565b6000602082019050614152600083018461412e565b92915050565b600060ff82169050919050565b61416e81614158565b82525050565b60006020820190506141896000830184614165565b92915050565b60006060820190506141a4600083018661409f565b6141b1602083018561409f565b6141be604083018461409f565b949350505050565b6141cf81613fd5565b81146141da57600080fd5b50565b6000813590506141ec816141c6565b92915050565b6000806040838503121561420957614208613f2e565b5b600061421785828601613f4a565b9250506020614228858286016141dd565b9150509250929050565b6000608082019050614247600083018761409f565b614254602083018661409f565b614261604083018561409f565b61426e606083018461409f565b95945050505050565b6000806040838503121561428e5761428d613f2e565b5b600061429c85828601613f80565b92505060206142ad85828601613f80565b9150509250929050565b6000602082840312156142cd576142cc613f2e565b5b60006142db848285016141dd565b91505092915050565b600080604083850312156142fb576142fa613f2e565b5b600061430985828601613f4a565b925050602061431a85828601613f4a565b9150509250929050565b60008060006060848603121561433d5761433c613f2e565b5b600061434b86828701613f80565b935050602061435c86828701613f80565b925050604061436d86828701613f80565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806143be57607f821691505b602082108114156143d2576143d1614377565b5b50919050565b7f43616c6c657220213d206f776e65722e00000000000000000000000000000000600082015250565b600061440e601083613e04565b9150614419826143d8565b602082019050919050565b6000602082019050818103600083015261443d81614401565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061447e82613f5f565b915061448983613f5f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144be576144bd614444565b5b828201905092915050565b7f21314b0000000000000000000000000000000000000000000000000000000000600082015250565b60006144ff600383613e04565b915061450a826144c9565b602082019050919050565b6000602082019050818103600083015261452e816144f2565b9050919050565b600061454082613f5f565b915061454b83613f5f565b92508282101561455e5761455d614444565b5b828203905092915050565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b60006145c5603d83613e04565b91506145d082614569565b604082019050919050565b600060208201905081810360008301526145f4816145b8565b9050919050565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b6000614631601283613e04565b915061463c826145fb565b602082019050919050565b6000602082019050818103600083015261466081614624565b9050919050565b600061467282613f5f565b915061467d83613f5f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146b6576146b5614444565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006146fb82613f5f565b915061470683613f5f565b925082614716576147156146c1565b5b828204905092915050565b7f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560008201527f70706c792e000000000000000000000000000000000000000000000000000000602082015250565b600061477d602583613e04565b915061478882614721565b604082019050919050565b600060208201905081810360008301526147ac81614770565b9050919050565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b60006147e9600683613e04565b91506147f4826147b3565b602082019050919050565b60006020820190508181036000830152614818816147dc565b9050919050565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b6000614855601783613e04565b91506148608261481f565b602082019050919050565b6000602082019050818103600083015261488481614848565b9050919050565b60008151905061489a81613f33565b92915050565b6000602082840312156148b6576148b5613f2e565b5b60006148c48482850161488b565b91505092915050565b60006040820190506148e26000830185613dcf565b6148ef6020830184613dcf565b9392505050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b600061492c601383613e04565b9150614937826148f6565b602082019050919050565b6000602082019050818103600083015261495b8161491f565b9050919050565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b6000614998601483613e04565b91506149a382614962565b602082019050919050565b600060208201905081810360008301526149c78161498b565b9050919050565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b6000614a04600883613e04565b9150614a0f826149ce565b602082019050919050565b60006020820190508181036000830152614a33816149f7565b9050919050565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b6000614a70601883613e04565b9150614a7b82614a3a565b602082019050919050565b60006020820190508181036000830152614a9f81614a63565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000614adc601a83613e04565b9150614ae782614aa6565b602082019050919050565b60006020820190508181036000830152614b0b81614acf565b9050919050565b600081905092915050565b50565b6000614b2d600083614b12565b9150614b3882614b1d565b600082019050919050565b6000614b4e82614b20565b9150819050919050565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b6000614b8e601083613e04565b9150614b9982614b58565b602082019050919050565b60006020820190508181036000830152614bbd81614b81565b9050919050565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b6000614c20602583613e04565b9150614c2b82614bc4565b604082019050919050565b60006020820190508181036000830152614c4f81614c13565b9050919050565b6000614c6182613f5f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c9457614c93614444565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614d22614d1d614d1884614cfd565b613eb4565b613f5f565b9050919050565b614d3281614d07565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d6d81613dbd565b82525050565b6000614d7f8383614d64565b60208301905092915050565b6000602082019050919050565b6000614da382614d38565b614dad8185614d43565b9350614db883614d54565b8060005b83811015614de9578151614dd08882614d73565b9750614ddb83614d8b565b925050600181019050614dbc565b5085935050505092915050565b600060a082019050614e0b600083018861409f565b614e186020830187614d29565b8181036040830152614e2a8186614d98565b9050614e396060830185613dcf565b614e46608083018461409f565b9695505050505050565b6000614e5b82613ee0565b9050919050565b614e6b81614e50565b82525050565b600060c082019050614e866000830189613dcf565b614e93602083018861409f565b614ea06040830187614d29565b614ead6060830186614d29565b614eba6080830185614e62565b614ec760a083018461409f565b979650505050505050565b600081519050614ee181613f69565b92915050565b600080600060608486031215614f0057614eff613f2e565b5b6000614f0e86828701614ed2565b9350506020614f1f86828701614ed2565b9250506040614f3086828701614ed2565b9150509250925092565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b6000614f96602383613e04565b9150614fa182614f3a565b604082019050919050565b60006020820190508181036000830152614fc581614f89565b905091905056fea264697066735822122051b50975e3e2aa8f53c9ad1ea0a2059f5cb756581e7f1ec619104ae112e462d664736f6c634300080c0033

Deployed Bytecode Sourcemap

3746:19786:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5776:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10824:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5589:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11437:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14351:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14795:426;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10559:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12051:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5862:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10648:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12365:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4714:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;5631:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6174:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9345:652;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13748:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6735:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11923:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13881:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11137:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10005:195;;;;;;;;;;;;;:::i;:::-;;13330:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5984:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10910:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9258:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10734:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12588:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11262:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5215:116;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;15890:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14184:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16702:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14025:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4208:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10996:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14465:148;;;;;;;;;;;;;:::i;:::-;;7003:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4936:86;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;15229:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12821:501;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15634:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16156:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5776:73;5807:42;5776:73;:::o;10824:80::-;10872:13;10896:5;10889:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10824:80;:::o;5589:35::-;;;;;;;;;;;;;:::o;11437:161::-;11512:4;11529:39;11538:12;:10;:12::i;:::-;11552:7;11561:6;11529:8;:39::i;:::-;11586:4;11579:11;;11437:161;;;;:::o;14351:106::-;14407:4;14431:9;:18;14441:7;14431:18;;;;;;;;;;;;;;;;;;;;;;;;;14424:25;;14351:106;;;:::o;14795:426::-;7612:12;:10;:12::i;:::-;7602:22;;:6;;;;;;;;;;:22;;;7594:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14982:4:::1;14968:9;14951:14;14939:9;14926:10;:22;;;;:::i;:::-;:39;;;;:::i;:::-;:51;;;;:::i;:::-;14925:61;14915:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;15083:10;15064:6;:16;;:29;;;;15122:9;15104:6;:15;;:27;;;;15165:14;15142:6;:20;;:37;;;;15208:9;15190:6;:15;;:27;;;;14795:426:::0;;;;:::o;10559:83::-;10614:7;10632;;10625:14;;10559:83;:::o;12051:306::-;12151:4;12207:17;12172:11;:19;12184:6;12172:19;;;;;;;;;;;;;;;:31;12192:10;12172:31;;;;;;;;;;;;;;;;:52;12168:126;;12276:6;12241:11;:19;12253:6;12241:19;;;;;;;;;;;;;;;:31;12261:10;12241:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;12168:126;12313:36;12323:6;12331:9;12342:6;12313:9;:36::i;:::-;12306:43;;12051:306;;;;;:::o;5862:89::-;;;;;;;;;;;;;:::o;10648:80::-;10700:5;5480:1;10709:16;;10648:80;:::o;12365:215::-;12453:4;12470:80;12479:12;:10;:12::i;:::-;12493:7;12539:10;12502:11;:25;12514:12;:10;:12::i;:::-;12502:25;;;;;;;;;;;;;;;:34;12528:7;12502:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12470:8;:80::i;:::-;12568:4;12561:11;;12365:215;;;;:::o;4714:78::-;;;;;;;;;;;;;;;;;;;:::o;5631:21::-;;;;;;;;;;;;;:::o;6174:41::-;;;;;;;;;;;;;:::o;9345:652::-;7612:12;:10;:12::i;:::-;7602:22;;:6;;;;;;;;;;:22;;;7594:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;9446:1:::1;9426:22;;:8;:22;;;;9418:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;5807:42;9533:16;;:8;:16;;;;9525:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;9626:34;9646:6;::::0;::::1;;;;;;;;9654:5;9626:19;:34::i;:::-;9671:35;9691:8;9701:4;9671:19;:35::i;:::-;9761:17;9771:6;::::0;::::1;;;;;;;;9761:9;:17::i;:::-;9729:11;:19;9741:6:::0;::::1;;;;;;;;;;9729:19;;;;;;;;;;;;;;;:29;9749:8;9729:29;;;;;;;;;;;;;;;:49;;;;9812:1;9792:17;9802:6;::::0;::::1;;;;;;;;9792:9;:17::i;:::-;:21;9789:99;;;9830:46;9840:6;::::0;::::1;;;;;;;;9848:8;9858:17;9868:6;::::0;::::1;;;;;;;;9858:9;:17::i;:::-;9830:9;:46::i;:::-;;9789:99;9917:8;9908:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;9970:8;9941:38;;9962:6;::::0;::::1;;;;;;;;9941:38;;;;;;;;;;;;9345:652:::0;:::o;13748:125::-;13813:4;13837:19;:28;13857:7;13837:28;;;;;;;;;;;;;;;;;;;;;;;;;13830:35;;13748:125;;;:::o;6735:36::-;;;;;;;;;;;;;:::o;11923:120::-;11976:4;12000:35;12008:7;12017:17;12000:7;:35::i;:::-;11993:42;;11923:120;;;:::o;13881:134::-;7612:12;:10;:12::i;:::-;7602:22;;:6;;;;;;;;;;:22;;;7594:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14000:7:::1;13969:19;:28;13989:7;13969:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;13881:134:::0;;:::o;11137:117::-;11203:7;11230;:16;11238:7;11230:16;;;;;;;;;;;;;;;;11223:23;;11137:117;;;:::o;10005:195::-;7612:12;:10;:12::i;:::-;7602:22;;:6;;;;;;;;;;:22;;;7594:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;10072:34:::1;10092:6;::::0;::::1;;;;;;;;10100:5;10072:19;:34::i;:::-;10134:1;10117:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;10189:1;10152:40;;10173:6;::::0;::::1;;;;;;;;10152:40;;;;;;;;;;;;10005:195::o:0;13330:410::-;7612:12;:10;:12::i;:::-;7602:22;;:6;;;;;;;;;;:22;;;7594:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;13422:5:::1;13411:16;;:7;:16;;;13407:326;;;13460:5;13444:7;:13;13452:4;13444:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13407:326;;;13523:1;13502:17;;:22;13498:139;;13591:7;13571:17;;13553:15;:35;;;;:::i;:::-;:45;13545:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;13498:139;13667:4;13651:7;:13;13659:4;13651:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13706:15;13686:17;:35;;;;13407:326;13330:410:::0;;:::o;5984:94::-;;;;;;;;;;;;;:::o;10910:80::-;10962:7;10980;:5;:7::i;:::-;10973:14;;10910:80;:::o;9258:79::-;9296:7;9323:6;;;;;;;;;;;9316:13;;9258:79;:::o;10734:84::-;10784:13;10808:7;10801:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10734:84;:::o;12588:225::-;12681:4;12698:85;12707:12;:10;:12::i;:::-;12721:7;12767:15;12730:11;:25;12742:12;:10;:12::i;:::-;12730:25;;;;;;;;;;;;;;;:34;12756:7;12730:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;12698:8;:85::i;:::-;12801:4;12794:11;;12588:225;;;;:::o;11262:167::-;11340:4;11357:42;11367:12;:10;:12::i;:::-;11381:9;11392:6;11357:9;:42::i;:::-;;11417:4;11410:11;;11262:167;;;;:::o;5215:116::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;15890:256::-;7612:12;:10;:12::i;:::-;7602:22;;:6;;;;;;;;;;:22;;;7594:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15973:13:::1;16011:7;16000;15990;;:17;;;;:::i;:::-;15989:29;;;;:::i;:::-;15973:45;;16057:3;16047:7;;:13;;;;:::i;:::-;16037:5;:24;;16029:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16131:5;16114:14;:22;;;;15962:184;15890:256:::0;;:::o;14184:159::-;7612:12;:10;:12::i;:::-;7602:22;;:6;;;;;;;;;;:22;;;7594:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14330:5:::1;14281:30;:46;14312:14;14281:46;;;;;;;;;;;;;;;;:54;;;;;;;;;;;;;;;;;;14184:159:::0;:::o;16702:171::-;7612:12;:10;:12::i;:::-;7602:22;;:6;;;;;;;;;;:22;;;7594:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16803:8:::1;16779:21;;:32;;;;;;;;;;;;;;;;;;16827:38;16856:8;16827:38;;;;;;:::i;:::-;;;;;;;;16702:171:::0;:::o;14025:151::-;7612:12;:10;:12::i;:::-;7602:22;;:6;;;;;;;;;;:22;;;7594:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14164:4:::1;14115:30;:46;14146:14;14115:46;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;14025:151:::0;:::o;4208:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;10996:133::-;11080:7;11098:11;:19;11110:6;11098:19;;;;;;;;;;;;;;;:28;11118:7;11098:28;;;;;;;;;;;;;;;;11091:35;;10996:133;;;;:::o;14465:148::-;7612:12;:10;:12::i;:::-;7602:22;;:6;;;;;;;;;;:22;;;7594:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14537:1:::1;14520:13;;:18;14511:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14576:1;14560:13;:17;;;;14604:1;14588:13;:17;;;;14465:148::o:0;7003:32::-;;;;:::o;4936:86::-;;;;;;;;;;;;;;;;;;;:::o;15229:397::-;7612:12;:10;:12::i;:::-;7602:22;;:6;;;;;;;;;;:22;;;7594:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15344:7:::1;:14;;;15333:7;:25;;:73;;;;;15391:7;:15;;;15379:8;:27;;15333:73;:129;;;;;15443:7;:19;;;15427:12;:35;;15333:129;15325:182;;;;;;;;;;;;:::i;:::-;;;;;;;;;15533:7;15519:4;:11;;:21;;;;15567:8;15552:4;:12;;:23;;;;15606:12;15587:4;:16;;:31;;;;15229:397:::0;;;:::o;12821:501::-;7612:12;:10;:12::i;:::-;7602:22;;:6;;;;;;;;;;:22;;;7594:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;12892:29:::1;12943:9;12892:61;;12964:16;13001:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12983:47;;;13039:4;13046:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12983:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12964:100;;13099:1;13079:22;;:8;:22;;;13075:207;;;13145:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13127:50;;;13186:4;13193:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13127:84;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13118:6;;:93;;;;;;;;;;;;;;;;;;13075:207;;;13262:8;13253:6;;:17;;;;;;;;;;;;;;;;;;13075:207;13304:10;13292:9;;:22;;;;;;;;;;;;;;;;;;12881:441;;12821:501:::0;:::o;15634:248::-;7612:12;:10;:12::i;:::-;7602:22;;:6;;;;;;;;;;:22;;;7594:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15713:13:::1;15751:7;15740;15730;;:17;;;;:::i;:::-;15729:29;;;;:::i;:::-;15713:45;;15797:3;15787:7;;:13;;;;:::i;:::-;15777:5;:24;;15769:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15869:5;15854:12;:20;;;;15702:180;15634:248:::0;;:::o;16156:289::-;7612:12;:10;:12::i;:::-;7602:22;;:6;;;;;;;;;;:22;;;7594:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16356:16:::1;16336;16326:7;;:26;;;;:::i;:::-;16325:47;;;;:::i;:::-;16309:13;:63;;;;16424:13;16407;16397:7;;:23;;;;:::i;:::-;16396:41;;;;:::i;:::-;16383:10;:54;;;;16156:289:::0;;;;:::o;210:107::-;255:15;298:10;283:26;;210:107;:::o;11606:309::-;11718:1;11700:20;;:6;:20;;;;11692:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11782:1;11763:21;;:7;:21;;;;11755:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;11852:6;11821:11;:19;11833:6;11821:19;;;;;;;;;;;;;;;:28;11841:7;11821:28;;;;;;;;;;;;;;;:37;;;;11891:7;11874:33;;11883:6;11874:33;;;11900:6;11874:33;;;;;;:::i;:::-;;;;;;;;11606:309;;;:::o;17212:1433::-;17291:4;17332:1;17316:18;;:4;:18;;;;17308:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17392:1;17378:16;;:2;:16;;;;17370:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17447:1;17438:6;:10;17430:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;17475:20;17486:4;17492:2;17475:10;:20::i;:::-;17472:496;;;17519:30;:36;17550:4;17519:36;;;;;;;;;;;;;;;;;;;;;;;;;:74;;;;17559:30;:34;17590:2;17559:34;;;;;;;;;;;;;;;;;;;;;;;;;17519:74;17514:429;;17618:7;:13;17626:4;17618:13;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;17635:7;:11;17643:2;17635:11;;;;;;;;;;;;;;;;;;;;;;;;;17618:28;17615:130;;;17684:12;;17674:6;:22;;17666:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;17615:130;5703:42;17766:20;;:2;:20;;;;:36;;;;;17791:7;:11;17799:2;17791:11;;;;;;;;;;;;;;;;;;;;;;;;;17790:12;17766:36;17763:163;;;17861:14;;17851:6;17835:13;17845:2;17835:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17827:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;17763:163;17514:429;17472:496;17978:12;17993:4;17978:19;;18011;:25;18031:4;18011:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;18040:19;:23;18060:2;18040:23;;;;;;;;;;;;;;;;;;;;;;;;;18011:52;18008:98;;;18089:5;18079:15;;18008:98;18122:7;:11;18130:2;18122:11;;;;;;;;;;;;;;;;;;;;;;;;;18118:457;;;18155:16;;;;;;;;;;;18154:17;:59;;;;;18192:21;;;;;;;;;;;18154:59;18150:408;;;18248:28;18279:24;18297:4;18279:9;:24::i;:::-;18248:55;;18350:13;;18326:20;:37;18322:221;;18415:10;;18391:20;:34;18388:77;;18452:10;;18429:33;;18388:77;18487:36;18502:20;18487:14;:36::i;:::-;18322:221;18229:329;18150:408;18118:457;18593:44;18611:4;18617:2;18621:6;18629:7;18593:17;:44::i;:::-;18586:51;;;17212:1433;;;;;:::o;16881:323::-;16949:4;16981:7;:5;:7::i;:::-;16973:15;;:4;:15;;;;:45;;;;;17011:7;:5;:7::i;:::-;17005:13;;:2;:13;;;;16973:45;:84;;;;;17036:17;:21;17054:2;17036:21;;;;;;;;;;;;;;;;;;;;;;;;;17035:22;16973:84;:125;;;;;17075:17;:23;17093:4;17075:23;;;;;;;;;;;;;;;;;;;;;;;;;17074:24;16973:125;:152;;;;;5807:42;17115:10;;:2;:10;;;;16973:152;:185;;;;;17156:1;17142:16;;:2;:16;;;;16973:185;:223;;;;;17191:4;17175:21;;:4;:21;;;;16973:223;16966:230;;16881:323;;;;:::o;18653:1308::-;7495:4;7476:16;;:23;;;;;;;;;;;;;;;;;;18803:1:::1;18779:6;:20;;;18761:6;:15;;;18742:6;:16;;;:34;;;;:::i;:::-;:57;;;;:::i;:::-;:62;18738:88;;;18819:7;;18738:88;18836:17;18965:1;18939:6;:20;;;18921:6;:15;;;18902:6;:16;;;:34;;;;:::i;:::-;:57;;;;:::i;:::-;18881:6;:16;;;18858:20;:39;;;;:::i;:::-;18857:103;;;;:::i;:::-;18856:110;;;;:::i;:::-;18836:130;;18979:20;19025:9;19002:20;:32;;;;:::i;:::-;18979:55;;19045:30;19062:12;19045:16;:30::i;:::-;19088:22;19113:21;19088:46;;19145:24;19275:1;19249:6;:20;;;19231:6;:15;;;19212:6;:16;;;:34;;;;:::i;:::-;:57;;;;:::i;:::-;19191:6;:16;;;19174:14;:33;;;;:::i;:::-;19173:97;;;;:::i;:::-;19172:104;;;;:::i;:::-;19145:131;;19289:12;19330:1:::0;19318:9:::1;:13;19314:161;;;19348:41;19361:9;19372:16;19348:12;:41::i;:::-;19409:54;19424:9;19435:16;19453:9;19409:54;;;;;;;;:::i;:::-;;;;;;;;19314:161;19524:1;19512:9;19489:20;:32;;;;:::i;:::-;:36;19485:469;;;19542:11;19556:21;19542:35;;19592:24;19668:6;:20;;;19650:6;:15;;;:38;;;;:::i;:::-;19630:6;:15;;;19621:6;:24;;;;:::i;:::-;19620:69;;;;:::i;:::-;19592:98;;19728:12;;;;;;;;;;;19720:26;;19754:19;19720:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19707:71;;;;;19814:17;;;;;;;;;;;19806:31;;19845:21;19806:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19793:78;;;;;19527:427;;19485:469;18727:1234;;;;;7510:1;7541:5:::0;7522:16;;:24;;;;;;;;;;;;;;;;;;18653:1308;:::o;21374:1181::-;21474:4;21495:16;;;;;;;;;;;21491:819;;;21531:14;21540:4;21531:8;:14::i;:::-;:30;;;;21549:12;21558:2;21549:8;:12::i;:::-;21531:30;21527:97;;;21582:26;;;;;;;;;;:::i;:::-;;;;;;;;21527:97;21645:16;;;;;;;;;;;21640:659;;21682:28;21701:4;21707:2;21682:18;:28::i;:::-;21734:16;;;;;;;;;;;21733:17;:41;;;;;21754:20;21765:4;21771:2;21754:10;:20::i;:::-;21733:41;21729:137;;;21799:47;;;;;;;;;;:::i;:::-;;;;;;;;21729:137;21640:659;;;21925:1;21910:12;;:16;:55;;;;;21952:7;:13;21960:4;21952:13;;;;;;;;;;;;;;;;;;;;;;;;;21910:55;:101;;;;;21991:20;22002:4;22008:2;21991:10;:20::i;:::-;21910:101;21906:378;;;22088:13;;22073:12;;22058;:27;;;;:::i;:::-;:43;22054:211;;;22146:4;22130:9;:13;22140:2;22130:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;22177:13;;:16;;;;;;;;;:::i;:::-;;;;;;22225;22238:2;22225:16;;;;;;:::i;:::-;;;;;;;;22054:211;21906:378;21640:659;21491:819;22339:6;22322:7;:13;22330:4;22322:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;22356:22;22382:7;22381:48;;22423:6;22381:48;;;22393:27;22403:4;22409:2;22413:6;22393:9;:27::i;:::-;22381:48;22356:73;;22459:14;22444:7;:11;22452:2;22444:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;22506:2;22491:34;;22500:4;22491:34;;;22510:14;22491:34;;;;;;:::i;:::-;;;;;;;;22543:4;22536:11;;;21374:1181;;;;;;:::o;19969:417::-;20036:21;20074:1;20060:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20036:40;;20105:4;20087;20092:1;20087:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20131:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20121:4;20126:1;20121:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;20160:9;;;;;;;;;;;:60;;;20235:11;20261:1;20305:4;20332;20352:15;20160:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20025:361;19969:417;:::o;20394:340::-;20475:9;;;;;;;;;;;:25;;;20508:9;20541:4;20561:11;20587:1;20630;20673:12;;;;;;;;;;;20700:15;20475:251;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20394:340;;:::o;20742:624::-;20824:16;;;;;;;;;;;20823:17;20815:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;20896:20;20907:4;20913:2;20896:10;:20::i;:::-;20895:21;:37;;;;;20926:6;;;;;;;;;;;20920:12;;:2;:12;;;20895:37;20891:468;;;20970:1;20953:13;;:18;20949:172;;21007:12;20992;:27;;;;20949:172;;;21093:12;21078;:27;;;;20949:172;21161:4;21135:17;:23;21153:4;21135:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;21199:4;21180:16;;:23;;;;;;;;;;;;;;;;;;21233:15;21218:12;:30;;;;21289:4;21265:21;;:28;;;;;;;;;;;;;;;;;;21313:34;21342:4;21313:34;;;;;;:::i;:::-;;;;;;;;20891:468;20742:624;;:::o;22563:966::-;22642:7;22662:18;22703:6;;;;;;;;;;;22697:12;;:2;:12;;;22693:160;;;22725:4;:12;;;22712:25;;22693:160;;;22768:6;;;;;;;;;;;22760:14;;:4;:14;;;22756:97;;;22790:4;:11;;;22777:24;;22756:97;;;22835:4;:16;;;22822:29;;22756:97;22693:160;22869:20;22880:4;22886:2;22869:10;:20::i;:::-;22865:142;;;22926:1;22909:13;;:18;:42;;;;22949:1;22931:13;;:20;;22909:42;22905:91;;;22972:8;;;22905:91;22865:142;23017:19;5384:5;23137:6;:20;;;23119:6;:15;;;23100:6;:16;;;23082:6;:15;;;:34;;;;:::i;:::-;:52;;;;:::i;:::-;:75;;;;:::i;:::-;23062:6;:15;;;23049:10;23040:6;:19;;;;:::i;:::-;:37;;;;:::i;:::-;23039:120;;;;:::i;:::-;:139;;;;:::i;:::-;23017:161;;23189:17;23252:11;5384:5;23219:10;23210:6;:19;;;;:::i;:::-;:38;;;;:::i;:::-;23209:54;;;;:::i;:::-;23189:74;;23299:11;23274:7;:21;23282:12;;;;;;;;;;;23274:21;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;23348:9;23321:7;:22;23337:4;23321:22;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;23389:12;;;;;;;;;;;23374:41;;23383:4;23374:41;;;23403:11;23374:41;;;;;;:::i;:::-;;;;;;;;23454:4;23431:40;;23440:4;23431:40;;;23461:9;23431:40;;;;;;:::i;:::-;;;;;;;;23510:11;23498:9;23489:6;:18;;;;:::i;:::-;:32;;;;:::i;:::-;23482:39;;;;;22563:966;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:307::-;941:1;951:113;965:6;962:1;959:13;951:113;;;1050:1;1045:3;1041:11;1035:18;1031:1;1026:3;1022:11;1015:39;987:2;984:1;980:10;975:15;;951:113;;;1082:6;1079:1;1076:13;1073:101;;;1162:1;1153:6;1148:3;1144:16;1137:27;1073:101;922:258;873:307;;;:::o;1186:102::-;1227:6;1278:2;1274:7;1269:2;1262:5;1258:14;1254:28;1244:38;;1186:102;;;:::o;1294:364::-;1382:3;1410:39;1443:5;1410:39;:::i;:::-;1465:71;1529:6;1524:3;1465:71;:::i;:::-;1458:78;;1545:52;1590:6;1585:3;1578:4;1571:5;1567:16;1545:52;:::i;:::-;1622:29;1644:6;1622:29;:::i;:::-;1617:3;1613:39;1606:46;;1386:272;1294:364;;;;:::o;1664:313::-;1777:4;1815:2;1804:9;1800:18;1792:26;;1864:9;1858:4;1854:20;1850:1;1839:9;1835:17;1828:47;1892:78;1965:4;1956:6;1892:78;:::i;:::-;1884:86;;1664:313;;;;:::o;1983:60::-;2011:3;2032:5;2025:12;;1983:60;;;:::o;2049:142::-;2099:9;2132:53;2150:34;2159:24;2177:5;2159:24;:::i;:::-;2150:34;:::i;:::-;2132:53;:::i;:::-;2119:66;;2049:142;;;:::o;2197:126::-;2247:9;2280:37;2311:5;2280:37;:::i;:::-;2267:50;;2197:126;;;:::o;2329:152::-;2405:9;2438:37;2469:5;2438:37;:::i;:::-;2425:50;;2329:152;;;:::o;2487:183::-;2600:63;2657:5;2600:63;:::i;:::-;2595:3;2588:76;2487:183;;:::o;2676:274::-;2795:4;2833:2;2822:9;2818:18;2810:26;;2846:97;2940:1;2929:9;2925:17;2916:6;2846:97;:::i;:::-;2676:274;;;;:::o;3037:117::-;3146:1;3143;3136:12;3283:122;3356:24;3374:5;3356:24;:::i;:::-;3349:5;3346:35;3336:63;;3395:1;3392;3385:12;3336:63;3283:122;:::o;3411:139::-;3457:5;3495:6;3482:20;3473:29;;3511:33;3538:5;3511:33;:::i;:::-;3411:139;;;;:::o;3556:77::-;3593:7;3622:5;3611:16;;3556:77;;;:::o;3639:122::-;3712:24;3730:5;3712:24;:::i;:::-;3705:5;3702:35;3692:63;;3751:1;3748;3741:12;3692:63;3639:122;:::o;3767:139::-;3813:5;3851:6;3838:20;3829:29;;3867:33;3894:5;3867:33;:::i;:::-;3767:139;;;;:::o;3912:474::-;3980:6;3988;4037:2;4025:9;4016:7;4012:23;4008:32;4005:119;;;4043:79;;:::i;:::-;4005:119;4163:1;4188:53;4233:7;4224:6;4213:9;4209:22;4188:53;:::i;:::-;4178:63;;4134:117;4290:2;4316:53;4361:7;4352:6;4341:9;4337:22;4316:53;:::i;:::-;4306:63;;4261:118;3912:474;;;;;:::o;4392:90::-;4426:7;4469:5;4462:13;4455:21;4444:32;;4392:90;;;:::o;4488:109::-;4569:21;4584:5;4569:21;:::i;:::-;4564:3;4557:34;4488:109;;:::o;4603:210::-;4690:4;4728:2;4717:9;4713:18;4705:26;;4741:65;4803:1;4792:9;4788:17;4779:6;4741:65;:::i;:::-;4603:210;;;;:::o;4819:329::-;4878:6;4927:2;4915:9;4906:7;4902:23;4898:32;4895:119;;;4933:79;;:::i;:::-;4895:119;5053:1;5078:53;5123:7;5114:6;5103:9;5099:22;5078:53;:::i;:::-;5068:63;;5024:117;4819:329;;;;:::o;5154:765::-;5240:6;5248;5256;5264;5313:3;5301:9;5292:7;5288:23;5284:33;5281:120;;;5320:79;;:::i;:::-;5281:120;5440:1;5465:53;5510:7;5501:6;5490:9;5486:22;5465:53;:::i;:::-;5455:63;;5411:117;5567:2;5593:53;5638:7;5629:6;5618:9;5614:22;5593:53;:::i;:::-;5583:63;;5538:118;5695:2;5721:53;5766:7;5757:6;5746:9;5742:22;5721:53;:::i;:::-;5711:63;;5666:118;5823:2;5849:53;5894:7;5885:6;5874:9;5870:22;5849:53;:::i;:::-;5839:63;;5794:118;5154:765;;;;;;;:::o;5925:118::-;6012:24;6030:5;6012:24;:::i;:::-;6007:3;6000:37;5925:118;;:::o;6049:222::-;6142:4;6180:2;6169:9;6165:18;6157:26;;6193:71;6261:1;6250:9;6246:17;6237:6;6193:71;:::i;:::-;6049:222;;;;:::o;6277:619::-;6354:6;6362;6370;6419:2;6407:9;6398:7;6394:23;6390:32;6387:119;;;6425:79;;:::i;:::-;6387:119;6545:1;6570:53;6615:7;6606:6;6595:9;6591:22;6570:53;:::i;:::-;6560:63;;6516:117;6672:2;6698:53;6743:7;6734:6;6723:9;6719:22;6698:53;:::i;:::-;6688:63;;6643:118;6800:2;6826:53;6871:7;6862:6;6851:9;6847:22;6826:53;:::i;:::-;6816:63;;6771:118;6277:619;;;;;:::o;6902:104::-;6947:7;6976:24;6994:5;6976:24;:::i;:::-;6965:35;;6902:104;;;:::o;7012:142::-;7115:32;7141:5;7115:32;:::i;:::-;7110:3;7103:45;7012:142;;:::o;7160:254::-;7269:4;7307:2;7296:9;7292:18;7284:26;;7320:87;7404:1;7393:9;7389:17;7380:6;7320:87;:::i;:::-;7160:254;;;;:::o;7420:86::-;7455:7;7495:4;7488:5;7484:16;7473:27;;7420:86;;;:::o;7512:112::-;7595:22;7611:5;7595:22;:::i;:::-;7590:3;7583:35;7512:112;;:::o;7630:214::-;7719:4;7757:2;7746:9;7742:18;7734:26;;7770:67;7834:1;7823:9;7819:17;7810:6;7770:67;:::i;:::-;7630:214;;;;:::o;7850:442::-;7999:4;8037:2;8026:9;8022:18;8014:26;;8050:71;8118:1;8107:9;8103:17;8094:6;8050:71;:::i;:::-;8131:72;8199:2;8188:9;8184:18;8175:6;8131:72;:::i;:::-;8213;8281:2;8270:9;8266:18;8257:6;8213:72;:::i;:::-;7850:442;;;;;;:::o;8298:116::-;8368:21;8383:5;8368:21;:::i;:::-;8361:5;8358:32;8348:60;;8404:1;8401;8394:12;8348:60;8298:116;:::o;8420:133::-;8463:5;8501:6;8488:20;8479:29;;8517:30;8541:5;8517:30;:::i;:::-;8420:133;;;;:::o;8559:468::-;8624:6;8632;8681:2;8669:9;8660:7;8656:23;8652:32;8649:119;;;8687:79;;:::i;:::-;8649:119;8807:1;8832:53;8877:7;8868:6;8857:9;8853:22;8832:53;:::i;:::-;8822:63;;8778:117;8934:2;8960:50;9002:7;8993:6;8982:9;8978:22;8960:50;:::i;:::-;8950:60;;8905:115;8559:468;;;;;:::o;9033:553::-;9210:4;9248:3;9237:9;9233:19;9225:27;;9262:71;9330:1;9319:9;9315:17;9306:6;9262:71;:::i;:::-;9343:72;9411:2;9400:9;9396:18;9387:6;9343:72;:::i;:::-;9425;9493:2;9482:9;9478:18;9469:6;9425:72;:::i;:::-;9507;9575:2;9564:9;9560:18;9551:6;9507:72;:::i;:::-;9033:553;;;;;;;:::o;9592:474::-;9660:6;9668;9717:2;9705:9;9696:7;9692:23;9688:32;9685:119;;;9723:79;;:::i;:::-;9685:119;9843:1;9868:53;9913:7;9904:6;9893:9;9889:22;9868:53;:::i;:::-;9858:63;;9814:117;9970:2;9996:53;10041:7;10032:6;10021:9;10017:22;9996:53;:::i;:::-;9986:63;;9941:118;9592:474;;;;;:::o;10072:323::-;10128:6;10177:2;10165:9;10156:7;10152:23;10148:32;10145:119;;;10183:79;;:::i;:::-;10145:119;10303:1;10328:50;10370:7;10361:6;10350:9;10346:22;10328:50;:::i;:::-;10318:60;;10274:114;10072:323;;;;:::o;10401:474::-;10469:6;10477;10526:2;10514:9;10505:7;10501:23;10497:32;10494:119;;;10532:79;;:::i;:::-;10494:119;10652:1;10677:53;10722:7;10713:6;10702:9;10698:22;10677:53;:::i;:::-;10667:63;;10623:117;10779:2;10805:53;10850:7;10841:6;10830:9;10826:22;10805:53;:::i;:::-;10795:63;;10750:118;10401:474;;;;;:::o;10881:619::-;10958:6;10966;10974;11023:2;11011:9;11002:7;10998:23;10994:32;10991:119;;;11029:79;;:::i;:::-;10991:119;11149:1;11174:53;11219:7;11210:6;11199:9;11195:22;11174:53;:::i;:::-;11164:63;;11120:117;11276:2;11302:53;11347:7;11338:6;11327:9;11323:22;11302:53;:::i;:::-;11292:63;;11247:118;11404:2;11430:53;11475:7;11466:6;11455:9;11451:22;11430:53;:::i;:::-;11420:63;;11375:118;10881:619;;;;;:::o;11506:180::-;11554:77;11551:1;11544:88;11651:4;11648:1;11641:15;11675:4;11672:1;11665:15;11692:320;11736:6;11773:1;11767:4;11763:12;11753:22;;11820:1;11814:4;11810:12;11841:18;11831:81;;11897:4;11889:6;11885:17;11875:27;;11831:81;11959:2;11951:6;11948:14;11928:18;11925:38;11922:84;;;11978:18;;:::i;:::-;11922:84;11743:269;11692:320;;;:::o;12018:166::-;12158:18;12154:1;12146:6;12142:14;12135:42;12018:166;:::o;12190:366::-;12332:3;12353:67;12417:2;12412:3;12353:67;:::i;:::-;12346:74;;12429:93;12518:3;12429:93;:::i;:::-;12547:2;12542:3;12538:12;12531:19;;12190:366;;;:::o;12562:419::-;12728:4;12766:2;12755:9;12751:18;12743:26;;12815:9;12809:4;12805:20;12801:1;12790:9;12786:17;12779:47;12843:131;12969:4;12843:131;:::i;:::-;12835:139;;12562:419;;;:::o;12987:180::-;13035:77;13032:1;13025:88;13132:4;13129:1;13122:15;13156:4;13153:1;13146:15;13173:305;13213:3;13232:20;13250:1;13232:20;:::i;:::-;13227:25;;13266:20;13284:1;13266:20;:::i;:::-;13261:25;;13420:1;13352:66;13348:74;13345:1;13342:81;13339:107;;;13426:18;;:::i;:::-;13339:107;13470:1;13467;13463:9;13456:16;;13173:305;;;;:::o;13484:153::-;13624:5;13620:1;13612:6;13608:14;13601:29;13484:153;:::o;13643:365::-;13785:3;13806:66;13870:1;13865:3;13806:66;:::i;:::-;13799:73;;13881:93;13970:3;13881:93;:::i;:::-;13999:2;13994:3;13990:12;13983:19;;13643:365;;;:::o;14014:419::-;14180:4;14218:2;14207:9;14203:18;14195:26;;14267:9;14261:4;14257:20;14253:1;14242:9;14238:17;14231:47;14295:131;14421:4;14295:131;:::i;:::-;14287:139;;14014:419;;;:::o;14439:191::-;14479:4;14499:20;14517:1;14499:20;:::i;:::-;14494:25;;14533:20;14551:1;14533:20;:::i;:::-;14528:25;;14572:1;14569;14566:8;14563:34;;;14577:18;;:::i;:::-;14563:34;14622:1;14619;14615:9;14607:17;;14439:191;;;;:::o;14636:248::-;14776:34;14772:1;14764:6;14760:14;14753:58;14845:31;14840:2;14832:6;14828:15;14821:56;14636:248;:::o;14890:366::-;15032:3;15053:67;15117:2;15112:3;15053:67;:::i;:::-;15046:74;;15129:93;15218:3;15129:93;:::i;:::-;15247:2;15242:3;15238:12;15231:19;;14890:366;;;:::o;15262:419::-;15428:4;15466:2;15455:9;15451:18;15443:26;;15515:9;15509:4;15505:20;15501:1;15490:9;15486:17;15479:47;15543:131;15669:4;15543:131;:::i;:::-;15535:139;;15262:419;;;:::o;15687:168::-;15827:20;15823:1;15815:6;15811:14;15804:44;15687:168;:::o;15861:366::-;16003:3;16024:67;16088:2;16083:3;16024:67;:::i;:::-;16017:74;;16100:93;16189:3;16100:93;:::i;:::-;16218:2;16213:3;16209:12;16202:19;;15861:366;;;:::o;16233:419::-;16399:4;16437:2;16426:9;16422:18;16414:26;;16486:9;16480:4;16476:20;16472:1;16461:9;16457:17;16450:47;16514:131;16640:4;16514:131;:::i;:::-;16506:139;;16233:419;;;:::o;16658:348::-;16698:7;16721:20;16739:1;16721:20;:::i;:::-;16716:25;;16755:20;16773:1;16755:20;:::i;:::-;16750:25;;16943:1;16875:66;16871:74;16868:1;16865:81;16860:1;16853:9;16846:17;16842:105;16839:131;;;16950:18;;:::i;:::-;16839:131;16998:1;16995;16991:9;16980:20;;16658:348;;;;:::o;17012:180::-;17060:77;17057:1;17050:88;17157:4;17154:1;17147:15;17181:4;17178:1;17171:15;17198:185;17238:1;17255:20;17273:1;17255:20;:::i;:::-;17250:25;;17289:20;17307:1;17289:20;:::i;:::-;17284:25;;17328:1;17318:35;;17333:18;;:::i;:::-;17318:35;17375:1;17372;17368:9;17363:14;;17198:185;;;;:::o;17389:224::-;17529:34;17525:1;17517:6;17513:14;17506:58;17598:7;17593:2;17585:6;17581:15;17574:32;17389:224;:::o;17619:366::-;17761:3;17782:67;17846:2;17841:3;17782:67;:::i;:::-;17775:74;;17858:93;17947:3;17858:93;:::i;:::-;17976:2;17971:3;17967:12;17960:19;;17619:366;;;:::o;17991:419::-;18157:4;18195:2;18184:9;18180:18;18172:26;;18244:9;18238:4;18234:20;18230:1;18219:9;18215:17;18208:47;18272:131;18398:4;18272:131;:::i;:::-;18264:139;;17991:419;;;:::o;18416:156::-;18556:8;18552:1;18544:6;18540:14;18533:32;18416:156;:::o;18578:365::-;18720:3;18741:66;18805:1;18800:3;18741:66;:::i;:::-;18734:73;;18816:93;18905:3;18816:93;:::i;:::-;18934:2;18929:3;18925:12;18918:19;;18578:365;;;:::o;18949:419::-;19115:4;19153:2;19142:9;19138:18;19130:26;;19202:9;19196:4;19192:20;19188:1;19177:9;19173:17;19166:47;19230:131;19356:4;19230:131;:::i;:::-;19222:139;;18949:419;;;:::o;19374:173::-;19514:25;19510:1;19502:6;19498:14;19491:49;19374:173;:::o;19553:366::-;19695:3;19716:67;19780:2;19775:3;19716:67;:::i;:::-;19709:74;;19792:93;19881:3;19792:93;:::i;:::-;19910:2;19905:3;19901:12;19894:19;;19553:366;;;:::o;19925:419::-;20091:4;20129:2;20118:9;20114:18;20106:26;;20178:9;20172:4;20168:20;20164:1;20153:9;20149:17;20142:47;20206:131;20332:4;20206:131;:::i;:::-;20198:139;;19925:419;;;:::o;20350:143::-;20407:5;20438:6;20432:13;20423:22;;20454:33;20481:5;20454:33;:::i;:::-;20350:143;;;;:::o;20499:351::-;20569:6;20618:2;20606:9;20597:7;20593:23;20589:32;20586:119;;;20624:79;;:::i;:::-;20586:119;20744:1;20769:64;20825:7;20816:6;20805:9;20801:22;20769:64;:::i;:::-;20759:74;;20715:128;20499:351;;;;:::o;20856:332::-;20977:4;21015:2;21004:9;21000:18;20992:26;;21028:71;21096:1;21085:9;21081:17;21072:6;21028:71;:::i;:::-;21109:72;21177:2;21166:9;21162:18;21153:6;21109:72;:::i;:::-;20856:332;;;;;:::o;21194:169::-;21334:21;21330:1;21322:6;21318:14;21311:45;21194:169;:::o;21369:366::-;21511:3;21532:67;21596:2;21591:3;21532:67;:::i;:::-;21525:74;;21608:93;21697:3;21608:93;:::i;:::-;21726:2;21721:3;21717:12;21710:19;;21369:366;;;:::o;21741:419::-;21907:4;21945:2;21934:9;21930:18;21922:26;;21994:9;21988:4;21984:20;21980:1;21969:9;21965:17;21958:47;22022:131;22148:4;22022:131;:::i;:::-;22014:139;;21741:419;;;:::o;22166:170::-;22306:22;22302:1;22294:6;22290:14;22283:46;22166:170;:::o;22342:366::-;22484:3;22505:67;22569:2;22564:3;22505:67;:::i;:::-;22498:74;;22581:93;22670:3;22581:93;:::i;:::-;22699:2;22694:3;22690:12;22683:19;;22342:366;;;:::o;22714:419::-;22880:4;22918:2;22907:9;22903:18;22895:26;;22967:9;22961:4;22957:20;22953:1;22942:9;22938:17;22931:47;22995:131;23121:4;22995:131;:::i;:::-;22987:139;;22714:419;;;:::o;23139:158::-;23279:10;23275:1;23267:6;23263:14;23256:34;23139:158;:::o;23303:365::-;23445:3;23466:66;23530:1;23525:3;23466:66;:::i;:::-;23459:73;;23541:93;23630:3;23541:93;:::i;:::-;23659:2;23654:3;23650:12;23643:19;;23303:365;;;:::o;23674:419::-;23840:4;23878:2;23867:9;23863:18;23855:26;;23927:9;23921:4;23917:20;23913:1;23902:9;23898:17;23891:47;23955:131;24081:4;23955:131;:::i;:::-;23947:139;;23674:419;;;:::o;24099:174::-;24239:26;24235:1;24227:6;24223:14;24216:50;24099:174;:::o;24279:366::-;24421:3;24442:67;24506:2;24501:3;24442:67;:::i;:::-;24435:74;;24518:93;24607:3;24518:93;:::i;:::-;24636:2;24631:3;24627:12;24620:19;;24279:366;;;:::o;24651:419::-;24817:4;24855:2;24844:9;24840:18;24832:26;;24904:9;24898:4;24894:20;24890:1;24879:9;24875:17;24868:47;24932:131;25058:4;24932:131;:::i;:::-;24924:139;;24651:419;;;:::o;25076:176::-;25216:28;25212:1;25204:6;25200:14;25193:52;25076:176;:::o;25258:366::-;25400:3;25421:67;25485:2;25480:3;25421:67;:::i;:::-;25414:74;;25497:93;25586:3;25497:93;:::i;:::-;25615:2;25610:3;25606:12;25599:19;;25258:366;;;:::o;25630:419::-;25796:4;25834:2;25823:9;25819:18;25811:26;;25883:9;25877:4;25873:20;25869:1;25858:9;25854:17;25847:47;25911:131;26037:4;25911:131;:::i;:::-;25903:139;;25630:419;;;:::o;26055:147::-;26156:11;26193:3;26178:18;;26055:147;;;;:::o;26208:114::-;;:::o;26328:398::-;26487:3;26508:83;26589:1;26584:3;26508:83;:::i;:::-;26501:90;;26600:93;26689:3;26600:93;:::i;:::-;26718:1;26713:3;26709:11;26702:18;;26328:398;;;:::o;26732:379::-;26916:3;26938:147;27081:3;26938:147;:::i;:::-;26931:154;;27102:3;27095:10;;26732:379;;;:::o;27117:166::-;27257:18;27253:1;27245:6;27241:14;27234:42;27117:166;:::o;27289:366::-;27431:3;27452:67;27516:2;27511:3;27452:67;:::i;:::-;27445:74;;27528:93;27617:3;27528:93;:::i;:::-;27646:2;27641:3;27637:12;27630:19;;27289:366;;;:::o;27661:419::-;27827:4;27865:2;27854:9;27850:18;27842:26;;27914:9;27908:4;27904:20;27900:1;27889:9;27885:17;27878:47;27942:131;28068:4;27942:131;:::i;:::-;27934:139;;27661:419;;;:::o;28086:224::-;28226:34;28222:1;28214:6;28210:14;28203:58;28295:7;28290:2;28282:6;28278:15;28271:32;28086:224;:::o;28316:366::-;28458:3;28479:67;28543:2;28538:3;28479:67;:::i;:::-;28472:74;;28555:93;28644:3;28555:93;:::i;:::-;28673:2;28668:3;28664:12;28657:19;;28316:366;;;:::o;28688:419::-;28854:4;28892:2;28881:9;28877:18;28869:26;;28941:9;28935:4;28931:20;28927:1;28916:9;28912:17;28905:47;28969:131;29095:4;28969:131;:::i;:::-;28961:139;;28688:419;;;:::o;29113:233::-;29152:3;29175:24;29193:5;29175:24;:::i;:::-;29166:33;;29221:66;29214:5;29211:77;29208:103;;;29291:18;;:::i;:::-;29208:103;29338:1;29331:5;29327:13;29320:20;;29113:233;;;:::o;29352:180::-;29400:77;29397:1;29390:88;29497:4;29494:1;29487:15;29521:4;29518:1;29511:15;29538:180;29586:77;29583:1;29576:88;29683:4;29680:1;29673:15;29707:4;29704:1;29697:15;29724:85;29769:7;29798:5;29787:16;;29724:85;;;:::o;29815:158::-;29873:9;29906:61;29924:42;29933:32;29959:5;29933:32;:::i;:::-;29924:42;:::i;:::-;29906:61;:::i;:::-;29893:74;;29815:158;;;:::o;29979:147::-;30074:45;30113:5;30074:45;:::i;:::-;30069:3;30062:58;29979:147;;:::o;30132:114::-;30199:6;30233:5;30227:12;30217:22;;30132:114;;;:::o;30252:184::-;30351:11;30385:6;30380:3;30373:19;30425:4;30420:3;30416:14;30401:29;;30252:184;;;;:::o;30442:132::-;30509:4;30532:3;30524:11;;30562:4;30557:3;30553:14;30545:22;;30442:132;;;:::o;30580:108::-;30657:24;30675:5;30657:24;:::i;:::-;30652:3;30645:37;30580:108;;:::o;30694:179::-;30763:10;30784:46;30826:3;30818:6;30784:46;:::i;:::-;30862:4;30857:3;30853:14;30839:28;;30694:179;;;;:::o;30879:113::-;30949:4;30981;30976:3;30972:14;30964:22;;30879:113;;;:::o;31028:732::-;31147:3;31176:54;31224:5;31176:54;:::i;:::-;31246:86;31325:6;31320:3;31246:86;:::i;:::-;31239:93;;31356:56;31406:5;31356:56;:::i;:::-;31435:7;31466:1;31451:284;31476:6;31473:1;31470:13;31451:284;;;31552:6;31546:13;31579:63;31638:3;31623:13;31579:63;:::i;:::-;31572:70;;31665:60;31718:6;31665:60;:::i;:::-;31655:70;;31511:224;31498:1;31495;31491:9;31486:14;;31451:284;;;31455:14;31751:3;31744:10;;31152:608;;;31028:732;;;;:::o;31766:831::-;32029:4;32067:3;32056:9;32052:19;32044:27;;32081:71;32149:1;32138:9;32134:17;32125:6;32081:71;:::i;:::-;32162:80;32238:2;32227:9;32223:18;32214:6;32162:80;:::i;:::-;32289:9;32283:4;32279:20;32274:2;32263:9;32259:18;32252:48;32317:108;32420:4;32411:6;32317:108;:::i;:::-;32309:116;;32435:72;32503:2;32492:9;32488:18;32479:6;32435:72;:::i;:::-;32517:73;32585:3;32574:9;32570:19;32561:6;32517:73;:::i;:::-;31766:831;;;;;;;;:::o;32603:134::-;32661:9;32694:37;32725:5;32694:37;:::i;:::-;32681:50;;32603:134;;;:::o;32743:147::-;32838:45;32877:5;32838:45;:::i;:::-;32833:3;32826:58;32743:147;;:::o;32896:823::-;33153:4;33191:3;33180:9;33176:19;33168:27;;33205:71;33273:1;33262:9;33258:17;33249:6;33205:71;:::i;:::-;33286:72;33354:2;33343:9;33339:18;33330:6;33286:72;:::i;:::-;33368:80;33444:2;33433:9;33429:18;33420:6;33368:80;:::i;:::-;33458;33534:2;33523:9;33519:18;33510:6;33458:80;:::i;:::-;33548:81;33624:3;33613:9;33609:19;33600:6;33548:81;:::i;:::-;33639:73;33707:3;33696:9;33692:19;33683:6;33639:73;:::i;:::-;32896:823;;;;;;;;;:::o;33725:143::-;33782:5;33813:6;33807:13;33798:22;;33829:33;33856:5;33829:33;:::i;:::-;33725:143;;;;:::o;33874:663::-;33962:6;33970;33978;34027:2;34015:9;34006:7;34002:23;33998:32;33995:119;;;34033:79;;:::i;:::-;33995:119;34153:1;34178:64;34234:7;34225:6;34214:9;34210:22;34178:64;:::i;:::-;34168:74;;34124:128;34291:2;34317:64;34373:7;34364:6;34353:9;34349:22;34317:64;:::i;:::-;34307:74;;34262:129;34430:2;34456:64;34512:7;34503:6;34492:9;34488:22;34456:64;:::i;:::-;34446:74;;34401:129;33874:663;;;;;:::o;34543:222::-;34683:34;34679:1;34671:6;34667:14;34660:58;34752:5;34747:2;34739:6;34735:15;34728:30;34543:222;:::o;34771:366::-;34913:3;34934:67;34998:2;34993:3;34934:67;:::i;:::-;34927:74;;35010:93;35099:3;35010:93;:::i;:::-;35128:2;35123:3;35119:12;35112:19;;34771:366;;;:::o;35143:419::-;35309:4;35347:2;35336:9;35332:18;35324:26;;35396:9;35390:4;35386:20;35382:1;35371:9;35367:17;35360:47;35424:131;35550:4;35424:131;:::i;:::-;35416:139;;35143:419;;;:::o

Swarm Source

ipfs://51b50975e3e2aa8f53c9ad1ea0a2059f5cb756581e7f1ec619104ae112e462d6
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.