ETH Price: $2,081.62 (-11.44%)

Token

Necromancy (NET)
 

Overview

Max Total Supply

1,000,000,000,000 NET

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
104,431,615.464776642 NET

Value
$0.00
0x167b1458F3f4539BdDDc172654616f82308B776F
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:
NETtoken

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-09-22
*/

// SPDX-License-Identifier: Unlicensed

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; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


interface IERC20 {

    function totalSupply() external view returns (uint256);
    function 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) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        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");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (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;
    address private _previousOwner;
    uint256 private _lockTime;

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

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

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

// pragma solidity >=0.5.0;

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;
}


// pragma solidity >=0.5.0;

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;
}

// pragma solidity >=0.6.2;

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);
}



// pragma solidity >=0.6.2;

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 NETtoken is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    
    address payable public marketingAddress = payable(0x6CA262b6Fd7d59cfa98E81a0B502A013663bbb78); // Marketing Address
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isSniper;
    address[] private _confirmedSnipers;

    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1000000000000* 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "Necromancy";
    string private _symbol = "NET";
    uint8 private _decimals = 9;


    uint256 public _taxFee;
    uint256 private _previousTaxFee = _taxFee;
    
    uint256 public _liquidityFee;
    uint256 private _previousLiquidityFee = _liquidityFee;
    
    uint256 private _feeRate = 2;
    uint256 launchTime;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool inSwapAndLiquify;
    
    bool tradingOpen = false;
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    

    constructor () {
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    
    function initContract() external onlyOwner() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        
        
        marketingAddress = payable(0x6CA262b6Fd7d59cfa98E81a0B502A013663bbb78);
    }
    
    function openTrading() external onlyOwner() {
        _liquidityFee=7;
        _taxFee=3;
        tradingOpen = true;
        launchTime = block.timestamp;
    }

    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 _tTotal;
    }

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

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

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, 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 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 isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }
    
  
    
    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }
  

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromReward(address account) public onlyOwner() {

        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    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 _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isSniper[to], "You have no power here!");
        require(!_isSniper[msg.sender], "You have no power here!");

       
        // buy
        if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
            require(tradingOpen, "Trading not yet enabled.");
            
            //antibot
            if (block.timestamp == launchTime) {
                _isSniper[to] = true;
                _confirmedSnipers.push(to);
            }
        }


        uint256 contractTokenBalance = balanceOf(address(this));
        
        //sell
       
         
        if (!inSwapAndLiquify && tradingOpen && to == uniswapV2Pair) {
            if(contractTokenBalance > 0) {
                if(contractTokenBalance > balanceOf(uniswapV2Pair).mul(_feeRate).div(100)) {
                    contractTokenBalance = balanceOf(uniswapV2Pair).mul(_feeRate).div(100);
                }
                swapTokens(contractTokenBalance);    
            }
          
        }
        
        bool takeFee = false;
        
        //take fee only on swaps
        if ( (from==uniswapV2Pair || to==uniswapV2Pair) && !(_isExcludedFromFee[from] || _isExcludedFromFee[to]) ) {
            takeFee = true;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
    }

    function swapTokens(uint256 contractTokenBalance) private lockTheSwap {
        swapTokensForEth(contractTokenBalance);
        
        //Send to Marketing address
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            sendETHToFee(address(this).balance);
        }
    }
    
    function sendETHToFee(uint256 amount) private {
        marketingAddress.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
            owner(),
            block.timestamp
        );
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }
    
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(
            10**2
        );
    }
    
    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(
            10**2
        );
    }
    
    function removeAllFee() private {
        if(_taxFee == 0 && _liquidityFee == 0) return;
        
        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;
        
        _taxFee = 0;
        _liquidityFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }
    
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
        _taxFee = taxFee;
    }
    
    function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() {
        _liquidityFee = liquidityFee;
    }
    
    
    function setMarketingAddress(address _marketingAddress) external onlyOwner() {
        marketingAddress = payable(_marketingAddress);
    }
   
    
    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function isRemovedSniper(address account) public view returns (bool) {
        return _isSniper[account];
    }
    
    function _removeSniper(address account) external onlyOwner() {
        require(account != 0x10ED43C718714eb63d5aA57B78B54704E256024E, 'We can not blacklist Uniswap');
        require(!_isSniper[account], "Account is already blacklisted");
        _isSniper[account] = true;
        _confirmedSnipers.push(account);
    }

    function _amnestySniper(address account) external onlyOwner() {
        require(_isSniper[account], "Account is not blacklisted");
        for (uint256 i = 0; i < _confirmedSnipers.length; i++) {
            if (_confirmedSnipers[i] == account) {
                _confirmedSnipers[i] = _confirmedSnipers[_confirmedSnipers.length - 1];
                _isSniper[account] = false;
                _confirmedSnipers.pop();
                break;
            }
        }
    }

    
    
     function setFeeRate(uint256 rate) external  onlyOwner() {
        _feeRate = rate;
    }

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

Contract Security Audit

Contract ABI

