ETH Price: $2,491.84 (-1.08%)

Token

WALLET (MetaMaskLedgerTrustSafePalTrezorElliPalSecuX)
 

Overview

Max Total Supply

100,000,000,000 MetaMaskLedgerTrustSafePalTrezorElliPalSecuX

Holders

57

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.115039653 MetaMaskLedgerTrustSafePalTrezorElliPalSecuX

Value
$0.00
0x7eb55bba0cd56b2d087000cd989ec414b86280f8
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Wallet

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-16
*/

//SPDX-License-Identifier: MIT

/*
 https://t.me/WalletsXEth
 https://metamaskledgertrustsafepaltrezorellipalsecux.com/
 https://twitter.com/WalletsXEth
*/

pragma solidity 0.8.21;

abstract contract Auth {
    address internal _owner;
    event OwnershipTransferred(address _owner);
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this"); _; 
    }
    constructor(address creatorOwner) { 
        _owner = creatorOwner; 
    }
    function owner() public view returns (address) { return _owner; }
    function transferOwnership(address payable _newOwner) external onlyOwner { 
        _owner = _newOwner; 
        emit OwnershipTransferred(_newOwner); 
    }
    function renounceOwnership() external onlyOwner { 
        _owner = address(0);
        emit OwnershipTransferred(address(0)); 
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address holder, 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);
}


contract Wallet is IERC20, Auth {
    string private  constant _symbol = "MetaMaskLedgerTrustSafePalTrezorElliPalSecuX";
    string private constant _name    = "WALLET";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 100_000_000_000 * (10**_decimals);
  
    uint8 private antiSnipeTaxes1 = 2;
    uint8 private antiSnipeTaxes2 = 1;
    uint8 private antiSnipeBlock1 = 1;
    uint8 private antiSnipeBlock2 = 1;
    uint256 private antiMevBlock = 2;

    uint8 private _buyTaxes  = 0;
    uint8 private _sellTaxes = 0;

    address payable private _marketingWallet = payable(0xFC9BBB002528064D4Fd16e6B30C26F697105167d);

    uint256 private launchBlk;
    uint256 private _maxTxVal = _totalSupply; 
    uint256 private _maxWalletVal = _totalSupply;
    uint256 private _swapMin = _totalSupply * 10 / 100000;
    uint256 private _swapMax = _totalSupply * 11 / 100000;
    uint256 private _swapLimits = _swapMin * 65 * 100;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (uint256 => mapping (address => uint8)) private blockSells;
    mapping (address => bool) private _nofee;
    mapping (address => bool) private _nolimit;

    address private LpOwner;

    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP;
    mapping (address => bool) private _isLP;

    bool private _tradingOpen;

    bool private _activeSwap = false;
    modifier lockTaxSwap { 
        _activeSwap = true; 
        _; 
        _activeSwap = false; 
    }

    constructor() Auth(msg.sender) {
        LpOwner = msg.sender;
        
        _balances[address(this)] = _totalSupply;
        emit Transfer(address(0), address(this), _balances[address(this)]);

        _nofee[_owner] = true;
        _nofee[address(this)] = true;
        _nofee[_swapRouterAddress] = true;
        _nofee[_marketingWallet] = true;
        _nolimit[_owner] = true;
        _nolimit[address(this)] = true;
        _nolimit[_swapRouterAddress] = true;
        _nolimit[_marketingWallet] = true;
    }

    receive() external payable {}
    
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) { 
        return _balances[account]; 
    }
    function allowance(address holder, address spender) external view override returns (uint256) { 
        return _allowances[holder][spender]; 
    }

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

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not yet open");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address fromWallet, address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(fromWallet), "Trading not yet open");
        _allowances[fromWallet][msg.sender] -= amount;
        return _transferFrom(fromWallet, recipient, amount);
    }

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP created");
        require(!_tradingOpen, "trading open");
        require(msg.value > 0 || address(this).balance>0, "No ETH in ca/msg");
        require(_balances[address(this)]>0, "No tokens in ca");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH());
        _addLiquidity(_balances[address(this)], address(this).balance);
        _balances[_primaryLP] -= _swapLimits;
        (bool lpAddSuccessful,) = _primaryLP.call(abi.encodeWithSignature("sync()") );
        require(lpAddSuccessful, "Failed adding lp");
        _isLP[_primaryLP] = lpAddSuccessful;
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei) internal {
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, LpOwner, block.timestamp );
    }

    function enableTrading() external onlyOwner {
        require(!_tradingOpen, "trading open");
        _openTrading();
    }

    function _openTrading() internal {
        _maxTxVal     = 3 * _totalSupply / 100; 
        _maxWalletVal = 3 * _totalSupply / 100;
        _tradingOpen = true;
        launchBlk = block.number;
        antiMevBlock = antiMevBlock + launchBlk + antiSnipeBlock1 + antiSnipeBlock2;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from 0 wallet");
        if (!_tradingOpen) { require(_nofee[sender] && _nolimit[sender], "Trading not yet open"); }
        if ( !_activeSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); }

        if ( block.number >= launchBlk && _isLP[sender] ) {
            if (block.number < antiMevBlock ) { require(recipient == tx.origin, "MEV block"); }
            if (block.number < antiMevBlock + 14400 && recipient != address(this) ) {
                blockSells[block.number][recipient] += 1;
                require(blockSells[block.number][recipient] <= 2, "MEV block");
            }
        }

        if ( sender != address(this) && recipient != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, recipient, amount), "TX over limits"); 
        }

        uint256 _taxAmount = _calculateTax(sender, recipient, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] = _balances[sender] - amount;
        _swapLimits += _taxAmount;
        _balances[recipient] = _balances[recipient] + _transferAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _checkLimits(address fromWallet, address recipient, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_nolimit[fromWallet] && !_nolimit[recipient] ) {
            if ( transferAmount > _maxTxVal ) { limitCheckPassed = false; }
            else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletVal) ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address fromWallet) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_nofee[fromWallet] && _nolimit[fromWallet]) { checkResult = true; } 

        return checkResult;
    }

    function _calculateTax(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingOpen || _nofee[fromWallet] || _nofee[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isLP[fromWallet] ) { 
            if ( block.number >= launchBlk + antiSnipeBlock1 + antiSnipeBlock2 ) {
                taxAmount = amount * _buyTaxes / 100; 
            } else if ( block.number >= launchBlk + antiSnipeBlock1 ) {
                taxAmount = amount * antiSnipeTaxes2 / 100;
            } else if ( block.number >= launchBlk) {
                taxAmount = amount * antiSnipeTaxes1 / 100;
            }
        } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _sellTaxes / 100; 
        }

        return taxAmount;
    }

    function exemptions(address wallet) external view returns (bool fees, bool limits) {
        return (_nofee[wallet], _nolimit[wallet]);
    }

    function setExemptions(address wlt, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wlt], "Cannot exempt LP"); }
        _nofee[ wlt ] = noFees;
        _nolimit[ wlt ] = noLimits;
    }

    function buyFee() external view returns(uint8) { return _buyTaxes; }
    function sellFee() external view returns(uint8) { return _sellTaxes; }

    function setFees(uint8 buyF, uint8 sellF) external onlyOwner {
        require(buyF + sellF <= 1, "Roundtrip too high");
        _buyTaxes = buyF;
        _sellTaxes = sellF;
    }  

    function marketingWallet() external view returns (address) { return _marketingWallet; }

    function updateWallets(address marketingWlt) external onlyOwner {
        require(!_isLP[marketingWlt], "LP cannot be tax wallet");
        _marketingWallet = payable(marketingWlt);
        _nofee[marketingWlt] = true;
        _nolimit[marketingWlt] = true;
    }

    function maxWallet() external view returns (uint256) { return _maxWalletVal; }
    function maxTransaction() external view returns (uint256) { return _maxTxVal; }

    function swapAtMin() external view returns (uint256) { return _swapMin; }
    function swapAtMax() external view returns (uint256) { return _swapMax; }

    function setLimits(uint16 maxTransPermille, uint16 maxWaletPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTransPermille / 1000 + 1;
        require(newTxAmt >= _maxTxVal, "tx too low");
        _maxTxVal = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWaletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletVal, "wallet too low");
        _maxWalletVal = newWalletAmt;
    }

    function setTaxSwap(uint32 minVal, uint32 minDiv, uint32 maxVal, uint32 maxDiv) external onlyOwner {
        _swapMin = _totalSupply * minVal / minDiv;
        _swapMax = _totalSupply * maxVal / maxDiv;
        require(_swapMax>=_swapMin, "Min-Max error");
        require(_swapMax>_totalSupply / 100000, "Max low");
        require(_swapMax<_totalSupply / 100, "Max high");
    }


    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokenAvailable = _swapLimits;
        if ( _taxTokenAvailable >= _swapMin && _tradingOpen ) {
            if ( _taxTokenAvailable >= _swapMax ) { _taxTokenAvailable = _swapMax; }
            
            uint256 _tokensToSwap = _taxTokenAvailable; 
            if( _tokensToSwap > 10**_decimals ) {
                _balances[address(this)] += _taxTokenAvailable;
                _swapTaxTokensForEth(_tokensToSwap);
                _swapLimits -= _taxTokenAvailable;
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
        }
    }

    function _swapTaxTokensForEth(uint256 tokenAmount) private {
        _approveRouter(tokenAmount);
        address[] memory path = new address[](2);
        path[0] = address( this );
        path[1] = _primarySwapRouter.WETH() ;
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
    }

    function _distributeTaxEth(uint256 amount) private {
        _marketingWallet.transfer(amount);
    }

    function manualTaxSwapAndSend(uint8 swapTokenPercent, bool sendAllEth) external onlyOwner lockTaxSwap {
        require(swapTokenPercent <= 100, "Cannot swap more than 100%");
        uint256 _tokensToSwap = _balances[ address(this)] * swapTokenPercent / 100;
        if (_tokensToSwap > 10 **_decimals) { _swapTaxTokensForEth(_tokensToSwap); }
        if (sendAllEth) { 
            uint256 thisBalance = address(this).balance;
            require(thisBalance >0, "No ETH"); 
            _distributeTaxEth( thisBalance ); 
        }
    }

}

