ETH Price: $3,312.34 (+1.27%)
Gas: 9 Gwei

Contract

0x70A9bea75a3Bfe97B631f53c2bdE9D3E2947eE9E
 

Overview

ETH Balance

0.074729820531781264 ETH

Eth Value

$247.53 (@ $3,312.34/ETH)

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer162060672022-12-17 17:59:47590 days ago1671299987IN
Votonx: VOTX Token
0 ETH0.0015268912.95033598
Exclude From Fee162059312022-12-17 17:32:35590 days ago1671298355IN
Votonx: VOTX Token
0 ETH0.0007018115.1083302
Set Trading Stat...162059312022-12-17 17:32:35590 days ago1671298355IN
Votonx: VOTX Token
0 ETH0.0004434515.1083302
Exclude From Fee162055112022-12-17 16:08:35591 days ago1671293315IN
Votonx: VOTX Token
0 ETH0.0007713116.60454757
Approve154252412022-08-28 2:29:40702 days ago1661653780IN
Votonx: VOTX Token
0 ETH0.000170123.5996994
Transfer146745382022-04-28 18:53:09823 days ago1651171989IN
Votonx: VOTX Token
0 ETH0.0046147542.86574953
Approve145795152022-04-13 21:20:49838 days ago1649884849IN
Votonx: VOTX Token
0 ETH0.0014083556.38592277
Approve145794512022-04-13 21:07:00838 days ago1649884020IN
Votonx: VOTX Token
0 ETH0.001065442.65547588
Transfer145779172022-04-13 15:32:34839 days ago1649863954IN
Votonx: VOTX Token
0 ETH0.0066682261.9469861
Transfer144589682022-03-26 1:42:59857 days ago1648258979IN
Votonx: VOTX Token
0 ETH0.0069276664.35005843
Transfer144589622022-03-26 1:41:54857 days ago1648258914IN
Votonx: VOTX Token
0 ETH0.0070786765.75273373
Transfer144582162022-03-25 22:56:13857 days ago1648248973IN
Votonx: VOTX Token
0 ETH0.004428641.13660402
Transfer144582052022-03-25 22:53:12857 days ago1648248792IN
Votonx: VOTX Token
0 ETH0.0050161946.59463382
Set Trading Stat...144580872022-03-25 22:28:11857 days ago1648247291IN
Votonx: VOTX Token
0 ETH0.0019425766.2090216
Update Swap Enab...144580872022-03-25 22:28:11857 days ago1648247291IN
Votonx: VOTX Token
0 ETH0.0019204566.2090216
Transfer144578672022-03-25 21:37:15857 days ago1648244235IN
Votonx: VOTX Token
0 ETH0.0040531337.42815145
Transfer144577392022-03-25 21:09:10857 days ago1648242550IN
Votonx: VOTX Token
0 ETH0.01020694.24612123
Transfer144574602022-03-25 20:05:43857 days ago1648238743IN
Votonx: VOTX Token
0 ETH0.005384149.71882505
Transfer144570112022-03-25 18:22:33857 days ago1648232553IN
Votonx: VOTX Token
0 ETH0.0068020362.81253754
Transfer144568992022-03-25 17:56:10857 days ago1648230970IN
Votonx: VOTX Token
0 ETH0.0050661646.78804135
Transfer144563492022-03-25 15:50:06858 days ago1648223406IN
Votonx: VOTX Token
0 ETH0.0074749569.03418301
Transfer144562402022-03-25 15:25:30858 days ago1648221930IN
Votonx: VOTX Token
0 ETH0.0076480970.62535788
Transfer144560882022-03-25 14:52:53858 days ago1648219973IN
Votonx: VOTX Token
0 ETH0.007960373.50846701
Transfer144560812022-03-25 14:50:23858 days ago1648219823IN
Votonx: VOTX Token
0 ETH0.0068310763.08071165
Transfer144560622022-03-25 14:46:05858 days ago1648219565IN
Votonx: VOTX Token
0 ETH0.0045094441.64189025
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
144448222022-03-23 20:47:59859 days ago1648068479
Votonx: VOTX Token
0.00003807 ETH
144448222022-03-23 20:47:59859 days ago1648068479
Votonx: VOTX Token
0.00003807 ETH
144437612022-03-23 16:54:45859 days ago1648054485
Votonx: VOTX Token
0.00003808 ETH
144437612022-03-23 16:54:45859 days ago1648054485
Votonx: VOTX Token
0.00003808 ETH
144426812022-03-23 12:57:37860 days ago1648040257
Votonx: VOTX Token
0.00003808 ETH
144426812022-03-23 12:57:37860 days ago1648040257
Votonx: VOTX Token
0.00003808 ETH
144419772022-03-23 10:21:28860 days ago1648030888
Votonx: VOTX Token
0.00003808 ETH
144419772022-03-23 10:21:28860 days ago1648030888
Votonx: VOTX Token
0.00003808 ETH
144418892022-03-23 10:02:56860 days ago1648029776
Votonx: VOTX Token
0.00003808 ETH
144418892022-03-23 10:02:56860 days ago1648029776
Votonx: VOTX Token
0.00003808 ETH
144415782022-03-23 8:51:56860 days ago1648025516
Votonx: VOTX Token
0.00003808 ETH
144415782022-03-23 8:51:56860 days ago1648025516
Votonx: VOTX Token
0.00003808 ETH
144395092022-03-23 1:04:50860 days ago1647997490
Votonx: VOTX Token
0.00003808 ETH
144395092022-03-23 1:04:50860 days ago1647997490
Votonx: VOTX Token
0.00003808 ETH
144388412022-03-22 22:34:11860 days ago1647988451
Votonx: VOTX Token
0.00003808 ETH
144388412022-03-22 22:34:11860 days ago1647988451
Votonx: VOTX Token
0.00003808 ETH
144381012022-03-22 19:52:29860 days ago1647978749
Votonx: VOTX Token
0.00003808 ETH
144381012022-03-22 19:52:29860 days ago1647978749
Votonx: VOTX Token
0.00003808 ETH
144377352022-03-22 18:31:15860 days ago1647973875
Votonx: VOTX Token
0.00004811 ETH
144377352022-03-22 18:31:15860 days ago1647973875
Votonx: VOTX Token
0.00004811 ETH
144377062022-03-22 18:25:28860 days ago1647973528
Votonx: VOTX Token
0.00005404 ETH
144377062022-03-22 18:25:28860 days ago1647973528
Votonx: VOTX Token
0.00005404 ETH
144377022022-03-22 18:24:29860 days ago1647973469
Votonx: VOTX Token
0.0000674 ETH
144377022022-03-22 18:24:29860 days ago1647973469
Votonx: VOTX Token
0.0000674 ETH
144376992022-03-22 18:24:05860 days ago1647973445
Votonx: VOTX Token
0.0000864 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Votonx

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: NOLICENSE
pragma solidity ^0.8.7;

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract Votonx is Context, IERC20, Ownable {

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) private _isBot;

    address[] private _excluded;

    bool public tradingEnabled;
    bool public swapEnabled;
    bool private swapping;

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _tTotal = 1 * 10**12 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public swapTokensAtAmount = 10_000_000 * 10**_decimals;
    
    address public marketingAddress = 0x7c1e26f5940Bc15Ca9b27A7Dea30d7E830c67cAE;

    string private constant _name = "Votonx";
    string private constant _symbol = "VOTX";


    struct Taxes {
      uint256 rfi;
      uint256 marketing;
      uint256 liquidity;
    }

    Taxes public taxes = Taxes(0,0,1);
    Taxes public buyTaxes = Taxes(0,8,2);
    Taxes public sellTaxes = Taxes(5,0,0);

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
    }
    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tMarketing;
      uint256 tLiquidity;
    }

    event FeesChanged();
    event UpdatedRouter(address oldRouter, address newRouter);

    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

    constructor (address routerAddress) {
        IRouter _router = IRouter(routerAddress);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        
        excludeFromReward(pair);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingAddress]=true;

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

    //std ERC20:
    function name() public pure returns (string memory) {
        return _name;
    }
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    //override ERC20:
    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 virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

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

        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi, Taxes memory temp) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true, temp);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true, temp);
            return s.rTransferAmount;
        }
    }


    function setTradingStatus(bool state) external onlyOwner{
        tradingEnabled = state;
        swapEnabled = state;
    }

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

    //@dev kept original RFI naming -> "reward" as in reflection
    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 not 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 excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }


    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function setTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity) public onlyOwner {
        taxes.rfi = _rfi;
        taxes.marketing = _marketing;
        taxes.liquidity = _liquidity;
        emit FeesChanged();
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -=rRfi;
        totFeesPaid.rfi +=tRfi;
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity +=tLiquidity;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tLiquidity;
        }
        _rOwned[address(this)] +=rLiquidity;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.marketing +=tMarketing;

        if(_isExcluded[marketingAddress])
        {
            _tOwned[marketingAddress]+=tMarketing;
        }
        _rOwned[marketingAddress] +=rMarketing;
    }
    
    function _getValues(uint256 tAmount, bool takeFee, Taxes memory temp) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, temp);
        (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rMarketing, to_return.rLiquidity) = _getRValues(to_return, tAmount, takeFee, _getRate());
        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee, Taxes memory temp) private pure returns (valuesFromGetValues memory s) {

        if(!takeFee) {
          s.tTransferAmount = tAmount;
          return s;
        }
        
        s.tRfi = tAmount*temp.rfi/100;
        s.tMarketing = tAmount*temp.marketing/100;
        s.tLiquidity = tAmount*temp.liquidity/100;
        s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity;
        return s;
    }

    function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi,uint256 rMarketing, uint256 rLiquidity) {
        rAmount = tAmount*currentRate;

        if(!takeFee) {
          return(rAmount, rAmount, 0,0,0);
        }

        rRfi = s.tRfi*currentRate;
        rMarketing = s.tMarketing*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        rTransferAmount =  rAmount-rRfi-rMarketing-rLiquidity;
        return (rAmount, rTransferAmount, rRfi,rMarketing,rLiquidity);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply/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-_rOwned[_excluded[i]];
            tSupply = tSupply-_tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    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(amount <= balanceOf(from),"You are trying to transfer more than your balance");
        require(!_isBot[from] && !_isBot[to], "You are a bot");
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            require(tradingEnabled, "Trading not active");
        }
       
        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            swapAndLiquify(swapTokensAtAmount);
        }
        Taxes memory temp; 

        if(from == pair) temp = buyTaxes;
        else if(to == pair) temp = sellTaxes;
        else temp = taxes;

        _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to]), temp);
    }


    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, Taxes memory temp) private {

        valuesFromGetValues memory s = _getValues(tAmount, takeFee, temp);

        if (_isExcluded[sender] ) {  //from excluded
                _tOwned[sender] = _tOwned[sender]-tAmount;
        }
        if (_isExcluded[recipient]) { //to excluded
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender]-s.rAmount;
        _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;
        
        if(s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if(s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity,s.tLiquidity);
            emit Transfer(sender, address(this), s.tLiquidity);
        }
        if(s.rMarketing > 0 || s.tMarketing > 0){
            _takeMarketing(s.rMarketing, s.tMarketing);
            emit Transfer(sender,marketingAddress, s.tMarketing);
        }
        emit Transfer(sender, recipient, s.tTransferAmount);
        
    }

    function swapAndLiquify(uint256 contractBalance) private lockTheSwap{
        uint256 tokensToAddLiquidityWith = contractBalance / 2;
        uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForBNB(toSwap);

        uint256 bnbToAddLiquidityWith = address(this).balance - initialBalance;

        if(bnbToAddLiquidityWith > 0){
            // Add liquidity to pancake
            addLiquidity(tokensToAddLiquidityWith, bnbToAddLiquidityWith);
        }
            
    }

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

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function swapTokensForBNB(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

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

    function updateMarketingWallet(address newWallet) external onlyOwner{
        require(marketingAddress != newWallet ,'Wallet already set');
        marketingAddress = newWallet;
        _isExcludedFromFee[marketingAddress];
    }

    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{
        swapTokensAtAmount = amount * 10**_decimals;
    }

    function updateSwapEnabled(bool _enabled) external onlyOwner{
        swapEnabled = _enabled;
    }

    function updateTransferTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity) external onlyOwner{
        taxes = Taxes(_rfi, _marketing, _liquidity);
    }

    function updateBuyTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity) external onlyOwner{
        sellTaxes = Taxes(_rfi, _marketing, _liquidity);
    }

    function updateSellTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity) external onlyOwner{
        buyTaxes = Taxes(_rfi, _marketing, _liquidity);
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
    }
    
    //Use this in case BNB are sent to the contract by mistake
    function rescueBNB(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "insufficient BNB balance");
        payable(msg.sender).transfer(weiAmount);
    }
    

    function rescueAnyBEP20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    receive() external payable{
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"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":[],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"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":"buyTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":[{"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":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"},{"components":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"internalType":"struct Votonx.Taxes","name":"temp","type":"tuple"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyBEP20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"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":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"updateBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"updateSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"updateTransferTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000f79565b64e8d4a51000620000269190620010b6565b600a55600a546000196200003b9190620011eb565b6000196200004a919062001117565b600b556009600a6200005d919062000f79565b629896806200006d9190620010b6565b600c55737c1e26f5940bc15ca9b27a7dea30d7e830c67cae600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060008152602001600081526020016001815250600e600082015181600001556020820151816001015560408201518160020155505060405180606001604052806000815260200160088152602001600281525060116000820151816000015560208201518160010155604082015181600201555050604051806060016040528060058152602001600081526020016000815250601460008201518160000155602082015181600101556040820151816002015550503480156200019257600080fd5b5060405162006753380380620067538339818101604052810190620001b8919062000d5c565b620001d8620001cc6200063b60201b60201c565b6200064360201b60201c565b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022657600080fd5b505afa1580156200023b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000261919062000d5c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002c457600080fd5b505afa158015620002d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ff919062000d5c565b6040518363ffffffff1660e01b81526004016200031e92919062000e25565b602060405180830381600087803b1580156200033957600080fd5b505af11580156200034e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000374919062000d5c565b905081600860036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200042b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200070760201b60201c565b600b546001600062000442620009c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016004600062000496620009c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005c9620009c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040516200062a919062000eb8565b60405180910390a35050506200137d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620007176200063b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200073d620009c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000796576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200078d9062000e96565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161562000826576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200081d9062000e74565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156200090357620008bf600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620009ea60201b60201c565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600b5482111562000a34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a2b9062000e52565b60405180910390fd5b600062000a4662000a5e60201b60201c565b9050808362000a56919062000ee6565b915050919050565b600080600062000a7362000a8c60201b60201c565b91509150808262000a85919062000ee6565b9250505090565b6000806000600b5490506000600a54905060005b60078054905081101562000d0b5782600160006007848154811062000aca5762000ac962001281565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118062000bbc575081600260006007848154811062000b545762000b5362001281565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1562000bd557600b54600a549450945050505062000d41565b600160006007838154811062000bf05762000bef62001281565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548362000c63919062001117565b9250600260006007838154811062000c805762000c7f62001281565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548262000cf3919062001117565b9150808062000d02906200119d565b91505062000aa0565b50600a54600b5462000d1e919062000ee6565b82101562000d3857600b54600a5493509350505062000d41565b81819350935050505b9091565b60008151905062000d568162001363565b92915050565b60006020828403121562000d755762000d74620012b0565b5b600062000d858482850162000d45565b91505092915050565b62000d998162001152565b82525050565b600062000dae602a8362000ed5565b915062000dbb82620012c2565b604082019050919050565b600062000dd5601b8362000ed5565b915062000de28262001311565b602082019050919050565b600062000dfc60208362000ed5565b915062000e09826200133a565b602082019050919050565b62000e1f8162001186565b82525050565b600060408201905062000e3c600083018562000d8e565b62000e4b602083018462000d8e565b9392505050565b6000602082019050818103600083015262000e6d8162000d9f565b9050919050565b6000602082019050818103600083015262000e8f8162000dc6565b9050919050565b6000602082019050818103600083015262000eb18162000ded565b9050919050565b600060208201905062000ecf600083018462000e14565b92915050565b600082825260208201905092915050565b600062000ef38262001186565b915062000f008362001186565b92508262000f135762000f1262001252565b5b828204905092915050565b6000808291508390505b600185111562000f705780860481111562000f485762000f4762001223565b5b600185161562000f585780820291505b808102905062000f6885620012b5565b945062000f28565b94509492505050565b600062000f868262001186565b915062000f938362001190565b925062000fc27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000fca565b905092915050565b60008262000fdc5760019050620010af565b8162000fec5760009050620010af565b8160018114620010055760028114620010105762001046565b6001915050620010af565b60ff84111562001025576200102462001223565b5b8360020a9150848211156200103f576200103e62001223565b5b50620010af565b5060208310610133831016604e8410600b8410161715620010805782820a9050838111156200107a576200107962001223565b5b620010af565b6200108f848484600162000f1e565b92509050818404811115620010a957620010a862001223565b5b81810290505b9392505050565b6000620010c38262001186565b9150620010d08362001186565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200110c576200110b62001223565b5b828202905092915050565b6000620011248262001186565b9150620011318362001186565b92508282101562001147576200114662001223565b5b828203905092915050565b60006200115f8262001166565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000620011aa8262001186565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415620011e057620011df62001223565b5b600182019050919050565b6000620011f88262001186565b9150620012058362001186565b92508262001218576200121762001252565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b60008160011c9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6200136e8162001152565b81146200137a57600080fd5b50565b6153c6806200138d6000396000f3fe6080604052600436106102605760003560e01c8063728f8eea11610144578063a9059cbb116100b6578063e2f456051161007a578063e2f4560514610941578063e9dae5ed1461096c578063ea2f0b3714610995578063f2fde38b146109be578063f66895a3146109e7578063f887ea4014610a1457610267565b8063a9059cbb1461084c578063aacebbe314610889578063b4337b4e146108b2578063d257b34f146108db578063dd62ed3e1461090457610267565b8063924de9b711610108578063924de9b71461073857806395d89b41146107615780639ba5e4d51461078c578063a457c2d7146107b9578063a5ece941146107f6578063a8aa1b311461082157610267565b8063728f8eea1461064d578063864701a51461067a57806388f82020146106a75780638c374ac1146106e45780638da5cb5b1461070d57610267565b806340b28c2f116101dd5780634dd73ffb116101a15780634dd73ffb1461053f57806352390c02146105685780635342acb4146105915780636ddd1713146105ce57806370a08231146105f9578063715018a61461063657610267565b806340b28c2f14610470578063437823ec14610499578063441b1d30146104c257806347c23092146104eb5780634ada218b1461051457610267565b80632d838119116102245780632d83811914610379578063313ce567146103b65780633685d419146103e1578063379ba1d91461040a578063395093511461043357610267565b806306fdde031461026c57806307cf224314610297578063095ea7b3146102d457806318160ddd1461031157806323b872dd1461033c57610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610a3f565b60405161028e9190614667565b60405180910390f35b3480156102a357600080fd5b506102be60048036038101906102b99190614105565b610a7c565b6040516102cb91906148c9565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f6919061403e565b610b05565b6040516103089190614631565b60405180910390f35b34801561031d57600080fd5b50610326610b23565b60405161033391906148c9565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e9190613feb565b610b2d565b6040516103709190614631565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b91906140d8565b610c2e565b6040516103ad91906148c9565b60405180910390f35b3480156103c257600080fd5b506103cb610c95565b6040516103d89190614975565b60405180910390f35b3480156103ed57600080fd5b5061040860048036038101906104039190613f51565b610c9e565b005b34801561041657600080fd5b50610431600480360381019061042c919061407e565b610fd4565b005b34801561043f57600080fd5b5061045a6004803603810190610455919061403e565b611087565b6040516104679190614631565b60405180910390f35b34801561047c57600080fd5b5061049760048036038101906104929190613fab565b611133565b005b3480156104a557600080fd5b506104c060048036038101906104bb9190613f51565b611235565b005b3480156104ce57600080fd5b506104e960048036038101906104e491906140d8565b61130c565b005b3480156104f757600080fd5b50610512600480360381019061050d9190613feb565b611415565b005b34801561052057600080fd5b50610529611524565b6040516105369190614631565b60405180910390f35b34801561054b57600080fd5b5061056660048036038101906105619190614158565b611537565b005b34801561057457600080fd5b5061058f600480360381019061058a9190613f51565b6115f6565b005b34801561059d57600080fd5b506105b860048036038101906105b39190613f51565b611891565b6040516105c59190614631565b60405180910390f35b3480156105da57600080fd5b506105e36118e7565b6040516105f09190614631565b60405180910390f35b34801561060557600080fd5b50610620600480360381019061061b9190613f51565b6118fa565b60405161062d91906148c9565b60405180910390f35b34801561064257600080fd5b5061064b6119e5565b005b34801561065957600080fd5b50610662611a6d565b6040516106719392919061493e565b60405180910390f35b34801561068657600080fd5b5061068f611a85565b60405161069e9392919061493e565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c99190613f51565b611a9d565b6040516106db9190614631565b60405180910390f35b3480156106f057600080fd5b5061070b60048036038101906107069190614158565b611af3565b005b34801561071957600080fd5b50610722611bb2565b60405161072f919061458c565b60405180910390f35b34801561074457600080fd5b5061075f600480360381019061075a919061407e565b611bdb565b005b34801561076d57600080fd5b50610776611c74565b6040516107839190614667565b60405180910390f35b34801561079857600080fd5b506107a1611cb1565b6040516107b09392919061493e565b60405180910390f35b3480156107c557600080fd5b506107e060048036038101906107db919061403e565b611cc9565b6040516107ed9190614631565b60405180910390f35b34801561080257600080fd5b5061080b611dbd565b604051610818919061458c565b60405180910390f35b34801561082d57600080fd5b50610836611de3565b604051610843919061458c565b60405180910390f35b34801561085857600080fd5b50610873600480360381019061086e919061403e565b611e09565b6040516108809190614631565b60405180910390f35b34801561089557600080fd5b506108b060048036038101906108ab9190613f51565b611e27565b005b3480156108be57600080fd5b506108d960048036038101906108d49190614158565b611fe5565b005b3480156108e757600080fd5b5061090260048036038101906108fd91906140d8565b6120a4565b005b34801561091057600080fd5b5061092b60048036038101906109269190613fab565b612142565b60405161093891906148c9565b60405180910390f35b34801561094d57600080fd5b506109566121c9565b60405161096391906148c9565b60405180910390f35b34801561097857600080fd5b50610993600480360381019061098e9190614158565b6121cf565b005b3480156109a157600080fd5b506109bc60048036038101906109b79190613f51565b61229a565b005b3480156109ca57600080fd5b506109e560048036038101906109e09190613f51565b612371565b005b3480156109f357600080fd5b506109fc612469565b604051610a0b9392919061493e565b60405180910390f35b348015610a2057600080fd5b50610a29612481565b604051610a36919061464c565b60405180910390f35b60606040518060400160405280600681526020017f566f746f6e780000000000000000000000000000000000000000000000000000815250905090565b6000600a54841115610ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aba90614789565b60405180910390fd5b82610ae5576000610ad6856001856124a7565b90508060000151915050610afe565b6000610af3856001856124a7565b905080602001519150505b9392505050565b6000610b19610b12612503565b848461250b565b6001905092915050565b6000600a54905090565b6000610b3a8484846126d6565b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b85612503565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc906147c9565b60405180910390fd5b610c2285610c11612503565b8584610c1d9190614c5c565b61250b565b60019150509392505050565b6000600b54821115610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c906146e9565b60405180910390fd5b6000610c7f612d77565b90508083610c8d9190614a60565b915050919050565b60006009905090565b610ca6612503565b73ffffffffffffffffffffffffffffffffffffffff16610cc4611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614610d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d11906147e9565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d90614769565b60405180910390fd5b60005b600780549050811015610fd0578173ffffffffffffffffffffffffffffffffffffffff1660078281548110610de157610de0614e67565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610fbd5760076001600780549050610e3c9190614c5c565b81548110610e4d57610e4c614e67565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110610e8c57610e8b614e67565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007805480610f8357610f82614e38565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610fd0565b8080610fc890614d91565b915050610da9565b5050565b610fdc612503565b73ffffffffffffffffffffffffffffffffffffffff16610ffa611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614611050576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611047906147e9565b60405180910390fd5b80600860006101000a81548160ff02191690831515021790555080600860016101000a81548160ff02191690831515021790555050565b6000611129611094612503565b8484600360006110a2612503565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111249190614a0a565b61250b565b6001905092915050565b61113b612503565b73ffffffffffffffffffffffffffffffffffffffff16611159611bb2565b73ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a6906147e9565b60405180910390fd5b81600860036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61123d612503565b73ffffffffffffffffffffffffffffffffffffffff1661125b611bb2565b73ffffffffffffffffffffffffffffffffffffffff16146112b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a8906147e9565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611314612503565b73ffffffffffffffffffffffffffffffffffffffff16611332611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f906147e9565b60405180910390fd5b804710156113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c2906147a9565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611411573d6000803e3d6000fd5b5050565b61141d612503565b73ffffffffffffffffffffffffffffffffffffffff1661143b611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614611491576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611488906147e9565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016114cc9291906145a7565b602060405180830381600087803b1580156114e657600080fd5b505af11580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e91906140ab565b50505050565b600860009054906101000a900460ff1681565b61153f612503565b73ffffffffffffffffffffffffffffffffffffffff1661155d611bb2565b73ffffffffffffffffffffffffffffffffffffffff16146115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115aa906147e9565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600e600082015181600001556020820151816001015560408201518160020155905050505050565b6115fe612503565b73ffffffffffffffffffffffffffffffffffffffff1661161c611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614611672576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611669906147e9565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f690614749565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156117d35761178f600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c2e565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600860019054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561199557600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506119e0565b6119dd600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c2e565b90505b919050565b6119ed612503565b73ffffffffffffffffffffffffffffffffffffffff16611a0b611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614611a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a58906147e9565b60405180910390fd5b611a6b6000612d9b565b565b600e8060000154908060010154908060020154905083565b60118060000154908060010154908060020154905083565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611afb612503565b73ffffffffffffffffffffffffffffffffffffffff16611b19611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b66906147e9565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506014600082015181600001556020820151816001015560408201518160020155905050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611be3612503565b73ffffffffffffffffffffffffffffffffffffffff16611c01611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614611c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4e906147e9565b60405180910390fd5b80600860016101000a81548160ff02191690831515021790555050565b60606040518060400160405280600481526020017f564f545800000000000000000000000000000000000000000000000000000000815250905090565b60178060000154908060010154908060020154905083565b60008060036000611cd8612503565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8c906148a9565b60405180910390fd5b611db2611da0612503565b858584611dad9190614c5c565b61250b565b600191505092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611e1d611e16612503565b84846126d6565b6001905092915050565b611e2f612503565b73ffffffffffffffffffffffffffffffffffffffff16611e4d611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a906147e9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2b90614829565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90505050565b611fed612503565b73ffffffffffffffffffffffffffffffffffffffff1661200b611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614612061576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612058906147e9565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506011600082015181600001556020820151816001015560408201518160020155905050505050565b6120ac612503565b73ffffffffffffffffffffffffffffffffffffffff166120ca611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614612120576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612117906147e9565b60405180910390fd5b6009600a61212e9190614ae4565b816121399190614c02565b600c8190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b6121d7612503565b73ffffffffffffffffffffffffffffffffffffffff166121f5611bb2565b73ffffffffffffffffffffffffffffffffffffffff161461224b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612242906147e9565b60405180910390fd5b82600e6000018190555081600e6001018190555080600e600201819055507f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1560405160405180910390a1505050565b6122a2612503565b73ffffffffffffffffffffffffffffffffffffffff166122c0611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614612316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230d906147e9565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612379612503565b73ffffffffffffffffffffffffffffffffffffffff16612397611bb2565b73ffffffffffffffffffffffffffffffffffffffff16146123ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e4906147e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561245d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245490614709565b60405180910390fd5b61246681612d9b565b50565b60148060000154908060010154908060020154905083565b600860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6124af613e02565b6124ba848484612e5f565b90506124cf8185856124ca612d77565b612f2b565b8560000186602001876040018860600189608001858152508581525085815250858152508581525050505050509392505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561257b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257290614869565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e290614729565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126c991906148c9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273d90614849565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ad90614689565b60405180910390fd5b600081116127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f090614809565b60405180910390fd5b612802836118fa565b811115612844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283b906146c9565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128e85750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291e90614889565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129cb5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a2057600860009054906101000a900460ff16612a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a16906146a9565b60405180910390fd5b5b6000600c54612a2e306118fa565b10159050600860029054906101000a900460ff16158015612a5b5750600860019054906101000a900460ff165b8015612a645750805b8015612abe5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612b145750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b6a5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b7b57612b7a600c54612fc3565b5b612b83613e4e565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612c0b57601160405180606001604052908160008201548152602001600182015481526020016002820154815250509050612cc2565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612c9357601460405180606001604052908160008201548152602001600182015481526020016002820154815250509050612cc1565b600e604051806060016040529081600082015481526020016001820154815260200160028201548152505090505b5b612d70858585600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d695750600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1585613053565b5050505050565b6000806000612d84613541565b915091508082612d949190614a60565b9250505090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612e67613e02565b82612e7b57838160a0018181525050612f24565b6064826000015185612e8d9190614c02565b612e979190614a60565b8160c00181815250506064826020015185612eb29190614c02565b612ebc9190614a60565b8160e00181815250506064826040015185612ed79190614c02565b612ee19190614a60565b816101000181815250508061010001518160e001518260c0015186612f069190614c5c565b612f109190614c5c565b612f1a9190614c5c565b8160a00181815250505b9392505050565b60008060008060008588612f3f9190614c02565b945086612f5c578485600080600094509450945094509450612fb8565b858960c00151612f6c9190614c02565b9250858960e00151612f7e9190614c02565b915085896101000151612f919190614c02565b905080828487612fa19190614c5c565b612fab9190614c5c565b612fb59190614c5c565b93505b945094509450945094565b6001600860026101000a81548160ff0219169083151502179055506000600282612fed9190614a60565b905060008183612ffd9190614c5c565b9050600047905061300d826137df565b6000814761301b9190614c5c565b90506000811115613031576130308482613a31565b5b505050506000600860026101000a81548160ff02191690831515021790555050565b60006130608484846124a7565b9050600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156131435783600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ff9190614c5c565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613228578060a00151600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131e49190614a0a565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8060000151600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132779190614c5c565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060200151600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133099190614a0a565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600081604001511180613363575060008160c00151115b1561337b5761337a81604001518260c00151613b25565b5b60008160800151118061339357506000816101000151115b15613416576133ab8160800151826101000151613b5e565b3073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83610100015160405161340d91906148c9565b60405180910390a35b60008160600151118061342d575060008160e00151115b156134d05761344481606001518260e00151613c7d565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e001516040516134c791906148c9565b60405180910390a35b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360a0015160405161353191906148c9565b60405180910390a3505050505050565b6000806000600b5490506000600a54905060005b6007805490508110156137a95782600160006007848154811061357b5761357a614e67565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613669575081600260006007848154811061360157613600614e67565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561368057600b54600a54945094505050506137db565b600160006007838154811061369857613697614e67565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836137099190614c5c565b9250600260006007838154811061372357613722614e67565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826137949190614c5c565b915080806137a190614d91565b915050613555565b50600a54600b546137ba9190614a60565b8210156137d257600b54600a549350935050506137db565b81819350935050505b9091565b6000600267ffffffffffffffff8111156137fc576137fb614e96565b5b60405190808252806020026020018201604052801561382a5781602001602082028036833780820191505090505b509050308160008151811061384257613841614e67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156138e457600080fd5b505afa1580156138f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391c9190613f7e565b816001815181106139305761392f614e67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061399730600860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461250b565b600860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016139fb9594939291906148e4565b600060405180830381600087803b158015613a1557600080fd5b505af1158015613a29573d6000803e3d6000fd5b505050505050565b613a5e30600860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461250b565b600860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613aaa611bb2565b426040518863ffffffff1660e01b8152600401613acc969594939291906145d0565b6060604051808303818588803b158015613ae557600080fd5b505af1158015613af9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b1e91906141ab565b5050505050565b81600b6000828254613b379190614c5c565b925050819055508060176000016000828254613b539190614a0a565b925050819055505050565b8060176002016000828254613b739190614a0a565b92505081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c235780600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c1b9190614a0a565b925050819055505b81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c729190614a0a565b925050819055505050565b8060176001016000828254613c929190614a0a565b9250508190555060056000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613d86578060026000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d7e9190614a0a565b925050819055505b8160016000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613df79190614a0a565b925050819055505050565b6040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b600081359050613e7e8161534b565b92915050565b600081519050613e938161534b565b92915050565b600081359050613ea881615362565b92915050565b600081519050613ebd81615362565b92915050565b600060608284031215613ed957613ed8614ec5565b5b613ee36060614990565b90506000613ef384828501613f27565b6000830152506020613f0784828501613f27565b6020830152506040613f1b84828501613f27565b60408301525092915050565b600081359050613f3681615379565b92915050565b600081519050613f4b81615379565b92915050565b600060208284031215613f6757613f66614eca565b5b6000613f7584828501613e6f565b91505092915050565b600060208284031215613f9457613f93614eca565b5b6000613fa284828501613e84565b91505092915050565b60008060408385031215613fc257613fc1614eca565b5b6000613fd085828601613e6f565b9250506020613fe185828601613e6f565b9150509250929050565b60008060006060848603121561400457614003614eca565b5b600061401286828701613e6f565b935050602061402386828701613e6f565b925050604061403486828701613f27565b9150509250925092565b6000806040838503121561405557614054614eca565b5b600061406385828601613e6f565b925050602061407485828601613f27565b9150509250929050565b60006020828403121561409457614093614eca565b5b60006140a284828501613e99565b91505092915050565b6000602082840312156140c1576140c0614eca565b5b60006140cf84828501613eae565b91505092915050565b6000602082840312156140ee576140ed614eca565b5b60006140fc84828501613f27565b91505092915050565b600080600060a0848603121561411e5761411d614eca565b5b600061412c86828701613f27565b935050602061413d86828701613e99565b925050604061414e86828701613ec3565b9150509250925092565b60008060006060848603121561417157614170614eca565b5b600061417f86828701613f27565b935050602061419086828701613f27565b92505060406141a186828701613f27565b9150509250925092565b6000806000606084860312156141c4576141c3614eca565b5b60006141d286828701613f3c565b93505060206141e386828701613f3c565b92505060406141f486828701613f3c565b9150509250925092565b600061420a8383614216565b60208301905092915050565b61421f81614c90565b82525050565b61422e81614c90565b82525050565b600061423f826149c5565b61424981856149e8565b9350614254836149b5565b8060005b8381101561428557815161426c88826141fe565b9750614277836149db565b925050600181019050614258565b5085935050505092915050565b61429b81614ca2565b82525050565b6142aa81614ce5565b82525050565b6142b981614cf7565b82525050565b60006142ca826149d0565b6142d481856149f9565b93506142e4818560208601614d2d565b6142ed81614ecf565b840191505092915050565b60006143056023836149f9565b915061431082614eed565b604082019050919050565b60006143286012836149f9565b915061433382614f3c565b602082019050919050565b600061434b6031836149f9565b915061435682614f65565b604082019050919050565b600061436e602a836149f9565b915061437982614fb4565b604082019050919050565b60006143916026836149f9565b915061439c82615003565b604082019050919050565b60006143b46022836149f9565b91506143bf82615052565b604082019050919050565b60006143d7601b836149f9565b91506143e2826150a1565b602082019050919050565b60006143fa6017836149f9565b9150614405826150ca565b602082019050919050565b600061441d601f836149f9565b9150614428826150f3565b602082019050919050565b60006144406018836149f9565b915061444b8261511c565b602082019050919050565b60006144636028836149f9565b915061446e82615145565b604082019050919050565b60006144866020836149f9565b915061449182615194565b602082019050919050565b60006144a96029836149f9565b91506144b4826151bd565b604082019050919050565b60006144cc6012836149f9565b91506144d78261520c565b602082019050919050565b60006144ef6025836149f9565b91506144fa82615235565b604082019050919050565b60006145126024836149f9565b915061451d82615284565b604082019050919050565b6000614535600d836149f9565b9150614540826152d3565b602082019050919050565b60006145586025836149f9565b9150614563826152fc565b604082019050919050565b61457781614cce565b82525050565b61458681614cd8565b82525050565b60006020820190506145a16000830184614225565b92915050565b60006040820190506145bc6000830185614225565b6145c9602083018461456e565b9392505050565b600060c0820190506145e56000830189614225565b6145f2602083018861456e565b6145ff60408301876142b0565b61460c60608301866142b0565b6146196080830185614225565b61462660a083018461456e565b979650505050505050565b60006020820190506146466000830184614292565b92915050565b600060208201905061466160008301846142a1565b92915050565b6000602082019050818103600083015261468181846142bf565b905092915050565b600060208201905081810360008301526146a2816142f8565b9050919050565b600060208201905081810360008301526146c28161431b565b9050919050565b600060208201905081810360008301526146e28161433e565b9050919050565b6000602082019050818103600083015261470281614361565b9050919050565b6000602082019050818103600083015261472281614384565b9050919050565b60006020820190508181036000830152614742816143a7565b9050919050565b60006020820190508181036000830152614762816143ca565b9050919050565b60006020820190508181036000830152614782816143ed565b9050919050565b600060208201905081810360008301526147a281614410565b9050919050565b600060208201905081810360008301526147c281614433565b9050919050565b600060208201905081810360008301526147e281614456565b9050919050565b6000602082019050818103600083015261480281614479565b9050919050565b600060208201905081810360008301526148228161449c565b9050919050565b60006020820190508181036000830152614842816144bf565b9050919050565b60006020820190508181036000830152614862816144e2565b9050919050565b6000602082019050818103600083015261488281614505565b9050919050565b600060208201905081810360008301526148a281614528565b9050919050565b600060208201905081810360008301526148c28161454b565b9050919050565b60006020820190506148de600083018461456e565b92915050565b600060a0820190506148f9600083018861456e565b61490660208301876142b0565b81810360408301526149188186614234565b90506149276060830185614225565b614934608083018461456e565b9695505050505050565b6000606082019050614953600083018661456e565b614960602083018561456e565b61496d604083018461456e565b949350505050565b600060208201905061498a600083018461457d565b92915050565b600061499a6149ab565b90506149a68282614d60565b919050565b6000604051905090565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614a1582614cce565b9150614a2083614cce565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a5557614a54614dda565b5b828201905092915050565b6000614a6b82614cce565b9150614a7683614cce565b925082614a8657614a85614e09565b5b828204905092915050565b6000808291508390505b6001851115614adb57808604811115614ab757614ab6614dda565b5b6001851615614ac65780820291505b8081029050614ad485614ee0565b9450614a9b565b94509492505050565b6000614aef82614cce565b9150614afa83614cd8565b9250614b277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614b2f565b905092915050565b600082614b3f5760019050614bfb565b81614b4d5760009050614bfb565b8160018114614b635760028114614b6d57614b9c565b6001915050614bfb565b60ff841115614b7f57614b7e614dda565b5b8360020a915084821115614b9657614b95614dda565b5b50614bfb565b5060208310610133831016604e8410600b8410161715614bd15782820a905083811115614bcc57614bcb614dda565b5b614bfb565b614bde8484846001614a91565b92509050818404811115614bf557614bf4614dda565b5b81810290505b9392505050565b6000614c0d82614cce565b9150614c1883614cce565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c5157614c50614dda565b5b828202905092915050565b6000614c6782614cce565b9150614c7283614cce565b925082821015614c8557614c84614dda565b5b828203905092915050565b6000614c9b82614cae565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614cf082614d09565b9050919050565b6000614d0282614cce565b9050919050565b6000614d1482614d1b565b9050919050565b6000614d2682614cae565b9050919050565b60005b83811015614d4b578082015181840152602081019050614d30565b83811115614d5a576000848401525b50505050565b614d6982614ecf565b810181811067ffffffffffffffff82111715614d8857614d87614e96565b5b80604052505050565b6000614d9c82614cce565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614dcf57614dce614dda565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f74206163746976650000000000000000000000000000600082015250565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e74206973206e6f74206578636c75646564000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f696e73756666696369656e7420424e422062616c616e63650000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f57616c6c657420616c7265616479207365740000000000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f596f7520617265206120626f7400000000000000000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61535481614c90565b811461535f57600080fd5b50565b61536b81614ca2565b811461537657600080fd5b50565b61538281614cce565b811461538d57600080fd5b5056fea264697066735822122024a5b14723d3c5c681b80df2ca734d64cb7923db8613955580c5b011c4c7ffef64736f6c634300080700330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106102605760003560e01c8063728f8eea11610144578063a9059cbb116100b6578063e2f456051161007a578063e2f4560514610941578063e9dae5ed1461096c578063ea2f0b3714610995578063f2fde38b146109be578063f66895a3146109e7578063f887ea4014610a1457610267565b8063a9059cbb1461084c578063aacebbe314610889578063b4337b4e146108b2578063d257b34f146108db578063dd62ed3e1461090457610267565b8063924de9b711610108578063924de9b71461073857806395d89b41146107615780639ba5e4d51461078c578063a457c2d7146107b9578063a5ece941146107f6578063a8aa1b311461082157610267565b8063728f8eea1461064d578063864701a51461067a57806388f82020146106a75780638c374ac1146106e45780638da5cb5b1461070d57610267565b806340b28c2f116101dd5780634dd73ffb116101a15780634dd73ffb1461053f57806352390c02146105685780635342acb4146105915780636ddd1713146105ce57806370a08231146105f9578063715018a61461063657610267565b806340b28c2f14610470578063437823ec14610499578063441b1d30146104c257806347c23092146104eb5780634ada218b1461051457610267565b80632d838119116102245780632d83811914610379578063313ce567146103b65780633685d419146103e1578063379ba1d91461040a578063395093511461043357610267565b806306fdde031461026c57806307cf224314610297578063095ea7b3146102d457806318160ddd1461031157806323b872dd1461033c57610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610a3f565b60405161028e9190614667565b60405180910390f35b3480156102a357600080fd5b506102be60048036038101906102b99190614105565b610a7c565b6040516102cb91906148c9565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f6919061403e565b610b05565b6040516103089190614631565b60405180910390f35b34801561031d57600080fd5b50610326610b23565b60405161033391906148c9565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e9190613feb565b610b2d565b6040516103709190614631565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b91906140d8565b610c2e565b6040516103ad91906148c9565b60405180910390f35b3480156103c257600080fd5b506103cb610c95565b6040516103d89190614975565b60405180910390f35b3480156103ed57600080fd5b5061040860048036038101906104039190613f51565b610c9e565b005b34801561041657600080fd5b50610431600480360381019061042c919061407e565b610fd4565b005b34801561043f57600080fd5b5061045a6004803603810190610455919061403e565b611087565b6040516104679190614631565b60405180910390f35b34801561047c57600080fd5b5061049760048036038101906104929190613fab565b611133565b005b3480156104a557600080fd5b506104c060048036038101906104bb9190613f51565b611235565b005b3480156104ce57600080fd5b506104e960048036038101906104e491906140d8565b61130c565b005b3480156104f757600080fd5b50610512600480360381019061050d9190613feb565b611415565b005b34801561052057600080fd5b50610529611524565b6040516105369190614631565b60405180910390f35b34801561054b57600080fd5b5061056660048036038101906105619190614158565b611537565b005b34801561057457600080fd5b5061058f600480360381019061058a9190613f51565b6115f6565b005b34801561059d57600080fd5b506105b860048036038101906105b39190613f51565b611891565b6040516105c59190614631565b60405180910390f35b3480156105da57600080fd5b506105e36118e7565b6040516105f09190614631565b60405180910390f35b34801561060557600080fd5b50610620600480360381019061061b9190613f51565b6118fa565b60405161062d91906148c9565b60405180910390f35b34801561064257600080fd5b5061064b6119e5565b005b34801561065957600080fd5b50610662611a6d565b6040516106719392919061493e565b60405180910390f35b34801561068657600080fd5b5061068f611a85565b60405161069e9392919061493e565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c99190613f51565b611a9d565b6040516106db9190614631565b60405180910390f35b3480156106f057600080fd5b5061070b60048036038101906107069190614158565b611af3565b005b34801561071957600080fd5b50610722611bb2565b60405161072f919061458c565b60405180910390f35b34801561074457600080fd5b5061075f600480360381019061075a919061407e565b611bdb565b005b34801561076d57600080fd5b50610776611c74565b6040516107839190614667565b60405180910390f35b34801561079857600080fd5b506107a1611cb1565b6040516107b09392919061493e565b60405180910390f35b3480156107c557600080fd5b506107e060048036038101906107db919061403e565b611cc9565b6040516107ed9190614631565b60405180910390f35b34801561080257600080fd5b5061080b611dbd565b604051610818919061458c565b60405180910390f35b34801561082d57600080fd5b50610836611de3565b604051610843919061458c565b60405180910390f35b34801561085857600080fd5b50610873600480360381019061086e919061403e565b611e09565b6040516108809190614631565b60405180910390f35b34801561089557600080fd5b506108b060048036038101906108ab9190613f51565b611e27565b005b3480156108be57600080fd5b506108d960048036038101906108d49190614158565b611fe5565b005b3480156108e757600080fd5b5061090260048036038101906108fd91906140d8565b6120a4565b005b34801561091057600080fd5b5061092b60048036038101906109269190613fab565b612142565b60405161093891906148c9565b60405180910390f35b34801561094d57600080fd5b506109566121c9565b60405161096391906148c9565b60405180910390f35b34801561097857600080fd5b50610993600480360381019061098e9190614158565b6121cf565b005b3480156109a157600080fd5b506109bc60048036038101906109b79190613f51565b61229a565b005b3480156109ca57600080fd5b506109e560048036038101906109e09190613f51565b612371565b005b3480156109f357600080fd5b506109fc612469565b604051610a0b9392919061493e565b60405180910390f35b348015610a2057600080fd5b50610a29612481565b604051610a36919061464c565b60405180910390f35b60606040518060400160405280600681526020017f566f746f6e780000000000000000000000000000000000000000000000000000815250905090565b6000600a54841115610ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aba90614789565b60405180910390fd5b82610ae5576000610ad6856001856124a7565b90508060000151915050610afe565b6000610af3856001856124a7565b905080602001519150505b9392505050565b6000610b19610b12612503565b848461250b565b6001905092915050565b6000600a54905090565b6000610b3a8484846126d6565b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b85612503565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc906147c9565b60405180910390fd5b610c2285610c11612503565b8584610c1d9190614c5c565b61250b565b60019150509392505050565b6000600b54821115610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c906146e9565b60405180910390fd5b6000610c7f612d77565b90508083610c8d9190614a60565b915050919050565b60006009905090565b610ca6612503565b73ffffffffffffffffffffffffffffffffffffffff16610cc4611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614610d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d11906147e9565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d90614769565b60405180910390fd5b60005b600780549050811015610fd0578173ffffffffffffffffffffffffffffffffffffffff1660078281548110610de157610de0614e67565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610fbd5760076001600780549050610e3c9190614c5c565b81548110610e4d57610e4c614e67565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110610e8c57610e8b614e67565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007805480610f8357610f82614e38565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610fd0565b8080610fc890614d91565b915050610da9565b5050565b610fdc612503565b73ffffffffffffffffffffffffffffffffffffffff16610ffa611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614611050576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611047906147e9565b60405180910390fd5b80600860006101000a81548160ff02191690831515021790555080600860016101000a81548160ff02191690831515021790555050565b6000611129611094612503565b8484600360006110a2612503565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111249190614a0a565b61250b565b6001905092915050565b61113b612503565b73ffffffffffffffffffffffffffffffffffffffff16611159611bb2565b73ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a6906147e9565b60405180910390fd5b81600860036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61123d612503565b73ffffffffffffffffffffffffffffffffffffffff1661125b611bb2565b73ffffffffffffffffffffffffffffffffffffffff16146112b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a8906147e9565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611314612503565b73ffffffffffffffffffffffffffffffffffffffff16611332611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f906147e9565b60405180910390fd5b804710156113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c2906147a9565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611411573d6000803e3d6000fd5b5050565b61141d612503565b73ffffffffffffffffffffffffffffffffffffffff1661143b611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614611491576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611488906147e9565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016114cc9291906145a7565b602060405180830381600087803b1580156114e657600080fd5b505af11580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e91906140ab565b50505050565b600860009054906101000a900460ff1681565b61153f612503565b73ffffffffffffffffffffffffffffffffffffffff1661155d611bb2565b73ffffffffffffffffffffffffffffffffffffffff16146115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115aa906147e9565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600e600082015181600001556020820151816001015560408201518160020155905050505050565b6115fe612503565b73ffffffffffffffffffffffffffffffffffffffff1661161c611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614611672576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611669906147e9565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f690614749565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156117d35761178f600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c2e565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600860019054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561199557600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506119e0565b6119dd600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c2e565b90505b919050565b6119ed612503565b73ffffffffffffffffffffffffffffffffffffffff16611a0b611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614611a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a58906147e9565b60405180910390fd5b611a6b6000612d9b565b565b600e8060000154908060010154908060020154905083565b60118060000154908060010154908060020154905083565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611afb612503565b73ffffffffffffffffffffffffffffffffffffffff16611b19611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b66906147e9565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506014600082015181600001556020820151816001015560408201518160020155905050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611be3612503565b73ffffffffffffffffffffffffffffffffffffffff16611c01611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614611c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4e906147e9565b60405180910390fd5b80600860016101000a81548160ff02191690831515021790555050565b60606040518060400160405280600481526020017f564f545800000000000000000000000000000000000000000000000000000000815250905090565b60178060000154908060010154908060020154905083565b60008060036000611cd8612503565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8c906148a9565b60405180910390fd5b611db2611da0612503565b858584611dad9190614c5c565b61250b565b600191505092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611e1d611e16612503565b84846126d6565b6001905092915050565b611e2f612503565b73ffffffffffffffffffffffffffffffffffffffff16611e4d611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a906147e9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2b90614829565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90505050565b611fed612503565b73ffffffffffffffffffffffffffffffffffffffff1661200b611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614612061576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612058906147e9565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506011600082015181600001556020820151816001015560408201518160020155905050505050565b6120ac612503565b73ffffffffffffffffffffffffffffffffffffffff166120ca611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614612120576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612117906147e9565b60405180910390fd5b6009600a61212e9190614ae4565b816121399190614c02565b600c8190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b6121d7612503565b73ffffffffffffffffffffffffffffffffffffffff166121f5611bb2565b73ffffffffffffffffffffffffffffffffffffffff161461224b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612242906147e9565b60405180910390fd5b82600e6000018190555081600e6001018190555080600e600201819055507f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1560405160405180910390a1505050565b6122a2612503565b73ffffffffffffffffffffffffffffffffffffffff166122c0611bb2565b73ffffffffffffffffffffffffffffffffffffffff1614612316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230d906147e9565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612379612503565b73ffffffffffffffffffffffffffffffffffffffff16612397611bb2565b73ffffffffffffffffffffffffffffffffffffffff16146123ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e4906147e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561245d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245490614709565b60405180910390fd5b61246681612d9b565b50565b60148060000154908060010154908060020154905083565b600860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6124af613e02565b6124ba848484612e5f565b90506124cf8185856124ca612d77565b612f2b565b8560000186602001876040018860600189608001858152508581525085815250858152508581525050505050509392505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561257b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257290614869565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e290614729565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126c991906148c9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273d90614849565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ad90614689565b60405180910390fd5b600081116127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f090614809565b60405180910390fd5b612802836118fa565b811115612844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283b906146c9565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128e85750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291e90614889565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129cb5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a2057600860009054906101000a900460ff16612a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a16906146a9565b60405180910390fd5b5b6000600c54612a2e306118fa565b10159050600860029054906101000a900460ff16158015612a5b5750600860019054906101000a900460ff165b8015612a645750805b8015612abe5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612b145750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b6a5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b7b57612b7a600c54612fc3565b5b612b83613e4e565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612c0b57601160405180606001604052908160008201548152602001600182015481526020016002820154815250509050612cc2565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612c9357601460405180606001604052908160008201548152602001600182015481526020016002820154815250509050612cc1565b600e604051806060016040529081600082015481526020016001820154815260200160028201548152505090505b5b612d70858585600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d695750600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1585613053565b5050505050565b6000806000612d84613541565b915091508082612d949190614a60565b9250505090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612e67613e02565b82612e7b57838160a0018181525050612f24565b6064826000015185612e8d9190614c02565b612e979190614a60565b8160c00181815250506064826020015185612eb29190614c02565b612ebc9190614a60565b8160e00181815250506064826040015185612ed79190614c02565b612ee19190614a60565b816101000181815250508061010001518160e001518260c0015186612f069190614c5c565b612f109190614c5c565b612f1a9190614c5c565b8160a00181815250505b9392505050565b60008060008060008588612f3f9190614c02565b945086612f5c578485600080600094509450945094509450612fb8565b858960c00151612f6c9190614c02565b9250858960e00151612f7e9190614c02565b915085896101000151612f919190614c02565b905080828487612fa19190614c5c565b612fab9190614c5c565b612fb59190614c5c565b93505b945094509450945094565b6001600860026101000a81548160ff0219169083151502179055506000600282612fed9190614a60565b905060008183612ffd9190614c5c565b9050600047905061300d826137df565b6000814761301b9190614c5c565b90506000811115613031576130308482613a31565b5b505050506000600860026101000a81548160ff02191690831515021790555050565b60006130608484846124a7565b9050600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156131435783600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ff9190614c5c565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613228578060a00151600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131e49190614a0a565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8060000151600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132779190614c5c565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060200151600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133099190614a0a565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600081604001511180613363575060008160c00151115b1561337b5761337a81604001518260c00151613b25565b5b60008160800151118061339357506000816101000151115b15613416576133ab8160800151826101000151613b5e565b3073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83610100015160405161340d91906148c9565b60405180910390a35b60008160600151118061342d575060008160e00151115b156134d05761344481606001518260e00151613c7d565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e001516040516134c791906148c9565b60405180910390a35b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360a0015160405161353191906148c9565b60405180910390a3505050505050565b6000806000600b5490506000600a54905060005b6007805490508110156137a95782600160006007848154811061357b5761357a614e67565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613669575081600260006007848154811061360157613600614e67565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561368057600b54600a54945094505050506137db565b600160006007838154811061369857613697614e67565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836137099190614c5c565b9250600260006007838154811061372357613722614e67565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826137949190614c5c565b915080806137a190614d91565b915050613555565b50600a54600b546137ba9190614a60565b8210156137d257600b54600a549350935050506137db565b81819350935050505b9091565b6000600267ffffffffffffffff8111156137fc576137fb614e96565b5b60405190808252806020026020018201604052801561382a5781602001602082028036833780820191505090505b509050308160008151811061384257613841614e67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156138e457600080fd5b505afa1580156138f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391c9190613f7e565b816001815181106139305761392f614e67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061399730600860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461250b565b600860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016139fb9594939291906148e4565b600060405180830381600087803b158015613a1557600080fd5b505af1158015613a29573d6000803e3d6000fd5b505050505050565b613a5e30600860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461250b565b600860039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613aaa611bb2565b426040518863ffffffff1660e01b8152600401613acc969594939291906145d0565b6060604051808303818588803b158015613ae557600080fd5b505af1158015613af9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b1e91906141ab565b5050505050565b81600b6000828254613b379190614c5c565b925050819055508060176000016000828254613b539190614a0a565b925050819055505050565b8060176002016000828254613b739190614a0a565b92505081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c235780600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c1b9190614a0a565b925050819055505b81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c729190614a0a565b925050819055505050565b8060176001016000828254613c929190614a0a565b9250508190555060056000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613d86578060026000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d7e9190614a0a565b925050819055505b8160016000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613df79190614a0a565b925050819055505050565b6040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b600081359050613e7e8161534b565b92915050565b600081519050613e938161534b565b92915050565b600081359050613ea881615362565b92915050565b600081519050613ebd81615362565b92915050565b600060608284031215613ed957613ed8614ec5565b5b613ee36060614990565b90506000613ef384828501613f27565b6000830152506020613f0784828501613f27565b6020830152506040613f1b84828501613f27565b60408301525092915050565b600081359050613f3681615379565b92915050565b600081519050613f4b81615379565b92915050565b600060208284031215613f6757613f66614eca565b5b6000613f7584828501613e6f565b91505092915050565b600060208284031215613f9457613f93614eca565b5b6000613fa284828501613e84565b91505092915050565b60008060408385031215613fc257613fc1614eca565b5b6000613fd085828601613e6f565b9250506020613fe185828601613e6f565b9150509250929050565b60008060006060848603121561400457614003614eca565b5b600061401286828701613e6f565b935050602061402386828701613e6f565b925050604061403486828701613f27565b9150509250925092565b6000806040838503121561405557614054614eca565b5b600061406385828601613e6f565b925050602061407485828601613f27565b9150509250929050565b60006020828403121561409457614093614eca565b5b60006140a284828501613e99565b91505092915050565b6000602082840312156140c1576140c0614eca565b5b60006140cf84828501613eae565b91505092915050565b6000602082840312156140ee576140ed614eca565b5b60006140fc84828501613f27565b91505092915050565b600080600060a0848603121561411e5761411d614eca565b5b600061412c86828701613f27565b935050602061413d86828701613e99565b925050604061414e86828701613ec3565b9150509250925092565b60008060006060848603121561417157614170614eca565b5b600061417f86828701613f27565b935050602061419086828701613f27565b92505060406141a186828701613f27565b9150509250925092565b6000806000606084860312156141c4576141c3614eca565b5b60006141d286828701613f3c565b93505060206141e386828701613f3c565b92505060406141f486828701613f3c565b9150509250925092565b600061420a8383614216565b60208301905092915050565b61421f81614c90565b82525050565b61422e81614c90565b82525050565b600061423f826149c5565b61424981856149e8565b9350614254836149b5565b8060005b8381101561428557815161426c88826141fe565b9750614277836149db565b925050600181019050614258565b5085935050505092915050565b61429b81614ca2565b82525050565b6142aa81614ce5565b82525050565b6142b981614cf7565b82525050565b60006142ca826149d0565b6142d481856149f9565b93506142e4818560208601614d2d565b6142ed81614ecf565b840191505092915050565b60006143056023836149f9565b915061431082614eed565b604082019050919050565b60006143286012836149f9565b915061433382614f3c565b602082019050919050565b600061434b6031836149f9565b915061435682614f65565b604082019050919050565b600061436e602a836149f9565b915061437982614fb4565b604082019050919050565b60006143916026836149f9565b915061439c82615003565b604082019050919050565b60006143b46022836149f9565b91506143bf82615052565b604082019050919050565b60006143d7601b836149f9565b91506143e2826150a1565b602082019050919050565b60006143fa6017836149f9565b9150614405826150ca565b602082019050919050565b600061441d601f836149f9565b9150614428826150f3565b602082019050919050565b60006144406018836149f9565b915061444b8261511c565b602082019050919050565b60006144636028836149f9565b915061446e82615145565b604082019050919050565b60006144866020836149f9565b915061449182615194565b602082019050919050565b60006144a96029836149f9565b91506144b4826151bd565b604082019050919050565b60006144cc6012836149f9565b91506144d78261520c565b602082019050919050565b60006144ef6025836149f9565b91506144fa82615235565b604082019050919050565b60006145126024836149f9565b915061451d82615284565b604082019050919050565b6000614535600d836149f9565b9150614540826152d3565b602082019050919050565b60006145586025836149f9565b9150614563826152fc565b604082019050919050565b61457781614cce565b82525050565b61458681614cd8565b82525050565b60006020820190506145a16000830184614225565b92915050565b60006040820190506145bc6000830185614225565b6145c9602083018461456e565b9392505050565b600060c0820190506145e56000830189614225565b6145f2602083018861456e565b6145ff60408301876142b0565b61460c60608301866142b0565b6146196080830185614225565b61462660a083018461456e565b979650505050505050565b60006020820190506146466000830184614292565b92915050565b600060208201905061466160008301846142a1565b92915050565b6000602082019050818103600083015261468181846142bf565b905092915050565b600060208201905081810360008301526146a2816142f8565b9050919050565b600060208201905081810360008301526146c28161431b565b9050919050565b600060208201905081810360008301526146e28161433e565b9050919050565b6000602082019050818103600083015261470281614361565b9050919050565b6000602082019050818103600083015261472281614384565b9050919050565b60006020820190508181036000830152614742816143a7565b9050919050565b60006020820190508181036000830152614762816143ca565b9050919050565b60006020820190508181036000830152614782816143ed565b9050919050565b600060208201905081810360008301526147a281614410565b9050919050565b600060208201905081810360008301526147c281614433565b9050919050565b600060208201905081810360008301526147e281614456565b9050919050565b6000602082019050818103600083015261480281614479565b9050919050565b600060208201905081810360008301526148228161449c565b9050919050565b60006020820190508181036000830152614842816144bf565b9050919050565b60006020820190508181036000830152614862816144e2565b9050919050565b6000602082019050818103600083015261488281614505565b9050919050565b600060208201905081810360008301526148a281614528565b9050919050565b600060208201905081810360008301526148c28161454b565b9050919050565b60006020820190506148de600083018461456e565b92915050565b600060a0820190506148f9600083018861456e565b61490660208301876142b0565b81810360408301526149188186614234565b90506149276060830185614225565b614934608083018461456e565b9695505050505050565b6000606082019050614953600083018661456e565b614960602083018561456e565b61496d604083018461456e565b949350505050565b600060208201905061498a600083018461457d565b92915050565b600061499a6149ab565b90506149a68282614d60565b919050565b6000604051905090565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614a1582614cce565b9150614a2083614cce565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a5557614a54614dda565b5b828201905092915050565b6000614a6b82614cce565b9150614a7683614cce565b925082614a8657614a85614e09565b5b828204905092915050565b6000808291508390505b6001851115614adb57808604811115614ab757614ab6614dda565b5b6001851615614ac65780820291505b8081029050614ad485614ee0565b9450614a9b565b94509492505050565b6000614aef82614cce565b9150614afa83614cd8565b9250614b277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614b2f565b905092915050565b600082614b3f5760019050614bfb565b81614b4d5760009050614bfb565b8160018114614b635760028114614b6d57614b9c565b6001915050614bfb565b60ff841115614b7f57614b7e614dda565b5b8360020a915084821115614b9657614b95614dda565b5b50614bfb565b5060208310610133831016604e8410600b8410161715614bd15782820a905083811115614bcc57614bcb614dda565b5b614bfb565b614bde8484846001614a91565b92509050818404811115614bf557614bf4614dda565b5b81810290505b9392505050565b6000614c0d82614cce565b9150614c1883614cce565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c5157614c50614dda565b5b828202905092915050565b6000614c6782614cce565b9150614c7283614cce565b925082821015614c8557614c84614dda565b5b828203905092915050565b6000614c9b82614cae565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614cf082614d09565b9050919050565b6000614d0282614cce565b9050919050565b6000614d1482614d1b565b9050919050565b6000614d2682614cae565b9050919050565b60005b83811015614d4b578082015181840152602081019050614d30565b83811115614d5a576000848401525b50505050565b614d6982614ecf565b810181811067ffffffffffffffff82111715614d8857614d87614e96565b5b80604052505050565b6000614d9c82614cce565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614dcf57614dce614dda565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f74206163746976650000000000000000000000000000600082015250565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e74206973206e6f74206578636c75646564000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f696e73756666696369656e7420424e422062616c616e63650000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f57616c6c657420616c7265616479207365740000000000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f596f7520617265206120626f7400000000000000000000000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61535481614c90565b811461535f57600080fd5b50565b61536b81614ca2565b811461537657600080fd5b50565b61538281614cce565b811461538d57600080fd5b5056fea264697066735822122024a5b14723d3c5c681b80df2ca734d64cb7923db8613955580c5b011c4c7ffef64736f6c63430008070033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

2849:16062:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5329:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7595:487;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6260:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5625:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6429:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8227:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5511:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8890:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8092:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6859:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18272:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9375:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18502:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18712:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3276:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17761:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8549:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9614:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3309:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5728:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1626:94;;;;;;;;;;;;;:::i;:::-;;3995:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;4035:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7467:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17932:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1403:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17652:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5418:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4240:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7082:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3711:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3397:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5934:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17273:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18102:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17514:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6109:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3636:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9745:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9494:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1728:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4078:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3369:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5329:83;5366:13;5399:5;;;;;;;;;;;;;;;;;5392:12;;5329:83;:::o;7595:487::-;7704:7;7743;;7732;:18;;7724:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;7802:17;7797:278;;7836:28;7867:31;7878:7;7887:4;7893;7867:10;:31::i;:::-;7836:62;;7920:1;:9;;;7913:16;;;;;7797:278;7962:28;7993:31;8004:7;8013:4;8019;7993:10;:31::i;:::-;7962:62;;8046:1;:17;;;8039:24;;;7595:487;;;;;;:::o;6260:161::-;6335:4;6352:39;6361:12;:10;:12::i;:::-;6375:7;6384:6;6352:8;:39::i;:::-;6409:4;6402:11;;6260:161;;;;:::o;5625:95::-;5678:7;5705;;5698:14;;5625:95;:::o;6429:422::-;6535:4;6552:36;6562:6;6570:9;6581:6;6552:9;:36::i;:::-;6601:24;6628:11;:19;6640:6;6628:19;;;;;;;;;;;;;;;:33;6648:12;:10;:12::i;:::-;6628:33;;;;;;;;;;;;;;;;6601:60;;6700:6;6680:16;:26;;6672:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;6762:57;6771:6;6779:12;:10;:12::i;:::-;6812:6;6793:16;:25;;;;:::i;:::-;6762:8;:57::i;:::-;6839:4;6832:11;;;6429:422;;;;;:::o;8227:248::-;8293:7;8332;;8321;:18;;8313:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8397:19;8420:10;:8;:10::i;:::-;8397:33;;8456:11;8448:7;:19;;;;:::i;:::-;8441:26;;;8227:248;;;:::o;5511:83::-;5552:5;3460:1;5570:16;;5511:83;:::o;8890:475::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8972:11:::1;:20;8984:7;8972:20;;;;;;;;;;;;;;;;;;;;;;;;;8964:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9036:9;9031:327;9055:9;:16;;;;9051:1;:20;9031:327;;;9113:7;9097:23;;:9;9107:1;9097:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;;9093:254;;;9156:9;9185:1;9166:9;:16;;;;:20;;;;:::i;:::-;9156:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9141:9;9151:1;9141:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;9225:1;9206:7;:16;9214:7;9206:16;;;;;;;;;;;;;;;:20;;;;9268:5;9245:11;:20;9257:7;9245:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;9292:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;9326:5;;9093:254;9073:3;;;;;:::i;:::-;;;;9031:327;;;;8890:475:::0;:::o;8092:127::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8176:5:::1;8159:14;;:22;;;;;;;;;;;;;;;;;;8206:5;8192:11;;:19;;;;;;;;;;;;;;;;;;8092:127:::0;:::o;6859:215::-;6947:4;6964:80;6973:12;:10;:12::i;:::-;6987:7;7033:10;6996:11;:25;7008:12;:10;:12::i;:::-;6996:25;;;;;;;;;;;;;;;:34;7022:7;6996:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6964:8;:80::i;:::-;7062:4;7055:11;;6859:215;;;;:::o;18272:154::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18383:9:::1;18366:6;;:27;;;;;;;;;;;;;;;;;;18411:7;18404:4;;:14;;;;;;;;;;;;;;;;;;18272:154:::0;;:::o;9375:111::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9474:4:::1;9444:18;:27;9463:7;9444:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;9375:111:::0;:::o;18502:196::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18602:9:::1;18577:21;:34;;18569:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;18659:10;18651:28;;:39;18680:9;18651:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18502:196:::0;:::o;18712:154::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18824:10:::1;18817:27;;;18845:3;18850:7;18817:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18712:154:::0;;;:::o;3276:26::-;;;;;;;;;;;;;:::o;17761:163::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17881:35:::1;;;;;;;;17887:4;17881:35;;;;17893:10;17881:35;;;;17905:10;17881:35;;::::0;17873:5:::1;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;17761:163:::0;;;:::o;8549:333::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8632:11:::1;:20;8644:7;8632:20;;;;;;;;;;;;;;;;;;;;;;;;;8631:21;8623:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;8717:1;8698:7;:16;8706:7;8698:16;;;;;;;;;;;;;;;;:20;8695:108;;;8754:37;8774:7;:16;8782:7;8774:16;;;;;;;;;;;;;;;;8754:19;:37::i;:::-;8735:7;:16;8743:7;8735:16;;;;;;;;;;;;;;;:56;;;;8695:108;8836:4;8813:11;:20;8825:7;8813:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;8851:9;8866:7;8851:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8549:333:::0;:::o;9614:123::-;9678:4;9702:18;:27;9721:7;9702:27;;;;;;;;;;;;;;;;;;;;;;;;;9695:34;;9614:123;;;:::o;3309:23::-;;;;;;;;;;;;;:::o;5728:198::-;5794:7;5818:11;:20;5830:7;5818:20;;;;;;;;;;;;;;;;;;;;;;;;;5814:49;;;5847:7;:16;5855:7;5847:16;;;;;;;;;;;;;;;;5840:23;;;;5814:49;5881:37;5901:7;:16;5909:7;5901:16;;;;;;;;;;;;;;;;5881:19;:37::i;:::-;5874:44;;5728:198;;;;:::o;1626:94::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1691:21:::1;1709:1;1691:9;:21::i;:::-;1626:94::o:0;3995:33::-;;;;;;;;;;;;;;;;;;;:::o;4035:36::-;;;;;;;;;;;;;;;;;;;:::o;7467:120::-;7535:4;7559:11;:20;7571:7;7559:20;;;;;;;;;;;;;;;;;;;;;;;;;7552:27;;7467:120;;;:::o;17932:162::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18051:35:::1;;;;;;;;18057:4;18051:35;;;;18063:10;18051:35;;;;18075:10;18051:35;;::::0;18039:9:::1;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;17932:162:::0;;;:::o;1403:87::-;1449:7;1476:6;;;;;;;;;;;1469:13;;1403:87;:::o;17652:101::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17737:8:::1;17723:11;;:22;;;;;;;;;;;;;;;;;;17652:101:::0;:::o;5418:87::-;5457:13;5490:7;;;;;;;;;;;;;;;;;5483:14;;5418:87;:::o;4240:36::-;;;;;;;;;;;;;;;;;;;:::o;7082:377::-;7175:4;7192:24;7219:11;:25;7231:12;:10;:12::i;:::-;7219:25;;;;;;;;;;;;;;;:34;7245:7;7219:34;;;;;;;;;;;;;;;;7192:61;;7292:15;7272:16;:35;;7264:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7360:67;7369:12;:10;:12::i;:::-;7383:7;7411:15;7392:16;:34;;;;:::i;:::-;7360:8;:67::i;:::-;7447:4;7440:11;;;7082:377;;;;:::o;3711:76::-;;;;;;;;;;;;;:::o;3397:19::-;;;;;;;;;;;;;:::o;5934:167::-;6012:4;6029:42;6039:12;:10;:12::i;:::-;6053:9;6064:6;6029:9;:42::i;:::-;6089:4;6082:11;;5934:167;;;;:::o;17273:233::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17380:9:::1;17360:29;;:16;;;;;;;;;;;:29;;;;17352:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;17442:9;17423:16;;:28;;;;;;;;;;;;;;;;;;17462:18;:36;17481:16;;;;;;;;;;;17462:36;;;;;;;;;;;;;;;;;;;;;;::::0;;17273:233;:::o;18102:162::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18221:35:::1;;;;;;;;18227:4;18221:35;;;;18233:10;18221:35;;;;18245:10;18221:35;;::::0;18210:8:::1;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;18102:162:::0;;;:::o;17514:130::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3460:1:::1;17623:2;:13;;;;:::i;:::-;17614:6;:22;;;;:::i;:::-;17593:18;:43;;;;17514:130:::0;:::o;6109:143::-;6190:7;6217:11;:18;6229:5;6217:18;;;;;;;;;;;;;;;:27;6236:7;6217:27;;;;;;;;;;;;;;;;6210:34;;6109:143;;;;:::o;3636:62::-;;;;:::o;9745:231::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9857:4:::1;9845:5;:9;;:16;;;;9890:10;9872:5;:15;;:28;;;;9929:10;9911:5;:15;;:28;;;;9955:13;;;;;;;;;;9745:231:::0;;;:::o;9494:110::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9591:5:::1;9561:18;:27;9580:7;9561:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;9494:110:::0;:::o;1728:192::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1837:1:::1;1817:22;;:8;:22;;;;1809:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1893:19;1903:8;1893:9;:19::i;:::-;1728:192:::0;:::o;4078:37::-;;;;;;;;;;;;;;;;;;;:::o;3369:21::-;;;;;;;;;;;;;:::o;10712:395::-;10804:36;;:::i;:::-;10865:35;10877:7;10886;10895:4;10865:11;:35::i;:::-;10853:47;;11020:52;11032:9;11043:7;11052;11061:10;:8;:10::i;:::-;11020:11;:52::i;:::-;10912:9;:17;;10931:9;:25;;10958:9;:14;;10974:9;:20;;10996:9;:20;;10911:161;;;;;;;;;;;;;;;;;;;;;;;;;10712:395;;;;;:::o;824:98::-;877:7;904:10;897:17;;824:98;:::o;12937:335::-;13047:1;13030:19;;:5;:19;;;;13022:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13128:1;13109:21;;:7;:21;;;;13101:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13210:6;13180:11;:18;13192:5;13180:18;;;;;;;;;;;;;;;:27;13199:7;13180:27;;;;;;;;;;;;;;;:36;;;;13248:7;13232:32;;13241:5;13232:32;;;13257:6;13232:32;;;;;;:::i;:::-;;;;;;;;12937:335;;;:::o;13280:1134::-;13384:1;13368:18;;:4;:18;;;;13360:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13461:1;13447:16;;:2;:16;;;;13439:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13531:1;13522:6;:10;13514:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13607:15;13617:4;13607:9;:15::i;:::-;13597:6;:25;;13589:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;13695:6;:12;13702:4;13695:12;;;;;;;;;;;;;;;;;;;;;;;;;13694:13;:28;;;;;13712:6;:10;13719:2;13712:10;;;;;;;;;;;;;;;;;;;;;;;;;13711:11;13694:28;13686:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;13765:18;:24;13784:4;13765:24;;;;;;;;;;;;;;;;;;;;;;;;;13764:25;:52;;;;;13794:18;:22;13813:2;13794:22;;;;;;;;;;;;;;;;;;;;;;;;;13793:23;13764:52;13761:128;;;13840:14;;;;;;;;;;;13832:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;13761:128;13908:12;13951:18;;13923:24;13941:4;13923:9;:24::i;:::-;:46;;13908:61;;13984:8;;;;;;;;;;;13983:9;:24;;;;;13996:11;;;;;;;;;;;13983:24;:35;;;;;14011:7;13983:35;:51;;;;;14030:4;;;;;;;;;;;14022:12;;:4;:12;;;;13983:51;:80;;;;;14039:18;:24;14058:4;14039:24;;;;;;;;;;;;;;;;;;;;;;;;;14038:25;13983:80;:107;;;;;14068:18;:22;14087:2;14068:22;;;;;;;;;;;;;;;;;;;;;;;;;14067:23;13983:107;13980:172;;;14106:34;14121:18;;14106:14;:34::i;:::-;13980:172;14162:17;;:::i;:::-;14204:4;;;;;;;;;;;14196:12;;:4;:12;;;14193:107;;;14217:8;14210:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14193:107;;;14250:4;;;;;;;;;;;14244:10;;:2;:10;;;14241:59;;;14263:9;14256:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14241:59;;;14295:5;14288:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14241:59;14193:107;14313:93;14328:4;14334:2;14338:6;14348:18;:24;14367:4;14348:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;14376:18;:22;14395:2;14376:22;;;;;;;;;;;;;;;;;;;;;;;;;14348:50;14346:53;14401:4;14313:14;:93::i;:::-;13349:1065;;13280:1134;;;:::o;12223:158::-;12264:7;12285:15;12302;12321:19;:17;:19::i;:::-;12284:56;;;;12366:7;12358;:15;;;;:::i;:::-;12351:22;;;;12223:158;:::o;1928:173::-;1984:16;2003:6;;;;;;;;;;;1984:25;;2029:8;2020:6;;:17;;;;;;;;;;;;;;;;;;2084:8;2053:40;;2074:8;2053:40;;;;;;;;;;;;1973:128;1928:173;:::o;11115:473::-;11208:28;;:::i;:::-;11255:7;11251:86;;11297:7;11277:1;:17;;:27;;;;;11317:8;;11251:86;11383:3;11374:4;:8;;;11366:7;:16;;;;:::i;:::-;:20;;;;:::i;:::-;11357:1;:6;;:29;;;;;11435:3;11420:4;:14;;;11412:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;11397:1;:12;;:41;;;;;11487:3;11472:4;:14;;;11464:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;11449:1;:12;;:41;;;;;11549:1;:12;;;11536:1;:12;;;11529:1;:6;;;11521:7;:14;;;;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;11501:1;:17;;:60;;;;;11115:473;;;;;;:::o;11596:619::-;11721:15;11738:23;11763:12;11776:18;11796;11845:11;11837:7;:19;;;;:::i;:::-;11827:29;;11873:7;11869:69;;11902:7;11911;11920:1;11922;11924;11895:31;;;;;;;;;;;;11869:69;11964:11;11957:1;:6;;;:18;;;;:::i;:::-;11950:25;;12012:11;11999:1;:12;;;:24;;;;:::i;:::-;11986:37;;12060:11;12047:1;:12;;;:24;;;;:::i;:::-;12034:37;;12125:10;12114;12109:4;12101:7;:12;;;;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;12082:53;;11596:619;;;;;;;;;;:::o;15618:574::-;4700:4;4689:8;;:15;;;;;;;;;;;;;;;;;;15697:32:::1;15750:1;15732:15;:19;;;;:::i;:::-;15697:54;;15762:14;15797:24;15779:15;:42;;;;:::i;:::-;15762:59;;15834:22;15859:21;15834:46;;15893:24;15910:6;15893:16;:24::i;:::-;15930:29;15986:14;15962:21;:38;;;;:::i;:::-;15930:70;;16040:1;16016:21;:25;16013:158;;;16098:61;16111:24;16137:21;16098:12;:61::i;:::-;16013:158;15686:506;;;;4738:5:::0;4727:8;;:16;;;;;;;;;;;;;;;;;;15618:574;:::o;14497:1113::-;14627:28;14658:34;14669:7;14678;14687:4;14658:10;:34::i;:::-;14627:65;;14709:11;:19;14721:6;14709:19;;;;;;;;;;;;;;;;;;;;;;;;;14705:115;;;14801:7;14785;:15;14793:6;14785:15;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;14767:7;:15;14775:6;14767:15;;;;;;;;;;;;;;;:41;;;;14705:115;14834:11;:22;14846:9;14834:22;;;;;;;;;;;;;;;;;;;;;;;;;14830:130;;;14931:1;:17;;;14912:7;:18;14920:9;14912:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;14891:7;:18;14899:9;14891:18;;;;;;;;;;;;;;;:57;;;;14830:130;15006:1;:9;;;14990:7;:15;14998:6;14990:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;14972:7;:15;14980:6;14972:15;;;;;;;;;;;;;;;:43;;;;15066:1;:17;;;15047:7;:18;15055:9;15047:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;15026:7;:18;15034:9;15026:18;;;;;;;;;;;;;;;:57;;;;15116:1;15107;:6;;;:10;:24;;;;15130:1;15121;:6;;;:10;15107:24;15104:56;;;15133:27;15145:1;:6;;;15153:1;:6;;;15133:11;:27::i;:::-;15104:56;15189:1;15174;:12;;;:16;:36;;;;15209:1;15194;:12;;;:16;15174:36;15171:174;;;15227:41;15242:1;:12;;;15255:1;:12;;;15227:14;:41::i;:::-;15313:4;15288:45;;15297:6;15288:45;;;15320:1;:12;;;15288:45;;;;;;:::i;:::-;;;;;;;;15171:174;15373:1;15358;:12;;;:16;:36;;;;15393:1;15378;:12;;;:16;15358:36;15355:176;;;15410:42;15425:1;:12;;;15439:1;:12;;;15410:14;:42::i;:::-;15488:16;;;;;;;;;;;15472:47;;15481:6;15472:47;;;15506:1;:12;;;15472:47;;;;;;:::i;:::-;;;;;;;;15355:176;15563:9;15546:46;;15555:6;15546:46;;;15574:1;:17;;;15546:46;;;;;;:::i;:::-;;;;;;;;14614:996;14497:1113;;;;;:::o;12389:540::-;12439:7;12448;12468:15;12486:7;;12468:25;;12504:15;12522:7;;12504:25;;12545:9;12540:279;12564:9;:16;;;;12560:1;:20;12540:279;;;12630:7;12606;:21;12614:9;12624:1;12614:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12606:21;;;;;;;;;;;;;;;;:31;:66;;;;12665:7;12641;:21;12649:9;12659:1;12649:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12641:21;;;;;;;;;;;;;;;;:31;12606:66;12602:97;;;12682:7;;12691;;12674:25;;;;;;;;;12602:97;12732:7;:21;12740:9;12750:1;12740:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12732:21;;;;;;;;;;;;;;;;12724:7;:29;;;;:::i;:::-;12714:39;;12786:7;:21;12794:9;12804:1;12794:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12786:21;;;;;;;;;;;;;;;;12778:7;:29;;;;:::i;:::-;12768:39;;12582:3;;;;;:::i;:::-;;;;12540:279;;;;12851:7;;12843;;:15;;;;:::i;:::-;12833:7;:25;12829:56;;;12868:7;;12877;;12860:25;;;;;;;;12829:56;12904:7;12913;12896:25;;;;;;12389:540;;;:::o;16703:562::-;16829:21;16867:1;16853:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16829:40;;16898:4;16880;16885:1;16880:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16924:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16914:4;16919:1;16914:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16950:53;16967:4;16982:6;;;;;;;;;;;16991:11;16950:8;:53::i;:::-;17042:6;;;;;;;;;;;:57;;;17114:11;17140:1;17184:4;17211;17231:15;17042:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16758:507;16703:562;:::o;16200:495::-;16348:53;16365:4;16380:6;;;;;;;;;;;16389:11;16348:8;:53::i;:::-;16444:6;;;;;;;;;;;:22;;;16474:9;16507:4;16527:11;16553:1;16596;16639:7;:5;:7::i;:::-;16661:15;16444:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16200:495;;:::o;9984:123::-;10062:4;10052:7;;:14;;;;;;;:::i;:::-;;;;;;;;10095:4;10077:11;:15;;;:22;;;;;;;:::i;:::-;;;;;;;;9984:123;;:::o;10115:284::-;10222:10;10198:11;:21;;;:34;;;;;;;:::i;:::-;;;;;;;;10248:11;:26;10268:4;10248:26;;;;;;;;;;;;;;;;;;;;;;;;;10245:101;;;10324:10;10300:7;:22;10316:4;10300:22;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;10245:101;10381:10;10356:7;:22;10372:4;10356:22;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;10115:284;;:::o;10407:293::-;10514:10;10490:11;:21;;;:34;;;;;;;:::i;:::-;;;;;;;;10540:11;:29;10552:16;;;;;;;;;;;10540:29;;;;;;;;;;;;;;;;;;;;;;;;;10537:107;;;10622:10;10595:7;:25;10603:16;;;;;;;;;;;10595:25;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;10537:107;10682:10;10654:7;:25;10662:16;;;;;;;;;;;10654:25;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;10407:293;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:137::-;494:5;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;440:137;;;;:::o;610:741::-;681:5;725:4;713:9;708:3;704:19;700:30;697:117;;;733:79;;:::i;:::-;697:117;832:21;848:4;832:21;:::i;:::-;823:30;;911:1;951:49;996:3;987:6;976:9;972:22;951:49;:::i;:::-;944:4;937:5;933:16;926:75;863:149;1076:2;1117:49;1162:3;1153:6;1142:9;1138:22;1117:49;:::i;:::-;1110:4;1103:5;1099:16;1092:75;1022:156;1242:2;1283:49;1328:3;1319:6;1308:9;1304:22;1283:49;:::i;:::-;1276:4;1269:5;1265:16;1258:75;1188:156;610:741;;;;:::o;1357:139::-;1403:5;1441:6;1428:20;1419:29;;1457:33;1484:5;1457:33;:::i;:::-;1357:139;;;;:::o;1502:143::-;1559:5;1590:6;1584:13;1575:22;;1606:33;1633:5;1606:33;:::i;:::-;1502:143;;;;:::o;1651:329::-;1710:6;1759:2;1747:9;1738:7;1734:23;1730:32;1727:119;;;1765:79;;:::i;:::-;1727:119;1885:1;1910:53;1955:7;1946:6;1935:9;1931:22;1910:53;:::i;:::-;1900:63;;1856:117;1651:329;;;;:::o;1986:351::-;2056:6;2105:2;2093:9;2084:7;2080:23;2076:32;2073:119;;;2111:79;;:::i;:::-;2073:119;2231:1;2256:64;2312:7;2303:6;2292:9;2288:22;2256:64;:::i;:::-;2246:74;;2202:128;1986:351;;;;:::o;2343:474::-;2411:6;2419;2468:2;2456:9;2447:7;2443:23;2439:32;2436:119;;;2474:79;;:::i;:::-;2436:119;2594:1;2619:53;2664:7;2655:6;2644:9;2640:22;2619:53;:::i;:::-;2609:63;;2565:117;2721:2;2747:53;2792:7;2783:6;2772:9;2768:22;2747:53;:::i;:::-;2737:63;;2692:118;2343:474;;;;;:::o;2823:619::-;2900:6;2908;2916;2965:2;2953:9;2944:7;2940:23;2936:32;2933:119;;;2971:79;;:::i;:::-;2933:119;3091:1;3116:53;3161:7;3152:6;3141:9;3137:22;3116:53;:::i;:::-;3106:63;;3062:117;3218:2;3244:53;3289:7;3280:6;3269:9;3265:22;3244:53;:::i;:::-;3234:63;;3189:118;3346:2;3372:53;3417:7;3408:6;3397:9;3393:22;3372:53;:::i;:::-;3362:63;;3317:118;2823:619;;;;;:::o;3448:474::-;3516:6;3524;3573:2;3561:9;3552:7;3548:23;3544:32;3541:119;;;3579:79;;:::i;:::-;3541:119;3699:1;3724:53;3769:7;3760:6;3749:9;3745:22;3724:53;:::i;:::-;3714:63;;3670:117;3826:2;3852:53;3897:7;3888:6;3877:9;3873:22;3852:53;:::i;:::-;3842:63;;3797:118;3448:474;;;;;:::o;3928:323::-;3984:6;4033:2;4021:9;4012:7;4008:23;4004:32;4001:119;;;4039:79;;:::i;:::-;4001:119;4159:1;4184:50;4226:7;4217:6;4206:9;4202:22;4184:50;:::i;:::-;4174:60;;4130:114;3928:323;;;;:::o;4257:345::-;4324:6;4373:2;4361:9;4352:7;4348:23;4344:32;4341:119;;;4379:79;;:::i;:::-;4341:119;4499:1;4524:61;4577:7;4568:6;4557:9;4553:22;4524:61;:::i;:::-;4514:71;;4470:125;4257:345;;;;:::o;4608:329::-;4667:6;4716:2;4704:9;4695:7;4691:23;4687:32;4684:119;;;4722:79;;:::i;:::-;4684:119;4842:1;4867:53;4912:7;4903:6;4892:9;4888:22;4867:53;:::i;:::-;4857:63;;4813:117;4608:329;;;;:::o;4943:658::-;5039:6;5047;5055;5104:3;5092:9;5083:7;5079:23;5075:33;5072:120;;;5111:79;;:::i;:::-;5072:120;5231:1;5256:53;5301:7;5292:6;5281:9;5277:22;5256:53;:::i;:::-;5246:63;;5202:117;5358:2;5384:50;5426:7;5417:6;5406:9;5402:22;5384:50;:::i;:::-;5374:60;;5329:115;5483:2;5509:75;5576:7;5567:6;5556:9;5552:22;5509:75;:::i;:::-;5499:85;;5454:140;4943:658;;;;;:::o;5607:619::-;5684:6;5692;5700;5749:2;5737:9;5728:7;5724:23;5720:32;5717:119;;;5755:79;;:::i;:::-;5717:119;5875:1;5900:53;5945:7;5936:6;5925:9;5921:22;5900:53;:::i;:::-;5890:63;;5846:117;6002:2;6028:53;6073:7;6064:6;6053:9;6049:22;6028:53;:::i;:::-;6018:63;;5973:118;6130:2;6156:53;6201:7;6192:6;6181:9;6177:22;6156:53;:::i;:::-;6146:63;;6101:118;5607:619;;;;;:::o;6232:663::-;6320:6;6328;6336;6385:2;6373:9;6364:7;6360:23;6356:32;6353:119;;;6391:79;;:::i;:::-;6353:119;6511:1;6536:64;6592:7;6583:6;6572:9;6568:22;6536:64;:::i;:::-;6526:74;;6482:128;6649:2;6675:64;6731:7;6722:6;6711:9;6707:22;6675:64;:::i;:::-;6665:74;;6620:129;6788:2;6814:64;6870:7;6861:6;6850:9;6846:22;6814:64;:::i;:::-;6804:74;;6759:129;6232:663;;;;;:::o;6901:179::-;6970:10;6991:46;7033:3;7025:6;6991:46;:::i;:::-;7069:4;7064:3;7060:14;7046:28;;6901:179;;;;:::o;7086:108::-;7163:24;7181:5;7163:24;:::i;:::-;7158:3;7151:37;7086:108;;:::o;7200:118::-;7287:24;7305:5;7287:24;:::i;:::-;7282:3;7275:37;7200:118;;:::o;7354:732::-;7473:3;7502:54;7550:5;7502:54;:::i;:::-;7572:86;7651:6;7646:3;7572:86;:::i;:::-;7565:93;;7682:56;7732:5;7682:56;:::i;:::-;7761:7;7792:1;7777:284;7802:6;7799:1;7796:13;7777:284;;;7878:6;7872:13;7905:63;7964:3;7949:13;7905:63;:::i;:::-;7898:70;;7991:60;8044:6;7991:60;:::i;:::-;7981:70;;7837:224;7824:1;7821;7817:9;7812:14;;7777:284;;;7781:14;8077:3;8070:10;;7478:608;;;7354:732;;;;:::o;8092:109::-;8173:21;8188:5;8173:21;:::i;:::-;8168:3;8161:34;8092:109;;:::o;8207:161::-;8309:52;8355:5;8309:52;:::i;:::-;8304:3;8297:65;8207:161;;:::o;8374:147::-;8469:45;8508:5;8469:45;:::i;:::-;8464:3;8457:58;8374:147;;:::o;8527:364::-;8615:3;8643:39;8676:5;8643:39;:::i;:::-;8698:71;8762:6;8757:3;8698:71;:::i;:::-;8691:78;;8778:52;8823:6;8818:3;8811:4;8804:5;8800:16;8778:52;:::i;:::-;8855:29;8877:6;8855:29;:::i;:::-;8850:3;8846:39;8839:46;;8619:272;8527:364;;;;:::o;8897:366::-;9039:3;9060:67;9124:2;9119:3;9060:67;:::i;:::-;9053:74;;9136:93;9225:3;9136:93;:::i;:::-;9254:2;9249:3;9245:12;9238:19;;8897:366;;;:::o;9269:::-;9411:3;9432:67;9496:2;9491:3;9432:67;:::i;:::-;9425:74;;9508:93;9597:3;9508:93;:::i;:::-;9626:2;9621:3;9617:12;9610:19;;9269:366;;;:::o;9641:::-;9783:3;9804:67;9868:2;9863:3;9804:67;:::i;:::-;9797:74;;9880:93;9969:3;9880:93;:::i;:::-;9998:2;9993:3;9989:12;9982:19;;9641:366;;;:::o;10013:::-;10155:3;10176:67;10240:2;10235:3;10176:67;:::i;:::-;10169:74;;10252:93;10341:3;10252:93;:::i;:::-;10370:2;10365:3;10361:12;10354:19;;10013:366;;;:::o;10385:::-;10527:3;10548:67;10612:2;10607:3;10548:67;:::i;:::-;10541:74;;10624:93;10713:3;10624:93;:::i;:::-;10742:2;10737:3;10733:12;10726:19;;10385:366;;;:::o;10757:::-;10899:3;10920:67;10984:2;10979:3;10920:67;:::i;:::-;10913:74;;10996:93;11085:3;10996:93;:::i;:::-;11114:2;11109:3;11105:12;11098:19;;10757:366;;;:::o;11129:::-;11271:3;11292:67;11356:2;11351:3;11292:67;:::i;:::-;11285:74;;11368:93;11457:3;11368:93;:::i;:::-;11486:2;11481:3;11477:12;11470:19;;11129:366;;;:::o;11501:::-;11643:3;11664:67;11728:2;11723:3;11664:67;:::i;:::-;11657:74;;11740:93;11829:3;11740:93;:::i;:::-;11858:2;11853:3;11849:12;11842:19;;11501:366;;;:::o;11873:::-;12015:3;12036:67;12100:2;12095:3;12036:67;:::i;:::-;12029:74;;12112:93;12201:3;12112:93;:::i;:::-;12230:2;12225:3;12221:12;12214:19;;11873:366;;;:::o;12245:::-;12387:3;12408:67;12472:2;12467:3;12408:67;:::i;:::-;12401:74;;12484:93;12573:3;12484:93;:::i;:::-;12602:2;12597:3;12593:12;12586:19;;12245:366;;;:::o;12617:::-;12759:3;12780:67;12844:2;12839:3;12780:67;:::i;:::-;12773:74;;12856:93;12945:3;12856:93;:::i;:::-;12974:2;12969:3;12965:12;12958:19;;12617:366;;;:::o;12989:::-;13131:3;13152:67;13216:2;13211:3;13152:67;:::i;:::-;13145:74;;13228:93;13317:3;13228:93;:::i;:::-;13346:2;13341:3;13337:12;13330:19;;12989:366;;;:::o;13361:::-;13503:3;13524:67;13588:2;13583:3;13524:67;:::i;:::-;13517:74;;13600:93;13689:3;13600:93;:::i;:::-;13718:2;13713:3;13709:12;13702:19;;13361:366;;;:::o;13733:::-;13875:3;13896:67;13960:2;13955:3;13896:67;:::i;:::-;13889:74;;13972:93;14061:3;13972:93;:::i;:::-;14090:2;14085:3;14081:12;14074:19;;13733:366;;;:::o;14105:::-;14247:3;14268:67;14332:2;14327:3;14268:67;:::i;:::-;14261:74;;14344:93;14433:3;14344:93;:::i;:::-;14462:2;14457:3;14453:12;14446:19;;14105:366;;;:::o;14477:::-;14619:3;14640:67;14704:2;14699:3;14640:67;:::i;:::-;14633:74;;14716:93;14805:3;14716:93;:::i;:::-;14834:2;14829:3;14825:12;14818:19;;14477:366;;;:::o;14849:::-;14991:3;15012:67;15076:2;15071:3;15012:67;:::i;:::-;15005:74;;15088:93;15177:3;15088:93;:::i;:::-;15206:2;15201:3;15197:12;15190:19;;14849:366;;;:::o;15221:::-;15363:3;15384:67;15448:2;15443:3;15384:67;:::i;:::-;15377:74;;15460:93;15549:3;15460:93;:::i;:::-;15578:2;15573:3;15569:12;15562:19;;15221:366;;;:::o;15593:118::-;15680:24;15698:5;15680:24;:::i;:::-;15675:3;15668:37;15593:118;;:::o;15717:112::-;15800:22;15816:5;15800:22;:::i;:::-;15795:3;15788:35;15717:112;;:::o;15835:222::-;15928:4;15966:2;15955:9;15951:18;15943:26;;15979:71;16047:1;16036:9;16032:17;16023:6;15979:71;:::i;:::-;15835:222;;;;:::o;16063:332::-;16184:4;16222:2;16211:9;16207:18;16199:26;;16235:71;16303:1;16292:9;16288:17;16279:6;16235:71;:::i;:::-;16316:72;16384:2;16373:9;16369:18;16360:6;16316:72;:::i;:::-;16063:332;;;;;:::o;16401:807::-;16650:4;16688:3;16677:9;16673:19;16665:27;;16702:71;16770:1;16759:9;16755:17;16746:6;16702:71;:::i;:::-;16783:72;16851:2;16840:9;16836:18;16827:6;16783:72;:::i;:::-;16865:80;16941:2;16930:9;16926:18;16917:6;16865:80;:::i;:::-;16955;17031:2;17020:9;17016:18;17007:6;16955:80;:::i;:::-;17045:73;17113:3;17102:9;17098:19;17089:6;17045:73;:::i;:::-;17128;17196:3;17185:9;17181:19;17172:6;17128:73;:::i;:::-;16401:807;;;;;;;;;:::o;17214:210::-;17301:4;17339:2;17328:9;17324:18;17316:26;;17352:65;17414:1;17403:9;17399:17;17390:6;17352:65;:::i;:::-;17214:210;;;;:::o;17430:252::-;17538:4;17576:2;17565:9;17561:18;17553:26;;17589:86;17672:1;17661:9;17657:17;17648:6;17589:86;:::i;:::-;17430:252;;;;:::o;17688:313::-;17801:4;17839:2;17828:9;17824:18;17816:26;;17888:9;17882:4;17878:20;17874:1;17863:9;17859:17;17852:47;17916:78;17989:4;17980:6;17916:78;:::i;:::-;17908:86;;17688:313;;;;:::o;18007:419::-;18173:4;18211:2;18200:9;18196:18;18188:26;;18260:9;18254:4;18250:20;18246:1;18235:9;18231:17;18224:47;18288:131;18414:4;18288:131;:::i;:::-;18280:139;;18007:419;;;:::o;18432:::-;18598:4;18636:2;18625:9;18621:18;18613:26;;18685:9;18679:4;18675:20;18671:1;18660:9;18656:17;18649:47;18713:131;18839:4;18713:131;:::i;:::-;18705:139;;18432:419;;;:::o;18857:::-;19023:4;19061:2;19050:9;19046:18;19038:26;;19110:9;19104:4;19100:20;19096:1;19085:9;19081:17;19074:47;19138:131;19264:4;19138:131;:::i;:::-;19130:139;;18857:419;;;:::o;19282:::-;19448:4;19486:2;19475:9;19471:18;19463:26;;19535:9;19529:4;19525:20;19521:1;19510:9;19506:17;19499:47;19563:131;19689:4;19563:131;:::i;:::-;19555:139;;19282:419;;;:::o;19707:::-;19873:4;19911:2;19900:9;19896:18;19888:26;;19960:9;19954:4;19950:20;19946:1;19935:9;19931:17;19924:47;19988:131;20114:4;19988:131;:::i;:::-;19980:139;;19707:419;;;:::o;20132:::-;20298:4;20336:2;20325:9;20321:18;20313:26;;20385:9;20379:4;20375:20;20371:1;20360:9;20356:17;20349:47;20413:131;20539:4;20413:131;:::i;:::-;20405:139;;20132:419;;;:::o;20557:::-;20723:4;20761:2;20750:9;20746:18;20738:26;;20810:9;20804:4;20800:20;20796:1;20785:9;20781:17;20774:47;20838:131;20964:4;20838:131;:::i;:::-;20830:139;;20557:419;;;:::o;20982:::-;21148:4;21186:2;21175:9;21171:18;21163:26;;21235:9;21229:4;21225:20;21221:1;21210:9;21206:17;21199:47;21263:131;21389:4;21263:131;:::i;:::-;21255:139;;20982:419;;;:::o;21407:::-;21573:4;21611:2;21600:9;21596:18;21588:26;;21660:9;21654:4;21650:20;21646:1;21635:9;21631:17;21624:47;21688:131;21814:4;21688:131;:::i;:::-;21680:139;;21407:419;;;:::o;21832:::-;21998:4;22036:2;22025:9;22021:18;22013:26;;22085:9;22079:4;22075:20;22071:1;22060:9;22056:17;22049:47;22113:131;22239:4;22113:131;:::i;:::-;22105:139;;21832:419;;;:::o;22257:::-;22423:4;22461:2;22450:9;22446:18;22438:26;;22510:9;22504:4;22500:20;22496:1;22485:9;22481:17;22474:47;22538:131;22664:4;22538:131;:::i;:::-;22530:139;;22257:419;;;:::o;22682:::-;22848:4;22886:2;22875:9;22871:18;22863:26;;22935:9;22929:4;22925:20;22921:1;22910:9;22906:17;22899:47;22963:131;23089:4;22963:131;:::i;:::-;22955:139;;22682:419;;;:::o;23107:::-;23273:4;23311:2;23300:9;23296:18;23288:26;;23360:9;23354:4;23350:20;23346:1;23335:9;23331:17;23324:47;23388:131;23514:4;23388:131;:::i;:::-;23380:139;;23107:419;;;:::o;23532:::-;23698:4;23736:2;23725:9;23721:18;23713:26;;23785:9;23779:4;23775:20;23771:1;23760:9;23756:17;23749:47;23813:131;23939:4;23813:131;:::i;:::-;23805:139;;23532:419;;;:::o;23957:::-;24123:4;24161:2;24150:9;24146:18;24138:26;;24210:9;24204:4;24200:20;24196:1;24185:9;24181:17;24174:47;24238:131;24364:4;24238:131;:::i;:::-;24230:139;;23957:419;;;:::o;24382:::-;24548:4;24586:2;24575:9;24571:18;24563:26;;24635:9;24629:4;24625:20;24621:1;24610:9;24606:17;24599:47;24663:131;24789:4;24663:131;:::i;:::-;24655:139;;24382:419;;;:::o;24807:::-;24973:4;25011:2;25000:9;24996:18;24988:26;;25060:9;25054:4;25050:20;25046:1;25035:9;25031:17;25024:47;25088:131;25214:4;25088:131;:::i;:::-;25080:139;;24807:419;;;:::o;25232:::-;25398:4;25436:2;25425:9;25421:18;25413:26;;25485:9;25479:4;25475:20;25471:1;25460:9;25456:17;25449:47;25513:131;25639:4;25513:131;:::i;:::-;25505:139;;25232:419;;;:::o;25657:222::-;25750:4;25788:2;25777:9;25773:18;25765:26;;25801:71;25869:1;25858:9;25854:17;25845:6;25801:71;:::i;:::-;25657:222;;;;:::o;25885:831::-;26148:4;26186:3;26175:9;26171:19;26163:27;;26200:71;26268:1;26257:9;26253:17;26244:6;26200:71;:::i;:::-;26281:80;26357:2;26346:9;26342:18;26333:6;26281:80;:::i;:::-;26408:9;26402:4;26398:20;26393:2;26382:9;26378:18;26371:48;26436:108;26539:4;26530:6;26436:108;:::i;:::-;26428:116;;26554:72;26622:2;26611:9;26607:18;26598:6;26554:72;:::i;:::-;26636:73;26704:3;26693:9;26689:19;26680:6;26636:73;:::i;:::-;25885:831;;;;;;;;:::o;26722:442::-;26871:4;26909:2;26898:9;26894:18;26886:26;;26922:71;26990:1;26979:9;26975:17;26966:6;26922:71;:::i;:::-;27003:72;27071:2;27060:9;27056:18;27047:6;27003:72;:::i;:::-;27085;27153:2;27142:9;27138:18;27129:6;27085:72;:::i;:::-;26722:442;;;;;;:::o;27170:214::-;27259:4;27297:2;27286:9;27282:18;27274:26;;27310:67;27374:1;27363:9;27359:17;27350:6;27310:67;:::i;:::-;27170:214;;;;:::o;27390:129::-;27424:6;27451:20;;:::i;:::-;27441:30;;27480:33;27508:4;27500:6;27480:33;:::i;:::-;27390:129;;;:::o;27525:75::-;27558:6;27591:2;27585:9;27575:19;;27525:75;:::o;27606:132::-;27673:4;27696:3;27688:11;;27726:4;27721:3;27717:14;27709:22;;27606:132;;;:::o;27744:114::-;27811:6;27845:5;27839:12;27829:22;;27744:114;;;:::o;27864:99::-;27916:6;27950:5;27944:12;27934:22;;27864:99;;;:::o;27969:113::-;28039:4;28071;28066:3;28062:14;28054:22;;27969:113;;;:::o;28088:184::-;28187:11;28221:6;28216:3;28209:19;28261:4;28256:3;28252:14;28237:29;;28088:184;;;;:::o;28278:169::-;28362:11;28396:6;28391:3;28384:19;28436:4;28431:3;28427:14;28412:29;;28278:169;;;;:::o;28453:305::-;28493:3;28512:20;28530:1;28512:20;:::i;:::-;28507:25;;28546:20;28564:1;28546:20;:::i;:::-;28541:25;;28700:1;28632:66;28628:74;28625:1;28622:81;28619:107;;;28706:18;;:::i;:::-;28619:107;28750:1;28747;28743:9;28736:16;;28453:305;;;;:::o;28764:185::-;28804:1;28821:20;28839:1;28821:20;:::i;:::-;28816:25;;28855:20;28873:1;28855:20;:::i;:::-;28850:25;;28894:1;28884:35;;28899:18;;:::i;:::-;28884:35;28941:1;28938;28934:9;28929:14;;28764:185;;;;:::o;28955:848::-;29016:5;29023:4;29047:6;29038:15;;29071:5;29062:14;;29085:712;29106:1;29096:8;29093:15;29085:712;;;29201:4;29196:3;29192:14;29186:4;29183:24;29180:50;;;29210:18;;:::i;:::-;29180:50;29260:1;29250:8;29246:16;29243:451;;;29675:4;29668:5;29664:16;29655:25;;29243:451;29725:4;29719;29715:15;29707:23;;29755:32;29778:8;29755:32;:::i;:::-;29743:44;;29085:712;;;28955:848;;;;;;;:::o;29809:281::-;29867:5;29891:23;29909:4;29891:23;:::i;:::-;29883:31;;29935:25;29951:8;29935:25;:::i;:::-;29923:37;;29979:104;30016:66;30006:8;30000:4;29979:104;:::i;:::-;29970:113;;29809:281;;;;:::o;30096:1073::-;30150:5;30341:8;30331:40;;30362:1;30353:10;;30364:5;;30331:40;30390:4;30380:36;;30407:1;30398:10;;30409:5;;30380:36;30476:4;30524:1;30519:27;;;;30560:1;30555:191;;;;30469:277;;30519:27;30537:1;30528:10;;30539:5;;;30555:191;30600:3;30590:8;30587:17;30584:43;;;30607:18;;:::i;:::-;30584:43;30656:8;30653:1;30649:16;30640:25;;30691:3;30684:5;30681:14;30678:40;;;30698:18;;:::i;:::-;30678:40;30731:5;;;30469:277;;30855:2;30845:8;30842:16;30836:3;30830:4;30827:13;30823:36;30805:2;30795:8;30792:16;30787:2;30781:4;30778:12;30774:35;30758:111;30755:246;;;30911:8;30905:4;30901:19;30892:28;;30946:3;30939:5;30936:14;30933:40;;;30953:18;;:::i;:::-;30933:40;30986:5;;30755:246;31026:42;31064:3;31054:8;31048:4;31045:1;31026:42;:::i;:::-;31011:57;;;;31100:4;31095:3;31091:14;31084:5;31081:25;31078:51;;;31109:18;;:::i;:::-;31078:51;31158:4;31151:5;31147:16;31138:25;;30096:1073;;;;;;:::o;31175:348::-;31215:7;31238:20;31256:1;31238:20;:::i;:::-;31233:25;;31272:20;31290:1;31272:20;:::i;:::-;31267:25;;31460:1;31392:66;31388:74;31385:1;31382:81;31377:1;31370:9;31363:17;31359:105;31356:131;;;31467:18;;:::i;:::-;31356:131;31515:1;31512;31508:9;31497:20;;31175:348;;;;:::o;31529:191::-;31569:4;31589:20;31607:1;31589:20;:::i;:::-;31584:25;;31623:20;31641:1;31623:20;:::i;:::-;31618:25;;31662:1;31659;31656:8;31653:34;;;31667:18;;:::i;:::-;31653:34;31712:1;31709;31705:9;31697:17;;31529:191;;;;:::o;31726:96::-;31763:7;31792:24;31810:5;31792:24;:::i;:::-;31781:35;;31726:96;;;:::o;31828:90::-;31862:7;31905:5;31898:13;31891:21;31880:32;;31828:90;;;:::o;31924:126::-;31961:7;32001:42;31994:5;31990:54;31979:65;;31924:126;;;:::o;32056:77::-;32093:7;32122:5;32111:16;;32056:77;;;:::o;32139:86::-;32174:7;32214:4;32207:5;32203:16;32192:27;;32139:86;;;:::o;32231:141::-;32296:9;32329:37;32360:5;32329:37;:::i;:::-;32316:50;;32231:141;;;:::o;32378:121::-;32436:9;32469:24;32487:5;32469:24;:::i;:::-;32456:37;;32378:121;;;:::o;32505:126::-;32555:9;32588:37;32619:5;32588:37;:::i;:::-;32575:50;;32505:126;;;:::o;32637:113::-;32687:9;32720:24;32738:5;32720:24;:::i;:::-;32707:37;;32637:113;;;:::o;32756:307::-;32824:1;32834:113;32848:6;32845:1;32842:13;32834:113;;;32933:1;32928:3;32924:11;32918:18;32914:1;32909:3;32905:11;32898:39;32870:2;32867:1;32863:10;32858:15;;32834:113;;;32965:6;32962:1;32959:13;32956:101;;;33045:1;33036:6;33031:3;33027:16;33020:27;32956:101;32805:258;32756:307;;;:::o;33069:281::-;33152:27;33174:4;33152:27;:::i;:::-;33144:6;33140:40;33282:6;33270:10;33267:22;33246:18;33234:10;33231:34;33228:62;33225:88;;;33293:18;;:::i;:::-;33225:88;33333:10;33329:2;33322:22;33112:238;33069:281;;:::o;33356:233::-;33395:3;33418:24;33436:5;33418:24;:::i;:::-;33409:33;;33464:66;33457:5;33454:77;33451:103;;;33534:18;;:::i;:::-;33451:103;33581:1;33574:5;33570:13;33563:20;;33356:233;;;:::o;33595:180::-;33643:77;33640:1;33633:88;33740:4;33737:1;33730:15;33764:4;33761:1;33754:15;33781:180;33829:77;33826:1;33819:88;33926:4;33923:1;33916:15;33950:4;33947:1;33940:15;33967:180;34015:77;34012:1;34005:88;34112:4;34109:1;34102:15;34136:4;34133:1;34126:15;34153:180;34201:77;34198:1;34191:88;34298:4;34295:1;34288:15;34322:4;34319:1;34312:15;34339:180;34387:77;34384:1;34377:88;34484:4;34481:1;34474:15;34508:4;34505:1;34498:15;34525:117;34634:1;34631;34624:12;34894:117;35003:1;35000;34993:12;35017:102;35058:6;35109:2;35105:7;35100:2;35093:5;35089:14;35085:28;35075:38;;35017:102;;;:::o;35125:::-;35167:8;35214:5;35211:1;35207:13;35186:34;;35125:102;;;:::o;35233:222::-;35373:34;35369:1;35361:6;35357:14;35350:58;35442:5;35437:2;35429:6;35425:15;35418:30;35233:222;:::o;35461:168::-;35601:20;35597:1;35589:6;35585:14;35578:44;35461:168;:::o;35635:236::-;35775:34;35771:1;35763:6;35759:14;35752:58;35844:19;35839:2;35831:6;35827:15;35820:44;35635:236;:::o;35877:229::-;36017:34;36013:1;36005:6;36001:14;35994:58;36086:12;36081:2;36073:6;36069:15;36062:37;35877:229;:::o;36112:225::-;36252:34;36248:1;36240:6;36236:14;36229:58;36321:8;36316:2;36308:6;36304:15;36297:33;36112:225;:::o;36343:221::-;36483:34;36479:1;36471:6;36467:14;36460:58;36552:4;36547:2;36539:6;36535:15;36528:29;36343:221;:::o;36570:177::-;36710:29;36706:1;36698:6;36694:14;36687:53;36570:177;:::o;36753:173::-;36893:25;36889:1;36881:6;36877:14;36870:49;36753:173;:::o;36932:181::-;37072:33;37068:1;37060:6;37056:14;37049:57;36932:181;:::o;37119:174::-;37259:26;37255:1;37247:6;37243:14;37236:50;37119:174;:::o;37299:227::-;37439:34;37435:1;37427:6;37423:14;37416:58;37508:10;37503:2;37495:6;37491:15;37484:35;37299:227;:::o;37532:182::-;37672:34;37668:1;37660:6;37656:14;37649:58;37532:182;:::o;37720:228::-;37860:34;37856:1;37848:6;37844:14;37837:58;37929:11;37924:2;37916:6;37912:15;37905:36;37720:228;:::o;37954:168::-;38094:20;38090:1;38082:6;38078:14;38071:44;37954:168;:::o;38128:224::-;38268:34;38264:1;38256:6;38252:14;38245:58;38337:7;38332:2;38324:6;38320:15;38313:32;38128:224;:::o;38358:223::-;38498:34;38494:1;38486:6;38482:14;38475:58;38567:6;38562:2;38554:6;38550:15;38543:31;38358:223;:::o;38587:163::-;38727:15;38723:1;38715:6;38711:14;38704:39;38587:163;:::o;38756:224::-;38896:34;38892:1;38884:6;38880:14;38873:58;38965:7;38960:2;38952:6;38948:15;38941:32;38756:224;:::o;38986:122::-;39059:24;39077:5;39059:24;:::i;:::-;39052:5;39049:35;39039:63;;39098:1;39095;39088:12;39039:63;38986:122;:::o;39114:116::-;39184:21;39199:5;39184:21;:::i;:::-;39177:5;39174:32;39164:60;;39220:1;39217;39210:12;39164:60;39114:116;:::o;39236:122::-;39309:24;39327:5;39309:24;:::i;:::-;39302:5;39299:35;39289:63;;39348:1;39345;39338:12;39289:63;39236:122;:::o

Swarm Source

ipfs://24a5b14723d3c5c681b80df2ca734d64cb7923db8613955580c5b011c4c7ffef

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

The Mission of Votonx is to bring disruptive green technology to mainstream commercial fulfillment. The company is developing an array of technologies that can change the future of energy production.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.