API
[{"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":"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":[{"internalType":"address","name":"account","type":"address"}],"name":"_amnestySniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"_removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_taxFee","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":[],"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":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isRemovedSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052736ca262b6fd7d59cfa98e81a0b502a013663bbb78600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250683635c9adc5dea00000600c55600c54600019620000b0919062000499565b600019620000bf91906200041e565b600d556040518060400160405280600a81526020017f4e6563726f6d616e637900000000000000000000000000000000000000000000815250600f90805190602001906200010f92919062000340565b506040518060400160405280600381526020017f4e45540000000000000000000000000000000000000000000000000000000000815250601090805190602001906200015d92919062000340565b506009601160006101000a81548160ff021916908360ff16021790555060125460135560145460155560026016556000601960156101000a81548160ff021916908315150217905550348015620001b357600080fd5b506000620001c66200033860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600d54600460006200027b6200033860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002c96200033860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c546040516200032a919062000401565b60405180910390a36200055e565b600033905090565b8280546200034e9062000463565b90600052602060002090601f016020900481019282620003725760008555620003be565b82601f106200038d57805160ff1916838001178555620003be565b82800160010185558215620003be579182015b82811115620003bd578251825591602001919060010190620003a0565b5b509050620003cd9190620003d1565b5090565b5b80821115620003ec576000816000905550600101620003d2565b5090565b620003fb8162000459565b82525050565b6000602082019050620004186000830184620003f0565b92915050565b60006200042b8262000459565b9150620004388362000459565b9250828210156200044e576200044d620004d1565b5b828203905092915050565b6000819050919050565b600060028204905060018216806200047c57607f821691505b602082108114156200049357620004926200052f565b5b50919050565b6000620004a68262000459565b9150620004b38362000459565b925082620004c657620004c562000500565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60805160601c615f436200057d6000396000610bb50152615f436000f3fe6080604052600436106102345760003560e01c806352390c021161012e578063906e9dd0116100ab578063c9567bf91161006f578063c9567bf914610882578063dd62ed3e14610899578063ea2f0b37146108d6578063f2fde38b146108ff578063f375b253146109285761023b565b8063906e9dd01461078957806395d89b41146107b2578063a457c2d7146107dd578063a5ece9411461081a578063a9059cbb146108455761023b565b8063715018a6116100f2578063715018a6146106ca5780638203f5fe146106e157806388f82020146106f85780638da5cb5b146107355780638ee88c53146107605761023b565b806352390c02146105bf5780635342acb4146105e8578063610d5b19146106255780636bc87c3a1461066257806370a082311461068d5761023b565b8063313ce567116101bc5780633bd5d173116101805780633bd5d173146104dc578063437823ec146105055780634549b0391461052e57806345596e2e1461056b57806349bd5a5e146105945761023b565b8063313ce567146103f7578063362a3c5d146104225780633685d4191461044b57806339509351146104745780633b124fe7146104b15761023b565b80631694505e116102035780631694505e146102fc57806318160ddd1461032757806323b872dd1461035257806327c8f8351461038f5780632d838119146103ba5761023b565b8063061c82d01461024057806306fdde0314610269578063095ea7b31461029457806313114a9d146102d15761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061026760048036038101906102629190614f37565b610951565b005b34801561027557600080fd5b5061027e6109f0565b60405161028b91906153ce565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b69190614efb565b610a82565b6040516102c89190615398565b60405180910390f35b3480156102dd57600080fd5b506102e6610aa0565b6040516102f39190615630565b60405180910390f35b34801561030857600080fd5b50610311610aaa565b60405161031e91906153b3565b60405180910390f35b34801561033357600080fd5b5061033c610ad0565b6040516103499190615630565b60405180910390f35b34801561035e57600080fd5b5061037960048036038101906103749190614eac565b610ada565b6040516103869190615398565b60405180910390f35b34801561039b57600080fd5b506103a4610bb3565b6040516103b19190615339565b60405180910390f35b3480156103c657600080fd5b506103e160048036038101906103dc9190614f37565b610bd7565b6040516103ee9190615630565b60405180910390f35b34801561040357600080fd5b5061040c610c45565b60405161041991906156d5565b60405180910390f35b34801561042e57600080fd5b5061044960048036038101906104449190614e1e565b610c5c565b005b34801561045757600080fd5b50610472600480360381019061046d9190614e1e565b610ffe565b005b34801561048057600080fd5b5061049b60048036038101906104969190614efb565b6113e5565b6040516104a89190615398565b60405180910390f35b3480156104bd57600080fd5b506104c6611498565b6040516104d39190615630565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe9190614f37565b61149e565b005b34801561051157600080fd5b5061052c60048036038101906105279190614e1e565b611619565b005b34801561053a57600080fd5b5061055560048036038101906105509190614f60565b611709565b6040516105629190615630565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d9190614f37565b61178d565b005b3480156105a057600080fd5b506105a961182c565b6040516105b69190615339565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e19190614e1e565b611852565b005b3480156105f457600080fd5b5061060f600480360381019061060a9190614e1e565b611b06565b60405161061c9190615398565b60405180910390f35b34801561063157600080fd5b5061064c60048036038101906106479190614e1e565b611b5c565b6040516106599190615398565b60405180910390f35b34801561066e57600080fd5b50610677611bb2565b6040516106849190615630565b60405180910390f35b34801561069957600080fd5b506106b460048036038101906106af9190614e1e565b611bb8565b6040516106c19190615630565b60405180910390f35b3480156106d657600080fd5b506106df611ca3565b005b3480156106ed57600080fd5b506106f6611df6565b005b34801561070457600080fd5b5061071f600480360381019061071a9190614e1e565b6121bb565b60405161072c9190615398565b60405180910390f35b34801561074157600080fd5b5061074a612211565b6040516107579190615339565b60405180910390f35b34801561076c57600080fd5b5061078760048036038101906107829190614f37565b61223a565b005b34801561079557600080fd5b506107b060048036038101906107ab9190614e1e565b6122d9565b005b3480156107be57600080fd5b506107c76123b2565b6040516107d491906153ce565b60405180910390f35b3480156107e957600080fd5b5061080460048036038101906107ff9190614efb565b612444565b6040516108119190615398565b60405180910390f35b34801561082657600080fd5b5061082f612511565b60405161083c9190615354565b60405180910390f35b34801561085157600080fd5b5061086c60048036038101906108679190614efb565b612537565b6040516108799190615398565b60405180910390f35b34801561088e57600080fd5b50610897612555565b005b3480156108a557600080fd5b506108c060048036038101906108bb9190614e70565b61261e565b6040516108cd9190615630565b60405180910390f35b3480156108e257600080fd5b506108fd60048036038101906108f89190614e1e565b6126a5565b005b34801561090b57600080fd5b5061092660048036038101906109219190614e1e565b612795565b005b34801561093457600080fd5b5061094f600480360381019061094a9190614e1e565b612957565b005b610959612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd90615510565b60405180910390fd5b8060128190555050565b6060600f80546109ff9061592a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2b9061592a565b8015610a785780601f10610a4d57610100808354040283529160200191610a78565b820191906000526020600020905b815481529060010190602001808311610a5b57829003601f168201915b5050505050905090565b6000610a96610a8f612bba565b8484612bc2565b6001905092915050565b6000600e54905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c54905090565b6000610ae7848484612d8d565b610ba884610af3612bba565b610ba385604051806060016040528060288152602001615ec160289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b59612bba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134ae9092919063ffffffff16565b612bc2565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600d54821115610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1590615410565b60405180910390fd5b6000610c28613512565b9050610c3d818461353d90919063ffffffff16565b915050919050565b6000601160009054906101000a900460ff16905090565b610c64612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce890615510565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7490615550565b60405180910390fd5b60005b600880549050811015610ffa578173ffffffffffffffffffffffffffffffffffffffff1660088281548110610dde577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610fe75760086001600880549050610e399190615826565b81548110610e70577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660088281548110610ed5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008805480610fad577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610ffa565b8080610ff29061595c565b915050610d80565b5050565b611006612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108a90615510565b60405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690615490565b60405180910390fd5b60005b600b805490508110156113e1578173ffffffffffffffffffffffffffffffffffffffff16600b8281548110611180577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156113ce57600b6001600b805490506111db9190615826565b81548110611212577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b8281548110611277577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b805480611394577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556113e1565b80806113d99061595c565b915050611122565b5050565b600061148e6113f2612bba565b846114898560066000611403612bba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b612bc2565b6001905092915050565b60125481565b60006114a8612bba565b9050600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152e906155f0565b60405180910390fd5b6000611542836135e5565b5050505050905061159b81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461364190919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115f381600d5461364190919063ffffffff16565b600d8190555061160e83600e5461358790919063ffffffff16565b600e81905550505050565b611621612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a590615510565b60405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c54831115611750576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611747906154d0565b60405180910390fd5b81611770576000611760846135e5565b5050505050905080915050611787565b600061177b846135e5565b50505050915050809150505b92915050565b611795612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181990615510565b60405180910390fd5b8060168190555050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61185a612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de90615510565b60405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b90615490565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611a4857611a04600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd7565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c5357600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611c9e565b611c9b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd7565b90505b919050565b611cab612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2f90615510565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611dfe612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8290615510565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611eea57600080fd5b505afa158015611efe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f229190614e47565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8457600080fd5b505afa158015611f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbc9190614e47565b6040518363ffffffff1660e01b8152600401611fd992919061536f565b602060405180830381600087803b158015611ff357600080fd5b505af1158015612007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202b9190614e47565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960006120ba612211565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550736ca262b6fd7d59cfa98e81a0b502a013663bbb78600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612242612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c690615510565b60405180910390fd5b8060148190555050565b6122e1612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461236e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236590615510565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060601080546123c19061592a565b80601f01602080910402602001604051908101604052809291908181526020018280546123ed9061592a565b801561243a5780601f1061240f5761010080835404028352916020019161243a565b820191906000526020600020905b81548152906001019060200180831161241d57829003601f168201915b5050505050905090565b6000612507612451612bba565b8461250285604051806060016040528060258152602001615ee9602591396006600061247b612bba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134ae9092919063ffffffff16565b612bc2565b6001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061254b612544612bba565b8484612d8d565b6001905092915050565b61255d612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e190615510565b60405180910390fd5b600760148190555060036012819055506001601960156101000a81548160ff02191690831515021790555042601781905550565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126ad612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461273a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273190615510565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61279d612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461282a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282190615510565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561289a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289190615430565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61295f612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e390615510565b60405180910390fd5b7310ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6690615570565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af3906154b0565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c29906155b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9990615450565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d809190615630565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df490615590565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e64906153f0565b60405180910390fd5b60008111612eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea790615530565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3490615610565b60405180910390fd5b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc190615610565b60405180910390fd5b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156130755750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130cb5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131e657601960159054906101000a900460ff1661311f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613116906155d0565b60405180910390fd5b6017544214156131e5576001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b60006131f130611bb8565b9050601960149054906101000a900460ff1615801561321c5750601960159054906101000a900460ff165b80156132755750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561333c57600081111561333b576132d560646132c76016546132b9601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611bb8565b61368b90919063ffffffff16565b61353d90919063ffffffff16565b8111156133315761332e6064613320601654613312601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611bb8565b61368b90919063ffffffff16565b61353d90919063ffffffff16565b90505b61333a81613706565b5b5b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806133e75750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156134915750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061348f5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b155b1561349b57600190505b6134a785858584613761565b5050505050565b60008383111582906134f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ed91906153ce565b60405180910390fd5b50600083856135059190615826565b9050809150509392505050565b600080600061351f6139b8565b91509150613536818361353d90919063ffffffff16565b9250505090565b600061357f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d03565b905092915050565b60008082846135969190615745565b9050838110156135db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d290615470565b60405180910390fd5b8091505092915050565b60008060008060008060008060006135fc8a613d66565b925092509250600080600061361a8d8686613615613512565b613dc0565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b600061368383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134ae565b905092915050565b60008083141561369e5760009050613700565b600082846136ac91906157cc565b90508284826136bb919061579b565b146136fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136f2906154f0565b60405180910390fd5b809150505b92915050565b6001601960146101000a81548160ff02191690831515021790555061372a81613e49565b600047905060008111156137425761374147614146565b5b506000601960146101000a81548160ff02191690831515021790555050565b8061376f5761376e6141b2565b5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138125750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613827576138228484846141f5565b6139a4565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138ca5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138df576138da848484614455565b6139a3565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139815750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613996576139918484846146b5565b6139a2565b6139a18484846149aa565b5b5b5b806139b2576139b1614b75565b5b50505050565b6000806000600d5490506000600c54905060005b600b80549050811015613cc6578260046000600b8481548110613a18577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613b2c57508160056000600b8481548110613ac4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613b4357600d54600c5494509450505050613cff565b613bf960046000600b8481548110613b84577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461364190919063ffffffff16565b9250613cb160056000600b8481548110613c3c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361364190919063ffffffff16565b91508080613cbe9061595c565b9150506139cc565b50613cde600c54600d5461353d90919063ffffffff16565b821015613cf657600d54600c54935093505050613cff565b81819350935050505b9091565b60008083118290613d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d4191906153ce565b60405180910390fd5b5060008385613d59919061579b565b9050809150509392505050565b600080600080613d7585614b89565b90506000613d8286614bba565b90506000613dab82613d9d858a61364190919063ffffffff16565b61364190919063ffffffff16565b90508083839550955095505050509193909250565b600080600080613dd9858961368b90919063ffffffff16565b90506000613df0868961368b90919063ffffffff16565b90506000613e07878961368b90919063ffffffff16565b90506000613e3082613e22858761364190919063ffffffff16565b61364190919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600267ffffffffffffffff811115613e8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613eba5781602001602082028036833780820191505090505b5090503081600081518110613ef8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613f9a57600080fd5b505afa158015613fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fd29190614e47565b8160018151811061400c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061407330601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612bc2565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016140d795949392919061567b565b600060405180830381600087803b1580156140f157600080fd5b505af1158015614105573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161413a92919061564b565b60405180910390a15050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156141ae573d6000803e3d6000fd5b5050565b60006012541480156141c657506000601454145b156141d0576141f3565b601254601381905550601454601581905550600060128190555060006014819055505b565b600080600080600080614207876135e5565b95509550955095509550955061426587600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461364190919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142fa86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461364190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061438f85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143db81614beb565b6143e58483614d90565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516144429190615630565b60405180910390a3505050505050505050565b600080600080600080614467876135e5565b9550955095509550955095506144c586600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461364190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061455a83600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506145ef85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061463b81614beb565b6146458483614d90565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516146a29190615630565b60405180910390a3505050505050505050565b6000806000806000806146c7876135e5565b95509550955095509550955061472587600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461364190919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147ba86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461364190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061484f83600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148e485600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061493081614beb565b61493a8483614d90565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516149979190615630565b60405180910390a3505050505050505050565b6000806000806000806149bc876135e5565b955095509550955095509550614a1a86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461364190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614aaf85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614afb81614beb565b614b058483614d90565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051614b629190615630565b60405180910390a3505050505050505050565b601354601281905550601554601481905550565b6000614bb36064614ba56012548561368b90919063ffffffff16565b61353d90919063ffffffff16565b9050919050565b6000614be46064614bd66014548561368b90919063ffffffff16565b61353d90919063ffffffff16565b9050919050565b6000614bf5613512565b90506000614c0c828461368b90919063ffffffff16565b9050614c6081600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614d8b57614d4783600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614da582600d5461364190919063ffffffff16565b600d81905550614dc081600e5461358790919063ffffffff16565b600e819055505050565b600081359050614dd981615e7b565b92915050565b600081519050614dee81615e7b565b92915050565b600081359050614e0381615e92565b92915050565b600081359050614e1881615ea9565b92915050565b600060208284031215614e3057600080fd5b6000614e3e84828501614dca565b91505092915050565b600060208284031215614e5957600080fd5b6000614e6784828501614ddf565b91505092915050565b60008060408385031215614e8357600080fd5b6000614e9185828601614dca565b9250506020614ea285828601614dca565b9150509250929050565b600080600060608486031215614ec157600080fd5b6000614ecf86828701614dca565b9350506020614ee086828701614dca565b9250506040614ef186828701614e09565b9150509250925092565b60008060408385031215614f0e57600080fd5b6000614f1c85828601614dca565b9250506020614f2d85828601614e09565b9150509250929050565b600060208284031215614f4957600080fd5b6000614f5784828501614e09565b91505092915050565b60008060408385031215614f7357600080fd5b6000614f8185828601614e09565b9250506020614f9285828601614df4565b9150509250929050565b6000614fa88383614fc3565b60208301905092915050565b614fbd8161586c565b82525050565b614fcc8161585a565b82525050565b614fdb8161585a565b82525050565b6000614fec82615700565b614ff68185615723565b9350615001836156f0565b8060005b838110156150325781516150198882614f9c565b975061502483615716565b925050600181019050615005565b5085935050505092915050565b6150488161587e565b82525050565b615057816158c1565b82525050565b615066816158e5565b82525050565b60006150778261570b565b6150818185615734565b93506150918185602086016158f7565b61509a81615a32565b840191505092915050565b60006150b2602383615734565b91506150bd82615a43565b604082019050919050565b60006150d5602a83615734565b91506150e082615a92565b604082019050919050565b60006150f8602683615734565b915061510382615ae1565b604082019050919050565b600061511b602283615734565b915061512682615b30565b604082019050919050565b600061513e601b83615734565b915061514982615b7f565b602082019050919050565b6000615161601b83615734565b915061516c82615ba8565b602082019050919050565b6000615184601e83615734565b915061518f82615bd1565b602082019050919050565b60006151a7601f83615734565b91506151b282615bfa565b602082019050919050565b60006151ca602183615734565b91506151d582615c23565b604082019050919050565b60006151ed602083615734565b91506151f882615c72565b602082019050919050565b6000615210602983615734565b915061521b82615c9b565b604082019050919050565b6000615233601a83615734565b915061523e82615cea565b602082019050919050565b6000615256601c83615734565b915061526182615d13565b602082019050919050565b6000615279602583615734565b915061528482615d3c565b604082019050919050565b600061529c602483615734565b91506152a782615d8b565b604082019050919050565b60006152bf601883615734565b91506152ca82615dda565b602082019050919050565b60006152e2602c83615734565b91506152ed82615e03565b604082019050919050565b6000615305601783615734565b915061531082615e52565b602082019050919050565b615324816158aa565b82525050565b615333816158b4565b82525050565b600060208201905061534e6000830184614fd2565b92915050565b60006020820190506153696000830184614fb4565b92915050565b60006040820190506153846000830185614fd2565b6153916020830184614fd2565b9392505050565b60006020820190506153ad600083018461503f565b92915050565b60006020820190506153c8600083018461504e565b92915050565b600060208201905081810360008301526153e8818461506c565b905092915050565b60006020820190508181036000830152615409816150a5565b9050919050565b60006020820190508181036000830152615429816150c8565b9050919050565b60006020820190508181036000830152615449816150eb565b9050919050565b600060208201905081810360008301526154698161510e565b9050919050565b6000602082019050818103600083015261548981615131565b9050919050565b600060208201905081810360008301526154a981615154565b9050919050565b600060208201905081810360008301526154c981615177565b9050919050565b600060208201905081810360008301526154e98161519a565b9050919050565b60006020820190508181036000830152615509816151bd565b9050919050565b60006020820190508181036000830152615529816151e0565b9050919050565b6000602082019050818103600083015261554981615203565b9050919050565b6000602082019050818103600083015261556981615226565b9050919050565b6000602082019050818103600083015261558981615249565b9050919050565b600060208201905081810360008301526155a98161526c565b9050919050565b600060208201905081810360008301526155c98161528f565b9050919050565b600060208201905081810360008301526155e9816152b2565b9050919050565b60006020820190508181036000830152615609816152d5565b9050919050565b60006020820190508181036000830152615629816152f8565b9050919050565b6000602082019050615645600083018461531b565b92915050565b6000604082019050615660600083018561531b565b81810360208301526156728184614fe1565b90509392505050565b600060a082019050615690600083018861531b565b61569d602083018761505d565b81810360408301526156af8186614fe1565b90506156be6060830185614fd2565b6156cb608083018461531b565b9695505050505050565b60006020820190506156ea600083018461532a565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615750826158aa565b915061575b836158aa565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156157905761578f6159a5565b5b828201905092915050565b60006157a6826158aa565b91506157b1836158aa565b9250826157c1576157c06159d4565b5b828204905092915050565b60006157d7826158aa565b91506157e2836158aa565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561581b5761581a6159a5565b5b828202905092915050565b6000615831826158aa565b915061583c836158aa565b92508282101561584f5761584e6159a5565b5b828203905092915050565b60006158658261588a565b9050919050565b60006158778261588a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006158cc826158d3565b9050919050565b60006158de8261588a565b9050919050565b60006158f0826158aa565b9050919050565b60005b838110156159155780820151818401526020810190506158fa565b83811115615924576000848401525b50505050565b6000600282049050600182168061594257607f821691505b6020821081141561595657615955615a03565b5b50919050565b6000615967826158aa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561599a576159996159a5565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920626c61636b6c69737465640000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000600082015250565b7f57652063616e206e6f7420626c61636b6c69737420556e697377617000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b7f596f752068617665206e6f20706f776572206865726521000000000000000000600082015250565b615e848161585a565b8114615e8f57600080fd5b50565b615e9b8161587e565b8114615ea657600080fd5b50565b615eb2816158aa565b8114615ebd57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208656d16a51d075d1491b64ba1a973c6ee68a575663723ed6b8e8f93b4e741d6164736f6c63430008040033

Deployed Bytecode

0x6080604052600436106102345760003560e01c806352390c021161012e578063906e9dd0116100ab578063c9567bf91161006f578063c9567bf914610882578063dd62ed3e14610899578063ea2f0b37146108d6578063f2fde38b146108ff578063f375b253146109285761023b565b8063906e9dd01461078957806395d89b41146107b2578063a457c2d7146107dd578063a5ece9411461081a578063a9059cbb146108455761023b565b8063715018a6116100f2578063715018a6146106ca5780638203f5fe146106e157806388f82020146106f85780638da5cb5b146107355780638ee88c53146107605761023b565b806352390c02146105bf5780635342acb4146105e8578063610d5b19146106255780636bc87c3a1461066257806370a082311461068d5761023b565b8063313ce567116101bc5780633bd5d173116101805780633bd5d173146104dc578063437823ec146105055780634549b0391461052e57806345596e2e1461056b57806349bd5a5e146105945761023b565b8063313ce567146103f7578063362a3c5d146104225780633685d4191461044b57806339509351146104745780633b124fe7146104b15761023b565b80631694505e116102035780631694505e146102fc57806318160ddd1461032757806323b872dd1461035257806327c8f8351461038f5780632d838119146103ba5761023b565b8063061c82d01461024057806306fdde0314610269578063095ea7b31461029457806313114a9d146102d15761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061026760048036038101906102629190614f37565b610951565b005b34801561027557600080fd5b5061027e6109f0565b60405161028b91906153ce565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b69190614efb565b610a82565b6040516102c89190615398565b60405180910390f35b3480156102dd57600080fd5b506102e6610aa0565b6040516102f39190615630565b60405180910390f35b34801561030857600080fd5b50610311610aaa565b60405161031e91906153b3565b60405180910390f35b34801561033357600080fd5b5061033c610ad0565b6040516103499190615630565b60405180910390f35b34801561035e57600080fd5b5061037960048036038101906103749190614eac565b610ada565b6040516103869190615398565b60405180910390f35b34801561039b57600080fd5b506103a4610bb3565b6040516103b19190615339565b60405180910390f35b3480156103c657600080fd5b506103e160048036038101906103dc9190614f37565b610bd7565b6040516103ee9190615630565b60405180910390f35b34801561040357600080fd5b5061040c610c45565b60405161041991906156d5565b60405180910390f35b34801561042e57600080fd5b5061044960048036038101906104449190614e1e565b610c5c565b005b34801561045757600080fd5b50610472600480360381019061046d9190614e1e565b610ffe565b005b34801561048057600080fd5b5061049b60048036038101906104969190614efb565b6113e5565b6040516104a89190615398565b60405180910390f35b3480156104bd57600080fd5b506104c6611498565b6040516104d39190615630565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe9190614f37565b61149e565b005b34801561051157600080fd5b5061052c60048036038101906105279190614e1e565b611619565b005b34801561053a57600080fd5b5061055560048036038101906105509190614f60565b611709565b6040516105629190615630565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d9190614f37565b61178d565b005b3480156105a057600080fd5b506105a961182c565b6040516105b69190615339565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e19190614e1e565b611852565b005b3480156105f457600080fd5b5061060f600480360381019061060a9190614e1e565b611b06565b60405161061c9190615398565b60405180910390f35b34801561063157600080fd5b5061064c60048036038101906106479190614e1e565b611b5c565b6040516106599190615398565b60405180910390f35b34801561066e57600080fd5b50610677611bb2565b6040516106849190615630565b60405180910390f35b34801561069957600080fd5b506106b460048036038101906106af9190614e1e565b611bb8565b6040516106c19190615630565b60405180910390f35b3480156106d657600080fd5b506106df611ca3565b005b3480156106ed57600080fd5b506106f6611df6565b005b34801561070457600080fd5b5061071f600480360381019061071a9190614e1e565b6121bb565b60405161072c9190615398565b60405180910390f35b34801561074157600080fd5b5061074a612211565b6040516107579190615339565b60405180910390f35b34801561076c57600080fd5b5061078760048036038101906107829190614f37565b61223a565b005b34801561079557600080fd5b506107b060048036038101906107ab9190614e1e565b6122d9565b005b3480156107be57600080fd5b506107c76123b2565b6040516107d491906153ce565b60405180910390f35b3480156107e957600080fd5b5061080460048036038101906107ff9190614efb565b612444565b6040516108119190615398565b60405180910390f35b34801561082657600080fd5b5061082f612511565b60405161083c9190615354565b60405180910390f35b34801561085157600080fd5b5061086c60048036038101906108679190614efb565b612537565b6040516108799190615398565b60405180910390f35b34801561088e57600080fd5b50610897612555565b005b3480156108a557600080fd5b506108c060048036038101906108bb9190614e70565b61261e565b6040516108cd9190615630565b60405180910390f35b3480156108e257600080fd5b506108fd60048036038101906108f89190614e1e565b6126a5565b005b34801561090b57600080fd5b5061092660048036038101906109219190614e1e565b612795565b005b34801561093457600080fd5b5061094f600480360381019061094a9190614e1e565b612957565b005b610959612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd90615510565b60405180910390fd5b8060128190555050565b6060600f80546109ff9061592a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2b9061592a565b8015610a785780601f10610a4d57610100808354040283529160200191610a78565b820191906000526020600020905b815481529060010190602001808311610a5b57829003601f168201915b5050505050905090565b6000610a96610a8f612bba565b8484612bc2565b6001905092915050565b6000600e54905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c54905090565b6000610ae7848484612d8d565b610ba884610af3612bba565b610ba385604051806060016040528060288152602001615ec160289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b59612bba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134ae9092919063ffffffff16565b612bc2565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6000600d54821115610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1590615410565b60405180910390fd5b6000610c28613512565b9050610c3d818461353d90919063ffffffff16565b915050919050565b6000601160009054906101000a900460ff16905090565b610c64612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce890615510565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7490615550565b60405180910390fd5b60005b600880549050811015610ffa578173ffffffffffffffffffffffffffffffffffffffff1660088281548110610dde577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610fe75760086001600880549050610e399190615826565b81548110610e70577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660088281548110610ed5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008805480610fad577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610ffa565b8080610ff29061595c565b915050610d80565b5050565b611006612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108a90615510565b60405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690615490565b60405180910390fd5b60005b600b805490508110156113e1578173ffffffffffffffffffffffffffffffffffffffff16600b8281548110611180577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156113ce57600b6001600b805490506111db9190615826565b81548110611212577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b8281548110611277577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b805480611394577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556113e1565b80806113d99061595c565b915050611122565b5050565b600061148e6113f2612bba565b846114898560066000611403612bba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b612bc2565b6001905092915050565b60125481565b60006114a8612bba565b9050600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152e906155f0565b60405180910390fd5b6000611542836135e5565b5050505050905061159b81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461364190919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115f381600d5461364190919063ffffffff16565b600d8190555061160e83600e5461358790919063ffffffff16565b600e81905550505050565b611621612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a590615510565b60405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c54831115611750576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611747906154d0565b60405180910390fd5b81611770576000611760846135e5565b5050505050905080915050611787565b600061177b846135e5565b50505050915050809150505b92915050565b611795612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181990615510565b60405180910390fd5b8060168190555050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61185a612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de90615510565b60405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b90615490565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611a4857611a04600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd7565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c5357600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611c9e565b611c9b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd7565b90505b919050565b611cab612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2f90615510565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611dfe612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8290615510565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611eea57600080fd5b505afa158015611efe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f229190614e47565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8457600080fd5b505afa158015611f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbc9190614e47565b6040518363ffffffff1660e01b8152600401611fd992919061536f565b602060405180830381600087803b158015611ff357600080fd5b505af1158015612007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202b9190614e47565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960006120ba612211565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550736ca262b6fd7d59cfa98e81a0b502a013663bbb78600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612242612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c690615510565b60405180910390fd5b8060148190555050565b6122e1612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461236e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236590615510565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060601080546123c19061592a565b80601f01602080910402602001604051908101604052809291908181526020018280546123ed9061592a565b801561243a5780601f1061240f5761010080835404028352916020019161243a565b820191906000526020600020905b81548152906001019060200180831161241d57829003601f168201915b5050505050905090565b6000612507612451612bba565b8461250285604051806060016040528060258152602001615ee9602591396006600061247b612bba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134ae9092919063ffffffff16565b612bc2565b6001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061254b612544612bba565b8484612d8d565b6001905092915050565b61255d612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e190615510565b60405180910390fd5b600760148190555060036012819055506001601960156101000a81548160ff02191690831515021790555042601781905550565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126ad612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461273a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273190615510565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61279d612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461282a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282190615510565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561289a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289190615430565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61295f612bba565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e390615510565b60405180910390fd5b7310ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6690615570565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af3906154b0565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c29906155b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9990615450565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d809190615630565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df490615590565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e64906153f0565b60405180910390fd5b60008111612eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea790615530565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3490615610565b60405180910390fd5b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc190615610565b60405180910390fd5b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156130755750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130cb5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131e657601960159054906101000a900460ff1661311f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613116906155d0565b60405180910390fd5b6017544214156131e5576001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b60006131f130611bb8565b9050601960149054906101000a900460ff1615801561321c5750601960159054906101000a900460ff165b80156132755750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561333c57600081111561333b576132d560646132c76016546132b9601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611bb8565b61368b90919063ffffffff16565b61353d90919063ffffffff16565b8111156133315761332e6064613320601654613312601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611bb8565b61368b90919063ffffffff16565b61353d90919063ffffffff16565b90505b61333a81613706565b5b5b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806133e75750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156134915750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061348f5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b155b1561349b57600190505b6134a785858584613761565b5050505050565b60008383111582906134f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ed91906153ce565b60405180910390fd5b50600083856135059190615826565b9050809150509392505050565b600080600061351f6139b8565b91509150613536818361353d90919063ffffffff16565b9250505090565b600061357f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d03565b905092915050565b60008082846135969190615745565b9050838110156135db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d290615470565b60405180910390fd5b8091505092915050565b60008060008060008060008060006135fc8a613d66565b925092509250600080600061361a8d8686613615613512565b613dc0565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b600061368383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134ae565b905092915050565b60008083141561369e5760009050613700565b600082846136ac91906157cc565b90508284826136bb919061579b565b146136fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136f2906154f0565b60405180910390fd5b809150505b92915050565b6001601960146101000a81548160ff02191690831515021790555061372a81613e49565b600047905060008111156137425761374147614146565b5b506000601960146101000a81548160ff02191690831515021790555050565b8061376f5761376e6141b2565b5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138125750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613827576138228484846141f5565b6139a4565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138ca5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138df576138da848484614455565b6139a3565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139815750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613996576139918484846146b5565b6139a2565b6139a18484846149aa565b5b5b5b806139b2576139b1614b75565b5b50505050565b6000806000600d5490506000600c54905060005b600b80549050811015613cc6578260046000600b8481548110613a18577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613b2c57508160056000600b8481548110613ac4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613b4357600d54600c5494509450505050613cff565b613bf960046000600b8481548110613b84577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461364190919063ffffffff16565b9250613cb160056000600b8481548110613c3c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361364190919063ffffffff16565b91508080613cbe9061595c565b9150506139cc565b50613cde600c54600d5461353d90919063ffffffff16565b821015613cf657600d54600c54935093505050613cff565b81819350935050505b9091565b60008083118290613d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d4191906153ce565b60405180910390fd5b5060008385613d59919061579b565b9050809150509392505050565b600080600080613d7585614b89565b90506000613d8286614bba565b90506000613dab82613d9d858a61364190919063ffffffff16565b61364190919063ffffffff16565b90508083839550955095505050509193909250565b600080600080613dd9858961368b90919063ffffffff16565b90506000613df0868961368b90919063ffffffff16565b90506000613e07878961368b90919063ffffffff16565b90506000613e3082613e22858761364190919063ffffffff16565b61364190919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600267ffffffffffffffff811115613e8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613eba5781602001602082028036833780820191505090505b5090503081600081518110613ef8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613f9a57600080fd5b505afa158015613fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fd29190614e47565b8160018151811061400c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061407330601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612bc2565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016140d795949392919061567b565b600060405180830381600087803b1580156140f157600080fd5b505af1158015614105573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161413a92919061564b565b60405180910390a15050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156141ae573d6000803e3d6000fd5b5050565b60006012541480156141c657506000601454145b156141d0576141f3565b601254601381905550601454601581905550600060128190555060006014819055505b565b600080600080600080614207876135e5565b95509550955095509550955061426587600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461364190919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142fa86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461364190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061438f85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143db81614beb565b6143e58483614d90565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516144429190615630565b60405180910390a3505050505050505050565b600080600080600080614467876135e5565b9550955095509550955095506144c586600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461364190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061455a83600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506145ef85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061463b81614beb565b6146458483614d90565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516146a29190615630565b60405180910390a3505050505050505050565b6000806000806000806146c7876135e5565b95509550955095509550955061472587600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461364190919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147ba86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461364190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061484f83600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148e485600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061493081614beb565b61493a8483614d90565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516149979190615630565b60405180910390a3505050505050505050565b6000806000806000806149bc876135e5565b955095509550955095509550614a1a86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461364190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614aaf85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614afb81614beb565b614b058483614d90565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051614b629190615630565b60405180910390a3505050505050505050565b601354601281905550601554601481905550565b6000614bb36064614ba56012548561368b90919063ffffffff16565b61353d90919063ffffffff16565b9050919050565b6000614be46064614bd66014548561368b90919063ffffffff16565b61353d90919063ffffffff16565b9050919050565b6000614bf5613512565b90506000614c0c828461368b90919063ffffffff16565b9050614c6081600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614d8b57614d4783600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461358790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614da582600d5461364190919063ffffffff16565b600d81905550614dc081600e5461358790919063ffffffff16565b600e819055505050565b600081359050614dd981615e7b565b92915050565b600081519050614dee81615e7b565b92915050565b600081359050614e0381615e92565b92915050565b600081359050614e1881615ea9565b92915050565b600060208284031215614e3057600080fd5b6000614e3e84828501614dca565b91505092915050565b600060208284031215614e5957600080fd5b6000614e6784828501614ddf565b91505092915050565b60008060408385031215614e8357600080fd5b6000614e9185828601614dca565b9250506020614ea285828601614dca565b9150509250929050565b600080600060608486031215614ec157600080fd5b6000614ecf86828701614dca565b9350506020614ee086828701614dca565b9250506040614ef186828701614e09565b9150509250925092565b60008060408385031215614f0e57600080fd5b6000614f1c85828601614dca565b9250506020614f2d85828601614e09565b9150509250929050565b600060208284031215614f4957600080fd5b6000614f5784828501614e09565b91505092915050565b60008060408385031215614f7357600080fd5b6000614f8185828601614e09565b9250506020614f9285828601614df4565b9150509250929050565b6000614fa88383614fc3565b60208301905092915050565b614fbd8161586c565b82525050565b614fcc8161585a565b82525050565b614fdb8161585a565b82525050565b6000614fec82615700565b614ff68185615723565b9350615001836156f0565b8060005b838110156150325781516150198882614f9c565b975061502483615716565b925050600181019050615005565b5085935050505092915050565b6150488161587e565b82525050565b615057816158c1565b82525050565b615066816158e5565b82525050565b60006150778261570b565b6150818185615734565b93506150918185602086016158f7565b61509a81615a32565b840191505092915050565b60006150b2602383615734565b91506150bd82615a43565b604082019050919050565b60006150d5602a83615734565b91506150e082615a92565b604082019050919050565b60006150f8602683615734565b915061510382615ae1565b604082019050919050565b600061511b602283615734565b915061512682615b30565b604082019050919050565b600061513e601b83615734565b915061514982615b7f565b602082019050919050565b6000615161601b83615734565b915061516c82615ba8565b602082019050919050565b6000615184601e83615734565b915061518f82615bd1565b602082019050919050565b60006151a7601f83615734565b91506151b282615bfa565b602082019050919050565b60006151ca602183615734565b91506151d582615c23565b604082019050919050565b60006151ed602083615734565b91506151f882615c72565b602082019050919050565b6000615210602983615734565b915061521b82615c9b565b604082019050919050565b6000615233601a83615734565b915061523e82615cea565b602082019050919050565b6000615256601c83615734565b915061526182615d13565b602082019050919050565b6000615279602583615734565b915061528482615d3c565b604082019050919050565b600061529c602483615734565b91506152a782615d8b565b604082019050919050565b60006152bf601883615734565b91506152ca82615dda565b602082019050919050565b60006152e2602c83615734565b91506152ed82615e03565b604082019050919050565b6000615305601783615734565b915061531082615e52565b602082019050919050565b615324816158aa565b82525050565b615333816158b4565b82525050565b600060208201905061534e6000830184614fd2565b92915050565b60006020820190506153696000830184614fb4565b92915050565b60006040820190506153846000830185614fd2565b6153916020830184614fd2565b9392505050565b60006020820190506153ad600083018461503f565b92915050565b60006020820190506153c8600083018461504e565b92915050565b600060208201905081810360008301526153e8818461506c565b905092915050565b60006020820190508181036000830152615409816150a5565b9050919050565b60006020820190508181036000830152615429816150c8565b9050919050565b60006020820190508181036000830152615449816150eb565b9050919050565b600060208201905081810360008301526154698161510e565b9050919050565b6000602082019050818103600083015261548981615131565b9050919050565b600060208201905081810360008301526154a981615154565b9050919050565b600060208201905081810360008301526154c981615177565b9050919050565b600060208201905081810360008301526154e98161519a565b9050919050565b60006020820190508181036000830152615509816151bd565b9050919050565b60006020820190508181036000830152615529816151e0565b9050919050565b6000602082019050818103600083015261554981615203565b9050919050565b6000602082019050818103600083015261556981615226565b9050919050565b6000602082019050818103600083015261558981615249565b9050919050565b600060208201905081810360008301526155a98161526c565b9050919050565b600060208201905081810360008301526155c98161528f565b9050919050565b600060208201905081810360008301526155e9816152b2565b9050919050565b60006020820190508181036000830152615609816152d5565b9050919050565b60006020820190508181036000830152615629816152f8565b9050919050565b6000602082019050615645600083018461531b565b92915050565b6000604082019050615660600083018561531b565b81810360208301526156728184614fe1565b90509392505050565b600060a082019050615690600083018861531b565b61569d602083018761505d565b81810360408301526156af8186614fe1565b90506156be6060830185614fd2565b6156cb608083018461531b565b9695505050505050565b60006020820190506156ea600083018461532a565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615750826158aa565b915061575b836158aa565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156157905761578f6159a5565b5b828201905092915050565b60006157a6826158aa565b91506157b1836158aa565b9250826157c1576157c06159d4565b5b828204905092915050565b60006157d7826158aa565b91506157e2836158aa565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561581b5761581a6159a5565b5b828202905092915050565b6000615831826158aa565b915061583c836158aa565b92508282101561584f5761584e6159a5565b5b828203905092915050565b60006158658261588a565b9050919050565b60006158778261588a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006158cc826158d3565b9050919050565b60006158de8261588a565b9050919050565b60006158f0826158aa565b9050919050565b60005b838110156159155780820151818401526020810190506158fa565b83811115615924576000848401525b50505050565b6000600282049050600182168061594257607f821691505b6020821081141561595657615955615a03565b5b50919050565b6000615967826158aa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561599a576159996159a5565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920626c61636b6c69737465640000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000600082015250565b7f57652063616e206e6f7420626c61636b6c69737420556e697377617000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b7f596f752068617665206e6f20706f776572206865726521000000000000000000600082015250565b615e848161585a565b8114615e8f57600080fd5b50565b615e9b8161587e565b8114615ea657600080fd5b50565b615eb2816158aa565b8114615ebd57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208656d16a51d075d1491b64ba1a973c6ee68a575663723ed6b8e8f93b4e741d6164736f6c63430008040033

Deployed Bytecode Sourcemap

14408:18751:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31454:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17056:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17968:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19089:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15719:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17333:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18137:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14653:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20031:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17242:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32458:482;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20635:479;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18458:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15473:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19198:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31209:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19587:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32961:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15767:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20292:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31074:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32000:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15556:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17436:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6039:148;;;;;;;;;;;;;:::i;:::-;;16327:543;;;;;;;;;;;;;:::i;:::-;;18961:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5814:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31564:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31704:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17147:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18684:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14532:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17642:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16882:166;;;;;;;;;;;;;:::i;:::-;;17817:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31332:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6195:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32125:325;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31454:98;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31538:6:::1;31528:7;:16;;;;31454:98:::0;:::o;17056:83::-;17093:13;17126:5;17119:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17056:83;:::o;17968:161::-;18043:4;18060:39;18069:12;:10;:12::i;:::-;18083:7;18092:6;18060:8;:39::i;:::-;18117:4;18110:11;;17968:161;;;;:::o;19089:87::-;19131:7;19158:10;;19151:17;;19089:87;:::o;15719:41::-;;;;;;;;;;;;;:::o;17333:95::-;17386:7;17413;;17406:14;;17333:95;:::o;18137:313::-;18235:4;18252:36;18262:6;18270:9;18281:6;18252:9;:36::i;:::-;18299:121;18308:6;18316:12;:10;:12::i;:::-;18330:89;18368:6;18330:89;;;;;;;;;;;;;;;;;:11;:19;18342:6;18330:19;;;;;;;;;;;;;;;:33;18350:12;:10;:12::i;:::-;18330:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;18299:8;:121::i;:::-;18438:4;18431:11;;18137:313;;;;;:::o;14653:81::-;;;:::o;20031:253::-;20097:7;20136;;20125;:18;;20117:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;20201:19;20224:10;:8;:10::i;:::-;20201:33;;20252:24;20264:11;20252:7;:11;;:24;;;;:::i;:::-;20245:31;;;20031:253;;;:::o;17242:83::-;17283:5;17308:9;;;;;;;;;;;17301:16;;17242:83;:::o;32458:482::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32539:9:::1;:18;32549:7;32539:18;;;;;;;;;;;;;;;;;;;;;;;;;32531:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;32604:9;32599:334;32623:17;:24;;;;32619:1;:28;32599:334;;;32697:7;32673:31;;:17;32691:1;32673:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;32669:253;;;32748:17;32793:1;32766:17;:24;;;;:28;;;;:::i;:::-;32748:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32725:17;32743:1;32725:20;;;;;;;;;;;;;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;32835:5;32814:9;:18;32824:7;32814:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;32859:17;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32901:5;;32669:253;32649:3;;;;;:::i;:::-;;;;32599:334;;;;32458:482:::0;:::o;20635:479::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20717:11:::1;:20;20729:7;20717:20;;;;;;;;;;;;;;;;;;;;;;;;;20709:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20785:9;20780:327;20804:9;:16;;;;20800:1;:20;20780:327;;;20862:7;20846:23;;:9;20856:1;20846:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;20842:254;;;20905:9;20934:1;20915:9;:16;;;;:20;;;;:::i;:::-;20905:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20890:9;20900:1;20890:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;20974:1;20955:7;:16;20963:7;20955:16;;;;;;;;;;;;;;;:20;;;;21017:5;20994:11;:20;21006:7;20994:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;21041:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21075:5;;20842:254;20822:3;;;;;:::i;:::-;;;;20780:327;;;;20635:479:::0;:::o;18458:218::-;18546:4;18563:83;18572:12;:10;:12::i;:::-;18586:7;18595:50;18634:10;18595:11;:25;18607:12;:10;:12::i;:::-;18595:25;;;;;;;;;;;;;;;:34;18621:7;18595:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18563:8;:83::i;:::-;18664:4;18657:11;;18458:218;;;;:::o;15473:22::-;;;;:::o;19198:377::-;19250:14;19267:12;:10;:12::i;:::-;19250:29;;19299:11;:19;19311:6;19299:19;;;;;;;;;;;;;;;;;;;;;;;;;19298:20;19290:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;19379:15;19403:19;19414:7;19403:10;:19::i;:::-;19378:44;;;;;;;19451:28;19471:7;19451;:15;19459:6;19451:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;19433:7;:15;19441:6;19433:15;;;;;;;;;;;;;;;:46;;;;19500:20;19512:7;19500;;:11;;:20;;;;:::i;:::-;19490:7;:30;;;;19544:23;19559:7;19544:10;;:14;;:23;;;;:::i;:::-;19531:10;:36;;;;19198:377;;;:::o;31209:111::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31308:4:::1;31278:18;:27;31297:7;31278:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;31209:111:::0;:::o;19587:436::-;19677:7;19716;;19705;:18;;19697:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;19775:17;19770:246;;19810:15;19834:19;19845:7;19834:10;:19::i;:::-;19809:44;;;;;;;19875:7;19868:14;;;;;19770:246;19917:23;19948:19;19959:7;19948:10;:19::i;:::-;19915:52;;;;;;;19989:15;19982:22;;;19587:436;;;;;:::o;32961:90::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33039:4:::1;33028:8;:15;;;;32961:90:::0;:::o;15767:28::-;;;;;;;;;;;;;:::o;20292:335::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20377:11:::1;:20;20389:7;20377:20;;;;;;;;;;;;;;;;;;;;;;;;;20376:21;20368:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20462:1;20443:7;:16;20451:7;20443:16;;;;;;;;;;;;;;;;:20;20440:108;;;20499:37;20519:7;:16;20527:7;20519:16;;;;;;;;;;;;;;;;20499:19;:37::i;:::-;20480:7;:16;20488:7;20480:16;;;;;;;;;;;;;;;:56;;;;20440:108;20581:4;20558:11;:20;20570:7;20558:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;20596:9;20611:7;20596:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20292:335:::0;:::o;31074:123::-;31138:4;31162:18;:27;31181:7;31162:27;;;;;;;;;;;;;;;;;;;;;;;;;31155:34;;31074:123;;;:::o;32000:113::-;32063:4;32087:9;:18;32097:7;32087:18;;;;;;;;;;;;;;;;;;;;;;;;;32080:25;;32000:113;;;:::o;15556:28::-;;;;:::o;17436:198::-;17502:7;17526:11;:20;17538:7;17526:20;;;;;;;;;;;;;;;;;;;;;;;;;17522:49;;;17555:7;:16;17563:7;17555:16;;;;;;;;;;;;;;;;17548:23;;;;17522:49;17589:37;17609:7;:16;17617:7;17609:16;;;;;;;;;;;;;;;;17589:19;:37::i;:::-;17582:44;;17436:198;;;;:::o;6039:148::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6146:1:::1;6109:40;;6130:6;::::0;::::1;;;;;;;;6109:40;;;;;;;;;;;;6177:1;6160:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6039:148::o:0;16327:543::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16383:35:::1;16440:42;16383:100;;16528:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16510:66;;;16585:4;16592:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16510:106;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16494:13;;:122;;;;;;;;;;;;;;;;;;16647:16;16629:15;;:34;;;;;;;;;;;;;;;;;;16706:4;16676:18;:27;16695:7;:5;:7::i;:::-;16676:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;16757:4;16721:18;:33;16748:4;16721:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;16819:42;16792:16;;:70;;;;;;;;;;;;;;;;;;6018:1;16327:543::o:0;18961:120::-;19029:4;19053:11;:20;19065:7;19053:20;;;;;;;;;;;;;;;;;;;;;;;;;19046:27;;18961:120;;;:::o;5814:79::-;5852:7;5879:6;;;;;;;;;;;5872:13;;5814:79;:::o;31564:122::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31666:12:::1;31650:13;:28;;;;31564:122:::0;:::o;31704:141::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31819:17:::1;31792:16;;:45;;;;;;;;;;;;;;;;;;31704:141:::0;:::o;17147:87::-;17186:13;17219:7;17212:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17147:87;:::o;18684:269::-;18777:4;18794:129;18803:12;:10;:12::i;:::-;18817:7;18826:96;18865:15;18826:96;;;;;;;;;;;;;;;;;:11;:25;18838:12;:10;:12::i;:::-;18826:25;;;;;;;;;;;;;;;:34;18852:7;18826:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18794:8;:129::i;:::-;18941:4;18934:11;;18684:269;;;;:::o;14532:93::-;;;;;;;;;;;;;:::o;17642:167::-;17720:4;17737:42;17747:12;:10;:12::i;:::-;17761:9;17772:6;17737:9;:42::i;:::-;17797:4;17790:11;;17642:167;;;;:::o;16882:166::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16951:1:::1;16937:13;:15;;;;16971:1;16963:7;:9;;;;16997:4;16983:11;;:18;;;;;;;;;;;;;;;;;;17025:15;17012:10;:28;;;;16882:166::o:0;17817:143::-;17898:7;17925:11;:18;17937:5;17925:18;;;;;;;;;;;;;;;:27;17944:7;17925:27;;;;;;;;;;;;;;;;17918:34;;17817:143;;;;:::o;31332:110::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31429:5:::1;31399:18;:27;31418:7;31399:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;31332:110:::0;:::o;6195:244::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6304:1:::1;6284:22;;:8;:22;;;;6276:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6394:8;6365:38;;6386:6;::::0;::::1;;;;;;;;6365:38;;;;;;;;;;;;6423:8;6414:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6195:244:::0;:::o;32125:325::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32216:42:::1;32205:53;;:7;:53;;;;32197:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;32311:9;:18;32321:7;32311:18;;;;;;;;;;;;;;;;;;;;;;;;;32310:19;32302:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;32396:4;32375:9;:18;32385:7;32375:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;32411:17;32434:7;32411:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32125:325:::0;:::o;102:115::-;155:15;198:10;183:26;;102:115;:::o;21122:337::-;21232:1;21215:19;;:5;:19;;;;21207:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21313:1;21294:21;;:7;:21;;;;21286:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21397:6;21367:11;:18;21379:5;21367:18;;;;;;;;;;;;;;;:27;21386:7;21367:27;;;;;;;;;;;;;;;:36;;;;21435:7;21419:32;;21428:5;21419:32;;;21444:6;21419:32;;;;;;:::i;:::-;;;;;;;;21122:337;;;:::o;21467:1688::-;21605:1;21589:18;;:4;:18;;;;21581:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21682:1;21668:16;;:2;:16;;;;21660:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21752:1;21743:6;:10;21735:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21819:9;:13;21829:2;21819:13;;;;;;;;;;;;;;;;;;;;;;;;;21818:14;21810:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;21880:9;:21;21890:10;21880:21;;;;;;;;;;;;;;;;;;;;;;;;;21879:22;21871:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21978:13;;;;;;;;;;;21970:21;;:4;:21;;;:55;;;;;22009:15;;;;;;;;;;;21995:30;;:2;:30;;;;21970:55;:82;;;;;22030:18;:22;22049:2;22030:22;;;;;;;;;;;;;;;;;;;;;;;;;22029:23;21970:82;21967:348;;;22077:11;;;;;;;;;;;22069:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22192:10;;22173:15;:29;22169:135;;;22239:4;22223:9;:13;22233:2;22223:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;22262:17;22285:2;22262:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22169:135;21967:348;22329:28;22360:24;22378:4;22360:9;:24::i;:::-;22329:55;;22446:16;;;;;;;;;;;22445:17;:32;;;;;22466:11;;;;;;;;;;;22445:32;:55;;;;;22487:13;;;;;;;;;;;22481:19;;:2;:19;;;22445:55;22441:405;;;22543:1;22520:20;:24;22517:306;;;22591:47;22634:3;22591:38;22620:8;;22591:24;22601:13;;;;;;;;;;;22591:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;22568:20;:70;22565:188;;;22686:47;22729:3;22686:38;22715:8;;22686:24;22696:13;;;;;;;;;;;22686:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;22663:70;;22565:188;22771:32;22782:20;22771:10;:32::i;:::-;22517:306;22441:405;22866:12;22953:13;;;;;;;;;;;22947:19;;:4;:19;;;:40;;;;22974:13;;;;;;;;;;;22970:17;;:2;:17;;;22947:40;22946:99;;;;;22994:18;:24;23013:4;22994:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;23022:18;:22;23041:2;23022:22;;;;;;;;;;;;;;;;;;;;;;;;;22994:50;22992:53;22946:99;22941:148;;;23073:4;23063:14;;22941:148;23109:38;23124:4;23129:2;23132:6;23139:7;23109:14;:38::i;:::-;21467:1688;;;;;:::o;1513:192::-;1599:7;1632:1;1627;:6;;1635:12;1619:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1659:9;1675:1;1671;:5;;;;:::i;:::-;1659:17;;1696:1;1689:8;;;1513:192;;;;;:::o;29224:163::-;29265:7;29286:15;29303;29322:19;:17;:19::i;:::-;29285:56;;;;29359:20;29371:7;29359;:11;;:20;;;;:::i;:::-;29352:27;;;;29224:163;:::o;1973:132::-;2031:7;2058:39;2062:1;2065;2058:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2051:46;;1973:132;;;;:::o;1180:181::-;1238:7;1258:9;1274:1;1270;:5;;;;:::i;:::-;1258:17;;1299:1;1294;:6;;1286:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1352:1;1345:8;;;1180:181;;;;:::o;28022:419::-;28081:7;28090;28099;28108;28117;28126;28147:23;28172:12;28186:18;28208:20;28220:7;28208:11;:20::i;:::-;28146:82;;;;;;28240:15;28257:23;28282:12;28298:50;28310:7;28319:4;28325:10;28337;:8;:10::i;:::-;28298:11;:50::i;:::-;28239:109;;;;;;28367:7;28376:15;28393:4;28399:15;28416:4;28422:10;28359:74;;;;;;;;;;;;;;;;;;28022:419;;;;;;;:::o;1369:136::-;1427:7;1454:43;1458:1;1461;1454:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1447:50;;1369:136;;;;:::o;1713:250::-;1771:7;1800:1;1795;:6;1791:47;;;1825:1;1818:8;;;;1791:47;1850:9;1866:1;1862;:5;;;;:::i;:::-;1850:17;;1895:1;1890;1886;:5;;;;:::i;:::-;:10;1878:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1954:1;1947:8;;;1713:250;;;;;:::o;23163:334::-;16118:4;16099:16;;:23;;;;;;;;;;;;;;;;;;23244:38:::1;23261:20;23244:16;:38::i;:::-;23340:26;23369:21;23340:50;;23425:1;23404:18;:22;23401:89;;;23443:35;23456:21;23443:12;:35::i;:::-;23401:89;16133:1;16164:5:::0;16145:16;;:24;;;;;;;;;;;;;;;;;;23163:334;:::o;24827:704::-;24938:7;24934:40;;24960:14;:12;:14::i;:::-;24934:40;24999:11;:19;25011:6;24999:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;25023:11;:22;25035:9;25023:22;;;;;;;;;;;;;;;;;;;;;;;;;25022:23;24999:46;24995:467;;;25062:48;25084:6;25092:9;25103:6;25062:21;:48::i;:::-;24995:467;;;25133:11;:19;25145:6;25133:19;;;;;;;;;;;;;;;;;;;;;;;;;25132:20;:46;;;;;25156:11;:22;25168:9;25156:22;;;;;;;;;;;;;;;;;;;;;;;;;25132:46;25128:334;;;25195:46;25215:6;25223:9;25234:6;25195:19;:46::i;:::-;25128:334;;;25263:11;:19;25275:6;25263:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;25286:11;:22;25298:9;25286:22;;;;;;;;;;;;;;;;;;;;;;;;;25263:45;25259:203;;;25325:48;25347:6;25355:9;25366:6;25325:21;:48::i;:::-;25259:203;;;25406:44;25424:6;25432:9;25443:6;25406:17;:44::i;:::-;25259:203;25128:334;24995:467;25486:7;25482:41;;25508:15;:13;:15::i;:::-;25482:41;24827:704;;;;:::o;29395:561::-;29445:7;29454;29474:15;29492:7;;29474:25;;29510:15;29528:7;;29510:25;;29557:9;29552:289;29576:9;:16;;;;29572:1;:20;29552:289;;;29642:7;29618;:21;29626:9;29636:1;29626:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29618:21;;;;;;;;;;;;;;;;:31;:66;;;;29677:7;29653;:21;29661:9;29671:1;29661:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29653:21;;;;;;;;;;;;;;;;:31;29618:66;29614:97;;;29694:7;;29703;;29686:25;;;;;;;;;29614:97;29736:34;29748:7;:21;29756:9;29766:1;29756:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29748:21;;;;;;;;;;;;;;;;29736:7;:11;;:34;;;;:::i;:::-;29726:44;;29795:34;29807:7;:21;29815:9;29825:1;29815:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29807:21;;;;;;;;;;;;;;;;29795:7;:11;;:34;;;;:::i;:::-;29785:44;;29594:3;;;;;:::i;:::-;;;;29552:289;;;;29865:20;29877:7;;29865;;:11;;:20;;;;:::i;:::-;29855:7;:30;29851:61;;;29895:7;;29904;;29887:25;;;;;;;;29851:61;29931:7;29940;29923:25;;;;;;29395:561;;;:::o;2113:278::-;2199:7;2231:1;2227;:5;2234:12;2219:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2258:9;2274:1;2270;:5;;;;:::i;:::-;2258:17;;2382:1;2375:8;;;2113:278;;;;;:::o;28449:330::-;28509:7;28518;28527;28547:12;28562:24;28578:7;28562:15;:24::i;:::-;28547:39;;28597:18;28618:30;28640:7;28618:21;:30::i;:::-;28597:51;;28659:23;28685:33;28707:10;28685:17;28697:4;28685:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;28659:59;;28737:15;28754:4;28760:10;28729:42;;;;;;;;;28449:330;;;;;:::o;28787:429::-;28902:7;28911;28920;28940:15;28958:24;28970:11;28958:7;:11;;:24;;;;:::i;:::-;28940:42;;28993:12;29008:21;29017:11;29008:4;:8;;:21;;;;:::i;:::-;28993:36;;29040:18;29061:27;29076:11;29061:10;:14;;:27;;;;:::i;:::-;29040:48;;29099:23;29125:33;29147:10;29125:17;29137:4;29125:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;29099:59;;29177:7;29186:15;29203:4;29169:39;;;;;;;;;;28787:429;;;;;;;;:::o;23626:666::-;23752:21;23790:1;23776:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23752:40;;23821:4;23803;23808:1;23803:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;23847:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23837:4;23842:1;23837:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;23882:62;23899:4;23914:15;;;;;;;;;;;23932:11;23882:8;:62::i;:::-;23983:15;;;;;;;;;;;:66;;;24064:11;24090:1;24134:4;24161;24197:15;23983:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24249:35;24266:11;24279:4;24249:35;;;;;;;:::i;:::-;;;;;;;;23626:666;;:::o;23509:98::-;23566:16;;;;;;;;;;;:25;;:33;23592:6;23566:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23509:98;:::o;30679:250::-;30736:1;30725:7;;:12;:34;;;;;30758:1;30741:13;;:18;30725:34;30722:46;;;30761:7;;30722:46;30806:7;;30788:15;:25;;;;30848:13;;30824:21;:37;;;;30892:1;30882:7;:11;;;;30920:1;30904:13;:17;;;;30679:250;:::o;26643:566::-;26746:15;26763:23;26788:12;26802:23;26827:12;26841:18;26863:19;26874:7;26863:10;:19::i;:::-;26745:137;;;;;;;;;;;;26911:28;26931:7;26911;:15;26919:6;26911:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26893:7;:15;26901:6;26893:15;;;;;;;;;;;;;;;:46;;;;26968:28;26988:7;26968;:15;26976:6;26968:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26950:7;:15;26958:6;26950:15;;;;;;;;;;;;;;;:46;;;;27028:39;27051:15;27028:7;:18;27036:9;27028:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27007:7;:18;27015:9;27007:18;;;;;;;;;;;;;;;:60;;;;27081:26;27096:10;27081:14;:26::i;:::-;27118:23;27130:4;27136;27118:11;:23::i;:::-;27174:9;27157:44;;27166:6;27157:44;;;27185:15;27157:44;;;;;;:::i;:::-;;;;;;;;26643:566;;;;;;;;;:::o;26049:586::-;26150:15;26167:23;26192:12;26206:23;26231:12;26245:18;26267:19;26278:7;26267:10;:19::i;:::-;26149:137;;;;;;;;;;;;26315:28;26335:7;26315;:15;26323:6;26315:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26297:7;:15;26305:6;26297:15;;;;;;;;;;;;;;;:46;;;;26375:39;26398:15;26375:7;:18;26383:9;26375:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26354:7;:18;26362:9;26354:18;;;;;;;;;;;;;;;:60;;;;26446:39;26469:15;26446:7;:18;26454:9;26446:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26425:7;:18;26433:9;26425:18;;;;;;;;;;;;;;;:60;;;;26507:26;26522:10;26507:14;:26::i;:::-;26544:23;26556:4;26562;26544:11;:23::i;:::-;26600:9;26583:44;;26592:6;26583:44;;;26611:15;26583:44;;;;;;:::i;:::-;;;;;;;;26049:586;;;;;;;;;:::o;27217:642::-;27320:15;27337:23;27362:12;27376:23;27401:12;27415:18;27437:19;27448:7;27437:10;:19::i;:::-;27319:137;;;;;;;;;;;;27485:28;27505:7;27485;:15;27493:6;27485:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27467:7;:15;27475:6;27467:15;;;;;;;;;;;;;;;:46;;;;27542:28;27562:7;27542;:15;27550:6;27542:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27524:7;:15;27532:6;27524:15;;;;;;;;;;;;;;;:46;;;;27602:39;27625:15;27602:7;:18;27610:9;27602:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27581:7;:18;27589:9;27581:18;;;;;;;;;;;;;;;:60;;;;27673:39;27696:15;27673:7;:18;27681:9;27673:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27652:7;:18;27660:9;27652:18;;;;;;;;;;;;;;;:60;;;;27731:26;27746:10;27731:14;:26::i;:::-;27768:23;27780:4;27786;27768:11;:23::i;:::-;27824:9;27807:44;;27816:6;27807:44;;;27835:15;27807:44;;;;;;:::i;:::-;;;;;;;;27217:642;;;;;;;;;:::o;25539:502::-;25638:15;25655:23;25680:12;25694:23;25719:12;25733:18;25755:19;25766:7;25755:10;:19::i;:::-;25637:137;;;;;;;;;;;;25803:28;25823:7;25803;:15;25811:6;25803:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25785:7;:15;25793:6;25785:15;;;;;;;;;;;;;;;:46;;;;25863:39;25886:15;25863:7;:18;25871:9;25863:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25842:7;:18;25850:9;25842:18;;;;;;;;;;;;;;;:60;;;;25913:26;25928:10;25913:14;:26::i;:::-;25950:23;25962:4;25968;25950:11;:23::i;:::-;26006:9;25989:44;;25998:6;25989:44;;;26017:15;25989:44;;;;;;:::i;:::-;;;;;;;;25539:502;;;;;;;;;:::o;30941:125::-;30995:15;;30985:7;:25;;;;31037:21;;31021:13;:37;;;;30941:125::o;30335:154::-;30399:7;30426:55;30465:5;30426:20;30438:7;;30426;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;30419:62;;30335:154;;;:::o;30501:166::-;30571:7;30598:61;30643:5;30598:26;30610:13;;30598:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;30591:68;;30501:166;;;:::o;29968:355::-;30031:19;30054:10;:8;:10::i;:::-;30031:33;;30075:18;30096:27;30111:11;30096:10;:14;;:27;;;;:::i;:::-;30075:48;;30159:38;30186:10;30159:7;:22;30175:4;30159:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;30134:7;:22;30150:4;30134:22;;;;;;;;;;;;;;;:63;;;;30211:11;:26;30231:4;30211:26;;;;;;;;;;;;;;;;;;;;;;;;;30208:107;;;30277:38;30304:10;30277:7;:22;30293:4;30277:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;30252:7;:22;30268:4;30252:22;;;;;;;;;;;;;;;:63;;;;30208:107;29968:355;;;:::o;27867:147::-;27945:17;27957:4;27945:7;;:11;;:17;;;;:::i;:::-;27935:7;:27;;;;27986:20;28001:4;27986:10;;:14;;:20;;;;:::i;:::-;27973:10;:33;;;;27867:147;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:262::-;644:6;693:2;681:9;672:7;668:23;664:32;661:2;;;709:1;706;699:12;661:2;752:1;777:53;822:7;813:6;802:9;798:22;777:53;:::i;:::-;767:63;;723:117;651:196;;;;:::o;853:284::-;923:6;972:2;960:9;951:7;947:23;943:32;940:2;;;988:1;985;978:12;940:2;1031:1;1056:64;1112:7;1103:6;1092:9;1088:22;1056:64;:::i;:::-;1046:74;;1002:128;930:207;;;;:::o;1143:407::-;1211:6;1219;1268:2;1256:9;1247:7;1243:23;1239:32;1236:2;;;1284:1;1281;1274:12;1236:2;1327:1;1352:53;1397:7;1388:6;1377:9;1373:22;1352:53;:::i;:::-;1342:63;;1298:117;1454:2;1480:53;1525:7;1516:6;1505:9;1501:22;1480:53;:::i;:::-;1470:63;;1425:118;1226:324;;;;;:::o;1556:552::-;1633:6;1641;1649;1698:2;1686:9;1677:7;1673:23;1669:32;1666:2;;;1714:1;1711;1704:12;1666:2;1757:1;1782:53;1827:7;1818:6;1807:9;1803:22;1782:53;:::i;:::-;1772:63;;1728:117;1884:2;1910:53;1955:7;1946:6;1935:9;1931:22;1910:53;:::i;:::-;1900:63;;1855:118;2012:2;2038:53;2083:7;2074:6;2063:9;2059:22;2038:53;:::i;:::-;2028:63;;1983:118;1656:452;;;;;:::o;2114:407::-;2182:6;2190;2239:2;2227:9;2218:7;2214:23;2210:32;2207:2;;;2255:1;2252;2245:12;2207:2;2298:1;2323:53;2368:7;2359:6;2348:9;2344:22;2323:53;:::i;:::-;2313:63;;2269:117;2425:2;2451:53;2496:7;2487:6;2476:9;2472:22;2451:53;:::i;:::-;2441:63;;2396:118;2197:324;;;;;:::o;2527:262::-;2586:6;2635:2;2623:9;2614:7;2610:23;2606:32;2603:2;;;2651:1;2648;2641:12;2603:2;2694:1;2719:53;2764:7;2755:6;2744:9;2740:22;2719:53;:::i;:::-;2709:63;;2665:117;2593:196;;;;:::o;2795:401::-;2860:6;2868;2917:2;2905:9;2896:7;2892:23;2888:32;2885:2;;;2933:1;2930;2923:12;2885:2;2976:1;3001:53;3046:7;3037:6;3026:9;3022:22;3001:53;:::i;:::-;2991:63;;2947:117;3103:2;3129:50;3171:7;3162:6;3151:9;3147:22;3129:50;:::i;:::-;3119:60;;3074:115;2875:321;;;;;:::o;3202:179::-;3271:10;3292:46;3334:3;3326:6;3292:46;:::i;:::-;3370:4;3365:3;3361:14;3347:28;;3282:99;;;;:::o;3387:142::-;3490:32;3516:5;3490:32;:::i;:::-;3485:3;3478:45;3468:61;;:::o;3535:108::-;3612:24;3630:5;3612:24;:::i;:::-;3607:3;3600:37;3590:53;;:::o;3649:118::-;3736:24;3754:5;3736:24;:::i;:::-;3731:3;3724:37;3714:53;;:::o;3803:732::-;3922:3;3951:54;3999:5;3951:54;:::i;:::-;4021:86;4100:6;4095:3;4021:86;:::i;:::-;4014:93;;4131:56;4181:5;4131:56;:::i;:::-;4210:7;4241:1;4226:284;4251:6;4248:1;4245:13;4226:284;;;4327:6;4321:13;4354:63;4413:3;4398:13;4354:63;:::i;:::-;4347:70;;4440:60;4493:6;4440:60;:::i;:::-;4430:70;;4286:224;4273:1;4270;4266:9;4261:14;;4226:284;;;4230:14;4526:3;4519:10;;3927:608;;;;;;;:::o;4541:109::-;4622:21;4637:5;4622:21;:::i;:::-;4617:3;4610:34;4600:50;;:::o;4656:185::-;4770:64;4828:5;4770:64;:::i;:::-;4765:3;4758:77;4748:93;;:::o;4847:147::-;4942:45;4981:5;4942:45;:::i;:::-;4937:3;4930:58;4920:74;;:::o;5000:364::-;5088:3;5116:39;5149:5;5116:39;:::i;:::-;5171:71;5235:6;5230:3;5171:71;:::i;:::-;5164:78;;5251:52;5296:6;5291:3;5284:4;5277:5;5273:16;5251:52;:::i;:::-;5328:29;5350:6;5328:29;:::i;:::-;5323:3;5319:39;5312:46;;5092:272;;;;;:::o;5370:366::-;5512:3;5533:67;5597:2;5592:3;5533:67;:::i;:::-;5526:74;;5609:93;5698:3;5609:93;:::i;:::-;5727:2;5722:3;5718:12;5711:19;;5516:220;;;:::o;5742:366::-;5884:3;5905:67;5969:2;5964:3;5905:67;:::i;:::-;5898:74;;5981:93;6070:3;5981:93;:::i;:::-;6099:2;6094:3;6090:12;6083:19;;5888:220;;;:::o;6114:366::-;6256:3;6277:67;6341:2;6336:3;6277:67;:::i;:::-;6270:74;;6353:93;6442:3;6353:93;:::i;:::-;6471:2;6466:3;6462:12;6455:19;;6260:220;;;:::o;6486:366::-;6628:3;6649:67;6713:2;6708:3;6649:67;:::i;:::-;6642:74;;6725:93;6814:3;6725:93;:::i;:::-;6843:2;6838:3;6834:12;6827:19;;6632:220;;;:::o;6858:366::-;7000:3;7021:67;7085:2;7080:3;7021:67;:::i;:::-;7014:74;;7097:93;7186:3;7097:93;:::i;:::-;7215:2;7210:3;7206:12;7199:19;;7004:220;;;:::o;7230:366::-;7372:3;7393:67;7457:2;7452:3;7393:67;:::i;:::-;7386:74;;7469:93;7558:3;7469:93;:::i;:::-;7587:2;7582:3;7578:12;7571:19;;7376:220;;;:::o;7602:366::-;7744:3;7765:67;7829:2;7824:3;7765:67;:::i;:::-;7758:74;;7841:93;7930:3;7841:93;:::i;:::-;7959:2;7954:3;7950:12;7943:19;;7748:220;;;:::o;7974:366::-;8116:3;8137:67;8201:2;8196:3;8137:67;:::i;:::-;8130:74;;8213:93;8302:3;8213:93;:::i;:::-;8331:2;8326:3;8322:12;8315:19;;8120:220;;;:::o;8346:366::-;8488:3;8509:67;8573:2;8568:3;8509:67;:::i;:::-;8502:74;;8585:93;8674:3;8585:93;:::i;:::-;8703:2;8698:3;8694:12;8687:19;;8492:220;;;:::o;8718:366::-;8860:3;8881:67;8945:2;8940:3;8881:67;:::i;:::-;8874:74;;8957:93;9046:3;8957:93;:::i;:::-;9075:2;9070:3;9066:12;9059:19;;8864:220;;;:::o;9090:366::-;9232:3;9253:67;9317:2;9312:3;9253:67;:::i;:::-;9246:74;;9329:93;9418:3;9329:93;:::i;:::-;9447:2;9442:3;9438:12;9431:19;;9236:220;;;:::o;9462:366::-;9604:3;9625:67;9689:2;9684:3;9625:67;:::i;:::-;9618:74;;9701:93;9790:3;9701:93;:::i;:::-;9819:2;9814:3;9810:12;9803:19;;9608:220;;;:::o;9834:366::-;9976:3;9997:67;10061:2;10056:3;9997:67;:::i;:::-;9990:74;;10073:93;10162:3;10073:93;:::i;:::-;10191:2;10186:3;10182:12;10175:19;;9980:220;;;:::o;10206:366::-;10348:3;10369:67;10433:2;10428:3;10369:67;:::i;:::-;10362:74;;10445:93;10534:3;10445:93;:::i;:::-;10563:2;10558:3;10554:12;10547:19;;10352:220;;;:::o;10578:366::-;10720:3;10741:67;10805:2;10800:3;10741:67;:::i;:::-;10734:74;;10817:93;10906:3;10817:93;:::i;:::-;10935:2;10930:3;10926:12;10919:19;;10724:220;;;:::o;10950:366::-;11092:3;11113:67;11177:2;11172:3;11113:67;:::i;:::-;11106:74;;11189:93;11278:3;11189:93;:::i;:::-;11307:2;11302:3;11298:12;11291:19;;11096:220;;;:::o;11322:366::-;11464:3;11485:67;11549:2;11544:3;11485:67;:::i;:::-;11478:74;;11561:93;11650:3;11561:93;:::i;:::-;11679:2;11674:3;11670:12;11663:19;;11468:220;;;:::o;11694:366::-;11836:3;11857:67;11921:2;11916:3;11857:67;:::i;:::-;11850:74;;11933:93;12022:3;11933:93;:::i;:::-;12051:2;12046:3;12042:12;12035:19;;11840:220;;;:::o;12066:118::-;12153:24;12171:5;12153:24;:::i;:::-;12148:3;12141:37;12131:53;;:::o;12190:112::-;12273:22;12289:5;12273:22;:::i;:::-;12268:3;12261:35;12251:51;;:::o;12308:222::-;12401:4;12439:2;12428:9;12424:18;12416:26;;12452:71;12520:1;12509:9;12505:17;12496:6;12452:71;:::i;:::-;12406:124;;;;:::o;12536:254::-;12645:4;12683:2;12672:9;12668:18;12660:26;;12696:87;12780:1;12769:9;12765:17;12756:6;12696:87;:::i;:::-;12650:140;;;;:::o;12796:332::-;12917:4;12955:2;12944:9;12940:18;12932:26;;12968:71;13036:1;13025:9;13021:17;13012:6;12968:71;:::i;:::-;13049:72;13117:2;13106:9;13102:18;13093:6;13049:72;:::i;:::-;12922:206;;;;;:::o;13134:210::-;13221:4;13259:2;13248:9;13244:18;13236:26;;13272:65;13334:1;13323:9;13319:17;13310:6;13272:65;:::i;:::-;13226:118;;;;:::o;13350:276::-;13470:4;13508:2;13497:9;13493:18;13485:26;;13521:98;13616:1;13605:9;13601:17;13592:6;13521:98;:::i;:::-;13475:151;;;;:::o;13632:313::-;13745:4;13783:2;13772:9;13768:18;13760:26;;13832:9;13826:4;13822:20;13818:1;13807:9;13803:17;13796:47;13860:78;13933:4;13924:6;13860:78;:::i;:::-;13852:86;;13750:195;;;;:::o;13951:419::-;14117:4;14155:2;14144:9;14140:18;14132:26;;14204:9;14198:4;14194:20;14190:1;14179:9;14175:17;14168:47;14232:131;14358:4;14232:131;:::i;:::-;14224:139;;14122:248;;;:::o;14376:419::-;14542:4;14580:2;14569:9;14565:18;14557:26;;14629:9;14623:4;14619:20;14615:1;14604:9;14600:17;14593:47;14657:131;14783:4;14657:131;:::i;:::-;14649:139;;14547:248;;;:::o;14801:419::-;14967:4;15005:2;14994:9;14990:18;14982:26;;15054:9;15048:4;15044:20;15040:1;15029:9;15025:17;15018:47;15082:131;15208:4;15082:131;:::i;:::-;15074:139;;14972:248;;;:::o;15226:419::-;15392:4;15430:2;15419:9;15415:18;15407:26;;15479:9;15473:4;15469:20;15465:1;15454:9;15450:17;15443:47;15507:131;15633:4;15507:131;:::i;:::-;15499:139;;15397:248;;;:::o;15651:419::-;15817:4;15855:2;15844:9;15840:18;15832:26;;15904:9;15898:4;15894:20;15890:1;15879:9;15875:17;15868:47;15932:131;16058:4;15932:131;:::i;:::-;15924:139;;15822:248;;;:::o;16076:419::-;16242:4;16280:2;16269:9;16265:18;16257:26;;16329:9;16323:4;16319:20;16315:1;16304:9;16300:17;16293:47;16357:131;16483:4;16357:131;:::i;:::-;16349:139;;16247:248;;;:::o;16501:419::-;16667:4;16705:2;16694:9;16690:18;16682:26;;16754:9;16748:4;16744:20;16740:1;16729:9;16725:17;16718:47;16782:131;16908:4;16782:131;:::i;:::-;16774:139;;16672:248;;;:::o;16926:419::-;17092:4;17130:2;17119:9;17115:18;17107:26;;17179:9;17173:4;17169:20;17165:1;17154:9;17150:17;17143:47;17207:131;17333:4;17207:131;:::i;:::-;17199:139;;17097:248;;;:::o;17351:419::-;17517:4;17555:2;17544:9;17540:18;17532:26;;17604:9;17598:4;17594:20;17590:1;17579:9;17575:17;17568:47;17632:131;17758:4;17632:131;:::i;:::-;17624:139;;17522:248;;;:::o;17776:419::-;17942:4;17980:2;17969:9;17965:18;17957:26;;18029:9;18023:4;18019:20;18015:1;18004:9;18000:17;17993:47;18057:131;18183:4;18057:131;:::i;:::-;18049:139;;17947:248;;;:::o;18201:419::-;18367:4;18405:2;18394:9;18390:18;18382:26;;18454:9;18448:4;18444:20;18440:1;18429:9;18425:17;18418:47;18482:131;18608:4;18482:131;:::i;:::-;18474:139;;18372:248;;;:::o;18626:419::-;18792:4;18830:2;18819:9;18815:18;18807:26;;18879:9;18873:4;18869:20;18865:1;18854:9;18850:17;18843:47;18907:131;19033:4;18907:131;:::i;:::-;18899:139;;18797:248;;;:::o;19051:419::-;19217:4;19255:2;19244:9;19240:18;19232:26;;19304:9;19298:4;19294:20;19290:1;19279:9;19275:17;19268:47;19332:131;19458:4;19332:131;:::i;:::-;19324:139;;19222:248;;;:::o;19476:419::-;19642:4;19680:2;19669:9;19665:18;19657:26;;19729:9;19723:4;19719:20;19715:1;19704:9;19700:17;19693:47;19757:131;19883:4;19757:131;:::i;:::-;19749:139;;19647:248;;;:::o;19901:419::-;20067:4;20105:2;20094:9;20090:18;20082:26;;20154:9;20148:4;20144:20;20140:1;20129:9;20125:17;20118:47;20182:131;20308:4;20182:131;:::i;:::-;20174:139;;20072:248;;;:::o;20326:419::-;20492:4;20530:2;20519:9;20515:18;20507:26;;20579:9;20573:4;20569:20;20565:1;20554:9;20550:17;20543:47;20607:131;20733:4;20607:131;:::i;:::-;20599:139;;20497:248;;;:::o;20751:419::-;20917:4;20955:2;20944:9;20940:18;20932:26;;21004:9;20998:4;20994:20;20990:1;20979:9;20975:17;20968:47;21032:131;21158:4;21032:131;:::i;:::-;21024:139;;20922:248;;;:::o;21176:419::-;21342:4;21380:2;21369:9;21365:18;21357:26;;21429:9;21423:4;21419:20;21415:1;21404:9;21400:17;21393:47;21457:131;21583:4;21457:131;:::i;:::-;21449:139;;21347:248;;;:::o;21601:222::-;21694:4;21732:2;21721:9;21717:18;21709:26;;21745:71;21813:1;21802:9;21798:17;21789:6;21745:71;:::i;:::-;21699:124;;;;:::o;21829:483::-;22000:4;22038:2;22027:9;22023:18;22015:26;;22051:71;22119:1;22108:9;22104:17;22095:6;22051:71;:::i;:::-;22169:9;22163:4;22159:20;22154:2;22143:9;22139:18;22132:48;22197:108;22300:4;22291:6;22197:108;:::i;:::-;22189:116;;22005:307;;;;;:::o;22318:831::-;22581:4;22619:3;22608:9;22604:19;22596:27;;22633:71;22701:1;22690:9;22686:17;22677:6;22633:71;:::i;:::-;22714:80;22790:2;22779:9;22775:18;22766:6;22714:80;:::i;:::-;22841:9;22835:4;22831:20;22826:2;22815:9;22811:18;22804:48;22869:108;22972:4;22963:6;22869:108;:::i;:::-;22861:116;;22987:72;23055:2;23044:9;23040:18;23031:6;22987:72;:::i;:::-;23069:73;23137:3;23126:9;23122:19;23113:6;23069:73;:::i;:::-;22586:563;;;;;;;;:::o;23155:214::-;23244:4;23282:2;23271:9;23267:18;23259:26;;23295:67;23359:1;23348:9;23344:17;23335:6;23295:67;:::i;:::-;23249:120;;;;:::o;23375:132::-;23442:4;23465:3;23457:11;;23495:4;23490:3;23486:14;23478:22;;23447:60;;;:::o;23513:114::-;23580:6;23614:5;23608:12;23598:22;;23587:40;;;:::o;23633:99::-;23685:6;23719:5;23713:12;23703:22;;23692:40;;;:::o;23738:113::-;23808:4;23840;23835:3;23831:14;23823:22;;23813:38;;;:::o;23857:184::-;23956:11;23990:6;23985:3;23978:19;24030:4;24025:3;24021:14;24006:29;;23968:73;;;;:::o;24047:169::-;24131:11;24165:6;24160:3;24153:19;24205:4;24200:3;24196:14;24181:29;;24143:73;;;;:::o;24222:305::-;24262:3;24281:20;24299:1;24281:20;:::i;:::-;24276:25;;24315:20;24333:1;24315:20;:::i;:::-;24310:25;;24469:1;24401:66;24397:74;24394:1;24391:81;24388:2;;;24475:18;;:::i;:::-;24388:2;24519:1;24516;24512:9;24505:16;;24266:261;;;;:::o;24533:185::-;24573:1;24590:20;24608:1;24590:20;:::i;:::-;24585:25;;24624:20;24642:1;24624:20;:::i;:::-;24619:25;;24663:1;24653:2;;24668:18;;:::i;:::-;24653:2;24710:1;24707;24703:9;24698:14;;24575:143;;;;:::o;24724:348::-;24764:7;24787:20;24805:1;24787:20;:::i;:::-;24782:25;;24821:20;24839:1;24821:20;:::i;:::-;24816:25;;25009:1;24941:66;24937:74;24934:1;24931:81;24926:1;24919:9;24912:17;24908:105;24905:2;;;25016:18;;:::i;:::-;24905:2;25064:1;25061;25057:9;25046:20;;24772:300;;;;:::o;25078:191::-;25118:4;25138:20;25156:1;25138:20;:::i;:::-;25133:25;;25172:20;25190:1;25172:20;:::i;:::-;25167:25;;25211:1;25208;25205:8;25202:2;;;25216:18;;:::i;:::-;25202:2;25261:1;25258;25254:9;25246:17;;25123:146;;;;:::o;25275:96::-;25312:7;25341:24;25359:5;25341:24;:::i;:::-;25330:35;;25320:51;;;:::o;25377:104::-;25422:7;25451:24;25469:5;25451:24;:::i;:::-;25440:35;;25430:51;;;:::o;25487:90::-;25521:7;25564:5;25557:13;25550:21;25539:32;;25529:48;;;:::o;25583:126::-;25620:7;25660:42;25653:5;25649:54;25638:65;;25628:81;;;:::o;25715:77::-;25752:7;25781:5;25770:16;;25760:32;;;:::o;25798:86::-;25833:7;25873:4;25866:5;25862:16;25851:27;;25841:43;;;:::o;25890:180::-;25967:9;26000:64;26058:5;26000:64;:::i;:::-;25987:77;;25977:93;;;:::o;26076:140::-;26153:9;26186:24;26204:5;26186:24;:::i;:::-;26173:37;;26163:53;;;:::o;26222:121::-;26280:9;26313:24;26331:5;26313:24;:::i;:::-;26300:37;;26290:53;;;:::o;26349:307::-;26417:1;26427:113;26441:6;26438:1;26435:13;26427:113;;;26526:1;26521:3;26517:11;26511:18;26507:1;26502:3;26498:11;26491:39;26463:2;26460:1;26456:10;26451:15;;26427:113;;;26558:6;26555:1;26552:13;26549:2;;;26638:1;26629:6;26624:3;26620:16;26613:27;26549:2;26398:258;;;;:::o;26662:320::-;26706:6;26743:1;26737:4;26733:12;26723:22;;26790:1;26784:4;26780:12;26811:18;26801:2;;26867:4;26859:6;26855:17;26845:27;;26801:2;26929;26921:6;26918:14;26898:18;26895:38;26892:2;;;26948:18;;:::i;:::-;26892:2;26713:269;;;;:::o;26988:233::-;27027:3;27050:24;27068:5;27050:24;:::i;:::-;27041:33;;27096:66;27089:5;27086:77;27083:2;;;27166:18;;:::i;:::-;27083:2;27213:1;27206:5;27202:13;27195:20;;27031:190;;;:::o;27227:180::-;27275:77;27272:1;27265:88;27372:4;27369:1;27362:15;27396:4;27393:1;27386:15;27413:180;27461:77;27458:1;27451:88;27558:4;27555:1;27548:15;27582:4;27579:1;27572:15;27599:180;27647:77;27644:1;27637:88;27744:4;27741:1;27734:15;27768:4;27765:1;27758:15;27785:102;27826:6;27877:2;27873:7;27868:2;27861:5;27857:14;27853:28;27843:38;;27833:54;;;:::o;27893:222::-;28033:34;28029:1;28021:6;28017:14;28010:58;28102:5;28097:2;28089:6;28085:15;28078:30;27999:116;:::o;28121:229::-;28261:34;28257:1;28249:6;28245:14;28238:58;28330:12;28325:2;28317:6;28313:15;28306:37;28227:123;:::o;28356:225::-;28496:34;28492:1;28484:6;28480:14;28473:58;28565:8;28560:2;28552:6;28548:15;28541:33;28462:119;:::o;28587:221::-;28727:34;28723:1;28715:6;28711:14;28704:58;28796:4;28791:2;28783:6;28779:15;28772:29;28693:115;:::o;28814:177::-;28954:29;28950:1;28942:6;28938:14;28931:53;28920:71;:::o;28997:177::-;29137:29;29133:1;29125:6;29121:14;29114:53;29103:71;:::o;29180:180::-;29320:32;29316:1;29308:6;29304:14;29297:56;29286:74;:::o;29366:181::-;29506:33;29502:1;29494:6;29490:14;29483:57;29472:75;:::o;29553:220::-;29693:34;29689:1;29681:6;29677:14;29670:58;29762:3;29757:2;29749:6;29745:15;29738:28;29659:114;:::o;29779:182::-;29919:34;29915:1;29907:6;29903:14;29896:58;29885:76;:::o;29967:228::-;30107:34;30103:1;30095:6;30091:14;30084:58;30176:11;30171:2;30163:6;30159:15;30152:36;30073:122;:::o;30201:176::-;30341:28;30337:1;30329:6;30325:14;30318:52;30307:70;:::o;30383:178::-;30523:30;30519:1;30511:6;30507:14;30500:54;30489:72;:::o;30567:224::-;30707:34;30703:1;30695:6;30691:14;30684:58;30776:7;30771:2;30763:6;30759:15;30752:32;30673:118;:::o;30797:223::-;30937:34;30933:1;30925:6;30921:14;30914:58;31006:6;31001:2;30993:6;30989:15;30982:31;30903:117;:::o;31026:174::-;31166:26;31162:1;31154:6;31150:14;31143:50;31132:68;:::o;31206:231::-;31346:34;31342:1;31334:6;31330:14;31323:58;31415:14;31410:2;31402:6;31398:15;31391:39;31312:125;:::o;31443:173::-;31583:25;31579:1;31571:6;31567:14;31560:49;31549:67;:::o;31622:122::-;31695:24;31713:5;31695:24;:::i;:::-;31688:5;31685:35;31675:2;;31734:1;31731;31724:12;31675:2;31665:79;:::o;31750:116::-;31820:21;31835:5;31820:21;:::i;:::-;31813:5;31810:32;31800:2;;31856:1;31853;31846:12;31800:2;31790:76;:::o;31872:122::-;31945:24;31963:5;31945:24;:::i;:::-;31938:5;31935:35;31925:2;;31984:1;31981;31974:12;31925:2;31915:79;:::o

Swarm Source

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