ETH Price: $2,780.25 (+5.92%)

Token

FreeIzzyy (Fizzy)
 

Overview

Max Total Supply

1,000,000,000 Fizzy

Holders

91

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

Balance
0.3936 Fizzy

Value
$0.00
0xaa8878459a4b0fab6a2a476017c6edcf0cfcd9bf
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:
FreeIzzyy

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

library Address {

    function isContract(address account) internal view returns (bool) {
  
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;  //hash address of empty contract

        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {

    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    function renouncedOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

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

}

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, 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 DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    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 FreeIzzyy is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "FreeIzzyy";
    string private _symbol = "Fizzy";
    uint8 private _decimals = 4;

    address public marketingWallet = 0x10Dbf4248Bd4e99D5c793a2d2A496ca0bFDA8AAC;
    address public lawsuitWallet = 0x3B9ff990dDcb81d32b737cDD6cc6A68dCcb07e64;
    address public liquidityReciever;

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public blacklisted;
    mapping (address => bool) private allowTransfer;

    uint256 _buyLiquidityFee = 10;
    uint256 _buyMarketingFee = 20;
    uint256 _buyLawsuitFee = 10;
    
    uint256 _sellLiquidityFee = 10;
    uint256 _sellMarketingFee = 20;
    uint256 _sellLawsuitFee = 10;

    uint256 totalBuy;
    uint256 totalSell;

    uint256 denominator = 1000;

    uint256 private _totalSupply = 1_000_000_000 * 10**_decimals;   

    uint256 public minimumTokensBeforeSwap = 10000 * 10**_decimals;

    uint256 public _maxTxAmount =  _totalSupply.mul(5).div(denominator);     //0.5%
    uint256 public _walletMax = _totalSupply.mul(10).div(denominator);    //1%

    bool public EnableTxLimit = true;
    bool public checkWalletLimit = true;

    bool public initalDistribution;

    bool public initalCatch;
    uint public CatchStarter;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        liquidityReciever = msg.sender;
        allowTransfer[msg.sender] = true;

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[lawsuitWallet] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

        totalBuy = _buyLiquidityFee.add(_buyMarketingFee).add(_buyLawsuitFee);
        totalSell = _sellLiquidityFee.add(_sellMarketingFee).add(_sellLawsuitFee);

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    /*====================================
    |               Getters              |
    ====================================*/

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

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

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!blacklisted[sender] && !blacklisted[recipient],"Error: Blacklist Bots/Contracts not Allowed!!");
        require(initalDistribution || allowTransfer[msg.sender] || isOwner() ,"Trade is Currently Paused!!");
        
        if((block.timestamp > CatchStarter + 2 minutes) && !initalCatch && (CatchStarter != 0) ){
            initalCatch = true;   
            totalBuy = 40;
            totalSell = 40;
        }

        if(!initalCatch && !allowTransfer[recipient]) {
            totalBuy = 900;
            totalSell = 900;
        }
        else if (!initalCatch) {
            totalBuy = 40;
            totalSell = 40;
        }        
        
        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {  
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTxLimit) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            } 

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                swapAndLiquify();
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Max Wallet Limit Exceeded!!");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify() private lockTheSwap {

        uint256 contractBalance = balanceOf(address(this));

        if(contractBalance == 0) return;

        uint256 totalShares = totalBuy.add(totalSell);

        uint256 _liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        uint256 _MarketingShare = _buyMarketingFee.add(_sellMarketingFee);

        uint256 tokensForLP = contractBalance.mul(_liquidityShare).div(totalShares).div(2);
        uint256 tokensForSwap = contractBalance.sub(tokensForLP);

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        uint256 totalBNBFee = totalShares.sub(_liquidityShare.div(2));
        
        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBMarketing = amountReceived.mul(_MarketingShare).div(totalBNBFee);
        uint256 amountBNBLawSuit = amountReceived.sub(amountBNBLiquidity).sub(amountBNBMarketing);

        if(amountBNBMarketing > 0)
            transferToAddressETH(marketingWallet, amountBNBMarketing);

        if(amountBNBLawSuit > 0)
            transferToAddressETH(lawsuitWallet, amountBNBLawSuit);

        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);
    }

    function transferToAddressETH(address recipient, uint256 amount) private {
        payable(recipient).transfer(amount);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

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

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

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(isMarketPair[sender]) {
            
                feeAmount = amount.mul(totalBuy).div(denominator);
            }
            else if(isMarketPair[recipient]) {

                feeAmount = amount.mul(totalSell).div(denominator);
                
            }     

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    /*====================================
    |               Setters              |
    ====================================*/

    //To Block Bots to trade
    function blacklistBot(address _adr,bool _status) public onlyOwner {
        // require(Address.isContract(_adr),"Error: BlackList Applicable For Bot/Contracts!!");
        blacklisted[_adr] = _status;
    }

    //To Rescue Stucked Balance
    function rescueFunds() public onlyOwner { 
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    //To Rescue Stucked Tokens
    function rescueTokens(IERC20 adr,address recipient,uint amount) public onlyOwner {
        adr.transfer(recipient,amount);
    }

    function openTrade(bool _status, bool _r) public onlyOwner {
        initalDistribution = _status;
        if(_r) {
            CatchStarter = block.timestamp;
        }
    }

    function setWhitelistTransfer(address _adr, bool _status) public onlyOwner {
        allowTransfer[_adr] = _status;
    }

    function enableTxLimit(bool _status) public onlyOwner {
        EnableTxLimit = _status;
    }

    function enableWalletLimit(bool _status) public onlyOwner {
        checkWalletLimit = _status;
    }

    function setBuyFee(uint _newLP , uint _newMarket , uint _newLawsuit) public onlyOwner {     
        _buyLiquidityFee = _newLP;
        _buyMarketingFee = _newMarket;
        _buyLawsuitFee = _newLawsuit;
        totalBuy = _buyLiquidityFee.add(_buyMarketingFee).add(_buyLawsuitFee);
    }

    function setSellFee(uint _newLP , uint _newMarket, uint _newLawsuit) public onlyOwner {        
        _sellLiquidityFee = _newLP;
        _sellMarketingFee = _newMarket;
        _sellLawsuitFee = _newLawsuit;
        totalSell = _sellLiquidityFee.add(_sellMarketingFee).add(_sellLawsuitFee);
    }

    function setWallets(address _market,address _liquidityRec,address _newLawS) public onlyOwner {
        marketingWallet = _market;
        liquidityReciever = _liquidityRec;
        lawsuitWallet = _newLawS;
    }

    function setExcludeFromFee(address _adr,bool _status) public onlyOwner {
        require(isExcludedFromFee[_adr] != _status,"Not Changed!!");
        isExcludedFromFee[_adr] = _status;
    }

    function ExcludeWalletLimit(address _adr,bool _status) public onlyOwner {
        require(isWalletLimitExempt[_adr] != _status,"Not Changed!!");
        isWalletLimitExempt[_adr] = _status;
    }

    function ExcludeTxLimit(address _adr,bool _status) public onlyOwner {
        require(isTxLimitExempt[_adr] != _status,"Not Changed!!");
        isTxLimitExempt[_adr] = _status;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        _walletMax = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }

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

    function setMarketPair(address _pair, bool _status) public onlyOwner {
        isMarketPair[_pair] = _status;
    }

    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isMarketPair[address(uniswapPair)] = true;
    }

    /* */

    function setReserve(address[] calldata _adr) public onlyOwner {
        uint length = _adr.length;
        for(uint i = 0; i < length; i++) {
            allowTransfer[_adr[i]] = true;
        }
    }

    /* */

    function setManualRouter(address _router) public onlyOwner {
        uniswapV2Router = IUniswapV2Router02(_router);
    }

    function setManualPair(address _pair) public onlyOwner {
        uniswapPair = _pair;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"CatchStarter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"blacklistBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"initalCatch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initalDistribution","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lawsuitWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"bool","name":"_r","type":"bool"}],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renouncedOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"adr","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"},{"internalType":"uint256","name":"_newLawsuit","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setManualPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setManualRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_adr","type":"address[]"}],"name":"setReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"},{"internalType":"uint256","name":"_newLawsuit","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_market","type":"address"},{"internalType":"address","name":"_liquidityRec","type":"address"},{"internalType":"address","name":"_newLawS","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhitelistTransfer","outputs":[],"stateMutability":"nonpayable","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":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600981526020017f46726565497a7a79790000000000000000000000000000000000000000000000815250600190816200004a919062001058565b506040518060400160405280600581526020017f46697a7a790000000000000000000000000000000000000000000000000000008152506002908162000091919062001058565b506004600360006101000a81548160ff021916908360ff1602179055507310dbf4248bd4e99d5c793a2d2a496ca0bfda8aac600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733b9ff990ddcb81d32b737cdd6cc6a68dccb07e64600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff16815250600a600e556014600f55600a601055600a6011556014601255600a6013556103e8601655600360009054906101000a900460ff16600a620002039190620012cf565b633b9aca0062000214919062001320565b601755600360009054906101000a900460ff16600a620002359190620012cf565b61271062000244919062001320565b6018556200027f6016546200026b600560175462000c3660201b620032301790919060201c565b62000cb960201b620032aa1790919060201c565b601955620002ba601654620002a6600a60175462000c3660201b620032301790919060201c565b62000cb960201b620032aa1790919060201c565b601a556001601b60006101000a81548160ff0219169083151502179055506001601b60016101000a81548160ff0219169083151502179055506001601e60156101000a81548160ff0219169083151502179055503480156200031b57600080fd5b5060006200032e62000d0b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000431573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004579190620013d5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e59190620013d5565b6040518363ffffffff1660e01b81526004016200050492919062001418565b6020604051808303816000875af115801562000524573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054a9190620013d5565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000b3a60105462000b26600f54600e5462000d1360201b620032f41790919060201c565b62000d1360201b620032f41790919060201c565b60148190555062000b7960135462000b6560125460115462000d1360201b620032f41790919060201c565b62000d1360201b620032f41790919060201c565b601581905550601754600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60175460405162000c27919062001456565b60405180910390a350620016d2565b600080830362000c4a576000905062000cb3565b6000828462000c5a919062001320565b905082848262000c6b9190620014a2565b1462000cae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ca59062001561565b60405180910390fd5b809150505b92915050565b600062000d0383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000d7660201b60201c565b905092915050565b600033905090565b600080828462000d24919062001583565b90508381101562000d6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d63906200160e565b60405180910390fd5b8091505092915050565b6000808311829062000dc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000db79190620016ae565b60405180910390fd5b506000838562000dd19190620014a2565b9050809150509392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e6057607f821691505b60208210810362000e765762000e7562000e18565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000ee07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ea1565b62000eec868362000ea1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000f3962000f3362000f2d8462000f04565b62000f0e565b62000f04565b9050919050565b6000819050919050565b62000f558362000f18565b62000f6d62000f648262000f40565b84845462000eae565b825550505050565b600090565b62000f8462000f75565b62000f9181848462000f4a565b505050565b5b8181101562000fb95762000fad60008262000f7a565b60018101905062000f97565b5050565b601f821115620010085762000fd28162000e7c565b62000fdd8462000e91565b8101602085101562000fed578190505b6200100562000ffc8562000e91565b83018262000f96565b50505b505050565b600082821c905092915050565b60006200102d600019846008026200100d565b1980831691505092915050565b60006200104883836200101a565b9150826002028217905092915050565b620010638262000dde565b67ffffffffffffffff8111156200107f576200107e62000de9565b5b6200108b825462000e47565b6200109882828562000fbd565b600060209050601f831160018114620010d05760008415620010bb578287015190505b620010c785826200103a565b86555062001137565b601f198416620010e08662000e7c565b60005b828110156200110a57848901518255600182019150602085019450602081019050620010e3565b868310156200112a578489015162001126601f8916826200101a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620011cd57808604811115620011a557620011a46200113f565b5b6001851615620011b55780820291505b8081029050620011c5856200116e565b945062001185565b94509492505050565b600082620011e85760019050620012bb565b81620011f85760009050620012bb565b81600181146200121157600281146200121c5762001252565b6001915050620012bb565b60ff8411156200123157620012306200113f565b5b8360020a9150848211156200124b576200124a6200113f565b5b50620012bb565b5060208310610133831016604e8410600b84101617156200128c5782820a9050838111156200128657620012856200113f565b5b620012bb565b6200129b84848460016200117b565b92509050818404811115620012b557620012b46200113f565b5b81810290505b9392505050565b600060ff82169050919050565b6000620012dc8262000f04565b9150620012e983620012c2565b9250620013187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620011d6565b905092915050565b60006200132d8262000f04565b91506200133a8362000f04565b92508282026200134a8162000f04565b915082820484148315176200136457620013636200113f565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200139d8262001370565b9050919050565b620013af8162001390565b8114620013bb57600080fd5b50565b600081519050620013cf81620013a4565b92915050565b600060208284031215620013ee57620013ed6200136b565b5b6000620013fe84828501620013be565b91505092915050565b620014128162001390565b82525050565b60006040820190506200142f600083018562001407565b6200143e602083018462001407565b9392505050565b620014508162000f04565b82525050565b60006020820190506200146d600083018462001445565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620014af8262000f04565b9150620014bc8362000f04565b925082620014cf57620014ce62001473565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062001549602183620014da565b91506200155682620014eb565b604082019050919050565b600060208201905081810360008301526200157c816200153a565b9050919050565b6000620015908262000f04565b91506200159d8362000f04565b9250828201905080821115620015b857620015b76200113f565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620015f6601b83620014da565b91506200160382620015be565b602082019050919050565b600060208201905081810360008301526200162981620015e7565b9050919050565b60005b838110156200165057808201518184015260208101905062001633565b60008484015250505050565b6000601f19601f8301169050919050565b60006200167a8262000dde565b620016868185620014da565b93506200169881856020860162001630565b620016a3816200165c565b840191505092915050565b60006020820190508181036000830152620016ca81846200166d565b905092915050565b60805160a051615e826200170660003960008181610eb101526114c001526000818161149401526114ec0152615e826000f3fe6080604052600436106103905760003560e01c806375cb1bd1116101dc578063b37f80f811610102578063d2d7ad83116100a0578063ee828db31161006f578063ee828db314610d77578063f2fde38b14610da0578063f71b9bbf14610dc9578063f872858a14610df257610397565b8063d2d7ad8314610cbb578063dbac26e914610ce6578063dd62ed3e14610d23578063e6b2603b14610d6057610397565b8063c49b9a80116100dc578063c49b9a8014610c01578063c816841b14610c2a578063c867d60b14610c55578063cea9d26f14610c9257610397565b8063b37f80f814610b84578063b38d323c14610baf578063c16dd4a414610bd857610397565b80638da5cb5b1161017a57806398e944c81161014957806398e944c814610ab6578063a457c2d714610ae1578063a9059cbb14610b1e578063af9549e014610b5b57610397565b80638da5cb5b14610a0a5780638e11052b14610a355780638f32d59b14610a6057806395d89b4114610a8b57610397565b8063807c2d9c116101b6578063807c2d9c146109505780638236802e1461097b5780638b15da93146109a45780638b42507f146109cd57610397565b806375cb1bd1146108d157806375f0a874146108fa5780637d1db4a51461092557610397565b806339509351116102c15780635342acb41161025f5780635e42358c1161022e5780635e42358c1461081757806366a16cad1461084257806370a082311461086b578063728d41c9146108a857610397565b80635342acb41461074b5780635881f3ef1461078857806359fac517146107c55780635c85974f146107ee57610397565b80633ecad2711161029b5780633ecad2711461068f57806340ef7c37146106cc5780634974d88f146106f75780634a74bb021461072057610397565b806339509351146105fe5780633b97084a1461063b5780633e2ad85c1461066457610397565b806320365d5f1161032e57806327c8f8351161030857806327c8f835146105545780632b112e491461057f578063313ce567146105aa57806338ec0b11146105d557610397565b806320365d5f146104d757806323b872dd146104ee57806325519cf21461052b57610397565b806313ea1d891161036a57806313ea1d891461042f5780631694505e1461045857806318160ddd146104835780631d865c30146104ae57610397565b806306fdde031461039c5780630930907b146103c7578063095ea7b3146103f257610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610e1d565b6040516103be9190614ac4565b60405180910390f35b3480156103d357600080fd5b506103dc610eaf565b6040516103e99190614b27565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190614bae565b610ed3565b6040516104269190614c09565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190614c50565b610ef1565b005b34801561046457600080fd5b5061046d611073565b60405161047a9190614cef565b60405180910390f35b34801561048f57600080fd5b50610498611099565b6040516104a59190614d19565b60405180910390f35b3480156104ba57600080fd5b506104d560048036038101906104d09190614d34565b6110a3565b005b3480156104e357600080fd5b506104ec611183565b005b3480156104fa57600080fd5b5061051560048036038101906105109190614d87565b6112d8565b6040516105229190614c09565b60405180910390f35b34801561053757600080fd5b50610552600480360381019061054d9190614d34565b6113b2565b005b34801561056057600080fd5b50610569611492565b6040516105769190614b27565b60405180910390f35b34801561058b57600080fd5b506105946114b6565b6040516105a19190614d19565b60405180910390f35b3480156105b657600080fd5b506105bf611534565b6040516105cc9190614df6565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f79190614c50565b61154b565b005b34801561060a57600080fd5b5061062560048036038101906106209190614bae565b6116cd565b6040516106329190614c09565b60405180910390f35b34801561064757600080fd5b50610662600480360381019061065d9190614e11565b611780565b005b34801561067057600080fd5b5061067961181f565b6040516106869190614c09565b60405180910390f35b34801561069b57600080fd5b506106b660048036038101906106b19190614e3e565b611832565b6040516106c39190614c09565b60405180910390f35b3480156106d857600080fd5b506106e1611852565b6040516106ee9190614d19565b60405180910390f35b34801561070357600080fd5b5061071e60048036038101906107199190614e6b565b611858565b005b34801561072c57600080fd5b5061073561190a565b6040516107429190614c09565b60405180910390f35b34801561075757600080fd5b50610772600480360381019061076d9190614e3e565b61191d565b60405161077f9190614c09565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa9190614e3e565b61193d565b6040516107bc9190614b27565b60405180910390f35b3480156107d157600080fd5b506107ec60048036038101906107e79190614e3e565b611dc6565b005b3480156107fa57600080fd5b5061081560048036038101906108109190614e11565b611e9f565b005b34801561082357600080fd5b5061082c611f3e565b6040516108399190614c09565b60405180910390f35b34801561084e57600080fd5b5061086960048036038101906108649190614c50565b611f51565b005b34801561087757600080fd5b50610892600480360381019061088d9190614e3e565b612041565b60405161089f9190614d19565b60405180910390f35b3480156108b457600080fd5b506108cf60048036038101906108ca9190614e11565b61208a565b005b3480156108dd57600080fd5b506108f860048036038101906108f39190614e98565b612129565b005b34801561090657600080fd5b5061090f612286565b60405161091c9190614b27565b60405180910390f35b34801561093157600080fd5b5061093a6122ac565b6040516109479190614d19565b60405180910390f35b34801561095c57600080fd5b506109656122b2565b6040516109729190614d19565b60405180910390f35b34801561098757600080fd5b506109a2600480360381019061099d9190614c50565b6122b8565b005b3480156109b057600080fd5b506109cb60048036038101906109c69190614f50565b6123a8565b005b3480156109d957600080fd5b506109f460048036038101906109ef9190614e3e565b6124e8565b604051610a019190614c09565b60405180910390f35b348015610a1657600080fd5b50610a1f612508565b604051610a2c9190614b27565b60405180910390f35b348015610a4157600080fd5b50610a4a612531565b604051610a579190614b27565b60405180910390f35b348015610a6c57600080fd5b50610a75612557565b604051610a829190614c09565b60405180910390f35b348015610a9757600080fd5b50610aa06125ae565b604051610aad9190614ac4565b60405180910390f35b348015610ac257600080fd5b50610acb612640565b604051610ad89190614b27565b60405180910390f35b348015610aed57600080fd5b50610b086004803603810190610b039190614bae565b612666565b604051610b159190614c09565b60405180910390f35b348015610b2a57600080fd5b50610b456004803603810190610b409190614bae565b612733565b604051610b529190614c09565b60405180910390f35b348015610b6757600080fd5b50610b826004803603810190610b7d9190614c50565b612752565b005b348015610b9057600080fd5b50610b996128d4565b604051610ba69190614c09565b60405180910390f35b348015610bbb57600080fd5b50610bd66004803603810190610bd19190614f9d565b6128e7565b005b348015610be457600080fd5b50610bff6004803603810190610bfa9190614c50565b6129a8565b005b348015610c0d57600080fd5b50610c286004803603810190610c239190614e6b565b612a98565b005b348015610c3657600080fd5b50610c3f612b81565b604051610c4c9190614b27565b60405180910390f35b348015610c6157600080fd5b50610c7c6004803603810190610c779190614e3e565b612ba7565b604051610c899190614c09565b60405180910390f35b348015610c9e57600080fd5b50610cb96004803603810190610cb4919061501b565b612bc7565b005b348015610cc757600080fd5b50610cd0612ce0565b604051610cdd9190614d19565b60405180910390f35b348015610cf257600080fd5b50610d0d6004803603810190610d089190614e3e565b612ce6565b604051610d1a9190614c09565b60405180910390f35b348015610d2f57600080fd5b50610d4a6004803603810190610d45919061506e565b612d06565b604051610d579190614d19565b60405180910390f35b348015610d6c57600080fd5b50610d75612d8d565b005b348015610d8357600080fd5b50610d9e6004803603810190610d999190614e6b565b612ed1565b005b348015610dac57600080fd5b50610dc76004803603810190610dc29190614e3e565b612f83565b005b348015610dd557600080fd5b50610df06004803603810190610deb9190614e3e565b613144565b005b348015610dfe57600080fd5b50610e0761321d565b604051610e149190614c09565b60405180910390f35b606060018054610e2c906150dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610e58906150dd565b8015610ea55780601f10610e7a57610100808354040283529160200191610ea5565b820191906000526020600020905b815481529060010190602001808311610e8857829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610ee7610ee0613352565b848461335a565b6001905092915050565b610ef9613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d9061515a565b60405180910390fd5b801515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100f906151c6565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601754905090565b6110ab613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f9061515a565b60405180910390fd5b82601181905550816012819055508060138190555061117860135461116a6012546011546132f490919063ffffffff16565b6132f490919063ffffffff16565b601581905550505050565b61118b613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120f9061515a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006112e5848484613523565b506113a7846112f2613352565b6113a285604051806060016040528060288152602001615e0060289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611358613352565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d8c9092919063ffffffff16565b61335a565b600190509392505050565b6113ba613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143e9061515a565b60405180910390fd5b82600e8190555081600f8190555080601081905550611487601054611479600f54600e546132f490919063ffffffff16565b6132f490919063ffffffff16565b601481905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061152f6114e47f0000000000000000000000000000000000000000000000000000000000000000612041565b6115216115107f0000000000000000000000000000000000000000000000000000000000000000612041565b601754613df090919063ffffffff16565b613df090919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b611553613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d79061515a565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611672576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611669906151c6565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006117766116da613352565b8461177185600760006116eb613352565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132f490919063ffffffff16565b61335a565b6001905092915050565b611788613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c9061515a565b60405180910390fd5b8060188190555050565b601b60039054906101000a900460ff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b601c5481565b611860613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e49061515a565b60405180910390fd5b80601b60016101000a81548160ff02191690831515021790555050565b601e60159054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b6000611947613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb9061515a565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4891906151fb565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad391906151fb565b6040518363ffffffff1660e01b8152600401611af0929190615228565b602060405180830381865afa158015611b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3191906151fb565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cc4578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd691906151fb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6191906151fb565b6040518363ffffffff1660e01b8152600401611c7e929190615228565b6020604051808303816000875af1158015611c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc191906151fb565b91505b81601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611dce613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e529061515a565b60405180910390fd5b80601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ea7613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2b9061515a565b60405180910390fd5b8060198190555050565b601b60009054906101000a900460ff1681565b611f59613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdd9061515a565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b612092613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461211f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121169061515a565b60405180910390fd5b80601a8190555050565b612131613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b59061515a565b60405180910390fd5b82600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b601a5481565b6122c0613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461234d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123449061515a565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6123b0613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461243d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124349061515a565b60405180910390fd5b600082829050905060005b818110156124e2576001600d600086868581811061246957612468615251565b5b905060200201602081019061247e9190614e3e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806124da906152af565b915050612448565b50505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6060600280546125bd906150dd565b80601f01602080910402602001604051908101604052809291908181526020018280546125e9906150dd565b80156126365780601f1061260b57610100808354040283529160200191612636565b820191906000526020600020905b81548152906001019060200180831161261957829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612729612673613352565b8461272485604051806060016040528060258152602001615e28602591396007600061269d613352565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d8c9092919063ffffffff16565b61335a565b6001905092915050565b6000612747612740613352565b8484613523565b506001905092915050565b61275a613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127de9061515a565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503612879576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612870906151c6565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60029054906101000a900460ff1681565b6128ef613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461297c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129739061515a565b60405180910390fd5b81601b60026101000a81548160ff02191690831515021790555080156129a45742601c819055505b5050565b6129b0613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a349061515a565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612aa0613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b249061515a565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612b769190614c09565b60405180910390a150565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b612bcf613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c539061515a565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612c979291906152f7565b6020604051808303816000875af1158015612cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cda9190615335565b50505050565b60185481565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612d95613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e199061515a565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612e4890615393565b60006040518083038185875af1925050503d8060008114612e85576040519150601f19603f3d011682016040523d82523d6000602084013e612e8a565b606091505b5050905080612ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec5906153f4565b60405180910390fd5b50565b612ed9613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5d9061515a565b60405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b612f8b613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300f9061515a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307e90615486565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61314c613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d09061515a565b60405180910390fd5b80601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b60019054906101000a900460ff1681565b600080830361324257600090506132a4565b6000828461325091906154a6565b905082848261325f9190615517565b1461329f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613296906155ba565b60405180910390fd5b809150505b92915050565b60006132ec83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e3a565b905092915050565b600080828461330391906155da565b905083811015613348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333f9061565a565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036133c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c0906156ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342f9061577e565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516135169190614d19565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358a90615810565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f9906158a2565b60405180910390fd5b60008211613645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161363c90615934565b60405180910390fd5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136e95750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371f906159c6565b60405180910390fd5b601b60029054906101000a900460ff168061378c5750600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061379b575061379a612557565b5b6137da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137d190615a32565b60405180910390fd5b6078601c546137e991906155da565b421180156138045750601b60039054906101000a900460ff16155b801561381357506000601c5414155b15613844576001601b60036101000a81548160ff021916908315150217905550602860148190555060286015819055505b601b60039054906101000a900460ff161580156138ab5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138c7576103846014819055506103846015819055506138ed565b601b60039054906101000a900460ff166138ec57602860148190555060286015819055505b5b601e60149054906101000a900460ff16156139145761390d848484613e9d565b9050613d85565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156139b85750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139d05750601b60009054906101000a900460ff165b15613a1b57601954821115613a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a1190615ac4565b60405180910390fd5b5b6000613a2630612041565b905060006018548210159050808015613a4c5750601e60149054906101000a900460ff16155b8015613aa25750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613aba5750601e60159054906101000a900460ff165b15613ac857613ac7614070565b5b613b51846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d8c9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613ba087876142dd565b613bb457613baf878787614448565b613bb6565b845b9050601b60019054906101000a900460ff168015613c1e5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c8357601a54613c4182613c3389612041565b6132f490919063ffffffff16565b1115613c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c7990615b30565b60405180910390fd5b5b613cd581600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132f490919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d759190614d19565b60405180910390a3600193505050505b9392505050565b6000838311158290613dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dcb9190614ac4565b60405180910390fd5b5060008385613de39190615b50565b9050809150509392505050565b6000613e3283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d8c565b905092915050565b60008083118290613e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e789190614ac4565b60405180910390fd5b5060008385613e909190615517565b9050809150509392505050565b6000613f28826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d8c9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fbd82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132f490919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161405d9190614d19565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff021916908315150217905550600061409630612041565b9050600081036140a657506142c0565b60006140bf6015546014546132f490919063ffffffff16565b905060006140da601154600e546132f490919063ffffffff16565b905060006140f5601254600f546132f490919063ffffffff16565b90506000614131600261412386614115878a61323090919063ffffffff16565b6132aa90919063ffffffff16565b6132aa90919063ffffffff16565b905060006141488287613df090919063ffffffff16565b905060004790506141588261466d565b600061416d8247613df090919063ffffffff16565b905060006141976141886002896132aa90919063ffffffff16565b89613df090919063ffffffff16565b905060006141d360026141c5846141b78c8861323090919063ffffffff16565b6132aa90919063ffffffff16565b6132aa90919063ffffffff16565b905060006141fc836141ee8a8761323090919063ffffffff16565b6132aa90919063ffffffff16565b90506000614225826142178588613df090919063ffffffff16565b613df090919063ffffffff16565b9050600082111561425d5761425c600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836148e9565b5b600081111561429357614292600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826148e9565b5b6000831180156142a35750600088115b156142b3576142b28884614934565b5b5050505050505050505050505b6000601e60146101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806143805750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561438e5760019050614442565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061442f5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561443d5760009050614442565b600090505b92915050565b600080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156144cd576144c66016546144b86014548661323090919063ffffffff16565b6132aa90919063ffffffff16565b905061454c565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561454b5761454860165461453a6015548661323090919063ffffffff16565b6132aa90919063ffffffff16565b90505b5b6000811115614650576145a781600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132f490919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516146479190614d19565b60405180910390a35b6146638184613df090919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561468a57614689615b84565b5b6040519080825280602002602001820160405280156146b85781602001602082028036833780820191505090505b50905030816000815181106146d0576146cf615251565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061479b91906151fb565b816001815181106147af576147ae615251565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061481630601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461335a565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161487a959493929190615cac565b600060405180830381600087803b15801561489457600080fd5b505af11580156148a8573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516148dd929190615d06565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561492f573d6000803e3d6000fd5b505050565b61496130601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461335a565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016149ea96959493929190615d36565b60606040518083038185885af1158015614a08573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614a2d9190615dac565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614a6e578082015181840152602081019050614a53565b60008484015250505050565b6000601f19601f8301169050919050565b6000614a9682614a34565b614aa08185614a3f565b9350614ab0818560208601614a50565b614ab981614a7a565b840191505092915050565b60006020820190508181036000830152614ade8184614a8b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614b1182614ae6565b9050919050565b614b2181614b06565b82525050565b6000602082019050614b3c6000830184614b18565b92915050565b600080fd5b600080fd5b614b5581614b06565b8114614b6057600080fd5b50565b600081359050614b7281614b4c565b92915050565b6000819050919050565b614b8b81614b78565b8114614b9657600080fd5b50565b600081359050614ba881614b82565b92915050565b60008060408385031215614bc557614bc4614b42565b5b6000614bd385828601614b63565b9250506020614be485828601614b99565b9150509250929050565b60008115159050919050565b614c0381614bee565b82525050565b6000602082019050614c1e6000830184614bfa565b92915050565b614c2d81614bee565b8114614c3857600080fd5b50565b600081359050614c4a81614c24565b92915050565b60008060408385031215614c6757614c66614b42565b5b6000614c7585828601614b63565b9250506020614c8685828601614c3b565b9150509250929050565b6000819050919050565b6000614cb5614cb0614cab84614ae6565b614c90565b614ae6565b9050919050565b6000614cc782614c9a565b9050919050565b6000614cd982614cbc565b9050919050565b614ce981614cce565b82525050565b6000602082019050614d046000830184614ce0565b92915050565b614d1381614b78565b82525050565b6000602082019050614d2e6000830184614d0a565b92915050565b600080600060608486031215614d4d57614d4c614b42565b5b6000614d5b86828701614b99565b9350506020614d6c86828701614b99565b9250506040614d7d86828701614b99565b9150509250925092565b600080600060608486031215614da057614d9f614b42565b5b6000614dae86828701614b63565b9350506020614dbf86828701614b63565b9250506040614dd086828701614b99565b9150509250925092565b600060ff82169050919050565b614df081614dda565b82525050565b6000602082019050614e0b6000830184614de7565b92915050565b600060208284031215614e2757614e26614b42565b5b6000614e3584828501614b99565b91505092915050565b600060208284031215614e5457614e53614b42565b5b6000614e6284828501614b63565b91505092915050565b600060208284031215614e8157614e80614b42565b5b6000614e8f84828501614c3b565b91505092915050565b600080600060608486031215614eb157614eb0614b42565b5b6000614ebf86828701614b63565b9350506020614ed086828701614b63565b9250506040614ee186828701614b63565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112614f1057614f0f614eeb565b5b8235905067ffffffffffffffff811115614f2d57614f2c614ef0565b5b602083019150836020820283011115614f4957614f48614ef5565b5b9250929050565b60008060208385031215614f6757614f66614b42565b5b600083013567ffffffffffffffff811115614f8557614f84614b47565b5b614f9185828601614efa565b92509250509250929050565b60008060408385031215614fb457614fb3614b42565b5b6000614fc285828601614c3b565b9250506020614fd385828601614c3b565b9150509250929050565b6000614fe882614b06565b9050919050565b614ff881614fdd565b811461500357600080fd5b50565b60008135905061501581614fef565b92915050565b60008060006060848603121561503457615033614b42565b5b600061504286828701615006565b935050602061505386828701614b63565b925050604061506486828701614b99565b9150509250925092565b6000806040838503121561508557615084614b42565b5b600061509385828601614b63565b92505060206150a485828601614b63565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806150f557607f821691505b602082108103615108576151076150ae565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000615144602083614a3f565b915061514f8261510e565b602082019050919050565b6000602082019050818103600083015261517381615137565b9050919050565b7f4e6f74204368616e676564212100000000000000000000000000000000000000600082015250565b60006151b0600d83614a3f565b91506151bb8261517a565b602082019050919050565b600060208201905081810360008301526151df816151a3565b9050919050565b6000815190506151f581614b4c565b92915050565b60006020828403121561521157615210614b42565b5b600061521f848285016151e6565b91505092915050565b600060408201905061523d6000830185614b18565b61524a6020830184614b18565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006152ba82614b78565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036152ec576152eb615280565b5b600182019050919050565b600060408201905061530c6000830185614b18565b6153196020830184614d0a565b9392505050565b60008151905061532f81614c24565b92915050565b60006020828403121561534b5761534a614b42565b5b600061535984828501615320565b91505092915050565b600081905092915050565b50565b600061537d600083615362565b91506153888261536d565b600082019050919050565b600061539e82615370565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b60006153de601483614a3f565b91506153e9826153a8565b602082019050919050565b6000602082019050818103600083015261540d816153d1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615470602683614a3f565b915061547b82615414565b604082019050919050565b6000602082019050818103600083015261549f81615463565b9050919050565b60006154b182614b78565b91506154bc83614b78565b92508282026154ca81614b78565b915082820484148315176154e1576154e0615280565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061552282614b78565b915061552d83614b78565b92508261553d5761553c6154e8565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006155a4602183614a3f565b91506155af82615548565b604082019050919050565b600060208201905081810360008301526155d381615597565b9050919050565b60006155e582614b78565b91506155f083614b78565b925082820190508082111561560857615607615280565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615644601b83614a3f565b915061564f8261560e565b602082019050919050565b6000602082019050818103600083015261567381615637565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006156d6602483614a3f565b91506156e18261567a565b604082019050919050565b60006020820190508181036000830152615705816156c9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615768602283614a3f565b91506157738261570c565b604082019050919050565b600060208201905081810360008301526157978161575b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006157fa602583614a3f565b91506158058261579e565b604082019050919050565b60006020820190508181036000830152615829816157ed565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061588c602383614a3f565b915061589782615830565b604082019050919050565b600060208201905081810360008301526158bb8161587f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061591e602983614a3f565b9150615929826158c2565b604082019050919050565b6000602082019050818103600083015261594d81615911565b9050919050565b7f4572726f723a20426c61636b6c69737420426f74732f436f6e7472616374732060008201527f6e6f7420416c6c6f776564212100000000000000000000000000000000000000602082015250565b60006159b0602d83614a3f565b91506159bb82615954565b604082019050919050565b600060208201905081810360008301526159df816159a3565b9050919050565b7f54726164652069732043757272656e746c792050617573656421210000000000600082015250565b6000615a1c601b83614a3f565b9150615a27826159e6565b602082019050919050565b60006020820190508181036000830152615a4b81615a0f565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000615aae602883614a3f565b9150615ab982615a52565b604082019050919050565b60006020820190508181036000830152615add81615aa1565b9050919050565b7f4d61782057616c6c6574204c696d697420457863656564656421210000000000600082015250565b6000615b1a601b83614a3f565b9150615b2582615ae4565b602082019050919050565b60006020820190508181036000830152615b4981615b0d565b9050919050565b6000615b5b82614b78565b9150615b6683614b78565b9250828203905081811115615b7e57615b7d615280565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000615bd8615bd3615bce84615bb3565b614c90565b614b78565b9050919050565b615be881615bbd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615c2381614b06565b82525050565b6000615c358383615c1a565b60208301905092915050565b6000602082019050919050565b6000615c5982615bee565b615c638185615bf9565b9350615c6e83615c0a565b8060005b83811015615c9f578151615c868882615c29565b9750615c9183615c41565b925050600181019050615c72565b5085935050505092915050565b600060a082019050615cc16000830188614d0a565b615cce6020830187615bdf565b8181036040830152615ce08186615c4e565b9050615cef6060830185614b18565b615cfc6080830184614d0a565b9695505050505050565b6000604082019050615d1b6000830185614d0a565b8181036020830152615d2d8184615c4e565b90509392505050565b600060c082019050615d4b6000830189614b18565b615d586020830188614d0a565b615d656040830187615bdf565b615d726060830186615bdf565b615d7f6080830185614b18565b615d8c60a0830184614d0a565b979650505050505050565b600081519050615da681614b82565b92915050565b600080600060608486031215615dc557615dc4614b42565b5b6000615dd386828701615d97565b9350506020615de486828701615d97565b9250506040615df586828701615d97565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f54b90133a304912709dafc6b74cddc538473ef99bc19543595923ce8b4ebabc64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103905760003560e01c806375cb1bd1116101dc578063b37f80f811610102578063d2d7ad83116100a0578063ee828db31161006f578063ee828db314610d77578063f2fde38b14610da0578063f71b9bbf14610dc9578063f872858a14610df257610397565b8063d2d7ad8314610cbb578063dbac26e914610ce6578063dd62ed3e14610d23578063e6b2603b14610d6057610397565b8063c49b9a80116100dc578063c49b9a8014610c01578063c816841b14610c2a578063c867d60b14610c55578063cea9d26f14610c9257610397565b8063b37f80f814610b84578063b38d323c14610baf578063c16dd4a414610bd857610397565b80638da5cb5b1161017a57806398e944c81161014957806398e944c814610ab6578063a457c2d714610ae1578063a9059cbb14610b1e578063af9549e014610b5b57610397565b80638da5cb5b14610a0a5780638e11052b14610a355780638f32d59b14610a6057806395d89b4114610a8b57610397565b8063807c2d9c116101b6578063807c2d9c146109505780638236802e1461097b5780638b15da93146109a45780638b42507f146109cd57610397565b806375cb1bd1146108d157806375f0a874146108fa5780637d1db4a51461092557610397565b806339509351116102c15780635342acb41161025f5780635e42358c1161022e5780635e42358c1461081757806366a16cad1461084257806370a082311461086b578063728d41c9146108a857610397565b80635342acb41461074b5780635881f3ef1461078857806359fac517146107c55780635c85974f146107ee57610397565b80633ecad2711161029b5780633ecad2711461068f57806340ef7c37146106cc5780634974d88f146106f75780634a74bb021461072057610397565b806339509351146105fe5780633b97084a1461063b5780633e2ad85c1461066457610397565b806320365d5f1161032e57806327c8f8351161030857806327c8f835146105545780632b112e491461057f578063313ce567146105aa57806338ec0b11146105d557610397565b806320365d5f146104d757806323b872dd146104ee57806325519cf21461052b57610397565b806313ea1d891161036a57806313ea1d891461042f5780631694505e1461045857806318160ddd146104835780631d865c30146104ae57610397565b806306fdde031461039c5780630930907b146103c7578063095ea7b3146103f257610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610e1d565b6040516103be9190614ac4565b60405180910390f35b3480156103d357600080fd5b506103dc610eaf565b6040516103e99190614b27565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190614bae565b610ed3565b6040516104269190614c09565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190614c50565b610ef1565b005b34801561046457600080fd5b5061046d611073565b60405161047a9190614cef565b60405180910390f35b34801561048f57600080fd5b50610498611099565b6040516104a59190614d19565b60405180910390f35b3480156104ba57600080fd5b506104d560048036038101906104d09190614d34565b6110a3565b005b3480156104e357600080fd5b506104ec611183565b005b3480156104fa57600080fd5b5061051560048036038101906105109190614d87565b6112d8565b6040516105229190614c09565b60405180910390f35b34801561053757600080fd5b50610552600480360381019061054d9190614d34565b6113b2565b005b34801561056057600080fd5b50610569611492565b6040516105769190614b27565b60405180910390f35b34801561058b57600080fd5b506105946114b6565b6040516105a19190614d19565b60405180910390f35b3480156105b657600080fd5b506105bf611534565b6040516105cc9190614df6565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f79190614c50565b61154b565b005b34801561060a57600080fd5b5061062560048036038101906106209190614bae565b6116cd565b6040516106329190614c09565b60405180910390f35b34801561064757600080fd5b50610662600480360381019061065d9190614e11565b611780565b005b34801561067057600080fd5b5061067961181f565b6040516106869190614c09565b60405180910390f35b34801561069b57600080fd5b506106b660048036038101906106b19190614e3e565b611832565b6040516106c39190614c09565b60405180910390f35b3480156106d857600080fd5b506106e1611852565b6040516106ee9190614d19565b60405180910390f35b34801561070357600080fd5b5061071e60048036038101906107199190614e6b565b611858565b005b34801561072c57600080fd5b5061073561190a565b6040516107429190614c09565b60405180910390f35b34801561075757600080fd5b50610772600480360381019061076d9190614e3e565b61191d565b60405161077f9190614c09565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa9190614e3e565b61193d565b6040516107bc9190614b27565b60405180910390f35b3480156107d157600080fd5b506107ec60048036038101906107e79190614e3e565b611dc6565b005b3480156107fa57600080fd5b5061081560048036038101906108109190614e11565b611e9f565b005b34801561082357600080fd5b5061082c611f3e565b6040516108399190614c09565b60405180910390f35b34801561084e57600080fd5b5061086960048036038101906108649190614c50565b611f51565b005b34801561087757600080fd5b50610892600480360381019061088d9190614e3e565b612041565b60405161089f9190614d19565b60405180910390f35b3480156108b457600080fd5b506108cf60048036038101906108ca9190614e11565b61208a565b005b3480156108dd57600080fd5b506108f860048036038101906108f39190614e98565b612129565b005b34801561090657600080fd5b5061090f612286565b60405161091c9190614b27565b60405180910390f35b34801561093157600080fd5b5061093a6122ac565b6040516109479190614d19565b60405180910390f35b34801561095c57600080fd5b506109656122b2565b6040516109729190614d19565b60405180910390f35b34801561098757600080fd5b506109a2600480360381019061099d9190614c50565b6122b8565b005b3480156109b057600080fd5b506109cb60048036038101906109c69190614f50565b6123a8565b005b3480156109d957600080fd5b506109f460048036038101906109ef9190614e3e565b6124e8565b604051610a019190614c09565b60405180910390f35b348015610a1657600080fd5b50610a1f612508565b604051610a2c9190614b27565b60405180910390f35b348015610a4157600080fd5b50610a4a612531565b604051610a579190614b27565b60405180910390f35b348015610a6c57600080fd5b50610a75612557565b604051610a829190614c09565b60405180910390f35b348015610a9757600080fd5b50610aa06125ae565b604051610aad9190614ac4565b60405180910390f35b348015610ac257600080fd5b50610acb612640565b604051610ad89190614b27565b60405180910390f35b348015610aed57600080fd5b50610b086004803603810190610b039190614bae565b612666565b604051610b159190614c09565b60405180910390f35b348015610b2a57600080fd5b50610b456004803603810190610b409190614bae565b612733565b604051610b529190614c09565b60405180910390f35b348015610b6757600080fd5b50610b826004803603810190610b7d9190614c50565b612752565b005b348015610b9057600080fd5b50610b996128d4565b604051610ba69190614c09565b60405180910390f35b348015610bbb57600080fd5b50610bd66004803603810190610bd19190614f9d565b6128e7565b005b348015610be457600080fd5b50610bff6004803603810190610bfa9190614c50565b6129a8565b005b348015610c0d57600080fd5b50610c286004803603810190610c239190614e6b565b612a98565b005b348015610c3657600080fd5b50610c3f612b81565b604051610c4c9190614b27565b60405180910390f35b348015610c6157600080fd5b50610c7c6004803603810190610c779190614e3e565b612ba7565b604051610c899190614c09565b60405180910390f35b348015610c9e57600080fd5b50610cb96004803603810190610cb4919061501b565b612bc7565b005b348015610cc757600080fd5b50610cd0612ce0565b604051610cdd9190614d19565b60405180910390f35b348015610cf257600080fd5b50610d0d6004803603810190610d089190614e3e565b612ce6565b604051610d1a9190614c09565b60405180910390f35b348015610d2f57600080fd5b50610d4a6004803603810190610d45919061506e565b612d06565b604051610d579190614d19565b60405180910390f35b348015610d6c57600080fd5b50610d75612d8d565b005b348015610d8357600080fd5b50610d9e6004803603810190610d999190614e6b565b612ed1565b005b348015610dac57600080fd5b50610dc76004803603810190610dc29190614e3e565b612f83565b005b348015610dd557600080fd5b50610df06004803603810190610deb9190614e3e565b613144565b005b348015610dfe57600080fd5b50610e0761321d565b604051610e149190614c09565b60405180910390f35b606060018054610e2c906150dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610e58906150dd565b8015610ea55780601f10610e7a57610100808354040283529160200191610ea5565b820191906000526020600020905b815481529060010190602001808311610e8857829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610ee7610ee0613352565b848461335a565b6001905092915050565b610ef9613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d9061515a565b60405180910390fd5b801515600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100f906151c6565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601754905090565b6110ab613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f9061515a565b60405180910390fd5b82601181905550816012819055508060138190555061117860135461116a6012546011546132f490919063ffffffff16565b6132f490919063ffffffff16565b601581905550505050565b61118b613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120f9061515a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006112e5848484613523565b506113a7846112f2613352565b6113a285604051806060016040528060288152602001615e0060289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611358613352565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d8c9092919063ffffffff16565b61335a565b600190509392505050565b6113ba613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143e9061515a565b60405180910390fd5b82600e8190555081600f8190555080601081905550611487601054611479600f54600e546132f490919063ffffffff16565b6132f490919063ffffffff16565b601481905550505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b600061152f6114e47f0000000000000000000000000000000000000000000000000000000000000000612041565b6115216115107f000000000000000000000000000000000000000000000000000000000000dead612041565b601754613df090919063ffffffff16565b613df090919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b611553613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d79061515a565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611672576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611669906151c6565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006117766116da613352565b8461177185600760006116eb613352565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132f490919063ffffffff16565b61335a565b6001905092915050565b611788613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c9061515a565b60405180910390fd5b8060188190555050565b601b60039054906101000a900460ff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b601c5481565b611860613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e49061515a565b60405180910390fd5b80601b60016101000a81548160ff02191690831515021790555050565b601e60159054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b6000611947613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb9061515a565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4891906151fb565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad391906151fb565b6040518363ffffffff1660e01b8152600401611af0929190615228565b602060405180830381865afa158015611b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3191906151fb565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cc4578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd691906151fb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6191906151fb565b6040518363ffffffff1660e01b8152600401611c7e929190615228565b6020604051808303816000875af1158015611c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc191906151fb565b91505b81601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611dce613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e529061515a565b60405180910390fd5b80601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ea7613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2b9061515a565b60405180910390fd5b8060198190555050565b601b60009054906101000a900460ff1681565b611f59613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdd9061515a565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b612092613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461211f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121169061515a565b60405180910390fd5b80601a8190555050565b612131613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b59061515a565b60405180910390fd5b82600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b601a5481565b6122c0613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461234d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123449061515a565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6123b0613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461243d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124349061515a565b60405180910390fd5b600082829050905060005b818110156124e2576001600d600086868581811061246957612468615251565b5b905060200201602081019061247e9190614e3e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806124da906152af565b915050612448565b50505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6060600280546125bd906150dd565b80601f01602080910402602001604051908101604052809291908181526020018280546125e9906150dd565b80156126365780601f1061260b57610100808354040283529160200191612636565b820191906000526020600020905b81548152906001019060200180831161261957829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612729612673613352565b8461272485604051806060016040528060258152602001615e28602591396007600061269d613352565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d8c9092919063ffffffff16565b61335a565b6001905092915050565b6000612747612740613352565b8484613523565b506001905092915050565b61275a613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127de9061515a565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503612879576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612870906151c6565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60029054906101000a900460ff1681565b6128ef613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461297c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129739061515a565b60405180910390fd5b81601b60026101000a81548160ff02191690831515021790555080156129a45742601c819055505b5050565b6129b0613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a349061515a565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612aa0613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b249061515a565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612b769190614c09565b60405180910390a150565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b612bcf613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c539061515a565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612c979291906152f7565b6020604051808303816000875af1158015612cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cda9190615335565b50505050565b60185481565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612d95613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e199061515a565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612e4890615393565b60006040518083038185875af1925050503d8060008114612e85576040519150601f19603f3d011682016040523d82523d6000602084013e612e8a565b606091505b5050905080612ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec5906153f4565b60405180910390fd5b50565b612ed9613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5d9061515a565b60405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b612f8b613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300f9061515a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307e90615486565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61314c613352565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d09061515a565b60405180910390fd5b80601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b60019054906101000a900460ff1681565b600080830361324257600090506132a4565b6000828461325091906154a6565b905082848261325f9190615517565b1461329f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613296906155ba565b60405180910390fd5b809150505b92915050565b60006132ec83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e3a565b905092915050565b600080828461330391906155da565b905083811015613348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333f9061565a565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036133c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c0906156ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342f9061577e565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516135169190614d19565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358a90615810565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f9906158a2565b60405180910390fd5b60008211613645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161363c90615934565b60405180910390fd5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136e95750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371f906159c6565b60405180910390fd5b601b60029054906101000a900460ff168061378c5750600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061379b575061379a612557565b5b6137da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137d190615a32565b60405180910390fd5b6078601c546137e991906155da565b421180156138045750601b60039054906101000a900460ff16155b801561381357506000601c5414155b15613844576001601b60036101000a81548160ff021916908315150217905550602860148190555060286015819055505b601b60039054906101000a900460ff161580156138ab5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138c7576103846014819055506103846015819055506138ed565b601b60039054906101000a900460ff166138ec57602860148190555060286015819055505b5b601e60149054906101000a900460ff16156139145761390d848484613e9d565b9050613d85565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156139b85750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139d05750601b60009054906101000a900460ff165b15613a1b57601954821115613a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a1190615ac4565b60405180910390fd5b5b6000613a2630612041565b905060006018548210159050808015613a4c5750601e60149054906101000a900460ff16155b8015613aa25750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613aba5750601e60159054906101000a900460ff165b15613ac857613ac7614070565b5b613b51846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d8c9092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613ba087876142dd565b613bb457613baf878787614448565b613bb6565b845b9050601b60019054906101000a900460ff168015613c1e5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c8357601a54613c4182613c3389612041565b6132f490919063ffffffff16565b1115613c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c7990615b30565b60405180910390fd5b5b613cd581600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132f490919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d759190614d19565b60405180910390a3600193505050505b9392505050565b6000838311158290613dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dcb9190614ac4565b60405180910390fd5b5060008385613de39190615b50565b9050809150509392505050565b6000613e3283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d8c565b905092915050565b60008083118290613e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e789190614ac4565b60405180910390fd5b5060008385613e909190615517565b9050809150509392505050565b6000613f28826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d8c9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fbd82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132f490919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161405d9190614d19565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff021916908315150217905550600061409630612041565b9050600081036140a657506142c0565b60006140bf6015546014546132f490919063ffffffff16565b905060006140da601154600e546132f490919063ffffffff16565b905060006140f5601254600f546132f490919063ffffffff16565b90506000614131600261412386614115878a61323090919063ffffffff16565b6132aa90919063ffffffff16565b6132aa90919063ffffffff16565b905060006141488287613df090919063ffffffff16565b905060004790506141588261466d565b600061416d8247613df090919063ffffffff16565b905060006141976141886002896132aa90919063ffffffff16565b89613df090919063ffffffff16565b905060006141d360026141c5846141b78c8861323090919063ffffffff16565b6132aa90919063ffffffff16565b6132aa90919063ffffffff16565b905060006141fc836141ee8a8761323090919063ffffffff16565b6132aa90919063ffffffff16565b90506000614225826142178588613df090919063ffffffff16565b613df090919063ffffffff16565b9050600082111561425d5761425c600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836148e9565b5b600081111561429357614292600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826148e9565b5b6000831180156142a35750600088115b156142b3576142b28884614934565b5b5050505050505050505050505b6000601e60146101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806143805750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561438e5760019050614442565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061442f5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561443d5760009050614442565b600090505b92915050565b600080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156144cd576144c66016546144b86014548661323090919063ffffffff16565b6132aa90919063ffffffff16565b905061454c565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561454b5761454860165461453a6015548661323090919063ffffffff16565b6132aa90919063ffffffff16565b90505b5b6000811115614650576145a781600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132f490919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516146479190614d19565b60405180910390a35b6146638184613df090919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561468a57614689615b84565b5b6040519080825280602002602001820160405280156146b85781602001602082028036833780820191505090505b50905030816000815181106146d0576146cf615251565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061479b91906151fb565b816001815181106147af576147ae615251565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061481630601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461335a565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161487a959493929190615cac565b600060405180830381600087803b15801561489457600080fd5b505af11580156148a8573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516148dd929190615d06565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561492f573d6000803e3d6000fd5b505050565b61496130601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461335a565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016149ea96959493929190615d36565b60606040518083038185885af1158015614a08573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614a2d9190615dac565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614a6e578082015181840152602081019050614a53565b60008484015250505050565b6000601f19601f8301169050919050565b6000614a9682614a34565b614aa08185614a3f565b9350614ab0818560208601614a50565b614ab981614a7a565b840191505092915050565b60006020820190508181036000830152614ade8184614a8b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614b1182614ae6565b9050919050565b614b2181614b06565b82525050565b6000602082019050614b3c6000830184614b18565b92915050565b600080fd5b600080fd5b614b5581614b06565b8114614b6057600080fd5b50565b600081359050614b7281614b4c565b92915050565b6000819050919050565b614b8b81614b78565b8114614b9657600080fd5b50565b600081359050614ba881614b82565b92915050565b60008060408385031215614bc557614bc4614b42565b5b6000614bd385828601614b63565b9250506020614be485828601614b99565b9150509250929050565b60008115159050919050565b614c0381614bee565b82525050565b6000602082019050614c1e6000830184614bfa565b92915050565b614c2d81614bee565b8114614c3857600080fd5b50565b600081359050614c4a81614c24565b92915050565b60008060408385031215614c6757614c66614b42565b5b6000614c7585828601614b63565b9250506020614c8685828601614c3b565b9150509250929050565b6000819050919050565b6000614cb5614cb0614cab84614ae6565b614c90565b614ae6565b9050919050565b6000614cc782614c9a565b9050919050565b6000614cd982614cbc565b9050919050565b614ce981614cce565b82525050565b6000602082019050614d046000830184614ce0565b92915050565b614d1381614b78565b82525050565b6000602082019050614d2e6000830184614d0a565b92915050565b600080600060608486031215614d4d57614d4c614b42565b5b6000614d5b86828701614b99565b9350506020614d6c86828701614b99565b9250506040614d7d86828701614b99565b9150509250925092565b600080600060608486031215614da057614d9f614b42565b5b6000614dae86828701614b63565b9350506020614dbf86828701614b63565b9250506040614dd086828701614b99565b9150509250925092565b600060ff82169050919050565b614df081614dda565b82525050565b6000602082019050614e0b6000830184614de7565b92915050565b600060208284031215614e2757614e26614b42565b5b6000614e3584828501614b99565b91505092915050565b600060208284031215614e5457614e53614b42565b5b6000614e6284828501614b63565b91505092915050565b600060208284031215614e8157614e80614b42565b5b6000614e8f84828501614c3b565b91505092915050565b600080600060608486031215614eb157614eb0614b42565b5b6000614ebf86828701614b63565b9350506020614ed086828701614b63565b9250506040614ee186828701614b63565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112614f1057614f0f614eeb565b5b8235905067ffffffffffffffff811115614f2d57614f2c614ef0565b5b602083019150836020820283011115614f4957614f48614ef5565b5b9250929050565b60008060208385031215614f6757614f66614b42565b5b600083013567ffffffffffffffff811115614f8557614f84614b47565b5b614f9185828601614efa565b92509250509250929050565b60008060408385031215614fb457614fb3614b42565b5b6000614fc285828601614c3b565b9250506020614fd385828601614c3b565b9150509250929050565b6000614fe882614b06565b9050919050565b614ff881614fdd565b811461500357600080fd5b50565b60008135905061501581614fef565b92915050565b60008060006060848603121561503457615033614b42565b5b600061504286828701615006565b935050602061505386828701614b63565b925050604061506486828701614b99565b9150509250925092565b6000806040838503121561508557615084614b42565b5b600061509385828601614b63565b92505060206150a485828601614b63565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806150f557607f821691505b602082108103615108576151076150ae565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000615144602083614a3f565b915061514f8261510e565b602082019050919050565b6000602082019050818103600083015261517381615137565b9050919050565b7f4e6f74204368616e676564212100000000000000000000000000000000000000600082015250565b60006151b0600d83614a3f565b91506151bb8261517a565b602082019050919050565b600060208201905081810360008301526151df816151a3565b9050919050565b6000815190506151f581614b4c565b92915050565b60006020828403121561521157615210614b42565b5b600061521f848285016151e6565b91505092915050565b600060408201905061523d6000830185614b18565b61524a6020830184614b18565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006152ba82614b78565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036152ec576152eb615280565b5b600182019050919050565b600060408201905061530c6000830185614b18565b6153196020830184614d0a565b9392505050565b60008151905061532f81614c24565b92915050565b60006020828403121561534b5761534a614b42565b5b600061535984828501615320565b91505092915050565b600081905092915050565b50565b600061537d600083615362565b91506153888261536d565b600082019050919050565b600061539e82615370565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b60006153de601483614a3f565b91506153e9826153a8565b602082019050919050565b6000602082019050818103600083015261540d816153d1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615470602683614a3f565b915061547b82615414565b604082019050919050565b6000602082019050818103600083015261549f81615463565b9050919050565b60006154b182614b78565b91506154bc83614b78565b92508282026154ca81614b78565b915082820484148315176154e1576154e0615280565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061552282614b78565b915061552d83614b78565b92508261553d5761553c6154e8565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006155a4602183614a3f565b91506155af82615548565b604082019050919050565b600060208201905081810360008301526155d381615597565b9050919050565b60006155e582614b78565b91506155f083614b78565b925082820190508082111561560857615607615280565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615644601b83614a3f565b915061564f8261560e565b602082019050919050565b6000602082019050818103600083015261567381615637565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006156d6602483614a3f565b91506156e18261567a565b604082019050919050565b60006020820190508181036000830152615705816156c9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615768602283614a3f565b91506157738261570c565b604082019050919050565b600060208201905081810360008301526157978161575b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006157fa602583614a3f565b91506158058261579e565b604082019050919050565b60006020820190508181036000830152615829816157ed565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061588c602383614a3f565b915061589782615830565b604082019050919050565b600060208201905081810360008301526158bb8161587f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061591e602983614a3f565b9150615929826158c2565b604082019050919050565b6000602082019050818103600083015261594d81615911565b9050919050565b7f4572726f723a20426c61636b6c69737420426f74732f436f6e7472616374732060008201527f6e6f7420416c6c6f776564212100000000000000000000000000000000000000602082015250565b60006159b0602d83614a3f565b91506159bb82615954565b604082019050919050565b600060208201905081810360008301526159df816159a3565b9050919050565b7f54726164652069732043757272656e746c792050617573656421210000000000600082015250565b6000615a1c601b83614a3f565b9150615a27826159e6565b602082019050919050565b60006020820190508181036000830152615a4b81615a0f565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000615aae602883614a3f565b9150615ab982615a52565b604082019050919050565b60006020820190508181036000830152615add81615aa1565b9050919050565b7f4d61782057616c6c6574204c696d697420457863656564656421210000000000600082015250565b6000615b1a601b83614a3f565b9150615b2582615ae4565b602082019050919050565b60006020820190508181036000830152615b4981615b0d565b9050919050565b6000615b5b82614b78565b9150615b6683614b78565b9250828203905081811115615b7e57615b7d615280565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000615bd8615bd3615bce84615bb3565b614c90565b614b78565b9050919050565b615be881615bbd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615c2381614b06565b82525050565b6000615c358383615c1a565b60208301905092915050565b6000602082019050919050565b6000615c5982615bee565b615c638185615bf9565b9350615c6e83615c0a565b8060005b83811015615c9f578151615c868882615c29565b9750615c9183615c41565b925050600181019050615c72565b5085935050505092915050565b600060a082019050615cc16000830188614d0a565b615cce6020830187615bdf565b8181036040830152615ce08186615c4e565b9050615cef6060830185614b18565b615cfc6080830184614d0a565b9695505050505050565b6000604082019050615d1b6000830185614d0a565b8181036020830152615d2d8184615c4e565b90509392505050565b600060c082019050615d4b6000830189614b18565b615d586020830188614d0a565b615d656040830187615bdf565b615d726060830186615bdf565b615d7f6080830185614b18565b615d8c60a0830184614d0a565b979650505050505050565b600081519050615da681614b82565b92915050565b600080600060608486031215615dc557615dc4614b42565b5b6000615dd386828701615d97565b9350506020615de486828701615d97565b9250506040615df586828701615d97565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f54b90133a304912709dafc6b74cddc538473ef99bc19543595923ce8b4ebabc64736f6c63430008110033

Deployed Bytecode Sourcemap

13918:17593:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17910:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14456:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19080:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29434:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15809:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18187:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28491:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5594:231;;;;;;;;;;;;;:::i;:::-;;20031:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28189:294;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14368:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19598:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18096:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29228:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18577:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29628:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15746:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14734:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15776:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28078:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15924:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14677:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30287:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31282:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29874:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15624:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27843:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29760:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28803:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14165:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15457:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15542:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27051:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31056:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14845:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5269:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14247:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5494:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18001:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14327:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18803:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19856:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29027:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15707:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27655:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30162:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29983:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15857:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14786:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27517:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15386:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14900:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18426:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27301:176;;;;;;;;;;;;;:::i;:::-;;27974:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5833:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31413:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15663:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17910:83;17947:13;17980:5;17973:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17910:83;:::o;14456:81::-;;;:::o;19080:161::-;19155:4;19172:39;19181:12;:10;:12::i;:::-;19195:7;19204:6;19172:8;:39::i;:::-;19229:4;19222:11;;19080:161;;;;:::o;29434:186::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29546:7:::1;29521:32;;:15;:21;29537:4;29521:21;;;;;;;;;;;;;;;;;;;;;;;;;:32;;::::0;29513:57:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29605:7;29581:15;:21;29597:4;29581:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;29434:186:::0;;:::o;15809:41::-;;;;;;;;;;;;;:::o;18187:100::-;18240:7;18267:12;;18260:19;;18187:100;:::o;28491:304::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28616:6:::1;28596:17;:26;;;;28653:10;28633:17;:30;;;;28692:11;28674:15;:29;;;;28726:61;28771:15;;28726:40;28748:17;;28726;;:21;;:40;;;;:::i;:::-;:44;;:61;;;;:::i;:::-;28714:9;:73;;;;28491:304:::0;;;:::o;5594:231::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5702:42:::1;5665:81;;5686:6;::::0;::::1;;;;;;;;5665:81;;;;;;;;;;;;5774:42;5757:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;5594:231::o:0;20031:313::-;20129:4;20146:36;20156:6;20164:9;20175:6;20146:9;:36::i;:::-;;20193:121;20202:6;20210:12;:10;:12::i;:::-;20224:89;20262:6;20224:89;;;;;;;;;;;;;;;;;:11;:19;20236:6;20224:19;;;;;;;;;;;;;;;:33;20244:12;:10;:12::i;:::-;20224:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;20193:8;:121::i;:::-;20332:4;20325:11;;20031:313;;;;;:::o;28189:294::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28310:6:::1;28291:16;:25;;;;28346:10;28327:16;:29;;;;28384:11;28367:14;:28;;;;28417:58;28460:14;;28417:38;28438:16;;28417;;:20;;:38;;;;:::i;:::-;:42;;:58;;;;:::i;:::-;28406:8;:69;;;;28189:294:::0;;;:::o;14368:81::-;;;:::o;19598:156::-;19651:7;19678:68;19723:22;19733:11;19723:9;:22::i;:::-;19678:40;19695:22;19705:11;19695:9;:22::i;:::-;19678:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;19671:75;;19598:156;:::o;18096:83::-;18137:5;18162:9;;;;;;;;;;;18155:16;;18096:83;:::o;29228:198::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29348:7:::1;29319:36;;:19;:25;29339:4;29319:25;;;;;;;;;;;;;;;;;;;;;;;;;:36;;::::0;29311:61:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29411:7;29383:19;:25;29403:4;29383:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;29228:198:::0;;:::o;18577:218::-;18665:4;18682:83;18691:12;:10;:12::i;:::-;18705:7;18714:50;18753:10;18714:11;:25;18726:12;:10;:12::i;:::-;18714:25;;;;;;;;;;;;;;;:34;18740:7;18714:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18682:8;:83::i;:::-;18783:4;18776:11;;18577:218;;;;:::o;29628:124::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29736:8:::1;29710:23;:34;;;;29628:124:::0;:::o;15746:23::-;;;;;;;;;;;;;:::o;14734:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;15776:24::-;;;;:::o;28078:103::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28166:7:::1;28147:16;;:26;;;;;;;;;;;;;;;;;;28078:103:::0;:::o;15924:40::-;;;;;;;;;;;;;:::o;14677:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;30287:748::-;30367:22;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30404:35:::1;30461:16;30404:74;;30527:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30509:53;;;30571:4;30578:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30509:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30492:110;;30644:1;30618:28;;:14;:28;;::::0;30615:225:::1;;30732:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30714:74;;;30797:4;30804:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30714:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30697:131;;30615:225;30866:14;30852:11;;:28;;;;;;;;;;;;;;;;;;30932:16;30914:15;;:34;;;;;;;;;;;;;;;;;;31023:4;30986:12;:34;31007:11;;;;;;;;;;;30986:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;30391:644;30287:748:::0;;;:::o;31282:123::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31389:7:::1;31352:15;;:45;;;;;;;;;;;;;;;;;;31282:123:::0;:::o;29874:101::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29959:8:::1;29944:12;:23;;;;29874:101:::0;:::o;15624:32::-;;;;;;;;;;;;;:::o;27843:123::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27951:7:::1;27929:13;:19;27943:4;27929:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;27843:123:::0;;:::o;18295:::-;18361:7;18387:9;:18;18397:7;18387:18;;;;;;;;;;;;;;;;18380:25;;18295:123;;;:::o;29760:106::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29850:8:::1;29837:10;:21;;;;29760:106:::0;:::o;28803:216::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28925:7:::1;28907:15;;:25;;;;;;;;;;;;;;;;;;28963:13;28943:17;;:33;;;;;;;;;;;;;;;;;;29003:8;28987:13;;:24;;;;;;;;;;;;;;;;;;28803:216:::0;;;:::o;14165:75::-;;;;;;;;;;;;;:::o;15457:67::-;;;;:::o;15542:65::-;;;;:::o;27051:209::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27245:7:::1;27225:11;:17;27237:4;27225:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;27051:209:::0;;:::o;31056:205::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31129:11:::1;31143:4;;:11;;31129:25;;31169:6;31165:89;31185:6;31181:1;:10;31165:89;;;31238:4;31213:13;:22;31227:4;;31232:1;31227:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;31213:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;31193:3;;;;;:::i;:::-;;;;31165:89;;;;31118:143;31056:205:::0;;:::o;14845:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;5269:79::-;5307:7;5334:6;;;;;;;;;;;5327:13;;5269:79;:::o;14247:73::-;;;;;;;;;;;;;:::o;5494:92::-;5534:4;5572:6;;;;;;;;;;;5558:20;;:10;:20;;;5551:27;;5494:92;:::o;18001:87::-;18040:13;18073:7;18066:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18001:87;:::o;14327:32::-;;;;;;;;;;;;;:::o;18803:269::-;18896:4;18913:129;18922:12;:10;:12::i;:::-;18936:7;18945:96;18984:15;18945:96;;;;;;;;;;;;;;;;;:11;:25;18957:12;:10;:12::i;:::-;18945:25;;;;;;;;;;;;;;;:34;18971:7;18945:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18913:8;:129::i;:::-;19060:4;19053:11;;18803:269;;;;:::o;19856:167::-;19934:4;19951:42;19961:12;:10;:12::i;:::-;19975:9;19986:6;19951:9;:42::i;:::-;;20011:4;20004:11;;19856:167;;;;:::o;29027:193::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29144:7:::1;29117:34;;:17;:23;29135:4;29117:23;;;;;;;;;;;;;;;;;;;;;;;;;:34;;::::0;29109:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29205:7;29179:17;:23;29197:4;29179:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;29027:193:::0;;:::o;15707:30::-;;;;;;;;;;;;;:::o;27655:180::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27746:7:::1;27725:18;;:28;;;;;;;;;;;;;;;;;;27767:2;27764:64;;;27801:15;27786:12;:30;;;;27764:64;27655:180:::0;;:::o;30162:117::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30264:7:::1;30242:12;:19;30255:5;30242:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;30162:117:::0;;:::o;29983:171::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30084:8:::1;30060:21;;:32;;;;;;;;;;;;;;;;;;30108:38;30137:8;30108:38;;;;;;:::i;:::-;;;;;;;;29983:171:::0;:::o;15857:26::-;;;;;;;;;;;;;:::o;14786:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;27517:130::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27609:3:::1;:12;;;27622:9;27632:6;27609:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27517:130:::0;;;:::o;15386:62::-;;;;:::o;14900:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;18426:143::-;18507:7;18534:11;:18;18546:5;18534:18;;;;;;;;;;;;;;;:27;18553:7;18534:27;;;;;;;;;;;;;;;;18527:34;;18426:143;;;;:::o;27301:176::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27354:7:::1;27374:10;27366:24;;27398:21;27366:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27353:71;;;27443:2;27435:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;27341:136;27301:176::o:0;27974:96::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28055:7:::1;28039:13;;:23;;;;;;;;;;;;;;;;;;27974:96:::0;:::o;5833:244::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5942:1:::1;5922:22;;:8;:22;;::::0;5914:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6032:8;6003:38;;6024:6;::::0;::::1;;;;;;;;6003:38;;;;;;;;;;;;6061:8;6052:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5833:244:::0;:::o;31413:93::-;5413:12;:10;:12::i;:::-;5403:22;;:6;;;;;;;;;;:22;;;5395:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31493:5:::1;31479:11;;:19;;;;;;;;;;;;;;;;;;31413:93:::0;:::o;15663:35::-;;;;;;;;;;;;;:::o;1579:250::-;1637:7;1666:1;1661;:6;1657:47;;1691:1;1684:8;;;;1657:47;1716:9;1732:1;1728;:5;;;;:::i;:::-;1716:17;;1761:1;1756;1752;:5;;;;:::i;:::-;:10;1744:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1820:1;1813:8;;;1579:250;;;;;:::o;1837:132::-;1895:7;1922:39;1926:1;1929;1922:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1915:46;;1837:132;;;;:::o;1046:181::-;1104:7;1124:9;1140:1;1136;:5;;;;:::i;:::-;1124:17;;1165:1;1160;:6;;1152:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1218:1;1211:8;;;1046:181;;;;:::o;97:115::-;150:15;193:10;178:26;;97:115;:::o;19249:337::-;19359:1;19342:19;;:5;:19;;;19334:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19440:1;19421:21;;:7;:21;;;19413:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19524:6;19494:11;:18;19506:5;19494:18;;;;;;;;;;;;;;;:27;19513:7;19494:27;;;;;;;;;;;;;;;:36;;;;19562:7;19546:32;;19555:5;19546:32;;;19571:6;19546:32;;;;;;:::i;:::-;;;;;;;;19249:337;;;:::o;20352:2312::-;20439:4;20484:1;20466:20;;:6;:20;;;20458:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;20568:1;20547:23;;:9;:23;;;20539:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;20638:1;20629:6;:10;20621:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20705:11;:19;20717:6;20705:19;;;;;;;;;;;;;;;;;;;;;;;;;20704:20;:47;;;;;20729:11;:22;20741:9;20729:22;;;;;;;;;;;;;;;;;;;;;;;;;20728:23;20704:47;20696:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;20819:18;;;;;;;;;;;:47;;;;20841:13;:25;20855:10;20841:25;;;;;;;;;;;;;;;;;;;;;;;;;20819:47;:60;;;;20870:9;:7;:9::i;:::-;20819:60;20811:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;20969:9;20954:12;;:24;;;;:::i;:::-;20936:15;:42;20935:60;;;;;20984:11;;;;;;;;;;;20983:12;20935:60;:83;;;;;21016:1;21000:12;;:17;;20935:83;20932:193;;;21049:4;21035:11;;:18;;;;;;;;;;;;;;;;;;21082:2;21071:8;:13;;;;21111:2;21099:9;:14;;;;20932:193;21141:11;;;;;;;;;;;21140:12;:41;;;;;21157:13;:24;21171:9;21157:24;;;;;;;;;;;;;;;;;;;;;;;;;21156:25;21140:41;21137:219;;;21209:3;21198:8;:14;;;;21239:3;21227:9;:15;;;;21137:219;;;21274:11;;;;;;;;;;;21269:87;;21313:2;21302:8;:13;;;;21342:2;21330:9;:14;;;;21269:87;21137:219;21387:16;;;;;;;;;;;21384:1273;;;21437:41;21452:6;21460:9;21471:6;21437:14;:41::i;:::-;21430:48;;;;21384:1273;21536:15;:23;21552:6;21536:23;;;;;;;;;;;;;;;;;;;;;;;;;21535:24;:55;;;;;21564:15;:26;21580:9;21564:26;;;;;;;;;;;;;;;;;;;;;;;;;21563:27;21535:55;:72;;;;;21594:13;;;;;;;;;;;21535:72;21532:187;;;21646:12;;21636:6;:22;;21628:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21532:187;21736:28;21767:24;21785:4;21767:9;:24::i;:::-;21736:55;;21806:28;21861:23;;21837:20;:47;;21806:78;;21917:23;:44;;;;;21945:16;;;;;;;;;;;21944:17;21917:44;:69;;;;;21966:12;:20;21979:6;21966:20;;;;;;;;;;;;;;;;;;;;;;;;;21965:21;21917:69;:94;;;;;21990:21;;;;;;;;;;;21917:94;21913:165;;;22046:16;:14;:16::i;:::-;21913:165;22114:53;22136:6;22114:53;;;;;;;;;;;;;;;;;:9;:17;22124:6;22114:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22094:9;:17;22104:6;22094:17;;;;;;;;;;;;;;;:73;;;;22184:19;22206:31;22220:6;22227:9;22206:13;:31::i;:::-;:77;;22249:34;22257:6;22265:9;22276:6;22249:7;:34::i;:::-;22206:77;;;22240:6;22206:77;22184:99;;22303:16;;;;;;;;;;;:51;;;;;22324:19;:30;22344:9;22324:30;;;;;;;;;;;;;;;;;;;;;;;;;22323:31;22303:51;22300:181;;;22424:10;;22383:37;22408:11;22383:20;22393:9;22383;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;22375:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;22300:181;22520:37;22545:11;22520:9;:20;22530:9;22520:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;22497:9;:20;22507:9;22497:20;;;;;;;;;;;;;;;:60;;;;22596:9;22579:40;;22588:6;22579:40;;;22607:11;22579:40;;;;;;:::i;:::-;;;;;;;;22641:4;22634:11;;;;;20352:2312;;;;;;:::o;1379:192::-;1465:7;1498:1;1493;:6;;1501:12;1485:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1525:9;1541:1;1537;:5;;;;:::i;:::-;1525:17;;1562:1;1555:8;;;1379:192;;;;;:::o;1235:136::-;1293:7;1320:43;1324:1;1327;1320:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1313:50;;1235:136;;;;:::o;1977:278::-;2063:7;2095:1;2091;:5;2098:12;2083:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2122:9;2138:1;2134;:5;;;;:::i;:::-;2122:17;;2246:1;2239:8;;;1977:278;;;;;:::o;22672:330::-;22765:4;22802:53;22824:6;22802:53;;;;;;;;;;;;;;;;;:9;:17;22812:6;22802:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22782:9;:17;22792:6;22782:17;;;;;;;;;;;;;;;:73;;;;22889:32;22914:6;22889:9;:20;22899:9;22889:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;22866:9;:20;22876:9;22866:20;;;;;;;;;;;;;;;:55;;;;22954:9;22937:35;;22946:6;22937:35;;;22965:6;22937:35;;;;;;:::i;:::-;;;;;;;;22990:4;22983:11;;22672:330;;;;;:::o;23010:1419::-;16408:4;16389:16;;:23;;;;;;;;;;;;;;;;;;23069::::1;23095:24;23113:4;23095:9;:24::i;:::-;23069:50;;23154:1;23135:15;:20:::0;23132:32:::1;;23157:7;;;23132:32;23176:19;23198:23;23211:9;;23198:8;;:12;;:23;;;;:::i;:::-;23176:45;;23234:23;23260:39;23281:17;;23260:16;;:20;;:39;;;;:::i;:::-;23234:65;;23310:23;23336:39;23357:17;;23336:16;;:20;;:39;;;;:::i;:::-;23310:65;;23388:19;23410:60;23468:1;23410:53;23451:11;23410:36;23430:15;23410;:19;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;23388:82;;23481:21;23505:32;23525:11;23505:15;:19;;:32;;;;:::i;:::-;23481:56;;23550:22;23575:21;23550:46;;23607:31;23624:13;23607:16;:31::i;:::-;23649:22;23674:41;23700:14;23674:21;:25;;:41;;;;:::i;:::-;23649:66;;23728:19;23750:39;23766:22;23786:1;23766:15;:19;;:22;;;;:::i;:::-;23750:11;:15;;:39;;;;:::i;:::-;23728:61;;23810:26;23839:59;23896:1;23839:52;23879:11;23839:35;23858:15;23839:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;23810:88;;23909:26;23938:52;23978:11;23938:35;23957:15;23938:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;23909:81;;24001:24;24028:62;24071:18;24028:38;24047:18;24028:14;:18;;:38;;;;:::i;:::-;:42;;:62;;;;:::i;:::-;24001:89;;24127:1;24106:18;:22;24103:97;;;24143:57;24164:15;;;;;;;;;;;24181:18;24143:20;:57::i;:::-;24103:97;24235:1;24216:16;:20;24213:91;;;24251:53;24272:13;;;;;;;;;;;24287:16;24251:20;:53::i;:::-;24213:91;24341:1;24320:18;:22;:41;;;;;24360:1;24346:11;:15;24320:41;24317:104;;;24376:45;24389:11;24402:18;24376:12;:45::i;:::-;24317:104;23056:1373;;;;;;;;;;;;16423:1;16454:5:::0;16435:16;;:24;;;;;;;;;;;;;;;;;;23010:1419::o;25781:366::-;25862:4;25882:17;:25;25900:6;25882:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;25911:17;:28;25929:9;25911:28;;;;;;;;;;;;;;;;;;;;;;;;;25882:57;25879:261;;;25963:4;25956:11;;;;25879:261;25998:12;:20;26011:6;25998:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;26022:12;:23;26035:9;26022:23;;;;;;;;;;;;;;;;;;;;;;;;;25998:47;25994:146;;;26069:5;26062:12;;;;25994:146;26123:5;26116:12;;25781:366;;;;;:::o;26155:724::-;26241:7;26271:14;26328:12;:20;26341:6;26328:20;;;;;;;;;;;;;;;;;;;;;;;;;26325:275;;;26395:37;26420:11;;26395:20;26406:8;;26395:6;:10;;:20;;;;:::i;:::-;:24;;:37;;;;:::i;:::-;26383:49;;26325:275;;;26470:12;:23;26483:9;26470:23;;;;;;;;;;;;;;;;;;;;;;;;;26467:133;;;26528:38;26554:11;;26528:21;26539:9;;26528:6;:10;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;26516:50;;26467:133;26325:275;26636:1;26624:9;:13;26621:185;;;26685:39;26714:9;26685;:24;26703:4;26685:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;26658:9;:24;26676:4;26658:24;;;;;;;;;;;;;;;:66;;;;26773:4;26748:42;;26757:6;26748:42;;;26780:9;26748:42;;;;;;:::i;:::-;;;;;;;;26621:185;26829:21;26840:9;26829:6;:10;;:21;;;;:::i;:::-;26822:28;;;26155:724;;;;;:::o;24576:666::-;24702:21;24740:1;24726:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24702:40;;24771:4;24753;24758:1;24753:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24797:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24787:4;24792:1;24787:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24832:62;24849:4;24864:15;;;;;;;;;;;24882:11;24832:8;:62::i;:::-;24933:15;;;;;;;;;;;:66;;;25014:11;25040:1;25084:4;25111;25147:15;24933:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25199:35;25216:11;25229:4;25199:35;;;;;;;:::i;:::-;;;;;;;;24631:611;24576:666;:::o;24437:127::-;24529:9;24521:27;;:35;24549:6;24521:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24437:127;;:::o;25250:523::-;25398:62;25415:4;25430:15;;;;;;;;;;;25448:11;25398:8;:62::i;:::-;25503:15;;;;;;;;;;;:31;;;25542:9;25575:4;25595:11;25621:1;25664;25707:17;;;;;;;;;;;25739:15;25503:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25250:523;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:126::-;1386:7;1426:42;1419:5;1415:54;1404:65;;1349:126;;;:::o;1481:96::-;1518:7;1547:24;1565:5;1547:24;:::i;:::-;1536:35;;1481:96;;;:::o;1583:118::-;1670:24;1688:5;1670:24;:::i;:::-;1665:3;1658:37;1583:118;;:::o;1707:222::-;1800:4;1838:2;1827:9;1823:18;1815:26;;1851:71;1919:1;1908:9;1904:17;1895:6;1851:71;:::i;:::-;1707:222;;;;:::o;2016:117::-;2125:1;2122;2115:12;2139:117;2248:1;2245;2238:12;2262:122;2335:24;2353:5;2335:24;:::i;:::-;2328:5;2325:35;2315:63;;2374:1;2371;2364:12;2315:63;2262:122;:::o;2390:139::-;2436:5;2474:6;2461:20;2452:29;;2490:33;2517:5;2490:33;:::i;:::-;2390:139;;;;:::o;2535:77::-;2572:7;2601:5;2590:16;;2535:77;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:468::-;4124:6;4132;4181:2;4169:9;4160:7;4156:23;4152:32;4149:119;;;4187:79;;:::i;:::-;4149:119;4307:1;4332:53;4377:7;4368:6;4357:9;4353:22;4332:53;:::i;:::-;4322:63;;4278:117;4434:2;4460:50;4502:7;4493:6;4482:9;4478:22;4460:50;:::i;:::-;4450:60;;4405:115;4059:468;;;;;:::o;4533:60::-;4561:3;4582:5;4575:12;;4533:60;;;:::o;4599:142::-;4649:9;4682:53;4700:34;4709:24;4727:5;4709:24;:::i;:::-;4700:34;:::i;:::-;4682:53;:::i;:::-;4669:66;;4599:142;;;:::o;4747:126::-;4797:9;4830:37;4861:5;4830:37;:::i;:::-;4817:50;;4747:126;;;:::o;4879:153::-;4956:9;4989:37;5020:5;4989:37;:::i;:::-;4976:50;;4879:153;;;:::o;5038:185::-;5152:64;5210:5;5152:64;:::i;:::-;5147:3;5140:77;5038:185;;:::o;5229:276::-;5349:4;5387:2;5376:9;5372:18;5364:26;;5400:98;5495:1;5484:9;5480:17;5471:6;5400:98;:::i;:::-;5229:276;;;;:::o;5511:118::-;5598:24;5616:5;5598:24;:::i;:::-;5593:3;5586:37;5511:118;;:::o;5635:222::-;5728:4;5766:2;5755:9;5751:18;5743:26;;5779:71;5847:1;5836:9;5832:17;5823:6;5779:71;:::i;:::-;5635:222;;;;:::o;5863:619::-;5940:6;5948;5956;6005:2;5993:9;5984:7;5980:23;5976:32;5973:119;;;6011:79;;:::i;:::-;5973:119;6131:1;6156:53;6201:7;6192:6;6181:9;6177:22;6156:53;:::i;:::-;6146:63;;6102:117;6258:2;6284:53;6329:7;6320:6;6309:9;6305:22;6284:53;:::i;:::-;6274:63;;6229:118;6386:2;6412:53;6457:7;6448:6;6437:9;6433:22;6412:53;:::i;:::-;6402:63;;6357:118;5863:619;;;;;:::o;6488:::-;6565:6;6573;6581;6630:2;6618:9;6609:7;6605:23;6601:32;6598:119;;;6636:79;;:::i;:::-;6598:119;6756:1;6781:53;6826:7;6817:6;6806:9;6802:22;6781:53;:::i;:::-;6771:63;;6727:117;6883:2;6909:53;6954:7;6945:6;6934:9;6930:22;6909:53;:::i;:::-;6899:63;;6854:118;7011:2;7037:53;7082:7;7073:6;7062:9;7058:22;7037:53;:::i;:::-;7027:63;;6982:118;6488:619;;;;;:::o;7113:86::-;7148:7;7188:4;7181:5;7177:16;7166:27;;7113:86;;;:::o;7205:112::-;7288:22;7304:5;7288:22;:::i;:::-;7283:3;7276:35;7205:112;;:::o;7323:214::-;7412:4;7450:2;7439:9;7435:18;7427:26;;7463:67;7527:1;7516:9;7512:17;7503:6;7463:67;:::i;:::-;7323:214;;;;:::o;7543:329::-;7602:6;7651:2;7639:9;7630:7;7626:23;7622:32;7619:119;;;7657:79;;:::i;:::-;7619:119;7777:1;7802:53;7847:7;7838:6;7827:9;7823:22;7802:53;:::i;:::-;7792:63;;7748:117;7543:329;;;;:::o;7878:::-;7937:6;7986:2;7974:9;7965:7;7961:23;7957:32;7954:119;;;7992:79;;:::i;:::-;7954:119;8112:1;8137:53;8182:7;8173:6;8162:9;8158:22;8137:53;:::i;:::-;8127:63;;8083:117;7878:329;;;;:::o;8213:323::-;8269:6;8318:2;8306:9;8297:7;8293:23;8289:32;8286:119;;;8324:79;;:::i;:::-;8286:119;8444:1;8469:50;8511:7;8502:6;8491:9;8487:22;8469:50;:::i;:::-;8459:60;;8415:114;8213:323;;;;:::o;8542:619::-;8619:6;8627;8635;8684:2;8672:9;8663:7;8659:23;8655:32;8652:119;;;8690:79;;:::i;:::-;8652:119;8810:1;8835:53;8880:7;8871:6;8860:9;8856:22;8835:53;:::i;:::-;8825:63;;8781:117;8937:2;8963:53;9008:7;8999:6;8988:9;8984:22;8963:53;:::i;:::-;8953:63;;8908:118;9065:2;9091:53;9136:7;9127:6;9116:9;9112:22;9091:53;:::i;:::-;9081:63;;9036:118;8542:619;;;;;:::o;9167:117::-;9276:1;9273;9266:12;9290:117;9399:1;9396;9389:12;9413:117;9522:1;9519;9512:12;9553:568;9626:8;9636:6;9686:3;9679:4;9671:6;9667:17;9663:27;9653:122;;9694:79;;:::i;:::-;9653:122;9807:6;9794:20;9784:30;;9837:18;9829:6;9826:30;9823:117;;;9859:79;;:::i;:::-;9823:117;9973:4;9965:6;9961:17;9949:29;;10027:3;10019:4;10011:6;10007:17;9997:8;9993:32;9990:41;9987:128;;;10034:79;;:::i;:::-;9987:128;9553:568;;;;;:::o;10127:559::-;10213:6;10221;10270:2;10258:9;10249:7;10245:23;10241:32;10238:119;;;10276:79;;:::i;:::-;10238:119;10424:1;10413:9;10409:17;10396:31;10454:18;10446:6;10443:30;10440:117;;;10476:79;;:::i;:::-;10440:117;10589:80;10661:7;10652:6;10641:9;10637:22;10589:80;:::i;:::-;10571:98;;;;10367:312;10127:559;;;;;:::o;10692:462::-;10754:6;10762;10811:2;10799:9;10790:7;10786:23;10782:32;10779:119;;;10817:79;;:::i;:::-;10779:119;10937:1;10962:50;11004:7;10995:6;10984:9;10980:22;10962:50;:::i;:::-;10952:60;;10908:114;11061:2;11087:50;11129:7;11120:6;11109:9;11105:22;11087:50;:::i;:::-;11077:60;;11032:115;10692:462;;;;;:::o;11160:109::-;11210:7;11239:24;11257:5;11239:24;:::i;:::-;11228:35;;11160:109;;;:::o;11275:148::-;11361:37;11392:5;11361:37;:::i;:::-;11354:5;11351:48;11341:76;;11413:1;11410;11403:12;11341:76;11275:148;:::o;11429:165::-;11488:5;11526:6;11513:20;11504:29;;11542:46;11582:5;11542:46;:::i;:::-;11429:165;;;;:::o;11600:645::-;11690:6;11698;11706;11755:2;11743:9;11734:7;11730:23;11726:32;11723:119;;;11761:79;;:::i;:::-;11723:119;11881:1;11906:66;11964:7;11955:6;11944:9;11940:22;11906:66;:::i;:::-;11896:76;;11852:130;12021:2;12047:53;12092:7;12083:6;12072:9;12068:22;12047:53;:::i;:::-;12037:63;;11992:118;12149:2;12175:53;12220:7;12211:6;12200:9;12196:22;12175:53;:::i;:::-;12165:63;;12120:118;11600:645;;;;;:::o;12251:474::-;12319:6;12327;12376:2;12364:9;12355:7;12351:23;12347:32;12344:119;;;12382:79;;:::i;:::-;12344:119;12502:1;12527:53;12572:7;12563:6;12552:9;12548:22;12527:53;:::i;:::-;12517:63;;12473:117;12629:2;12655:53;12700:7;12691:6;12680:9;12676:22;12655:53;:::i;:::-;12645:63;;12600:118;12251:474;;;;;:::o;12731:180::-;12779:77;12776:1;12769:88;12876:4;12873:1;12866:15;12900:4;12897:1;12890:15;12917:320;12961:6;12998:1;12992:4;12988:12;12978:22;;13045:1;13039:4;13035:12;13066:18;13056:81;;13122:4;13114:6;13110:17;13100:27;;13056:81;13184:2;13176:6;13173:14;13153:18;13150:38;13147:84;;13203:18;;:::i;:::-;13147:84;12968:269;12917:320;;;:::o;13243:182::-;13383:34;13379:1;13371:6;13367:14;13360:58;13243:182;:::o;13431:366::-;13573:3;13594:67;13658:2;13653:3;13594:67;:::i;:::-;13587:74;;13670:93;13759:3;13670:93;:::i;:::-;13788:2;13783:3;13779:12;13772:19;;13431:366;;;:::o;13803:419::-;13969:4;14007:2;13996:9;13992:18;13984:26;;14056:9;14050:4;14046:20;14042:1;14031:9;14027:17;14020:47;14084:131;14210:4;14084:131;:::i;:::-;14076:139;;13803:419;;;:::o;14228:163::-;14368:15;14364:1;14356:6;14352:14;14345:39;14228:163;:::o;14397:366::-;14539:3;14560:67;14624:2;14619:3;14560:67;:::i;:::-;14553:74;;14636:93;14725:3;14636:93;:::i;:::-;14754:2;14749:3;14745:12;14738:19;;14397:366;;;:::o;14769:419::-;14935:4;14973:2;14962:9;14958:18;14950:26;;15022:9;15016:4;15012:20;15008:1;14997:9;14993:17;14986:47;15050:131;15176:4;15050:131;:::i;:::-;15042:139;;14769:419;;;:::o;15194:143::-;15251:5;15282:6;15276:13;15267:22;;15298:33;15325:5;15298:33;:::i;:::-;15194:143;;;;:::o;15343:351::-;15413:6;15462:2;15450:9;15441:7;15437:23;15433:32;15430:119;;;15468:79;;:::i;:::-;15430:119;15588:1;15613:64;15669:7;15660:6;15649:9;15645:22;15613:64;:::i;:::-;15603:74;;15559:128;15343:351;;;;:::o;15700:332::-;15821:4;15859:2;15848:9;15844:18;15836:26;;15872:71;15940:1;15929:9;15925:17;15916:6;15872:71;:::i;:::-;15953:72;16021:2;16010:9;16006:18;15997:6;15953:72;:::i;:::-;15700:332;;;;;:::o;16038:180::-;16086:77;16083:1;16076:88;16183:4;16180:1;16173:15;16207:4;16204:1;16197:15;16224:180;16272:77;16269:1;16262:88;16369:4;16366:1;16359:15;16393:4;16390:1;16383:15;16410:233;16449:3;16472:24;16490:5;16472:24;:::i;:::-;16463:33;;16518:66;16511:5;16508:77;16505:103;;16588:18;;:::i;:::-;16505:103;16635:1;16628:5;16624:13;16617:20;;16410:233;;;:::o;16649:332::-;16770:4;16808:2;16797:9;16793:18;16785:26;;16821:71;16889:1;16878:9;16874:17;16865:6;16821:71;:::i;:::-;16902:72;16970:2;16959:9;16955:18;16946:6;16902:72;:::i;:::-;16649:332;;;;;:::o;16987:137::-;17041:5;17072:6;17066:13;17057:22;;17088:30;17112:5;17088:30;:::i;:::-;16987:137;;;;:::o;17130:345::-;17197:6;17246:2;17234:9;17225:7;17221:23;17217:32;17214:119;;;17252:79;;:::i;:::-;17214:119;17372:1;17397:61;17450:7;17441:6;17430:9;17426:22;17397:61;:::i;:::-;17387:71;;17343:125;17130:345;;;;:::o;17481:147::-;17582:11;17619:3;17604:18;;17481:147;;;;:::o;17634:114::-;;:::o;17754:398::-;17913:3;17934:83;18015:1;18010:3;17934:83;:::i;:::-;17927:90;;18026:93;18115:3;18026:93;:::i;:::-;18144:1;18139:3;18135:11;18128:18;;17754:398;;;:::o;18158:379::-;18342:3;18364:147;18507:3;18364:147;:::i;:::-;18357:154;;18528:3;18521:10;;18158:379;;;:::o;18543:170::-;18683:22;18679:1;18671:6;18667:14;18660:46;18543:170;:::o;18719:366::-;18861:3;18882:67;18946:2;18941:3;18882:67;:::i;:::-;18875:74;;18958:93;19047:3;18958:93;:::i;:::-;19076:2;19071:3;19067:12;19060:19;;18719:366;;;:::o;19091:419::-;19257:4;19295:2;19284:9;19280:18;19272:26;;19344:9;19338:4;19334:20;19330:1;19319:9;19315:17;19308:47;19372:131;19498:4;19372:131;:::i;:::-;19364:139;;19091:419;;;:::o;19516:225::-;19656:34;19652:1;19644:6;19640:14;19633:58;19725:8;19720:2;19712:6;19708:15;19701:33;19516:225;:::o;19747:366::-;19889:3;19910:67;19974:2;19969:3;19910:67;:::i;:::-;19903:74;;19986:93;20075:3;19986:93;:::i;:::-;20104:2;20099:3;20095:12;20088:19;;19747:366;;;:::o;20119:419::-;20285:4;20323:2;20312:9;20308:18;20300:26;;20372:9;20366:4;20362:20;20358:1;20347:9;20343:17;20336:47;20400:131;20526:4;20400:131;:::i;:::-;20392:139;;20119:419;;;:::o;20544:410::-;20584:7;20607:20;20625:1;20607:20;:::i;:::-;20602:25;;20641:20;20659:1;20641:20;:::i;:::-;20636:25;;20696:1;20693;20689:9;20718:30;20736:11;20718:30;:::i;:::-;20707:41;;20897:1;20888:7;20884:15;20881:1;20878:22;20858:1;20851:9;20831:83;20808:139;;20927:18;;:::i;:::-;20808:139;20592:362;20544:410;;;;:::o;20960:180::-;21008:77;21005:1;20998:88;21105:4;21102:1;21095:15;21129:4;21126:1;21119:15;21146:185;21186:1;21203:20;21221:1;21203:20;:::i;:::-;21198:25;;21237:20;21255:1;21237:20;:::i;:::-;21232:25;;21276:1;21266:35;;21281:18;;:::i;:::-;21266:35;21323:1;21320;21316:9;21311:14;;21146:185;;;;:::o;21337:220::-;21477:34;21473:1;21465:6;21461:14;21454:58;21546:3;21541:2;21533:6;21529:15;21522:28;21337:220;:::o;21563:366::-;21705:3;21726:67;21790:2;21785:3;21726:67;:::i;:::-;21719:74;;21802:93;21891:3;21802:93;:::i;:::-;21920:2;21915:3;21911:12;21904:19;;21563:366;;;:::o;21935:419::-;22101:4;22139:2;22128:9;22124:18;22116:26;;22188:9;22182:4;22178:20;22174:1;22163:9;22159:17;22152:47;22216:131;22342:4;22216:131;:::i;:::-;22208:139;;21935:419;;;:::o;22360:191::-;22400:3;22419:20;22437:1;22419:20;:::i;:::-;22414:25;;22453:20;22471:1;22453:20;:::i;:::-;22448:25;;22496:1;22493;22489:9;22482:16;;22517:3;22514:1;22511:10;22508:36;;;22524:18;;:::i;:::-;22508:36;22360:191;;;;:::o;22557:177::-;22697:29;22693:1;22685:6;22681:14;22674:53;22557:177;:::o;22740:366::-;22882:3;22903:67;22967:2;22962:3;22903:67;:::i;:::-;22896:74;;22979:93;23068:3;22979:93;:::i;:::-;23097:2;23092:3;23088:12;23081:19;;22740:366;;;:::o;23112:419::-;23278:4;23316:2;23305:9;23301:18;23293:26;;23365:9;23359:4;23355:20;23351:1;23340:9;23336:17;23329:47;23393:131;23519:4;23393:131;:::i;:::-;23385:139;;23112:419;;;:::o;23537:223::-;23677:34;23673:1;23665:6;23661:14;23654:58;23746:6;23741:2;23733:6;23729:15;23722:31;23537:223;:::o;23766:366::-;23908:3;23929:67;23993:2;23988:3;23929:67;:::i;:::-;23922:74;;24005:93;24094:3;24005:93;:::i;:::-;24123:2;24118:3;24114:12;24107:19;;23766:366;;;:::o;24138:419::-;24304:4;24342:2;24331:9;24327:18;24319:26;;24391:9;24385:4;24381:20;24377:1;24366:9;24362:17;24355:47;24419:131;24545:4;24419:131;:::i;:::-;24411:139;;24138:419;;;:::o;24563:221::-;24703:34;24699:1;24691:6;24687:14;24680:58;24772:4;24767:2;24759:6;24755:15;24748:29;24563:221;:::o;24790:366::-;24932:3;24953:67;25017:2;25012:3;24953:67;:::i;:::-;24946:74;;25029:93;25118:3;25029:93;:::i;:::-;25147:2;25142:3;25138:12;25131:19;;24790:366;;;:::o;25162:419::-;25328:4;25366:2;25355:9;25351:18;25343:26;;25415:9;25409:4;25405:20;25401:1;25390:9;25386:17;25379:47;25443:131;25569:4;25443:131;:::i;:::-;25435:139;;25162:419;;;:::o;25587:224::-;25727:34;25723:1;25715:6;25711:14;25704:58;25796:7;25791:2;25783:6;25779:15;25772:32;25587:224;:::o;25817:366::-;25959:3;25980:67;26044:2;26039:3;25980:67;:::i;:::-;25973:74;;26056:93;26145:3;26056:93;:::i;:::-;26174:2;26169:3;26165:12;26158:19;;25817:366;;;:::o;26189:419::-;26355:4;26393:2;26382:9;26378:18;26370:26;;26442:9;26436:4;26432:20;26428:1;26417:9;26413:17;26406:47;26470:131;26596:4;26470:131;:::i;:::-;26462:139;;26189:419;;;:::o;26614:222::-;26754:34;26750:1;26742:6;26738:14;26731:58;26823:5;26818:2;26810:6;26806:15;26799:30;26614:222;:::o;26842:366::-;26984:3;27005:67;27069:2;27064:3;27005:67;:::i;:::-;26998:74;;27081:93;27170:3;27081:93;:::i;:::-;27199:2;27194:3;27190:12;27183:19;;26842:366;;;:::o;27214:419::-;27380:4;27418:2;27407:9;27403:18;27395:26;;27467:9;27461:4;27457:20;27453:1;27442:9;27438:17;27431:47;27495:131;27621:4;27495:131;:::i;:::-;27487:139;;27214:419;;;:::o;27639:228::-;27779:34;27775:1;27767:6;27763:14;27756:58;27848:11;27843:2;27835:6;27831:15;27824:36;27639:228;:::o;27873:366::-;28015:3;28036:67;28100:2;28095:3;28036:67;:::i;:::-;28029:74;;28112:93;28201:3;28112:93;:::i;:::-;28230:2;28225:3;28221:12;28214:19;;27873:366;;;:::o;28245:419::-;28411:4;28449:2;28438:9;28434:18;28426:26;;28498:9;28492:4;28488:20;28484:1;28473:9;28469:17;28462:47;28526:131;28652:4;28526:131;:::i;:::-;28518:139;;28245:419;;;:::o;28670:232::-;28810:34;28806:1;28798:6;28794:14;28787:58;28879:15;28874:2;28866:6;28862:15;28855:40;28670:232;:::o;28908:366::-;29050:3;29071:67;29135:2;29130:3;29071:67;:::i;:::-;29064:74;;29147:93;29236:3;29147:93;:::i;:::-;29265:2;29260:3;29256:12;29249:19;;28908:366;;;:::o;29280:419::-;29446:4;29484:2;29473:9;29469:18;29461:26;;29533:9;29527:4;29523:20;29519:1;29508:9;29504:17;29497:47;29561:131;29687:4;29561:131;:::i;:::-;29553:139;;29280:419;;;:::o;29705:177::-;29845:29;29841:1;29833:6;29829:14;29822:53;29705:177;:::o;29888:366::-;30030:3;30051:67;30115:2;30110:3;30051:67;:::i;:::-;30044:74;;30127:93;30216:3;30127:93;:::i;:::-;30245:2;30240:3;30236:12;30229:19;;29888:366;;;:::o;30260:419::-;30426:4;30464:2;30453:9;30449:18;30441:26;;30513:9;30507:4;30503:20;30499:1;30488:9;30484:17;30477:47;30541:131;30667:4;30541:131;:::i;:::-;30533:139;;30260:419;;;:::o;30685:227::-;30825:34;30821:1;30813:6;30809:14;30802:58;30894:10;30889:2;30881:6;30877:15;30870:35;30685:227;:::o;30918:366::-;31060:3;31081:67;31145:2;31140:3;31081:67;:::i;:::-;31074:74;;31157:93;31246:3;31157:93;:::i;:::-;31275:2;31270:3;31266:12;31259:19;;30918:366;;;:::o;31290:419::-;31456:4;31494:2;31483:9;31479:18;31471:26;;31543:9;31537:4;31533:20;31529:1;31518:9;31514:17;31507:47;31571:131;31697:4;31571:131;:::i;:::-;31563:139;;31290:419;;;:::o;31715:177::-;31855:29;31851:1;31843:6;31839:14;31832:53;31715:177;:::o;31898:366::-;32040:3;32061:67;32125:2;32120:3;32061:67;:::i;:::-;32054:74;;32137:93;32226:3;32137:93;:::i;:::-;32255:2;32250:3;32246:12;32239:19;;31898:366;;;:::o;32270:419::-;32436:4;32474:2;32463:9;32459:18;32451:26;;32523:9;32517:4;32513:20;32509:1;32498:9;32494:17;32487:47;32551:131;32677:4;32551:131;:::i;:::-;32543:139;;32270:419;;;:::o;32695:194::-;32735:4;32755:20;32773:1;32755:20;:::i;:::-;32750:25;;32789:20;32807:1;32789:20;:::i;:::-;32784:25;;32833:1;32830;32826:9;32818:17;;32857:1;32851:4;32848:11;32845:37;;;32862:18;;:::i;:::-;32845:37;32695:194;;;;:::o;32895:180::-;32943:77;32940:1;32933:88;33040:4;33037:1;33030:15;33064:4;33061:1;33054:15;33081:85;33126:7;33155:5;33144:16;;33081:85;;;:::o;33172:158::-;33230:9;33263:61;33281:42;33290:32;33316:5;33290:32;:::i;:::-;33281:42;:::i;:::-;33263:61;:::i;:::-;33250:74;;33172:158;;;:::o;33336:147::-;33431:45;33470:5;33431:45;:::i;:::-;33426:3;33419:58;33336:147;;:::o;33489:114::-;33556:6;33590:5;33584:12;33574:22;;33489:114;;;:::o;33609:184::-;33708:11;33742:6;33737:3;33730:19;33782:4;33777:3;33773:14;33758:29;;33609:184;;;;:::o;33799:132::-;33866:4;33889:3;33881:11;;33919:4;33914:3;33910:14;33902:22;;33799:132;;;:::o;33937:108::-;34014:24;34032:5;34014:24;:::i;:::-;34009:3;34002:37;33937:108;;:::o;34051:179::-;34120:10;34141:46;34183:3;34175:6;34141:46;:::i;:::-;34219:4;34214:3;34210:14;34196:28;;34051:179;;;;:::o;34236:113::-;34306:4;34338;34333:3;34329:14;34321:22;;34236:113;;;:::o;34385:732::-;34504:3;34533:54;34581:5;34533:54;:::i;:::-;34603:86;34682:6;34677:3;34603:86;:::i;:::-;34596:93;;34713:56;34763:5;34713:56;:::i;:::-;34792:7;34823:1;34808:284;34833:6;34830:1;34827:13;34808:284;;;34909:6;34903:13;34936:63;34995:3;34980:13;34936:63;:::i;:::-;34929:70;;35022:60;35075:6;35022:60;:::i;:::-;35012:70;;34868:224;34855:1;34852;34848:9;34843:14;;34808:284;;;34812:14;35108:3;35101:10;;34509:608;;;34385:732;;;;:::o;35123:831::-;35386:4;35424:3;35413:9;35409:19;35401:27;;35438:71;35506:1;35495:9;35491:17;35482:6;35438:71;:::i;:::-;35519:80;35595:2;35584:9;35580:18;35571:6;35519:80;:::i;:::-;35646:9;35640:4;35636:20;35631:2;35620:9;35616:18;35609:48;35674:108;35777:4;35768:6;35674:108;:::i;:::-;35666:116;;35792:72;35860:2;35849:9;35845:18;35836:6;35792:72;:::i;:::-;35874:73;35942:3;35931:9;35927:19;35918:6;35874:73;:::i;:::-;35123:831;;;;;;;;:::o;35960:483::-;36131:4;36169:2;36158:9;36154:18;36146:26;;36182:71;36250:1;36239:9;36235:17;36226:6;36182:71;:::i;:::-;36300:9;36294:4;36290:20;36285:2;36274:9;36270:18;36263:48;36328:108;36431:4;36422:6;36328:108;:::i;:::-;36320:116;;35960:483;;;;;:::o;36449:807::-;36698:4;36736:3;36725:9;36721:19;36713:27;;36750:71;36818:1;36807:9;36803:17;36794:6;36750:71;:::i;:::-;36831:72;36899:2;36888:9;36884:18;36875:6;36831:72;:::i;:::-;36913:80;36989:2;36978:9;36974:18;36965:6;36913:80;:::i;:::-;37003;37079:2;37068:9;37064:18;37055:6;37003:80;:::i;:::-;37093:73;37161:3;37150:9;37146:19;37137:6;37093:73;:::i;:::-;37176;37244:3;37233:9;37229:19;37220:6;37176:73;:::i;:::-;36449:807;;;;;;;;;:::o;37262:143::-;37319:5;37350:6;37344:13;37335:22;;37366:33;37393:5;37366:33;:::i;:::-;37262:143;;;;:::o;37411:663::-;37499:6;37507;37515;37564:2;37552:9;37543:7;37539:23;37535:32;37532:119;;;37570:79;;:::i;:::-;37532:119;37690:1;37715:64;37771:7;37762:6;37751:9;37747:22;37715:64;:::i;:::-;37705:74;;37661:128;37828:2;37854:64;37910:7;37901:6;37890:9;37886:22;37854:64;:::i;:::-;37844:74;;37799:129;37967:2;37993:64;38049:7;38040:6;38029:9;38025:22;37993:64;:::i;:::-;37983:74;;37938:129;37411:663;;;;;:::o

Swarm Source

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