interface IUniswapV2Factory {    
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function WETH() external pure returns (address);
    function factory() 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);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","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"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptions","outputs":[{"internalType":"bool","name":"fees","type":"bool"},{"internalType":"bool","name":"limits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"swapTokenPercent","type":"uint8"},{"internalType":"bool","name":"sendAllEth","type":"bool"}],"name":"manualTaxSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wlt","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyF","type":"uint8"},{"internalType":"uint8","name":"sellF","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minVal","type":"uint32"},{"internalType":"uint32","name":"minDiv","type":"uint32"},{"internalType":"uint32","name":"maxVal","type":"uint32"},{"internalType":"uint32","name":"maxDiv","type":"uint32"}],"name":"setTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAtMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"fromWallet","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 payable","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketingWlt","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260025f60146101000a81548160ff021916908360ff16021790555060015f60156101000a81548160ff021916908360ff16021790555060015f60166101000a81548160ff021916908360ff16021790555060015f60176101000a81548160ff021916908360ff16021790555060026001555f60025f6101000a81548160ff021916908360ff1602179055505f600260016101000a81548160ff021916908360ff16021790555073fc9bbb002528064d4fd16e6b30c26f697105167d6002806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200010e9190620008db565b64174876e8006200012091906200092b565b6004556009600a620001339190620008db565b64174876e8006200014591906200092b565b600555620186a0600a6009600a6200015e9190620008db565b64174876e8006200017091906200092b565b6200017c91906200092b565b620001889190620009a2565b600655620186a0600b6009600a620001a19190620008db565b64174876e800620001b391906200092b565b620001bf91906200092b565b620001cb9190620009a2565b60075560646041600654620001e191906200092b565b620001ed91906200092b565b600855737a250d5630b4cf539739df2c5dacb4c659f2488d600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601260016101000a81548160ff0219169083151502179055503480156200026a575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620002fc9190620008db565b64174876e8006200030e91906200092b565b60095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051620003eb9190620009ea565b60405180910390a36001600c5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f60028054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f60028054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000a05565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620007d357808604811115620007ab57620007aa62000749565b5b6001851615620007bb5780820291505b8081029050620007cb8562000776565b94506200078b565b94509492505050565b5f82620007ed5760019050620008bf565b81620007fc575f9050620008bf565b8160018114620008155760028114620008205762000856565b6001915050620008bf565b60ff84111562000835576200083462000749565b5b8360020a9150848211156200084f576200084e62000749565b5b50620008bf565b5060208310610133831016604e8410600b8410161715620008905782820a9050838111156200088a576200088962000749565b5b620008bf565b6200089f848484600162000782565b92509050818404811115620008b957620008b862000749565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620008e782620008c6565b9150620008f483620008cf565b9250620009237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007dc565b905092915050565b5f6200093782620008c6565b91506200094483620008c6565b92508282026200095481620008c6565b915082820484148315176200096e576200096d62000749565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620009ae82620008c6565b9150620009bb83620008c6565b925082620009ce57620009cd62000975565b5b828204905092915050565b620009e481620008c6565b82525050565b5f602082019050620009ff5f830184620009d9565b92915050565b6147598062000a135f395ff3fe6080604052600436106101ba575f3560e01c80634fcd2446116100eb578063a6097b0a11610089578063dd62ed3e11610063578063dd62ed3e146105dc578063e8078d9414610618578063f2fde38b14610622578063f8b45b051461064a576101c1565b8063a6097b0a1461054e578063a9059cbb14610576578063c3f70b52146105b2576101c1565b806375f0a874116100c557806375f0a874146104ba5780638a8c523c146104e45780638da5cb5b146104fa57806395d89b4114610524576101c1565b80634fcd24461461044057806370a0823114610468578063715018a6146104a4576101c1565b80632fb528ba11610158578063368f480011610132578063368f48001461039a57806346b89834146103c257806347062402146103ec5780634d4ce93514610416576101c1565b80632fb528ba1461030b57806330449efd14610333578063313ce56714610370576101c1565b806318839bc31161019457806318839bc31461025557806323b872dd1461027d5780632851a5cf146102b95780632b14ca56146102e1576101c1565b806306fdde03146101c5578063095ea7b3146101ef57806318160ddd1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610674565b6040516101e69190613342565b60405180910390f35b3480156101fa575f80fd5b50610215600480360381019061021091906133f3565b6106b1565b604051610222919061344b565b60405180910390f35b348015610236575f80fd5b5061023f61079e565b60405161024c9190613473565b60405180910390f35b348015610260575f80fd5b5061027b600480360381019061027691906134b6565b6107c2565b005b348015610288575f80fd5b506102a3600480360381019061029e9190613506565b610995565b6040516102b0919061344b565b60405180910390f35b3480156102c4575f80fd5b506102df60048036038101906102da9190613556565b610a80565b005b3480156102ec575f80fd5b506102f5610c84565b604051610302919061359c565b60405180910390f35b348015610316575f80fd5b50610331600480360381019061032c91906135df565b610c9a565b005b34801561033e575f80fd5b5061035960048036038101906103549190613556565b610e79565b60405161036792919061361d565b60405180910390f35b34801561037b575f80fd5b50610384610f18565b604051610391919061359c565b60405180910390f35b3480156103a5575f80fd5b506103c060048036038101906103bb919061367b565b610f20565b005b3480156103cd575f80fd5b506103d66110dd565b6040516103e39190613473565b60405180910390f35b3480156103f7575f80fd5b506104006110e6565b60405161040d919061359c565b60405180910390f35b348015610421575f80fd5b5061042a6110fb565b6040516104379190613473565b60405180910390f35b34801561044b575f80fd5b50610466600480360381019061046191906136b9565b611104565b005b348015610473575f80fd5b5061048e60048036038101906104899190613556565b61121c565b60405161049b9190613473565b60405180910390f35b3480156104af575f80fd5b506104b8611262565b005b3480156104c5575f80fd5b506104ce611367565b6040516104db9190613706565b60405180910390f35b3480156104ef575f80fd5b506104f861138e565b005b348015610505575f80fd5b5061050e611474565b60405161051b9190613706565b60405180910390f35b34801561052f575f80fd5b5061053861149b565b6040516105459190613342565b60405180910390f35b348015610559575f80fd5b50610574600480360381019061056f9190613758565b6114bb565b005b348015610581575f80fd5b5061059c600480360381019061059791906133f3565b6116fd565b6040516105a9919061344b565b60405180910390f35b3480156105bd575f80fd5b506105c6611759565b6040516105d39190613473565b60405180910390f35b3480156105e7575f80fd5b5061060260048036038101906105fd91906137bc565b611762565b60405161060f9190613473565b60405180910390f35b6106206117e4565b005b34801561062d575f80fd5b5061064860048036038101906106439190613835565b611ea3565b005b348015610655575f80fd5b5061065e611fa9565b60405161066b9190613473565b60405180910390f35b60606040518060400160405280600681526020017f57414c4c45540000000000000000000000000000000000000000000000000000815250905090565b5f81600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161078c9190613473565b60405180910390a36001905092915050565b5f6009600a6107ad91906139bc565b64174876e8006107bd9190613a06565b905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084690613a91565b60405180910390fd5b80806108585750815b156108e85760115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156108e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108de90613af9565b60405180910390fd5b5b81600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f61099f84611fb2565b6109de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d590613b61565b60405180910390fd5b81600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a659190613b7f565b92505081905550610a77848484612084565b90509392505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0490613a91565b60405180910390fd5b60115f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8e90613bfc565b60405180910390fd5b806002806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600260019054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e90613a91565b60405180910390fd5b6001601260016101000a81548160ff02191690831515021790555060648260ff161115610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8090613c64565b60405180910390fd5b5f60648360ff1660095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610dd89190613a06565b610de29190613caf565b90506009600a610df291906139bc565b811115610e0357610e0281612763565b5b8115610e5a575f4790505f8111610e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4690613d29565b60405180910390fd5b610e5881612976565b505b505f601260016101000a81548160ff0219169083151502179055505050565b5f80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691509150915091565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490613a91565b60405180910390fd5b5f60016103e88461ffff166009600a610fc691906139bc565b64174876e800610fd69190613a06565b610fe09190613a06565b610fea9190613caf565b610ff49190613d47565b905060045481101561103b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103290613dc4565b60405180910390fd5b806004819055505f60016103e88461ffff166009600a61105b91906139bc565b64174876e80061106b9190613a06565b6110759190613a06565b61107f9190613caf565b6110899190613d47565b90506005548110156110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c790613e2c565b60405180910390fd5b8060058190555050505050565b5f600654905090565b5f60025f9054906101000a900460ff16905090565b5f600754905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118890613a91565b60405180910390fd5b6001818361119f9190613e4a565b60ff1611156111e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111da90613ec8565b60405180910390fd5b8160025f6101000a81548160ff021916908360ff16021790555080600260016101000a81548160ff021916908360ff1602179055505050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e690613a91565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f60405161135d9190613706565b60405180910390a1565b5f60028054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461141b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141290613a91565b60405180910390fd5b60125f9054906101000a900460ff161561146a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146190613f30565b60405180910390fd5b6114726129dd565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060600160405280602c81526020016146f8602c9139905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153f90613a91565b60405180910390fd5b8263ffffffff168463ffffffff166009600a61156491906139bc565b64174876e8006115749190613a06565b61157e9190613a06565b6115889190613caf565b6006819055508063ffffffff168263ffffffff166009600a6115aa91906139bc565b64174876e8006115ba9190613a06565b6115c49190613a06565b6115ce9190613caf565b600781905550600654600754101561161b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161290613f98565b60405180910390fd5b620186a06009600a61162d91906139bc565b64174876e80061163d9190613a06565b6116479190613caf565b6007541161168a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168190614000565b60405180910390fd5b60646009600a61169a91906139bc565b64174876e8006116aa9190613a06565b6116b49190613caf565b600754106116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee90614068565b60405180910390fd5b50505050565b5f61170733611fb2565b611746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173d90613b61565b60405180910390fd5b611751338484612084565b905092915050565b5f600454905090565b5f600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186890613a91565b60405180910390fd5b6001601260016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461191b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611912906140d0565b60405180910390fd5b60125f9054906101000a900460ff161561196a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196190613f30565b60405180910390fd5b5f34118061197757505f47115b6119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad90614138565b60405180910390fd5b5f60095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411611a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2c906141a0565b60405180910390fd5b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac391906141d2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b49573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6d91906141d2565b6040518363ffffffff1660e01b8152600401611b8a9291906141fd565b6020604051808303815f875af1158015611ba6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bca91906141d2565b60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c5060095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205447612ac6565b60085460095f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611cbf9190613b7f565b925050819055505f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611d8f9190614268565b5f604051808303815f865af19150503d805f8114611dc8576040519150601f19603f3d011682016040523d82523d5f602084013e611dcd565b606091505b5050905080611e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e08906142c8565b60405180910390fd5b8060115f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505f601260016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2790613a91565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611f9e9190614341565b60405180910390a150565b5f600554905090565b5f805f905060125f9054906101000a900460ff1615611fd4576001905061207b565b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156120705750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561207a57600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036120f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ea906143a4565b60405180910390fd5b60125f9054906101000a900460ff166121e257600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156121a25750600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6121e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d890613b61565b60405180910390fd5b5b601260019054906101000a900460ff16158015612245575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561225357612252612b9d565b5b60035443101580156122ab575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561249957600154431015612329573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231f9061440c565b60405180910390fd5b5b6138406001546123399190613d47565b4310801561237357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612498576001600b5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282829054906101000a900460ff166123e09190613e4a565b92506101000a81548160ff021916908360ff1602179055506002600b5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff161115612497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248e9061440c565b60405180910390fd5b5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561250157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561255857505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156125a857612568848484612cb3565b6125a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259e90614474565b60405180910390fd5b5b5f6125b4858585612e3b565b90505f81846125c39190613b7f565b90508360095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461260e9190613b7f565b60095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160085f8282546126609190613d47565b925050819055508060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126b09190613d47565b60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161274e9190613473565b60405180910390a36001925050509392505050565b61276c816130d6565b5f600267ffffffffffffffff81111561278857612787614492565b5b6040519080825280602002602001820160405280156127b65781602001602082028036833780820191505090505b50905030815f815181106127cd576127cc6144bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612871573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061289591906141d2565b816001815181106128a9576128a86144bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016129459594939291906145dc565b5f604051808303815f87803b15801561295c575f80fd5b505af115801561296e573d5f803e3d5ffd5b505050505050565b60028054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156129d9573d5f803e3d5ffd5b5050565b60646009600a6129ed91906139bc565b64174876e8006129fd9190613a06565b6003612a099190613a06565b612a139190613caf565b60048190555060646009600a612a2991906139bc565b64174876e800612a399190613a06565b6003612a459190613a06565b612a4f9190613caf565b600581905550600160125f6101000a81548160ff021916908315150217905550436003819055505f60179054906101000a900460ff1660ff165f60169054906101000a900460ff1660ff16600354600154612aaa9190613d47565b612ab49190613d47565b612abe9190613d47565b600181905550565b612acf826130d6565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612b5596959493929190614634565b60606040518083038185885af1158015612b71573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612b9691906146a7565b5050505050565b6001601260016101000a81548160ff0219169083151502179055505f60085490506006548110158015612bdb575060125f9054906101000a900460ff165b15612c96576007548110612bef5760075490505b5f8190506009600a612c0191906139bc565b811115612c7d578160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612c549190613d47565b92505081905550612c6481612763565b8160085f828254612c759190613b7f565b925050819055505b5f4790505f811115612c9357612c9281612976565b5b50505b505f601260016101000a81548160ff021916908315150217905550565b5f806001905060125f9054906101000a900460ff168015612d1b5750600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612d6e5750600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612e3057600454831115612d85575f9050612e2f565b60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612e2557506005548360095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e239190613d47565b115b15612e2e575f90505b5b5b809150509392505050565b5f8060125f9054906101000a900460ff161580612e9e5750600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612eef5750600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612efc575f90506130cb565b60115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561304d575f60179054906101000a900460ff1660ff165f60169054906101000a900460ff1660ff16600354612f7c9190613d47565b612f869190613d47565b4310612fbc57606460025f9054906101000a900460ff1660ff1684612fab9190613a06565b612fb59190613caf565b9050613048565b5f60169054906101000a900460ff1660ff16600354612fdb9190613d47565b43106130115760645f60159054906101000a900460ff1660ff16846130009190613a06565b61300a9190613caf565b9050613047565b60035443106130465760645f60149054906101000a900460ff1660ff16846130399190613a06565b6130439190613caf565b90505b5b5b6130ca565b60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156130c9576064600260019054906101000a900460ff1660ff16846130bc9190613a06565b6130c69190613caf565b90505b5b5b809150509392505050565b80600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156132b5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516132ac9190613473565b60405180910390a35b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156132ef5780820151818401526020810190506132d4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613314826132b8565b61331e81856132c2565b935061332e8185602086016132d2565b613337816132fa565b840191505092915050565b5f6020820190508181035f83015261335a818461330a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61338f82613366565b9050919050565b61339f81613385565b81146133a9575f80fd5b50565b5f813590506133ba81613396565b92915050565b5f819050919050565b6133d2816133c0565b81146133dc575f80fd5b50565b5f813590506133ed816133c9565b92915050565b5f806040838503121561340957613408613362565b5b5f613416858286016133ac565b9250506020613427858286016133df565b9150509250929050565b5f8115159050919050565b61344581613431565b82525050565b5f60208201905061345e5f83018461343c565b92915050565b61346d816133c0565b82525050565b5f6020820190506134865f830184613464565b92915050565b61349581613431565b811461349f575f80fd5b50565b5f813590506134b08161348c565b92915050565b5f805f606084860312156134cd576134cc613362565b5b5f6134da868287016133ac565b93505060206134eb868287016134a2565b92505060406134fc868287016134a2565b9150509250925092565b5f805f6060848603121561351d5761351c613362565b5b5f61352a868287016133ac565b935050602061353b868287016133ac565b925050604061354c868287016133df565b9150509250925092565b5f6020828403121561356b5761356a613362565b5b5f613578848285016133ac565b91505092915050565b5f60ff82169050919050565b61359681613581565b82525050565b5f6020820190506135af5f83018461358d565b92915050565b6135be81613581565b81146135c8575f80fd5b50565b5f813590506135d9816135b5565b92915050565b5f80604083850312156135f5576135f4613362565b5b5f613602858286016135cb565b9250506020613613858286016134a2565b9150509250929050565b5f6040820190506136305f83018561343c565b61363d602083018461343c565b9392505050565b5f61ffff82169050919050565b61365a81613644565b8114613664575f80fd5b50565b5f8135905061367581613651565b92915050565b5f806040838503121561369157613690613362565b5b5f61369e85828601613667565b92505060206136af85828601613667565b9150509250929050565b5f80604083850312156136cf576136ce613362565b5b5f6136dc858286016135cb565b92505060206136ed858286016135cb565b9150509250929050565b61370081613385565b82525050565b5f6020820190506137195f8301846136f7565b92915050565b5f63ffffffff82169050919050565b6137378161371f565b8114613741575f80fd5b50565b5f813590506137528161372e565b92915050565b5f805f80608085870312156137705761376f613362565b5b5f61377d87828801613744565b945050602061378e87828801613744565b935050604061379f87828801613744565b92505060606137b087828801613744565b91505092959194509250565b5f80604083850312156137d2576137d1613362565b5b5f6137df858286016133ac565b92505060206137f0858286016133ac565b9150509250929050565b5f61380482613366565b9050919050565b613814816137fa565b811461381e575f80fd5b50565b5f8135905061382f8161380b565b92915050565b5f6020828403121561384a57613849613362565b5b5f61385784828501613821565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156138e2578086048111156138be576138bd613860565b5b60018516156138cd5780820291505b80810290506138db8561388d565b94506138a2565b94509492505050565b5f826138fa57600190506139b5565b81613907575f90506139b5565b816001811461391d576002811461392757613956565b60019150506139b5565b60ff84111561393957613938613860565b5b8360020a9150848211156139505761394f613860565b5b506139b5565b5060208310610133831016604e8410600b841016171561398b5782820a90508381111561398657613985613860565b5b6139b5565b6139988484846001613899565b925090508184048111156139af576139ae613860565b5b81810290505b9392505050565b5f6139c6826133c0565b91506139d183613581565b92506139fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846138eb565b905092915050565b5f613a10826133c0565b9150613a1b836133c0565b9250828202613a29816133c0565b91508282048414831517613a4057613a3f613860565b5b5092915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697300000000000000005f82015250565b5f613a7b6018836132c2565b9150613a8682613a47565b602082019050919050565b5f6020820190508181035f830152613aa881613a6f565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f613ae36010836132c2565b9150613aee82613aaf565b602082019050919050565b5f6020820190508181035f830152613b1081613ad7565b9050919050565b7f54726164696e67206e6f7420796574206f70656e0000000000000000000000005f82015250565b5f613b4b6014836132c2565b9150613b5682613b17565b602082019050919050565b5f6020820190508181035f830152613b7881613b3f565b9050919050565b5f613b89826133c0565b9150613b94836133c0565b9250828203905081811115613bac57613bab613860565b5b92915050565b7f4c502063616e6e6f74206265207461782077616c6c65740000000000000000005f82015250565b5f613be66017836132c2565b9150613bf182613bb2565b602082019050919050565b5f6020820190508181035f830152613c1381613bda565b9050919050565b7f43616e6e6f742073776170206d6f7265207468616e20313030250000000000005f82015250565b5f613c4e601a836132c2565b9150613c5982613c1a565b602082019050919050565b5f6020820190508181035f830152613c7b81613c42565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613cb9826133c0565b9150613cc4836133c0565b925082613cd457613cd3613c82565b5b828204905092915050565b7f4e6f2045544800000000000000000000000000000000000000000000000000005f82015250565b5f613d136006836132c2565b9150613d1e82613cdf565b602082019050919050565b5f6020820190508181035f830152613d4081613d07565b9050919050565b5f613d51826133c0565b9150613d5c836133c0565b9250828201905080821115613d7457613d73613860565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f613dae600a836132c2565b9150613db982613d7a565b602082019050919050565b5f6020820190508181035f830152613ddb81613da2565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f613e16600e836132c2565b9150613e2182613de2565b602082019050919050565b5f6020820190508181035f830152613e4381613e0a565b9050919050565b5f613e5482613581565b9150613e5f83613581565b9250828201905060ff811115613e7857613e77613860565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f613eb26012836132c2565b9150613ebd82613e7e565b602082019050919050565b5f6020820190508181035f830152613edf81613ea6565b9050919050565b7f74726164696e67206f70656e00000000000000000000000000000000000000005f82015250565b5f613f1a600c836132c2565b9150613f2582613ee6565b602082019050919050565b5f6020820190508181035f830152613f4781613f0e565b9050919050565b7f4d696e2d4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f613f82600d836132c2565b9150613f8d82613f4e565b602082019050919050565b5f6020820190508181035f830152613faf81613f76565b9050919050565b7f4d6178206c6f77000000000000000000000000000000000000000000000000005f82015250565b5f613fea6007836132c2565b9150613ff582613fb6565b602082019050919050565b5f6020820190508181035f83015261401781613fde565b9050919050565b7f4d617820686967680000000000000000000000000000000000000000000000005f82015250565b5f6140526008836132c2565b915061405d8261401e565b602082019050919050565b5f6020820190508181035f83015261407f81614046565b9050919050565b7f4c502063726561746564000000000000000000000000000000000000000000005f82015250565b5f6140ba600a836132c2565b91506140c582614086565b602082019050919050565b5f6020820190508181035f8301526140e7816140ae565b9050919050565b7f4e6f2045544820696e2063612f6d7367000000000000000000000000000000005f82015250565b5f6141226010836132c2565b915061412d826140ee565b602082019050919050565b5f6020820190508181035f83015261414f81614116565b9050919050565b7f4e6f20746f6b656e7320696e20636100000000000000000000000000000000005f82015250565b5f61418a600f836132c2565b915061419582614156565b602082019050919050565b5f6020820190508181035f8301526141b78161417e565b9050919050565b5f815190506141cc81613396565b92915050565b5f602082840312156141e7576141e6613362565b5b5f6141f4848285016141be565b91505092915050565b5f6040820190506142105f8301856136f7565b61421d60208301846136f7565b9392505050565b5f81519050919050565b5f81905092915050565b5f61424282614224565b61424c818561422e565b935061425c8185602086016132d2565b80840191505092915050565b5f6142738284614238565b915081905092915050565b7f4661696c656420616464696e67206c70000000000000000000000000000000005f82015250565b5f6142b26010836132c2565b91506142bd8261427e565b602082019050919050565b5f6020820190508181035f8301526142df816142a6565b9050919050565b5f819050919050565b5f6143096143046142ff84613366565b6142e6565b613366565b9050919050565b5f61431a826142ef565b9050919050565b5f61432b82614310565b9050919050565b61433b81614321565b82525050565b5f6020820190506143545f830184614332565b92915050565b7f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000005f82015250565b5f61438e601a836132c2565b91506143998261435a565b602082019050919050565b5f6020820190508181035f8301526143bb81614382565b9050919050565b7f4d455620626c6f636b00000000000000000000000000000000000000000000005f82015250565b5f6143f66009836132c2565b9150614401826143c2565b602082019050919050565b5f6020820190508181035f830152614423816143ea565b9050919050565b7f5458206f766572206c696d6974730000000000000000000000000000000000005f82015250565b5f61445e600e836132c2565b91506144698261442a565b602082019050919050565b5f6020820190508181035f83015261448b81614452565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f61450f61450a614505846144ec565b6142e6565b6133c0565b9050919050565b61451f816144f5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61455781613385565b82525050565b5f614568838361454e565b60208301905092915050565b5f602082019050919050565b5f61458a82614525565b614594818561452f565b935061459f8361453f565b805f5b838110156145cf5781516145b6888261455d565b97506145c183614574565b9250506001810190506145a2565b5085935050505092915050565b5f60a0820190506145ef5f830188613464565b6145fc6020830187614516565b818103604083015261460e8186614580565b905061461d60608301856136f7565b61462a6080830184613464565b9695505050505050565b5f60c0820190506146475f8301896136f7565b6146546020830188613464565b6146616040830187614516565b61466e6060830186614516565b61467b60808301856136f7565b61468860a0830184613464565b979650505050505050565b5f815190506146a1816133c9565b92915050565b5f805f606084860312156146be576146bd613362565b5b5f6146cb86828701614693565b93505060206146dc86828701614693565b92505060406146ed86828701614693565b915050925092509256fe4d6574614d61736b4c656467657254727573745361666550616c5472657a6f72456c6c6950616c5365637558a26469706673582212207ab936619831881dedd20abbb781b1ebfa6f36e33e7de4b326b2ea56871c0df564736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c80634fcd2446116100eb578063a6097b0a11610089578063dd62ed3e11610063578063dd62ed3e146105dc578063e8078d9414610618578063f2fde38b14610622578063f8b45b051461064a576101c1565b8063a6097b0a1461054e578063a9059cbb14610576578063c3f70b52146105b2576101c1565b806375f0a874116100c557806375f0a874146104ba5780638a8c523c146104e45780638da5cb5b146104fa57806395d89b4114610524576101c1565b80634fcd24461461044057806370a0823114610468578063715018a6146104a4576101c1565b80632fb528ba11610158578063368f480011610132578063368f48001461039a57806346b89834146103c257806347062402146103ec5780634d4ce93514610416576101c1565b80632fb528ba1461030b57806330449efd14610333578063313ce56714610370576101c1565b806318839bc31161019457806318839bc31461025557806323b872dd1461027d5780632851a5cf146102b95780632b14ca56146102e1576101c1565b806306fdde03146101c5578063095ea7b3146101ef57806318160ddd1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610674565b6040516101e69190613342565b60405180910390f35b3480156101fa575f80fd5b50610215600480360381019061021091906133f3565b6106b1565b604051610222919061344b565b60405180910390f35b348015610236575f80fd5b5061023f61079e565b60405161024c9190613473565b60405180910390f35b348015610260575f80fd5b5061027b600480360381019061027691906134b6565b6107c2565b005b348015610288575f80fd5b506102a3600480360381019061029e9190613506565b610995565b6040516102b0919061344b565b60405180910390f35b3480156102c4575f80fd5b506102df60048036038101906102da9190613556565b610a80565b005b3480156102ec575f80fd5b506102f5610c84565b604051610302919061359c565b60405180910390f35b348015610316575f80fd5b50610331600480360381019061032c91906135df565b610c9a565b005b34801561033e575f80fd5b5061035960048036038101906103549190613556565b610e79565b60405161036792919061361d565b60405180910390f35b34801561037b575f80fd5b50610384610f18565b604051610391919061359c565b60405180910390f35b3480156103a5575f80fd5b506103c060048036038101906103bb919061367b565b610f20565b005b3480156103cd575f80fd5b506103d66110dd565b6040516103e39190613473565b60405180910390f35b3480156103f7575f80fd5b506104006110e6565b60405161040d919061359c565b60405180910390f35b348015610421575f80fd5b5061042a6110fb565b6040516104379190613473565b60405180910390f35b34801561044b575f80fd5b50610466600480360381019061046191906136b9565b611104565b005b348015610473575f80fd5b5061048e60048036038101906104899190613556565b61121c565b60405161049b9190613473565b60405180910390f35b3480156104af575f80fd5b506104b8611262565b005b3480156104c5575f80fd5b506104ce611367565b6040516104db9190613706565b60405180910390f35b3480156104ef575f80fd5b506104f861138e565b005b348015610505575f80fd5b5061050e611474565b60405161051b9190613706565b60405180910390f35b34801561052f575f80fd5b5061053861149b565b6040516105459190613342565b60405180910390f35b348015610559575f80fd5b50610574600480360381019061056f9190613758565b6114bb565b005b348015610581575f80fd5b5061059c600480360381019061059791906133f3565b6116fd565b6040516105a9919061344b565b60405180910390f35b3480156105bd575f80fd5b506105c6611759565b6040516105d39190613473565b60405180910390f35b3480156105e7575f80fd5b5061060260048036038101906105fd91906137bc565b611762565b60405161060f9190613473565b60405180910390f35b6106206117e4565b005b34801561062d575f80fd5b5061064860048036038101906106439190613835565b611ea3565b005b348015610655575f80fd5b5061065e611fa9565b60405161066b9190613473565b60405180910390f35b60606040518060400160405280600681526020017f57414c4c45540000000000000000000000000000000000000000000000000000815250905090565b5f81600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161078c9190613473565b60405180910390a36001905092915050565b5f6009600a6107ad91906139bc565b64174876e8006107bd9190613a06565b905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084690613a91565b60405180910390fd5b80806108585750815b156108e85760115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156108e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108de90613af9565b60405180910390fd5b5b81600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f61099f84611fb2565b6109de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d590613b61565b60405180910390fd5b81600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a659190613b7f565b92505081905550610a77848484612084565b90509392505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0490613a91565b60405180910390fd5b60115f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8e90613bfc565b60405180910390fd5b806002806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600260019054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e90613a91565b60405180910390fd5b6001601260016101000a81548160ff02191690831515021790555060648260ff161115610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8090613c64565b60405180910390fd5b5f60648360ff1660095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610dd89190613a06565b610de29190613caf565b90506009600a610df291906139bc565b811115610e0357610e0281612763565b5b8115610e5a575f4790505f8111610e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4690613d29565b60405180910390fd5b610e5881612976565b505b505f601260016101000a81548160ff0219169083151502179055505050565b5f80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691509150915091565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490613a91565b60405180910390fd5b5f60016103e88461ffff166009600a610fc691906139bc565b64174876e800610fd69190613a06565b610fe09190613a06565b610fea9190613caf565b610ff49190613d47565b905060045481101561103b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103290613dc4565b60405180910390fd5b806004819055505f60016103e88461ffff166009600a61105b91906139bc565b64174876e80061106b9190613a06565b6110759190613a06565b61107f9190613caf565b6110899190613d47565b90506005548110156110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c790613e2c565b60405180910390fd5b8060058190555050505050565b5f600654905090565b5f60025f9054906101000a900460ff16905090565b5f600754905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118890613a91565b60405180910390fd5b6001818361119f9190613e4a565b60ff1611156111e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111da90613ec8565b60405180910390fd5b8160025f6101000a81548160ff021916908360ff16021790555080600260016101000a81548160ff021916908360ff1602179055505050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e690613a91565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f60405161135d9190613706565b60405180910390a1565b5f60028054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461141b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141290613a91565b60405180910390fd5b60125f9054906101000a900460ff161561146a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146190613f30565b60405180910390fd5b6114726129dd565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060600160405280602c81526020016146f8602c9139905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153f90613a91565b60405180910390fd5b8263ffffffff168463ffffffff166009600a61156491906139bc565b64174876e8006115749190613a06565b61157e9190613a06565b6115889190613caf565b6006819055508063ffffffff168263ffffffff166009600a6115aa91906139bc565b64174876e8006115ba9190613a06565b6115c49190613a06565b6115ce9190613caf565b600781905550600654600754101561161b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161290613f98565b60405180910390fd5b620186a06009600a61162d91906139bc565b64174876e80061163d9190613a06565b6116479190613caf565b6007541161168a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168190614000565b60405180910390fd5b60646009600a61169a91906139bc565b64174876e8006116aa9190613a06565b6116b49190613caf565b600754106116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee90614068565b60405180910390fd5b50505050565b5f61170733611fb2565b611746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173d90613b61565b60405180910390fd5b611751338484612084565b905092915050565b5f600454905090565b5f600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186890613a91565b60405180910390fd5b6001601260016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461191b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611912906140d0565b60405180910390fd5b60125f9054906101000a900460ff161561196a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196190613f30565b60405180910390fd5b5f34118061197757505f47115b6119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad90614138565b60405180910390fd5b5f60095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411611a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2c906141a0565b60405180910390fd5b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac391906141d2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b49573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6d91906141d2565b6040518363ffffffff1660e01b8152600401611b8a9291906141fd565b6020604051808303815f875af1158015611ba6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bca91906141d2565b60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c5060095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205447612ac6565b60085460095f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611cbf9190613b7f565b925050819055505f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611d8f9190614268565b5f604051808303815f865af19150503d805f8114611dc8576040519150601f19603f3d011682016040523d82523d5f602084013e611dcd565b606091505b5050905080611e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e08906142c8565b60405180910390fd5b8060115f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505f601260016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2790613a91565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611f9e9190614341565b60405180910390a150565b5f600554905090565b5f805f905060125f9054906101000a900460ff1615611fd4576001905061207b565b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156120705750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561207a57600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036120f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ea906143a4565b60405180910390fd5b60125f9054906101000a900460ff166121e257600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156121a25750600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6121e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d890613b61565b60405180910390fd5b5b601260019054906101000a900460ff16158015612245575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561225357612252612b9d565b5b60035443101580156122ab575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561249957600154431015612329573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231f9061440c565b60405180910390fd5b5b6138406001546123399190613d47565b4310801561237357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612498576001600b5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282829054906101000a900460ff166123e09190613e4a565b92506101000a81548160ff021916908360ff1602179055506002600b5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff161115612497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248e9061440c565b60405180910390fd5b5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561250157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561255857505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156125a857612568848484612cb3565b6125a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259e90614474565b60405180910390fd5b5b5f6125b4858585612e3b565b90505f81846125c39190613b7f565b90508360095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461260e9190613b7f565b60095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160085f8282546126609190613d47565b925050819055508060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126b09190613d47565b60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161274e9190613473565b60405180910390a36001925050509392505050565b61276c816130d6565b5f600267ffffffffffffffff81111561278857612787614492565b5b6040519080825280602002602001820160405280156127b65781602001602082028036833780820191505090505b50905030815f815181106127cd576127cc6144bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612871573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061289591906141d2565b816001815181106128a9576128a86144bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016129459594939291906145dc565b5f604051808303815f87803b15801561295c575f80fd5b505af115801561296e573d5f803e3d5ffd5b505050505050565b60028054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156129d9573d5f803e3d5ffd5b5050565b60646009600a6129ed91906139bc565b64174876e8006129fd9190613a06565b6003612a099190613a06565b612a139190613caf565b60048190555060646009600a612a2991906139bc565b64174876e800612a399190613a06565b6003612a459190613a06565b612a4f9190613caf565b600581905550600160125f6101000a81548160ff021916908315150217905550436003819055505f60179054906101000a900460ff1660ff165f60169054906101000a900460ff1660ff16600354600154612aaa9190613d47565b612ab49190613d47565b612abe9190613d47565b600181905550565b612acf826130d6565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612b5596959493929190614634565b60606040518083038185885af1158015612b71573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612b9691906146a7565b5050505050565b6001601260016101000a81548160ff0219169083151502179055505f60085490506006548110158015612bdb575060125f9054906101000a900460ff165b15612c96576007548110612bef5760075490505b5f8190506009600a612c0191906139bc565b811115612c7d578160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612c549190613d47565b92505081905550612c6481612763565b8160085f828254612c759190613b7f565b925050819055505b5f4790505f811115612c9357612c9281612976565b5b50505b505f601260016101000a81548160ff021916908315150217905550565b5f806001905060125f9054906101000a900460ff168015612d1b5750600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612d6e5750600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612e3057600454831115612d85575f9050612e2f565b60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612e2557506005548360095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e239190613d47565b115b15612e2e575f90505b5b5b809150509392505050565b5f8060125f9054906101000a900460ff161580612e9e5750600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612eef5750600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612efc575f90506130cb565b60115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561304d575f60179054906101000a900460ff1660ff165f60169054906101000a900460ff1660ff16600354612f7c9190613d47565b612f869190613d47565b4310612fbc57606460025f9054906101000a900460ff1660ff1684612fab9190613a06565b612fb59190613caf565b9050613048565b5f60169054906101000a900460ff1660ff16600354612fdb9190613d47565b43106130115760645f60159054906101000a900460ff1660ff16846130009190613a06565b61300a9190613caf565b9050613047565b60035443106130465760645f60149054906101000a900460ff1660ff16846130399190613a06565b6130439190613caf565b90505b5b5b6130ca565b60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156130c9576064600260019054906101000a900460ff1660ff16846130bc9190613a06565b6130c69190613caf565b90505b5b5b809150509392505050565b80600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156132b5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516132ac9190613473565b60405180910390a35b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156132ef5780820151818401526020810190506132d4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613314826132b8565b61331e81856132c2565b935061332e8185602086016132d2565b613337816132fa565b840191505092915050565b5f6020820190508181035f83015261335a818461330a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61338f82613366565b9050919050565b61339f81613385565b81146133a9575f80fd5b50565b5f813590506133ba81613396565b92915050565b5f819050919050565b6133d2816133c0565b81146133dc575f80fd5b50565b5f813590506133ed816133c9565b92915050565b5f806040838503121561340957613408613362565b5b5f613416858286016133ac565b9250506020613427858286016133df565b9150509250929050565b5f8115159050919050565b61344581613431565b82525050565b5f60208201905061345e5f83018461343c565b92915050565b61346d816133c0565b82525050565b5f6020820190506134865f830184613464565b92915050565b61349581613431565b811461349f575f80fd5b50565b5f813590506134b08161348c565b92915050565b5f805f606084860312156134cd576134cc613362565b5b5f6134da868287016133ac565b93505060206134eb868287016134a2565b92505060406134fc868287016134a2565b9150509250925092565b5f805f6060848603121561351d5761351c613362565b5b5f61352a868287016133ac565b935050602061353b868287016133ac565b925050604061354c868287016133df565b9150509250925092565b5f6020828403121561356b5761356a613362565b5b5f613578848285016133ac565b91505092915050565b5f60ff82169050919050565b61359681613581565b82525050565b5f6020820190506135af5f83018461358d565b92915050565b6135be81613581565b81146135c8575f80fd5b50565b5f813590506135d9816135b5565b92915050565b5f80604083850312156135f5576135f4613362565b5b5f613602858286016135cb565b9250506020613613858286016134a2565b9150509250929050565b5f6040820190506136305f83018561343c565b61363d602083018461343c565b9392505050565b5f61ffff82169050919050565b61365a81613644565b8114613664575f80fd5b50565b5f8135905061367581613651565b92915050565b5f806040838503121561369157613690613362565b5b5f61369e85828601613667565b92505060206136af85828601613667565b9150509250929050565b5f80604083850312156136cf576136ce613362565b5b5f6136dc858286016135cb565b92505060206136ed858286016135cb565b9150509250929050565b61370081613385565b82525050565b5f6020820190506137195f8301846136f7565b92915050565b5f63ffffffff82169050919050565b6137378161371f565b8114613741575f80fd5b50565b5f813590506137528161372e565b92915050565b5f805f80608085870312156137705761376f613362565b5b5f61377d87828801613744565b945050602061378e87828801613744565b935050604061379f87828801613744565b92505060606137b087828801613744565b91505092959194509250565b5f80604083850312156137d2576137d1613362565b5b5f6137df858286016133ac565b92505060206137f0858286016133ac565b9150509250929050565b5f61380482613366565b9050919050565b613814816137fa565b811461381e575f80fd5b50565b5f8135905061382f8161380b565b92915050565b5f6020828403121561384a57613849613362565b5b5f61385784828501613821565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156138e2578086048111156138be576138bd613860565b5b60018516156138cd5780820291505b80810290506138db8561388d565b94506138a2565b94509492505050565b5f826138fa57600190506139b5565b81613907575f90506139b5565b816001811461391d576002811461392757613956565b60019150506139b5565b60ff84111561393957613938613860565b5b8360020a9150848211156139505761394f613860565b5b506139b5565b5060208310610133831016604e8410600b841016171561398b5782820a90508381111561398657613985613860565b5b6139b5565b6139988484846001613899565b925090508184048111156139af576139ae613860565b5b81810290505b9392505050565b5f6139c6826133c0565b91506139d183613581565b92506139fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846138eb565b905092915050565b5f613a10826133c0565b9150613a1b836133c0565b9250828202613a29816133c0565b91508282048414831517613a4057613a3f613860565b5b5092915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697300000000000000005f82015250565b5f613a7b6018836132c2565b9150613a8682613a47565b602082019050919050565b5f6020820190508181035f830152613aa881613a6f565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f613ae36010836132c2565b9150613aee82613aaf565b602082019050919050565b5f6020820190508181035f830152613b1081613ad7565b9050919050565b7f54726164696e67206e6f7420796574206f70656e0000000000000000000000005f82015250565b5f613b4b6014836132c2565b9150613b5682613b17565b602082019050919050565b5f6020820190508181035f830152613b7881613b3f565b9050919050565b5f613b89826133c0565b9150613b94836133c0565b9250828203905081811115613bac57613bab613860565b5b92915050565b7f4c502063616e6e6f74206265207461782077616c6c65740000000000000000005f82015250565b5f613be66017836132c2565b9150613bf182613bb2565b602082019050919050565b5f6020820190508181035f830152613c1381613bda565b9050919050565b7f43616e6e6f742073776170206d6f7265207468616e20313030250000000000005f82015250565b5f613c4e601a836132c2565b9150613c5982613c1a565b602082019050919050565b5f6020820190508181035f830152613c7b81613c42565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613cb9826133c0565b9150613cc4836133c0565b925082613cd457613cd3613c82565b5b828204905092915050565b7f4e6f2045544800000000000000000000000000000000000000000000000000005f82015250565b5f613d136006836132c2565b9150613d1e82613cdf565b602082019050919050565b5f6020820190508181035f830152613d4081613d07565b9050919050565b5f613d51826133c0565b9150613d5c836133c0565b9250828201905080821115613d7457613d73613860565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f613dae600a836132c2565b9150613db982613d7a565b602082019050919050565b5f6020820190508181035f830152613ddb81613da2565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f613e16600e836132c2565b9150613e2182613de2565b602082019050919050565b5f6020820190508181035f830152613e4381613e0a565b9050919050565b5f613e5482613581565b9150613e5f83613581565b9250828201905060ff811115613e7857613e77613860565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f613eb26012836132c2565b9150613ebd82613e7e565b602082019050919050565b5f6020820190508181035f830152613edf81613ea6565b9050919050565b7f74726164696e67206f70656e00000000000000000000000000000000000000005f82015250565b5f613f1a600c836132c2565b9150613f2582613ee6565b602082019050919050565b5f6020820190508181035f830152613f4781613f0e565b9050919050565b7f4d696e2d4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f613f82600d836132c2565b9150613f8d82613f4e565b602082019050919050565b5f6020820190508181035f830152613faf81613f76565b9050919050565b7f4d6178206c6f77000000000000000000000000000000000000000000000000005f82015250565b5f613fea6007836132c2565b9150613ff582613fb6565b602082019050919050565b5f6020820190508181035f83015261401781613fde565b9050919050565b7f4d617820686967680000000000000000000000000000000000000000000000005f82015250565b5f6140526008836132c2565b915061405d8261401e565b602082019050919050565b5f6020820190508181035f83015261407f81614046565b9050919050565b7f4c502063726561746564000000000000000000000000000000000000000000005f82015250565b5f6140ba600a836132c2565b91506140c582614086565b602082019050919050565b5f6020820190508181035f8301526140e7816140ae565b9050919050565b7f4e6f2045544820696e2063612f6d7367000000000000000000000000000000005f82015250565b5f6141226010836132c2565b915061412d826140ee565b602082019050919050565b5f6020820190508181035f83015261414f81614116565b9050919050565b7f4e6f20746f6b656e7320696e20636100000000000000000000000000000000005f82015250565b5f61418a600f836132c2565b915061419582614156565b602082019050919050565b5f6020820190508181035f8301526141b78161417e565b9050919050565b5f815190506141cc81613396565b92915050565b5f602082840312156141e7576141e6613362565b5b5f6141f4848285016141be565b91505092915050565b5f6040820190506142105f8301856136f7565b61421d60208301846136f7565b9392505050565b5f81519050919050565b5f81905092915050565b5f61424282614224565b61424c818561422e565b935061425c8185602086016132d2565b80840191505092915050565b5f6142738284614238565b915081905092915050565b7f4661696c656420616464696e67206c70000000000000000000000000000000005f82015250565b5f6142b26010836132c2565b91506142bd8261427e565b602082019050919050565b5f6020820190508181035f8301526142df816142a6565b9050919050565b5f819050919050565b5f6143096143046142ff84613366565b6142e6565b613366565b9050919050565b5f61431a826142ef565b9050919050565b5f61432b82614310565b9050919050565b61433b81614321565b82525050565b5f6020820190506143545f830184614332565b92915050565b7f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000005f82015250565b5f61438e601a836132c2565b91506143998261435a565b602082019050919050565b5f6020820190508181035f8301526143bb81614382565b9050919050565b7f4d455620626c6f636b00000000000000000000000000000000000000000000005f82015250565b5f6143f66009836132c2565b9150614401826143c2565b602082019050919050565b5f6020820190508181035f830152614423816143ea565b9050919050565b7f5458206f766572206c696d6974730000000000000000000000000000000000005f82015250565b5f61445e600e836132c2565b91506144698261442a565b602082019050919050565b5f6020820190508181035f83015261448b81614452565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f61450f61450a614505846144ec565b6142e6565b6133c0565b9050919050565b61451f816144f5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61455781613385565b82525050565b5f614568838361454e565b60208301905092915050565b5f602082019050919050565b5f61458a82614525565b614594818561452f565b935061459f8361453f565b805f5b838110156145cf5781516145b6888261455d565b97506145c183614574565b9250506001810190506145a2565b5085935050505092915050565b5f60a0820190506145ef5f830188613464565b6145fc6020830187614516565b818103604083015261460e8186614580565b905061461d60608301856136f7565b61462a6080830184613464565b9695505050505050565b5f60c0820190506146475f8301896136f7565b6146546020830188613464565b6146616040830187614516565b61466e6060830186614516565b61467b60808301856136f7565b61468860a0830184613464565b979650505050505050565b5f815190506146a1816133c9565b92915050565b5f805f606084860312156146be576146bd613362565b5b5f6146cb86828701614693565b93505060206146dc86828701614693565b92505060406146ed86828701614693565b915050925092509256fe4d6574614d61736b4c656467657254727573745361666550616c5472657a6f72456c6c6950616c5365637558a26469706673582212207ab936619831881dedd20abbb781b1ebfa6f36e33e7de4b326b2ea56871c0df564736f6c63430008150033

Deployed Bytecode Sourcemap

1730:12616:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4364:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4734:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4094:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10430:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5195:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11119:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10752:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13793:548;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10279:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4188:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11726:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11566:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10678:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11645:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10830:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4450:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;728:136;;;;;;;;;;;;;:::i;:::-;;11024:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6864:126;;;;;;;;;;;;;:::i;:::-;;491:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4274:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12170:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4958:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11479:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4577:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5837:756;;;:::i;:::-;;562:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11395:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4364:80;4412:13;4436:5;;;;;;;;;;;;;;;;;4429:12;;4364:80;:::o;4734:216::-;4809:4;4861:6;4826:11;:23;4838:10;4826:23;;;;;;;;;;;;;;;:32;4850:7;4826:32;;;;;;;;;;;;;;;:41;;;;4904:7;4883:37;;4892:10;4883:37;;;4913:6;4883:37;;;;;;:::i;:::-;;;;;;;;4938:4;4931:11;;4734:216;;;;:::o;4094:88::-;4149:7;1942:1;2009:2;:13;;;;:::i;:::-;1990:15;:33;;;;:::i;:::-;4160:19;;4094:88;:::o;10430:240::-;356:6;;;;;;;;;;342:20;;:10;:20;;;334:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10528:8:::1;:18;;;;10540:6;10528:18;10524:69;;;10559:5;:10;10565:3;10559:10;;;;;;;;;;;;;;;;;;;;;;;;;10558:11;10550:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;10524:69;10619:6;10603;:13;10611:3;10603:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;10654:8;10636;:15;10646:3;10636:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;10430:240:::0;;;:::o;5195:309::-;5299:4;5324:29;5342:10;5324:17;:29::i;:::-;5316:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;5428:6;5389:11;:23;5401:10;5389:23;;;;;;;;;;;;;;;:35;5413:10;5389:35;;;;;;;;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;5452:44;5466:10;5478:9;5489:6;5452:13;:44::i;:::-;5445:51;;5195:309;;;;;:::o;11119:268::-;356:6;;;;;;;;;;342:20;;:10;:20;;;334:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11203:5:::1;:19;11209:12;11203:19;;;;;;;;;;;;;;;;;;;;;;;;;11202:20;11194:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11288:12;11261:16;::::0;:40:::1;;;;;;;;;;;;;;;;;;11335:4;11312:6;:20;11319:12;11312:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;11375:4;11350:8;:22;11359:12;11350:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;11119:268:::0;:::o;10752:70::-;10793:5;10809:10;;;;;;;;;;;10802:17;;10752:70;:::o;13793:548::-;356:6;;;;;;;;;;342:20;;:10;:20;;;334:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3449:4:::1;3435:11;;:18;;;;;;;;;;;;;;;;;;13934:3:::2;13914:16;:23;;;;13906:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;13979:21;14050:3;14031:16;14003:44;;:9;:25;14022:4;14003:25;;;;;;;;;;;;;;;;:44;;;;:::i;:::-;:50;;;;:::i;:::-;13979:74;;1942:1;14084:2;:14;;;;:::i;:::-;14068:13;:30;14064:76;;;14102:35;14123:13;14102:20;:35::i;:::-;14064:76;14154:10;14150:184;;;14182:19;14204:21;14182:43;;14261:1;14248:11;:14;14240:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;14289:32;14308:11;14289:17;:32::i;:::-;14166:168;14150:184;13895:446;3492:5:::1;3478:11;;:19;;;;;;;;;;;;;;;;;;13793:548:::0;;:::o;10279:143::-;10338:9;10349:11;10381:6;:14;10388:6;10381:14;;;;;;;;;;;;;;;;;;;;;;;;;10397:8;:16;10406:6;10397:16;;;;;;;;;;;;;;;;;;;;;;;;;10373:41;;;;10279:143;;;:::o;4188:80::-;4240:5;1942:1;4249:16;;4188:80;:::o;11726:436::-;356:6;;;;;;;;;;342:20;;:10;:20;;;334:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11825:16:::1;11885:1;11878:4;11859:16;11844:31;;1942:1;2009:2;:13;;;;:::i;:::-;1990:15;:33;;;;:::i;:::-;11844:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;;;;:::i;:::-;11825:61;;11917:9;;11905:8;:21;;11897:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;11964:8;11952:9;:20;;;;11983;12047:1;12040:4;12021:16;12006:31;;1942:1;2009:2;:13;;;;:::i;:::-;1990:15;:33;;;;:::i;:::-;12006:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;;;;:::i;:::-;11983:65;;12083:13;;12067:12;:29;;12059:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;12142:12;12126:13;:28;;;;11814:348;;11726:436:::0;;:::o;11566:73::-;11610:7;11628:8;;11621:15;;11566:73;:::o;10678:68::-;10718:5;10734:9;;;;;;;;;;;10727:16;;10678:68;:::o;11645:73::-;11689:7;11707:8;;11700:15;;11645:73;:::o;10830:184::-;356:6;;;;;;;;;;342:20;;:10;:20;;;334:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10926:1:::1;10917:5;10910:4;:12;;;;:::i;:::-;:17;;;;10902:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10973:4;10961:9;;:16;;;;;;;;;;;;;;;;;;11001:5;10988:10;;:18;;;;;;;;;;;;;;;;;;10830:184:::0;;:::o;4450:121::-;4516:7;4544:9;:18;4554:7;4544:18;;;;;;;;;;;;;;;;4537:25;;4450:121;;;:::o;728:136::-;356:6;;;;;;;;;;342:20;;:10;:20;;;334:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;805:1:::1;788:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;823:32;852:1;823:32;;;;;;:::i;:::-;;;;;;;;728:136::o:0;11024:87::-;11074:7;11092:16;;;;;;;;;;11085:23;;11024:87;:::o;6864:126::-;356:6;;;;;;;;;;342:20;;:10;:20;;;334:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;6928:12:::1;;;;;;;;;;;6927:13;6919:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6968:14;:12;:14::i;:::-;6864:126::o:0;491:65::-;529:7;547:6;;;;;;;;;;;540:13;;491:65;:::o;4274:84::-;4324:13;4348:7;;;;;;;;;;;;;;;;;4341:14;;4274:84;:::o;12170:386::-;356:6;;;;;;;;;;342:20;;:10;:20;;;334:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12315:6:::1;12291:30;;12306:6;12291:21;;1942:1;2009:2;:13;;;;:::i;:::-;1990:15;:33;;;;:::i;:::-;12291:21;;;;:::i;:::-;:30;;;;:::i;:::-;12280:8;:41;;;;12367:6;12343:30;;12358:6;12343:21;;1942:1;2009:2;:13;;;;:::i;:::-;1990:15;:33;;;;:::i;:::-;12343:21;;;;:::i;:::-;:30;;;;:::i;:::-;12332:8;:41;;;;12402:8;;12392;;:18;;12384:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;12471:6;1942:1;2009:2;:13;;;;:::i;:::-;1990:15;:33;;;;:::i;:::-;12456:21;;;;:::i;:::-;12447:8;;:30;12439:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;12532:3;1942:1;2009:2;:13;;;;:::i;:::-;1990:15;:33;;;;:::i;:::-;12517:18;;;;:::i;:::-;12508:8;;:27;12500:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12170:386:::0;;;;:::o;4958:229::-;5038:4;5063:29;5081:10;5063:17;:29::i;:::-;5055:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;5135:44;5149:10;5161:9;5172:6;5135:13;:44::i;:::-;5128:51;;4958:229;;;;:::o;11479:79::-;11528:7;11546:9;;11539:16;;11479:79;:::o;4577:149::-;4661:7;4689:11;:19;4701:6;4689:19;;;;;;;;;;;;;;;:28;4709:7;4689:28;;;;;;;;;;;;;;;;4682:35;;4577:149;;;;:::o;5837:756::-;356:6;;;;;;;;;;342:20;;:10;:20;;;334:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3449:4:::1;3435:11;;:18;;;;;;;;;;;;;;;;;;5941:1:::2;5919:24;;:10;;;;;;;;;;;:24;;;5911:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;5978:12;;;;;;;;;;;5977:13;5969:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6038:1;6026:9;:13;:40;;;;6065:1;6043:21;:23;6026:40;6018:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;6131:1;6106:9;:24;6124:4;6106:24;;;;;;;;;;;;;;;;:26;6098:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;6194:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6176:58;;;6243:4;6250:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6176:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6163:10;;:113;;;;;;;;;;;;;;;;;;6287:62;6301:9;:24;6319:4;6301:24;;;;;;;;;;;;;;;;6327:21;6287:13;:62::i;:::-;6385:11;;6360:9;:21;6370:10;;;;;;;;;;;6360:21;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;6408:20;6433:10;;;;;;;;;;;:15;;6449:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6433:51;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6407:77;;;6503:15;6495:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;6570:15;6550:5;:17;6556:10;;;;;;;;;;;6550:17;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;5900:693;3492:5:::1;3478:11;;:19;;;;;;;;;;;;;;;;;;5837:756::o:0;562:160::-;356:6;;;;;;;;;;342:20;;:10;:20;;;334:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;656:9:::1;647:6;::::0;:18:::1;;;;;;;;;;;;;;;;;;682:31;703:9;682:31;;;;;;:::i;:::-;;;;;;;;562:160:::0;:::o;11395:78::-;11439:7;11457:13;;11450:20;;11395:78;:::o;9129:289::-;9198:4;9214:16;9233:5;9214:24;;9254:12;;;;;;;;;;;9249:130;;;9285:4;9271:18;;9249:130;;;9312:6;:18;9319:10;9312:18;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;;9334:8;:20;9343:10;9334:20;;;;;;;;;;;;;;;;;;;;;;;;;9312:42;9308:71;;;9372:4;9358:18;;9308:71;9249:130;9399:11;9392:18;;;9129:289;;;:::o;7297:1321::-;7389:4;7432:1;7414:20;;:6;:20;;;7406:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;7481:12;;;;;;;;;;;7476:91;;7505:6;:14;7512:6;7505:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;7523:8;:16;7532:6;7523:16;;;;;;;;;;;;;;;;;;;;;;;;;7505:34;7497:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7476:91;7583:11;;;;;;;;;;;7582:12;:32;;;;;7598:5;:16;7604:9;7598:16;;;;;;;;;;;;;;;;;;;;;;;;;7582:32;7577:65;;;7619:20;:18;:20::i;:::-;7577:65;7675:9;;7659:12;:25;;:42;;;;;7688:5;:13;7694:6;7688:13;;;;;;;;;;;;;;;;;;;;;;;;;7659:42;7654:401;;;7738:12;;7723;:27;7719:83;;;7776:9;7763:22;;:9;:22;;;7755:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;7719:83;7850:5;7835:12;;:20;;;;:::i;:::-;7820:12;:35;:65;;;;;7880:4;7859:26;;:9;:26;;;;7820:65;7816:228;;;7946:1;7907:10;:24;7918:12;7907:24;;;;;;;;;;;:35;7932:9;7907:35;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8013:1;7974:10;:24;7985:12;7974:24;;;;;;;;;;;:35;7999:9;7974:35;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;7966:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;7816:228;7654:401;8090:4;8072:23;;:6;:23;;;;:53;;;;;8120:4;8099:26;;:9;:26;;;;8072:53;:73;;;;;8139:6;;;;;;;;;;8129:16;;:6;:16;;;;8072:73;8067:176;;;8172:39;8185:6;8193:9;8204:6;8172:12;:39::i;:::-;8164:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8067:176;8255:18;8276:40;8290:6;8298:9;8309:6;8276:13;:40::i;:::-;8255:61;;8327:23;8362:10;8353:6;:19;;;;:::i;:::-;8327:45;;8423:6;8403:9;:17;8413:6;8403:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;8383:9;:17;8393:6;8383:17;;;;;;;;;;;;;;;:46;;;;8455:10;8440:11;;:25;;;;;;;:::i;:::-;;;;;;;;8522:15;8499:9;:20;8509:9;8499:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;8476:9;:20;8486:9;8476:20;;;;;;;;;;;;;;;:61;;;;8570:9;8553:35;;8562:6;8553:35;;;8581:6;8553:35;;;;;;:::i;:::-;;;;;;;;8606:4;8599:11;;;;7297:1321;;;;;:::o;13305:369::-;13375:27;13390:11;13375:14;:27::i;:::-;13413:21;13451:1;13437:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13413:40;;13483:4;13464;13469:1;13464:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;13510:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13500:4;13505:1;13500:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;13547:18;;;;;;;;;;;:69;;;13617:11;13629:1;13631:4;13644;13650:15;13547:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13364:310;13305:369;:::o;13682:103::-;13744:16;;;;;;;;;;:25;;:33;13770:6;13744:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13682:103;:::o;6998:291::-;7077:3;1942:1;2009:2;:13;;;;:::i;:::-;1990:15;:33;;;;:::i;:::-;7058:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;7042:9;:38;;;;7127:3;1942:1;2009:2;:13;;;;:::i;:::-;1990:15;:33;;;;:::i;:::-;7108:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;7092:13;:38;;;;7156:4;7141:12;;:19;;;;;;;;;;;;;;;;;;7183:12;7171:9;:24;;;;7266:15;;;;;;;;;;;7221:60;;7248:15;;;;;;;;;;;7221:42;;7236:9;;7221:12;;:24;;;;:::i;:::-;:42;;;;:::i;:::-;:60;;;;:::i;:::-;7206:12;:75;;;;6998:291::o;6601:255::-;6689:28;6704:12;6689:14;:28::i;:::-;6728:18;;;;;;;;;;;:34;;;6770:13;6795:4;6802:12;6816:1;6819;6822:7;;;;;;;;;;;6831:15;6728:120;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6601:255;;:::o;12566:731::-;3449:4;3435:11;;:18;;;;;;;;;;;;;;;;;;12627:26:::1;12656:11;;12627:40;;12705:8;;12683:18;:30;;:46;;;;;12717:12;;;;;;;;;;;12683:46;12678:612;;;12774:8;;12752:18;:30;12747:72;;12808:8;;12787:29;;12747:72;12847:21;12871:18;12847:42;;1942:1;12925:2;:13;;;;:::i;:::-;12909;:29;12905:223;;;12988:18;12960:9;:24;12978:4;12960:24;;;;;;;;;;;;;;;;:46;;;;;;;:::i;:::-;;;;;;;;13025:35;13046:13;13025:20;:35::i;:::-;13094:18;13079:11;;:33;;;;;;;:::i;:::-;;;;;;;;12905:223;13142:27;13172:21;13142:51;;13233:1;13211:19;:23;13208:71;;;13238:38;13256:19;13238:17;:38::i;:::-;13208:71;12732:558;;12678:612;12616:681;3492:5:::0;3478:11;;:19;;;;;;;;;;;;;;;;;;12566:731::o;8626:495::-;8734:4;8751:21;8775:4;8751:28;;8795:12;;;;;;;;;;;:37;;;;;8812:8;:20;8821:10;8812:20;;;;;;;;;;;;;;;;;;;;;;;;;8811:21;8795:37;:61;;;;;8837:8;:19;8846:9;8837:19;;;;;;;;;;;;;;;;;;;;;;;;;8836:20;8795:61;8790:290;;;8896:9;;8879:14;:26;8874:195;;;8929:5;8910:24;;8874:195;;;8962:5;:16;8968:9;8962:16;;;;;;;;;;;;;;;;;;;;;;;;;8961:17;:76;;;;;9023:13;;9006:14;8983:9;:20;8993:9;8983:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:53;8961:76;8956:113;;;9061:5;9042:24;;8956:113;8874:195;8790:290;9097:16;9090:23;;;8626:495;;;;;:::o;9426:845::-;9527:7;9547:17;9591:12;;;;;;;;;;;9590:13;:35;;;;9607:6;:18;9614:10;9607:18;;;;;;;;;;;;;;;;;;;;;;;;;9590:35;:56;;;;9629:6;:17;9636:9;9629:17;;;;;;;;;;;;;;;;;;;;;;;;;9590:56;9585:650;;;9677:1;9665:13;;9585:650;;;9702:5;:17;9708:10;9702:17;;;;;;;;;;;;;;;;;;;;;;;;;9697:538;;;9789:15;;;;;;;;;;;9759:45;;9771:15;;;;;;;;;;;9759:27;;:9;;:27;;;;:::i;:::-;:45;;;;:::i;:::-;9743:12;:61;9738:390;;9859:3;9847:9;;;;;;;;;;;9838:18;;:6;:18;;;;:::i;:::-;:24;;;;:::i;:::-;9826:36;;9738:390;;;9918:15;;;;;;;;;;;9906:27;;:9;;:27;;;;:::i;:::-;9890:12;:43;9885:243;;9994:3;9976:15;;;;;;;;;;;9967:24;;:6;:24;;;;:::i;:::-;:30;;;;:::i;:::-;9955:42;;9885:243;;;10040:9;;10024:12;:25;10019:109;;10109:3;10091:15;;;;;;;;;;;10082:24;;:6;:24;;;;:::i;:::-;:30;;;;:::i;:::-;10070:42;;10019:109;9885:243;9738:390;9697:538;;;10150:5;:16;10156:9;10150:16;;;;;;;;;;;;;;;;;;;;;;;;;10145:90;;;10219:3;10206:10;;;;;;;;;;;10197:19;;:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;10185:37;;10145:90;9697:538;9585:650;10254:9;10247:16;;;9426:845;;;;;:::o;5512:317::-;5632:12;5583:11;:26;5603:4;5583:26;;;;;;;;;;;;;;;:46;3105:42;5583:46;;;;;;;;;;;;;;;;:61;5578:244;;;5711:17;5662:11;:26;5682:4;5662:26;;;;;;;;;;;;;;;:46;3105:42;5662:46;;;;;;;;;;;;;;;:66;;;;3105:42;5748:62;;5765:4;5748:62;;;5792:17;5748:62;;;;;;:::i;:::-;;;;;;;;5578:244;5512:317;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:607::-;4130:6;4138;4146;4195:2;4183:9;4174:7;4170:23;4166:32;4163:119;;;4201:79;;:::i;:::-;4163:119;4321:1;4346:53;4391:7;4382:6;4371:9;4367:22;4346:53;:::i;:::-;4336:63;;4292:117;4448:2;4474:50;4516:7;4507:6;4496:9;4492:22;4474:50;:::i;:::-;4464:60;;4419:115;4573:2;4599:50;4641:7;4632:6;4621:9;4617:22;4599:50;:::i;:::-;4589:60;;4544:115;4059:607;;;;;:::o;4672:619::-;4749:6;4757;4765;4814:2;4802:9;4793:7;4789:23;4785:32;4782:119;;;4820:79;;:::i;:::-;4782:119;4940:1;4965:53;5010:7;5001:6;4990:9;4986:22;4965:53;:::i;:::-;4955:63;;4911:117;5067:2;5093:53;5138:7;5129:6;5118:9;5114:22;5093:53;:::i;:::-;5083:63;;5038:118;5195:2;5221:53;5266:7;5257:6;5246:9;5242:22;5221:53;:::i;:::-;5211:63;;5166:118;4672:619;;;;;:::o;5297:329::-;5356:6;5405:2;5393:9;5384:7;5380:23;5376:32;5373:119;;;5411:79;;:::i;:::-;5373:119;5531:1;5556:53;5601:7;5592:6;5581:9;5577:22;5556:53;:::i;:::-;5546:63;;5502:117;5297:329;;;;:::o;5632:86::-;5667:7;5707:4;5700:5;5696:16;5685:27;;5632:86;;;:::o;5724:112::-;5807:22;5823:5;5807:22;:::i;:::-;5802:3;5795:35;5724:112;;:::o;5842:214::-;5931:4;5969:2;5958:9;5954:18;5946:26;;5982:67;6046:1;6035:9;6031:17;6022:6;5982:67;:::i;:::-;5842:214;;;;:::o;6062:118::-;6133:22;6149:5;6133:22;:::i;:::-;6126:5;6123:33;6113:61;;6170:1;6167;6160:12;6113:61;6062:118;:::o;6186:135::-;6230:5;6268:6;6255:20;6246:29;;6284:31;6309:5;6284:31;:::i;:::-;6186:135;;;;:::o;6327:464::-;6390:6;6398;6447:2;6435:9;6426:7;6422:23;6418:32;6415:119;;;6453:79;;:::i;:::-;6415:119;6573:1;6598:51;6641:7;6632:6;6621:9;6617:22;6598:51;:::i;:::-;6588:61;;6544:115;6698:2;6724:50;6766:7;6757:6;6746:9;6742:22;6724:50;:::i;:::-;6714:60;;6669:115;6327:464;;;;;:::o;6797:308::-;6906:4;6944:2;6933:9;6929:18;6921:26;;6957:65;7019:1;7008:9;7004:17;6995:6;6957:65;:::i;:::-;7032:66;7094:2;7083:9;7079:18;7070:6;7032:66;:::i;:::-;6797:308;;;;;:::o;7111:89::-;7147:7;7187:6;7180:5;7176:18;7165:29;;7111:89;;;:::o;7206:120::-;7278:23;7295:5;7278:23;:::i;:::-;7271:5;7268:34;7258:62;;7316:1;7313;7306:12;7258:62;7206:120;:::o;7332:137::-;7377:5;7415:6;7402:20;7393:29;;7431:32;7457:5;7431:32;:::i;:::-;7332:137;;;;:::o;7475:470::-;7541:6;7549;7598:2;7586:9;7577:7;7573:23;7569:32;7566:119;;;7604:79;;:::i;:::-;7566:119;7724:1;7749:52;7793:7;7784:6;7773:9;7769:22;7749:52;:::i;:::-;7739:62;;7695:116;7850:2;7876:52;7920:7;7911:6;7900:9;7896:22;7876:52;:::i;:::-;7866:62;;7821:117;7475:470;;;;;:::o;7951:466::-;8015:6;8023;8072:2;8060:9;8051:7;8047:23;8043:32;8040:119;;;8078:79;;:::i;:::-;8040:119;8198:1;8223:51;8266:7;8257:6;8246:9;8242:22;8223:51;:::i;:::-;8213:61;;8169:115;8323:2;8349:51;8392:7;8383:6;8372:9;8368:22;8349:51;:::i;:::-;8339:61;;8294:116;7951:466;;;;;:::o;8423:118::-;8510:24;8528:5;8510:24;:::i;:::-;8505:3;8498:37;8423:118;;:::o;8547:222::-;8640:4;8678:2;8667:9;8663:18;8655:26;;8691:71;8759:1;8748:9;8744:17;8735:6;8691:71;:::i;:::-;8547:222;;;;:::o;8775:93::-;8811:7;8851:10;8844:5;8840:22;8829:33;;8775:93;;;:::o;8874:120::-;8946:23;8963:5;8946:23;:::i;:::-;8939:5;8936:34;8926:62;;8984:1;8981;8974:12;8926:62;8874:120;:::o;9000:137::-;9045:5;9083:6;9070:20;9061:29;;9099:32;9125:5;9099:32;:::i;:::-;9000:137;;;;:::o;9143:757::-;9225:6;9233;9241;9249;9298:3;9286:9;9277:7;9273:23;9269:33;9266:120;;;9305:79;;:::i;:::-;9266:120;9425:1;9450:52;9494:7;9485:6;9474:9;9470:22;9450:52;:::i;:::-;9440:62;;9396:116;9551:2;9577:52;9621:7;9612:6;9601:9;9597:22;9577:52;:::i;:::-;9567:62;;9522:117;9678:2;9704:52;9748:7;9739:6;9728:9;9724:22;9704:52;:::i;:::-;9694:62;;9649:117;9805:2;9831:52;9875:7;9866:6;9855:9;9851:22;9831:52;:::i;:::-;9821:62;;9776:117;9143:757;;;;;;;:::o;9906:474::-;9974:6;9982;10031:2;10019:9;10010:7;10006:23;10002:32;9999:119;;;10037:79;;:::i;:::-;9999:119;10157:1;10182:53;10227:7;10218:6;10207:9;10203:22;10182:53;:::i;:::-;10172:63;;10128:117;10284:2;10310:53;10355:7;10346:6;10335:9;10331:22;10310:53;:::i;:::-;10300:63;;10255:118;9906:474;;;;;:::o;10386:104::-;10431:7;10460:24;10478:5;10460:24;:::i;:::-;10449:35;;10386:104;;;:::o;10496:138::-;10577:32;10603:5;10577:32;:::i;:::-;10570:5;10567:43;10557:71;;10624:1;10621;10614:12;10557:71;10496:138;:::o;10640:155::-;10694:5;10732:6;10719:20;10710:29;;10748:41;10783:5;10748:41;:::i;:::-;10640:155;;;;:::o;10801:345::-;10868:6;10917:2;10905:9;10896:7;10892:23;10888:32;10885:119;;;10923:79;;:::i;:::-;10885:119;11043:1;11068:61;11121:7;11112:6;11101:9;11097:22;11068:61;:::i;:::-;11058:71;;11014:125;10801:345;;;;:::o;11152:180::-;11200:77;11197:1;11190:88;11297:4;11294:1;11287:15;11321:4;11318:1;11311:15;11338:102;11380:8;11427:5;11424:1;11420:13;11399:34;;11338:102;;;:::o;11446:848::-;11507:5;11514:4;11538:6;11529:15;;11562:5;11553:14;;11576:712;11597:1;11587:8;11584:15;11576:712;;;11692:4;11687:3;11683:14;11677:4;11674:24;11671:50;;;11701:18;;:::i;:::-;11671:50;11751:1;11741:8;11737:16;11734:451;;;12166:4;12159:5;12155:16;12146:25;;11734:451;12216:4;12210;12206:15;12198:23;;12246:32;12269:8;12246:32;:::i;:::-;12234:44;;11576:712;;;11446:848;;;;;;;:::o;12300:1073::-;12354:5;12545:8;12535:40;;12566:1;12557:10;;12568:5;;12535:40;12594:4;12584:36;;12611:1;12602:10;;12613:5;;12584:36;12680:4;12728:1;12723:27;;;;12764:1;12759:191;;;;12673:277;;12723:27;12741:1;12732:10;;12743:5;;;12759:191;12804:3;12794:8;12791:17;12788:43;;;12811:18;;:::i;:::-;12788:43;12860:8;12857:1;12853:16;12844:25;;12895:3;12888:5;12885:14;12882:40;;;12902:18;;:::i;:::-;12882:40;12935:5;;;12673:277;;13059:2;13049:8;13046:16;13040:3;13034:4;13031:13;13027:36;13009:2;12999:8;12996:16;12991:2;12985:4;12982:12;12978:35;12962:111;12959:246;;;13115:8;13109:4;13105:19;13096:28;;13150:3;13143:5;13140:14;13137:40;;;13157:18;;:::i;:::-;13137:40;13190:5;;12959:246;13230:42;13268:3;13258:8;13252:4;13249:1;13230:42;:::i;:::-;13215:57;;;;13304:4;13299:3;13295:14;13288:5;13285:25;13282:51;;;13313:18;;:::i;:::-;13282:51;13362:4;13355:5;13351:16;13342:25;;12300:1073;;;;;;:::o;13379:281::-;13437:5;13461:23;13479:4;13461:23;:::i;:::-;13453:31;;13505:25;13521:8;13505:25;:::i;:::-;13493:37;;13549:104;13586:66;13576:8;13570:4;13549:104;:::i;:::-;13540:113;;13379:281;;;;:::o;13666:410::-;13706:7;13729:20;13747:1;13729:20;:::i;:::-;13724:25;;13763:20;13781:1;13763:20;:::i;:::-;13758:25;;13818:1;13815;13811:9;13840:30;13858:11;13840:30;:::i;:::-;13829:41;;14019:1;14010:7;14006:15;14003:1;14000:22;13980:1;13973:9;13953:83;13930:139;;14049:18;;:::i;:::-;13930:139;13714:362;13666:410;;;;:::o;14082:174::-;14222:26;14218:1;14210:6;14206:14;14199:50;14082:174;:::o;14262:366::-;14404:3;14425:67;14489:2;14484:3;14425:67;:::i;:::-;14418:74;;14501:93;14590:3;14501:93;:::i;:::-;14619:2;14614:3;14610:12;14603:19;;14262:366;;;:::o;14634:419::-;14800:4;14838:2;14827:9;14823:18;14815:26;;14887:9;14881:4;14877:20;14873:1;14862:9;14858:17;14851:47;14915:131;15041:4;14915:131;:::i;:::-;14907:139;;14634:419;;;:::o;15059:166::-;15199:18;15195:1;15187:6;15183:14;15176:42;15059:166;:::o;15231:366::-;15373:3;15394:67;15458:2;15453:3;15394:67;:::i;:::-;15387:74;;15470:93;15559:3;15470:93;:::i;:::-;15588:2;15583:3;15579:12;15572:19;;15231:366;;;:::o;15603:419::-;15769:4;15807:2;15796:9;15792:18;15784:26;;15856:9;15850:4;15846:20;15842:1;15831:9;15827:17;15820:47;15884:131;16010:4;15884:131;:::i;:::-;15876:139;;15603:419;;;:::o;16028:170::-;16168:22;16164:1;16156:6;16152:14;16145:46;16028:170;:::o;16204:366::-;16346:3;16367:67;16431:2;16426:3;16367:67;:::i;:::-;16360:74;;16443:93;16532:3;16443:93;:::i;:::-;16561:2;16556:3;16552:12;16545:19;;16204:366;;;:::o;16576:419::-;16742:4;16780:2;16769:9;16765:18;16757:26;;16829:9;16823:4;16819:20;16815:1;16804:9;16800:17;16793:47;16857:131;16983:4;16857:131;:::i;:::-;16849:139;;16576:419;;;:::o;17001:194::-;17041:4;17061:20;17079:1;17061:20;:::i;:::-;17056:25;;17095:20;17113:1;17095:20;:::i;:::-;17090:25;;17139:1;17136;17132:9;17124:17;;17163:1;17157:4;17154:11;17151:37;;;17168:18;;:::i;:::-;17151:37;17001:194;;;;:::o;17201:173::-;17341:25;17337:1;17329:6;17325:14;17318:49;17201:173;:::o;17380:366::-;17522:3;17543:67;17607:2;17602:3;17543:67;:::i;:::-;17536:74;;17619:93;17708:3;17619:93;:::i;:::-;17737:2;17732:3;17728:12;17721:19;;17380:366;;;:::o;17752:419::-;17918:4;17956:2;17945:9;17941:18;17933:26;;18005:9;17999:4;17995:20;17991:1;17980:9;17976:17;17969:47;18033:131;18159:4;18033:131;:::i;:::-;18025:139;;17752:419;;;:::o;18177:176::-;18317:28;18313:1;18305:6;18301:14;18294:52;18177:176;:::o;18359:366::-;18501:3;18522:67;18586:2;18581:3;18522:67;:::i;:::-;18515:74;;18598:93;18687:3;18598:93;:::i;:::-;18716:2;18711:3;18707:12;18700:19;;18359:366;;;:::o;18731:419::-;18897:4;18935:2;18924:9;18920:18;18912:26;;18984:9;18978:4;18974:20;18970:1;18959:9;18955:17;18948:47;19012:131;19138:4;19012:131;:::i;:::-;19004:139;;18731:419;;;:::o;19156:180::-;19204:77;19201:1;19194:88;19301:4;19298:1;19291:15;19325:4;19322:1;19315:15;19342:185;19382:1;19399:20;19417:1;19399:20;:::i;:::-;19394:25;;19433:20;19451:1;19433:20;:::i;:::-;19428:25;;19472:1;19462:35;;19477:18;;:::i;:::-;19462:35;19519:1;19516;19512:9;19507:14;;19342:185;;;;:::o;19533:156::-;19673:8;19669:1;19661:6;19657:14;19650:32;19533:156;:::o;19695:365::-;19837:3;19858:66;19922:1;19917:3;19858:66;:::i;:::-;19851:73;;19933:93;20022:3;19933:93;:::i;:::-;20051:2;20046:3;20042:12;20035:19;;19695:365;;;:::o;20066:419::-;20232:4;20270:2;20259:9;20255:18;20247:26;;20319:9;20313:4;20309:20;20305:1;20294:9;20290:17;20283:47;20347:131;20473:4;20347:131;:::i;:::-;20339:139;;20066:419;;;:::o;20491:191::-;20531:3;20550:20;20568:1;20550:20;:::i;:::-;20545:25;;20584:20;20602:1;20584:20;:::i;:::-;20579:25;;20627:1;20624;20620:9;20613:16;;20648:3;20645:1;20642:10;20639:36;;;20655:18;;:::i;:::-;20639:36;20491:191;;;;:::o;20688:160::-;20828:12;20824:1;20816:6;20812:14;20805:36;20688:160;:::o;20854:366::-;20996:3;21017:67;21081:2;21076:3;21017:67;:::i;:::-;21010:74;;21093:93;21182:3;21093:93;:::i;:::-;21211:2;21206:3;21202:12;21195:19;;20854:366;;;:::o;21226:419::-;21392:4;21430:2;21419:9;21415:18;21407:26;;21479:9;21473:4;21469:20;21465:1;21454:9;21450:17;21443:47;21507:131;21633:4;21507:131;:::i;:::-;21499:139;;21226:419;;;:::o;21651:164::-;21791:16;21787:1;21779:6;21775:14;21768:40;21651:164;:::o;21821:366::-;21963:3;21984:67;22048:2;22043:3;21984:67;:::i;:::-;21977:74;;22060:93;22149:3;22060:93;:::i;:::-;22178:2;22173:3;22169:12;22162:19;;21821:366;;;:::o;22193:419::-;22359:4;22397:2;22386:9;22382:18;22374:26;;22446:9;22440:4;22436:20;22432:1;22421:9;22417:17;22410:47;22474:131;22600:4;22474:131;:::i;:::-;22466:139;;22193:419;;;:::o;22618:188::-;22656:3;22675:18;22691:1;22675:18;:::i;:::-;22670:23;;22707:18;22723:1;22707:18;:::i;:::-;22702:23;;22748:1;22745;22741:9;22734:16;;22771:4;22766:3;22763:13;22760:39;;;22779:18;;:::i;:::-;22760:39;22618:188;;;;:::o;22812:168::-;22952:20;22948:1;22940:6;22936:14;22929:44;22812:168;:::o;22986:366::-;23128:3;23149:67;23213:2;23208:3;23149:67;:::i;:::-;23142:74;;23225:93;23314:3;23225:93;:::i;:::-;23343:2;23338:3;23334:12;23327:19;;22986:366;;;:::o;23358:419::-;23524:4;23562:2;23551:9;23547:18;23539:26;;23611:9;23605:4;23601:20;23597:1;23586:9;23582:17;23575:47;23639:131;23765:4;23639:131;:::i;:::-;23631:139;;23358:419;;;:::o;23783:162::-;23923:14;23919:1;23911:6;23907:14;23900:38;23783:162;:::o;23951:366::-;24093:3;24114:67;24178:2;24173:3;24114:67;:::i;:::-;24107:74;;24190:93;24279:3;24190:93;:::i;:::-;24308:2;24303:3;24299:12;24292:19;;23951:366;;;:::o;24323:419::-;24489:4;24527:2;24516:9;24512:18;24504:26;;24576:9;24570:4;24566:20;24562:1;24551:9;24547:17;24540:47;24604:131;24730:4;24604:131;:::i;:::-;24596:139;;24323:419;;;:::o;24748:163::-;24888:15;24884:1;24876:6;24872:14;24865:39;24748:163;:::o;24917:366::-;25059:3;25080:67;25144:2;25139:3;25080:67;:::i;:::-;25073:74;;25156:93;25245:3;25156:93;:::i;:::-;25274:2;25269:3;25265:12;25258:19;;24917:366;;;:::o;25289:419::-;25455:4;25493:2;25482:9;25478:18;25470:26;;25542:9;25536:4;25532:20;25528:1;25517:9;25513:17;25506:47;25570:131;25696:4;25570:131;:::i;:::-;25562:139;;25289:419;;;:::o;25714:157::-;25854:9;25850:1;25842:6;25838:14;25831:33;25714:157;:::o;25877:365::-;26019:3;26040:66;26104:1;26099:3;26040:66;:::i;:::-;26033:73;;26115:93;26204:3;26115:93;:::i;:::-;26233:2;26228:3;26224:12;26217:19;;25877:365;;;:::o;26248:419::-;26414:4;26452:2;26441:9;26437:18;26429:26;;26501:9;26495:4;26491:20;26487:1;26476:9;26472:17;26465:47;26529:131;26655:4;26529:131;:::i;:::-;26521:139;;26248:419;;;:::o;26673:158::-;26813:10;26809:1;26801:6;26797:14;26790:34;26673:158;:::o;26837:365::-;26979:3;27000:66;27064:1;27059:3;27000:66;:::i;:::-;26993:73;;27075:93;27164:3;27075:93;:::i;:::-;27193:2;27188:3;27184:12;27177:19;;26837:365;;;:::o;27208:419::-;27374:4;27412:2;27401:9;27397:18;27389:26;;27461:9;27455:4;27451:20;27447:1;27436:9;27432:17;27425:47;27489:131;27615:4;27489:131;:::i;:::-;27481:139;;27208:419;;;:::o;27633:160::-;27773:12;27769:1;27761:6;27757:14;27750:36;27633:160;:::o;27799:366::-;27941:3;27962:67;28026:2;28021:3;27962:67;:::i;:::-;27955:74;;28038:93;28127:3;28038:93;:::i;:::-;28156:2;28151:3;28147:12;28140:19;;27799:366;;;:::o;28171:419::-;28337:4;28375:2;28364:9;28360:18;28352:26;;28424:9;28418:4;28414:20;28410:1;28399:9;28395:17;28388:47;28452:131;28578:4;28452:131;:::i;:::-;28444:139;;28171:419;;;:::o;28596:166::-;28736:18;28732:1;28724:6;28720:14;28713:42;28596:166;:::o;28768:366::-;28910:3;28931:67;28995:2;28990:3;28931:67;:::i;:::-;28924:74;;29007:93;29096:3;29007:93;:::i;:::-;29125:2;29120:3;29116:12;29109:19;;28768:366;;;:::o;29140:419::-;29306:4;29344:2;29333:9;29329:18;29321:26;;29393:9;29387:4;29383:20;29379:1;29368:9;29364:17;29357:47;29421:131;29547:4;29421:131;:::i;:::-;29413:139;;29140:419;;;:::o;29565:165::-;29705:17;29701:1;29693:6;29689:14;29682:41;29565:165;:::o;29736:366::-;29878:3;29899:67;29963:2;29958:3;29899:67;:::i;:::-;29892:74;;29975:93;30064:3;29975:93;:::i;:::-;30093:2;30088:3;30084:12;30077:19;;29736:366;;;:::o;30108:419::-;30274:4;30312:2;30301:9;30297:18;30289:26;;30361:9;30355:4;30351:20;30347:1;30336:9;30332:17;30325:47;30389:131;30515:4;30389:131;:::i;:::-;30381:139;;30108:419;;;:::o;30533:143::-;30590:5;30621:6;30615:13;30606:22;;30637:33;30664:5;30637:33;:::i;:::-;30533:143;;;;:::o;30682:351::-;30752:6;30801:2;30789:9;30780:7;30776:23;30772:32;30769:119;;;30807:79;;:::i;:::-;30769:119;30927:1;30952:64;31008:7;30999:6;30988:9;30984:22;30952:64;:::i;:::-;30942:74;;30898:128;30682:351;;;;:::o;31039:332::-;31160:4;31198:2;31187:9;31183:18;31175:26;;31211:71;31279:1;31268:9;31264:17;31255:6;31211:71;:::i;:::-;31292:72;31360:2;31349:9;31345:18;31336:6;31292:72;:::i;:::-;31039:332;;;;;:::o;31377:98::-;31428:6;31462:5;31456:12;31446:22;;31377:98;;;:::o;31481:147::-;31582:11;31619:3;31604:18;;31481:147;;;;:::o;31634:386::-;31738:3;31766:38;31798:5;31766:38;:::i;:::-;31820:88;31901:6;31896:3;31820:88;:::i;:::-;31813:95;;31917:65;31975:6;31970:3;31963:4;31956:5;31952:16;31917:65;:::i;:::-;32007:6;32002:3;31998:16;31991:23;;31742:278;31634:386;;;;:::o;32026:271::-;32156:3;32178:93;32267:3;32258:6;32178:93;:::i;:::-;32171:100;;32288:3;32281:10;;32026:271;;;;:::o;32303:166::-;32443:18;32439:1;32431:6;32427:14;32420:42;32303:166;:::o;32475:366::-;32617:3;32638:67;32702:2;32697:3;32638:67;:::i;:::-;32631:74;;32714:93;32803:3;32714:93;:::i;:::-;32832:2;32827:3;32823:12;32816:19;;32475:366;;;:::o;32847:419::-;33013:4;33051:2;33040:9;33036:18;33028:26;;33100:9;33094:4;33090:20;33086:1;33075:9;33071:17;33064:47;33128:131;33254:4;33128:131;:::i;:::-;33120:139;;32847:419;;;:::o;33272:60::-;33300:3;33321:5;33314:12;;33272:60;;;:::o;33338:142::-;33388:9;33421:53;33439:34;33448:24;33466:5;33448:24;:::i;:::-;33439:34;:::i;:::-;33421:53;:::i;:::-;33408:66;;33338:142;;;:::o;33486:126::-;33536:9;33569:37;33600:5;33569:37;:::i;:::-;33556:50;;33486:126;;;:::o;33618:134::-;33676:9;33709:37;33740:5;33709:37;:::i;:::-;33696:50;;33618:134;;;:::o;33758:147::-;33853:45;33892:5;33853:45;:::i;:::-;33848:3;33841:58;33758:147;;:::o;33911:238::-;34012:4;34050:2;34039:9;34035:18;34027:26;;34063:79;34139:1;34128:9;34124:17;34115:6;34063:79;:::i;:::-;33911:238;;;;:::o;34155:176::-;34295:28;34291:1;34283:6;34279:14;34272:52;34155:176;:::o;34337:366::-;34479:3;34500:67;34564:2;34559:3;34500:67;:::i;:::-;34493:74;;34576:93;34665:3;34576:93;:::i;:::-;34694:2;34689:3;34685:12;34678:19;;34337:366;;;:::o;34709:419::-;34875:4;34913:2;34902:9;34898:18;34890:26;;34962:9;34956:4;34952:20;34948:1;34937:9;34933:17;34926:47;34990:131;35116:4;34990:131;:::i;:::-;34982:139;;34709:419;;;:::o;35134:159::-;35274:11;35270:1;35262:6;35258:14;35251:35;35134:159;:::o;35299:365::-;35441:3;35462:66;35526:1;35521:3;35462:66;:::i;:::-;35455:73;;35537:93;35626:3;35537:93;:::i;:::-;35655:2;35650:3;35646:12;35639:19;;35299:365;;;:::o;35670:419::-;35836:4;35874:2;35863:9;35859:18;35851:26;;35923:9;35917:4;35913:20;35909:1;35898:9;35894:17;35887:47;35951:131;36077:4;35951:131;:::i;:::-;35943:139;;35670:419;;;:::o;36095:164::-;36235:16;36231:1;36223:6;36219:14;36212:40;36095:164;:::o;36265:366::-;36407:3;36428:67;36492:2;36487:3;36428:67;:::i;:::-;36421:74;;36504:93;36593:3;36504:93;:::i;:::-;36622:2;36617:3;36613:12;36606:19;;36265:366;;;:::o;36637:419::-;36803:4;36841:2;36830:9;36826:18;36818:26;;36890:9;36884:4;36880:20;36876:1;36865:9;36861:17;36854:47;36918:131;37044:4;36918:131;:::i;:::-;36910:139;;36637:419;;;:::o;37062:180::-;37110:77;37107:1;37100:88;37207:4;37204:1;37197:15;37231:4;37228:1;37221:15;37248:180;37296:77;37293:1;37286:88;37393:4;37390:1;37383:15;37417:4;37414:1;37407:15;37434:85;37479:7;37508:5;37497:16;;37434:85;;;:::o;37525:158::-;37583:9;37616:61;37634:42;37643:32;37669:5;37643:32;:::i;:::-;37634:42;:::i;:::-;37616:61;:::i;:::-;37603:74;;37525:158;;;:::o;37689:147::-;37784:45;37823:5;37784:45;:::i;:::-;37779:3;37772:58;37689:147;;:::o;37842:114::-;37909:6;37943:5;37937:12;37927:22;;37842:114;;;:::o;37962:184::-;38061:11;38095:6;38090:3;38083:19;38135:4;38130:3;38126:14;38111:29;;37962:184;;;;:::o;38152:132::-;38219:4;38242:3;38234:11;;38272:4;38267:3;38263:14;38255:22;;38152:132;;;:::o;38290:108::-;38367:24;38385:5;38367:24;:::i;:::-;38362:3;38355:37;38290:108;;:::o;38404:179::-;38473:10;38494:46;38536:3;38528:6;38494:46;:::i;:::-;38572:4;38567:3;38563:14;38549:28;;38404:179;;;;:::o;38589:113::-;38659:4;38691;38686:3;38682:14;38674:22;;38589:113;;;:::o;38738:732::-;38857:3;38886:54;38934:5;38886:54;:::i;:::-;38956:86;39035:6;39030:3;38956:86;:::i;:::-;38949:93;;39066:56;39116:5;39066:56;:::i;:::-;39145:7;39176:1;39161:284;39186:6;39183:1;39180:13;39161:284;;;39262:6;39256:13;39289:63;39348:3;39333:13;39289:63;:::i;:::-;39282:70;;39375:60;39428:6;39375:60;:::i;:::-;39365:70;;39221:224;39208:1;39205;39201:9;39196:14;;39161:284;;;39165:14;39461:3;39454:10;;38862:608;;;38738:732;;;;:::o;39476:831::-;39739:4;39777:3;39766:9;39762:19;39754:27;;39791:71;39859:1;39848:9;39844:17;39835:6;39791:71;:::i;:::-;39872:80;39948:2;39937:9;39933:18;39924:6;39872:80;:::i;:::-;39999:9;39993:4;39989:20;39984:2;39973:9;39969:18;39962:48;40027:108;40130:4;40121:6;40027:108;:::i;:::-;40019:116;;40145:72;40213:2;40202:9;40198:18;40189:6;40145:72;:::i;:::-;40227:73;40295:3;40284:9;40280:19;40271:6;40227:73;:::i;:::-;39476:831;;;;;;;;:::o;40313:807::-;40562:4;40600:3;40589:9;40585:19;40577:27;;40614:71;40682:1;40671:9;40667:17;40658:6;40614:71;:::i;:::-;40695:72;40763:2;40752:9;40748:18;40739:6;40695:72;:::i;:::-;40777:80;40853:2;40842:9;40838:18;40829:6;40777:80;:::i;:::-;40867;40943:2;40932:9;40928:18;40919:6;40867:80;:::i;:::-;40957:73;41025:3;41014:9;41010:19;41001:6;40957:73;:::i;:::-;41040;41108:3;41097:9;41093:19;41084:6;41040:73;:::i;:::-;40313:807;;;;;;;;;:::o;41126:143::-;41183:5;41214:6;41208:13;41199:22;;41230:33;41257:5;41230:33;:::i;:::-;41126:143;;;;:::o;41275:663::-;41363:6;41371;41379;41428:2;41416:9;41407:7;41403:23;41399:32;41396:119;;;41434:79;;:::i;:::-;41396:119;41554:1;41579:64;41635:7;41626:6;41615:9;41611:22;41579:64;:::i;:::-;41569:74;;41525:128;41692:2;41718:64;41774:7;41765:6;41754:9;41750:22;41718:64;:::i;:::-;41708:74;;41663:129;41831:2;41857:64;41913:7;41904:6;41893:9;41889:22;41857:64;:::i;:::-;41847:74;;41802:129;41275:663;;;;;:::o

Swarm Source

ipfs://7ab936619831881dedd20abbb781b1ebfa6f36e33e7de4b326b2ea56871c0df5
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.