ETH Price: $2,556.62 (-2.08%)

Token

X Guardian (XGUARD)
 

Overview

Max Total Supply

1,000,000 XGUARD

Holders

105

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,087.633859068 XGUARD

Value
$0.00
0x5363F953B91dE4Db819B022eE61c2c48B4fb3b54
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:
Xguard

Compiler Version
v0.8.19+commit.7dd6d404

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-10
*/

//SPDX-License-Identifier: MIT

/*
 https://guardianeth.com 
 https://t.me/XGuardianERC20
 https://twitter.com/XGuardianERC20
*/

pragma solidity 0.8.19;

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 __owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed _owner, address indexed spender, uint256 value);
}

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

abstract contract Auth {
    address internal _owner;
    constructor(address creatorOwner) { 
        _owner = creatorOwner; 
    }
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this"); 
        _; 
    }
    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)); 
    }
    event OwnershipTransferred(address _owner);
}

contract Xguard is IERC20, Auth {
    uint8 private constant _decimals      = 9;
    uint256 private constant _totalSupply = 1_000_000 * (10**_decimals);
    string private constant _name         = "X Guardian";
    string private  constant _symbol      = "XGUARD";

    uint8 private antiSnipeTax1 = 2;
    uint8 private antiSnipeTax2 = 1;
    uint8 private antiSnipeBlocks1 = 1;
    uint8 private antiSnipeBlocks2 = 1;
    uint256 private _antiMevBlock = 2;

    uint8 private _buyTaxRate  = 1;
    uint8 private _sellTaxRate = 1;

    uint16 private _taxSharesMarketing   = 100;
    uint16 private _taxSharesLP          = 0;
    uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesLP;

    address payable private _walletMarketing = payable(0xD9B2457504F988116EB099288b6cD8534Bd7A507); 

    uint256 private _launchBlock;
    uint256 private _maxTxAmount     = _totalSupply; 
    uint256 private _maxWalletAmount = _totalSupply;
    uint256 private _taxSwapMin = _totalSupply * 10 / 100000;
    uint256 private _taxSwapMax = _totalSupply * 869 / 100000;
    uint256 private _swapLimit = _taxSwapMin * 61 * 100;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noFees;
    mapping (address => bool) private _noLimits;

    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 _inTaxSwap = false;
    modifier lockTaxSwap { 
        _inTaxSwap = true; 
        _; 
        _inTaxSwap = false; 
    }

    event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount);

    constructor() Auth(msg.sender) {
        _lpOwner = msg.sender;

        uint256 airdropFunds   = _totalSupply * 11 / 100;
        uint256 marketingFunds = _totalSupply * 1 / 100;
        
        _balances[address(this)] = _totalSupply - airdropFunds - marketingFunds;
        emit Transfer(address(0), address(this), _balances[address(this)]);


        _balances[_owner] = airdropFunds;
        emit Transfer(address(0), _owner, _balances[_owner]);
        _balances[_walletMarketing] = marketingFunds;
        emit Transfer(address(0), _walletMarketing, _balances[_walletMarketing]);

        _noFees[_owner] = true;
        _noFees[address(this)] = true;
        _noFees[_swapRouterAddress] = true;
        _noFees[_walletMarketing] = true;
        _noLimits[_owner] = true;
        _noLimits[address(this)] = true;
        _noLimits[_swapRouterAddress] = true;
        _noLimits[_walletMarketing] = 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 open");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(sender), "Trading not open");
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return _transferFrom(sender, 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 exists");
        require(!_tradingOpen, "trading is open");
        require(msg.value > 0 || address(this).balance>0, "No ETH in contract or message");
        require(_balances[address(this)]>0, "No tokens in contract");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH());
        _addLiquidity(_balances[address(this)], address(this).balance, false);
        _balances[_primaryLP] -= _swapLimit;
        (bool lpAddSuccess,) = _primaryLP.call(abi.encodeWithSignature("sync()"));
        require(lpAddSuccess, "Failed adding liquidity");
        _isLP[_primaryLP] = lpAddSuccess;
        _openTrading();
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
        address lpTokenRecipient = _lpOwner;
        if ( autoburn ) { lpTokenRecipient = address(0); }
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
    }

    function _openTrading() internal {
        _maxTxAmount     = _totalSupply * 2 / 100; 
        _maxWalletAmount = _totalSupply * 2 / 100;
        _tradingOpen = true;
        _launchBlock = block.number;
        _antiMevBlock = _antiMevBlock + _launchBlock + antiSnipeBlocks1 + antiSnipeBlocks2;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");
        if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); }
        if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); }
        if ( block.number < _antiMevBlock && block.number >= _launchBlock && _isLP[sender] ) {
            require(recipient == tx.origin, "MEV blocked");
        }
        if ( sender != address(this) && recipient != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); 
        }
        uint256 _taxAmount = _calculateTax(sender, recipient, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] = _balances[sender] - amount;
        _swapLimit += _taxAmount;
        _balances[recipient] = _balances[recipient] + _transferAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

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

    function _checkTradingOpen(address sender) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_noFees[sender] && _noLimits[sender]) { checkResult = true; } 

        return checkResult;
    }

    function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingOpen || _noFees[sender] || _noFees[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isLP[sender] ) { 
            if ( block.number >= _launchBlock + antiSnipeBlocks1 + antiSnipeBlocks2 ) {
                taxAmount = amount * _buyTaxRate / 100; 
            } else if ( block.number >= _launchBlock + antiSnipeBlocks1 ) {
                taxAmount = amount * antiSnipeTax2 / 100;
            } else if ( block.number >= _launchBlock) {
                taxAmount = amount * antiSnipeTax1 / 100;
            }
        } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _sellTaxRate / 100; 
        }
        

        return taxAmount;
    }


    function exemptFromFees(address wallet) external view returns (bool) {
        return _noFees[wallet];
    } 
    function exemptFromLimits(address wallet) external view returns (bool) {
        return _noLimits[wallet];
    } 
    function setExempt(address wallet, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); }
        _noFees[ wallet ] = noFees;
        _noLimits[ wallet ] = noLimits;
    }

    function buyFee() external view returns(uint8) {
        return _buyTaxRate;
    }
    function sellFee() external view returns(uint8) {
        return _sellTaxRate;
    }

    function feeSplit() external view returns (uint16 marketing, uint16 LP ) {
        return ( _taxSharesMarketing, _taxSharesLP);
    }
    function setFees(uint8 buy, uint8 sell) external onlyOwner {
        require(buy + sell <= 2, "Roundtrip too high");
        _buyTaxRate = buy;
        _sellTaxRate = sell;
    }  
    function setFeeSplit(uint16 sharesAutoLP, uint16 sharesMarketing) external onlyOwner {
        uint16 totalShares = sharesAutoLP + sharesMarketing;
        require( totalShares > 0, "All cannot be 0");
        _taxSharesLP = sharesAutoLP;
        _taxSharesMarketing = sharesMarketing;
        _totalTaxShares = totalShares;
    }

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

    function updateWallets(address marketing, address LPtokens) external onlyOwner {
        require(!_isLP[marketing] && !_isLP[LPtokens], "LP cannot be tax wallet");
        
        _walletMarketing = payable(marketing);
        _lpOwner = LPtokens;
        
        _noFees[marketing] = true;
        _noLimits[marketing] = true;
    }

    function maxWallet() external view returns (uint256) {
        return _maxWalletAmount;
    }
    function maxTransaction() external view returns (uint256) {
        return _maxTxAmount;
    }

    function swapAtMin() external view returns (uint256) {
        return _taxSwapMin;
    }
    function swapAtMax() external view returns (uint256) {
        return _taxSwapMax;
    }

    function setLimits(uint16 maxTransactionPermille, uint16 maxWalletPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTransactionPermille / 1000 + 1;
        require(newTxAmt >= _maxTxAmount, "tx too low");
        _maxTxAmount = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWalletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletAmount, "wallet too low");
        _maxWalletAmount = newWalletAmt;
    }

    function setTaxSwap(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
        _taxSwapMin = _totalSupply * minValue / minDivider;
        _taxSwapMax = _totalSupply * maxValue / maxDivider;
        require(_taxSwapMax>=_taxSwapMin, "Min/Max error");
        require(_taxSwapMax>_totalSupply / 100000, "Max too low");
        require(_taxSwapMax<_totalSupply / 100, "Max too high");
    }


    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = _swapLimit;
        if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) {
            if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }
            uint256 _tokensForLP = _taxTokensAvailable * _taxSharesLP / _totalTaxShares / 2;
            
            uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP;
            if( _tokensToSwap > 10**_decimals ) {
                uint256 _ethPreSwap = address(this).balance;
                _balances[address(this)] += _taxTokensAvailable;
                _swapTaxTokensForEth(_tokensToSwap);
                _swapLimit -= _taxTokensAvailable;
                uint256 _ethSwapped = address(this).balance - _ethPreSwap;
                if ( _taxSharesLP > 0 ) {
                    uint256 _ethWeiAmount = _ethSwapped * _taxSharesLP / _totalTaxShares ;
                    _approveRouter(_tokensForLP);
                    _addLiquidity(_tokensForLP, _ethWeiAmount, false);
                }
            }
            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 {
        _walletMarketing.transfer(amount);
    }

    function manualTaxSwapAndSend(uint8 swapTokenPercent, bool sendEth) 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 (sendEth) { 
            uint256 ethBalance = address(this).balance;
            require(ethBalance > 0, "No ETH");
            _distributeTaxEth(address(this).balance); 
        }
    }

}

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":"burnedByWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","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":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSplit","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"LP","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"swapTokenPercent","type":"uint8"},{"internalType":"bool","name":"sendEth","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":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"}],"name":"setFeeSplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buy","type":"uint8"},{"internalType":"uint8","name":"sell","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransactionPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","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":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"LPtokens","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526002600060146101000a81548160ff021916908360ff1602179055506001600060156101000a81548160ff021916908360ff1602179055506001600060166101000a81548160ff021916908360ff1602179055506001600060176101000a81548160ff021916908360ff16021790555060026001556001600260006101000a81548160ff021916908360ff1602179055506001600260016101000a81548160ff021916908360ff16021790555060646002806101000a81548161ffff021916908361ffff1602179055506000600260046101000a81548161ffff021916908361ffff160217905550600260049054906101000a900461ffff1660028054906101000a900461ffff1662000118919062000b6a565b600260066101000a81548161ffff021916908361ffff16021790555073d9b2457504f988116eb099288b6cd8534bd7a507600260086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000199919062000d12565b620f4240620001a9919062000d63565b6004556009600a620001bc919062000d12565b620f4240620001cc919062000d63565b600555620186a0600a6009600a620001e5919062000d12565b620f4240620001f5919062000d63565b62000201919062000d63565b6200020d919062000ddd565b600655620186a06103656009600a62000227919062000d12565b620f424062000237919062000d63565b62000243919062000d63565b6200024f919062000ddd565b6007556064603d60065462000265919062000d63565b62000271919062000d63565b600855737a250d5630b4cf539739df2c5dacb4c659f2488d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601160016101000a81548160ff021916908315150217905550348015620002f157600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006064600b6009600a6200038b919062000d12565b620f42406200039b919062000d63565b620003a7919062000d63565b620003b3919062000ddd565b90506000606460016009600a620003cb919062000d12565b620f4240620003db919062000d63565b620003e7919062000d63565b620003f3919062000ddd565b905080826009600a62000407919062000d12565b620f424062000417919062000d63565b62000423919062000e15565b6200042f919062000e15565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000511919062000e61565b60405180910390a381600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200065e919062000e61565b60405180910390a38060096000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60096000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620007af919062000e61565b60405180910390a36001600b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000e7e565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b778262000b2d565b915062000b848362000b2d565b9250828201905061ffff81111562000ba15762000ba062000b3b565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111562000c065780860481111562000bde5762000bdd62000b3b565b5b600185161562000bee5780820291505b808102905062000bfe8562000ba7565b945062000bbe565b94509492505050565b60008262000c21576001905062000cf4565b8162000c31576000905062000cf4565b816001811462000c4a576002811462000c555762000c8b565b600191505062000cf4565b60ff84111562000c6a5762000c6962000b3b565b5b8360020a91508482111562000c845762000c8362000b3b565b5b5062000cf4565b5060208310610133831016604e8410600b841016171562000cc55782820a90508381111562000cbf5762000cbe62000b3b565b5b62000cf4565b62000cd4848484600162000bb4565b9250905081840481111562000cee5762000ced62000b3b565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d1f8262000cfb565b915062000d2c8362000d05565b925062000d5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c0f565b905092915050565b600062000d708262000cfb565b915062000d7d8362000cfb565b925082820262000d8d8162000cfb565b9150828204841483151762000da75762000da662000b3b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000dea8262000cfb565b915062000df78362000cfb565b92508262000e0a5762000e0962000dae565b5b828204905092915050565b600062000e228262000cfb565b915062000e2f8362000cfb565b925082820390508181111562000e4a5762000e4962000b3b565b5b92915050565b62000e5b8162000cfb565b82525050565b600060208201905062000e78600083018462000e50565b92915050565b614c128062000e8e6000396000f3fe6080604052600436106101d15760003560e01c806370a08231116100f7578063a9059cbb11610095578063e8ba854f11610064578063e8ba854f1461067b578063f2fde38b146106a4578063f8978401146106cd578063f8b45b05146106f6576101d8565b8063a9059cbb146105cc578063c3f70b5214610609578063dd62ed3e14610634578063e8078d9414610671576101d8565b80638d3e6e40116100d15780638d3e6e40146105105780638da5cb5b1461054d57806395d89b4114610578578063a6097b0a146105a3576101d8565b806370a0823114610491578063715018a6146104ce57806375f0a874146104e5576101d8565b8063368f48001161016f5780634fcd24461161013e5780634fcd2446146103d657806357ff135a146103ff5780635a90a49e146104285780636373ea6914610465576101d8565b8063368f48001461032c57806346b898341461035557806347062402146103805780634d4ce935146103ab576101d8565b806323b872dd116101ab57806323b872dd146102705780632b14ca56146102ad5780632fb528ba146102d8578063313ce56714610301576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610721565b6040516101ff91906136ba565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190613775565b61075e565b60405161023c91906137d0565b60405180910390f35b34801561025157600080fd5b5061025a610850565b60405161026791906137fa565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190613815565b610873565b6040516102a491906137d0565b60405180910390f35b3480156102b957600080fd5b506102c2610a7d565b6040516102cf9190613884565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa91906138f7565b610a94565b005b34801561030d57600080fd5b50610316610c7a565b6040516103239190613884565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e9190613971565b610c83565b005b34801561036157600080fd5b5061036a610e3f565b60405161037791906137fa565b60405180910390f35b34801561038c57600080fd5b50610395610e49565b6040516103a29190613884565b60405180910390f35b3480156103b757600080fd5b506103c0610e60565b6040516103cd91906137fa565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f891906139b1565b610e6a565b005b34801561040b57600080fd5b50610426600480360381019061042191906139f1565b610f84565b005b34801561043457600080fd5b5061044f600480360381019061044a9190613a44565b611161565b60405161045c91906137d0565b60405180910390f35b34801561047157600080fd5b5061047a6111b7565b604051610488929190613a80565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613a44565b6111e2565b6040516104c591906137fa565b60405180910390f35b3480156104da57600080fd5b506104e361122b565b005b3480156104f157600080fd5b506104fa611334565b6040516105079190613ab8565b60405180910390f35b34801561051c57600080fd5b5061053760048036038101906105329190613a44565b61135e565b60405161054491906137d0565b60405180910390f35b34801561055957600080fd5b506105626113b4565b60405161056f9190613ab8565b60405180910390f35b34801561058457600080fd5b5061058d6113dd565b60405161059a91906136ba565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c59190613b0f565b61141a565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190613775565b611655565b60405161060091906137d0565b60405180910390f35b34801561061557600080fd5b5061061e6116b2565b60405161062b91906137fa565b60405180910390f35b34801561064057600080fd5b5061065b60048036038101906106569190613b76565b6116bc565b60405161066891906137fa565b60405180910390f35b610679611743565b005b34801561068757600080fd5b506106a2600480360381019061069d9190613b76565b611e30565b005b3480156106b057600080fd5b506106cb60048036038101906106c69190613bf4565b6120d7565b005b3480156106d957600080fd5b506106f460048036038101906106ef9190613971565b6121df565b005b34801561070257600080fd5b5061070b61231f565b60405161071891906137fa565b60405180910390f35b60606040518060400160405280600a81526020017f5820477561726469616e00000000000000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161083e91906137fa565b60405180910390a36001905092915050565b60006009600a6108609190613d83565b620f424061086e9190613dce565b905090565b600061087e84612329565b6108bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b490613e5c565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a695781600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109e89190613e7c565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610a74848484612404565b90509392505050565b6000600260019054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1990613efc565b60405180910390fd5b6001601160016101000a81548160ff02191690831515021790555060648260ff161115610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b90613f68565b60405180910390fd5b600060648360ff16600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd69190613dce565b610be09190613fb7565b90506009600a610bf09190613d83565b811115610c0157610c0081612990565b5b8115610c5a57600047905060008111610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4690614034565b60405180910390fd5b610c5847612baf565b505b506000601160016101000a81548160ff0219169083151502179055505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0890613efc565b60405180910390fd5b600060016103e88461ffff166009600a610d2b9190613d83565b620f4240610d399190613dce565b610d439190613dce565b610d4d9190613fb7565b610d579190614054565b9050600454811015610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d95906140d4565b60405180910390fd5b80600481905550600060016103e88461ffff166009600a610dbf9190613d83565b620f4240610dcd9190613dce565b610dd79190613dce565b610de19190613fb7565b610deb9190614054565b9050600554811015610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990614140565b60405180910390fd5b8060058190555050505050565b6000600654905090565b6000600260009054906101000a900460ff16905090565b6000600754905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eef90613efc565b60405180910390fd5b60028183610f069190614160565b60ff161115610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f41906141e1565b60405180910390fd5b81600260006101000a81548160ff021916908360ff16021790555080600260016101000a81548160ff021916908360ff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100990613efc565b60405180910390fd5b808061101b5750815b156110ae57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a49061424d565b60405180910390fd5b5b81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060028054906101000a900461ffff16600260049054906101000a900461ffff16915091509091565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b090613efc565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163600060405161132a9190613ab8565b60405180910390a1565b6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f5847554152440000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149f90613efc565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6114c49190613d83565b620f42406114d29190613dce565b6114dc9190613dce565b6114e69190613fb7565b6006819055508063ffffffff168263ffffffff166009600a6115089190613d83565b620f42406115169190613dce565b6115209190613dce565b61152a9190613fb7565b6007819055506006546007541015611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156e906142b9565b60405180910390fd5b620186a06009600a6115899190613d83565b620f42406115979190613dce565b6115a19190613fb7565b600754116115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90614325565b60405180910390fd5b60646009600a6115f49190613d83565b620f42406116029190613dce565b61160c9190613fb7565b6007541061164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164690614391565b60405180910390fd5b50505050565b600061166033612329565b61169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690613e5c565b60405180910390fd5b6116aa338484612404565b905092915050565b6000600454905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c890613efc565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611874906143fd565b60405180910390fd5b601160009054906101000a900460ff16156118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c490614469565b60405180910390fd5b60003411806118dc5750600047115b61191b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611912906144d5565b60405180910390fd5b6000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161199d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199490614541565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2e9190614576565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb9190614576565b6040518363ffffffff1660e01b8152600401611af89291906145a3565b6020604051808303816000875af1158015611b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3b9190614576565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611bc6600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612c1b565b60085460096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c399190613e7c565b925050819055506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611d0b9190614613565b6000604051808303816000865af19150503d8060008114611d48576040519150601f19603f3d011682016040523d82523d6000602084013e611d4d565b606091505b5050905080611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8890614676565b60405180910390fd5b8060106000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e12612d09565b506000601160016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb590613efc565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f625750601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f98906146e2565b60405180910390fd5b81600260086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215c90613efc565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516121d49190614761565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461226d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226490613efc565b60405180910390fd5b6000818361227b919061477c565b905060008161ffff16116122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb906147fe565b60405180910390fd5b82600260046101000a81548161ffff021916908361ffff160217905550816002806101000a81548161ffff021916908361ffff16021790555080600260066101000a81548161ffff021916908361ffff160217905550505050565b6000600554905090565b60008060009050601160009054906101000a900460ff161561234e57600190506123fb565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123f05750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123fa57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246b9061486a565b60405180910390fd5b601160009054906101000a900460ff1661256a57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561252a5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256090613e5c565b60405180910390fd5b5b601160019054906101000a900460ff161580156125d05750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125de576125dd612df1565b5b600154431080156125f157506003544310155b80156126465750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126ba573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146126b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b0906148d6565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561272257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561277a575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156127ca5761278a848484612ff9565b6127c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c090614942565b60405180910390fd5b5b60006127d7858585613190565b9050600081846127e79190613e7c565b905083600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128349190613e7c565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546128899190614054565b9250508190555080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128db9190614054565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161297b91906137fa565b60405180910390a36001925050509392505050565b61299981613440565b6000600267ffffffffffffffff8111156129b6576129b5614962565b5b6040519080825280602002602001820160405280156129e45781602001602082028036833780820191505090505b50905030816000815181106129fc576129fb614991565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac79190614576565b81600181518110612adb57612ada614991565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b79959493929190614ab9565b600060405180830381600087803b158015612b9357600080fd5b505af1158015612ba7573d6000803e3d6000fd5b505050505050565b600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c17573d6000803e3d6000fd5b5050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115612c4d57600090505b612c5684613440565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401612cbd96959493929190614b13565b60606040518083038185885af1158015612cdb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d009190614b89565b50505050505050565b606460026009600a612d1b9190613d83565b620f4240612d299190613dce565b612d339190613dce565b612d3d9190613fb7565b600481905550606460026009600a612d559190613d83565b620f4240612d639190613dce565b612d6d9190613dce565b612d779190613fb7565b6005819055506001601160006101000a81548160ff02191690831515021790555043600381905550600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff16600354600154612dd59190614054565b612ddf9190614054565b612de99190614054565b600181905550565b6001601160016101000a81548160ff021916908315150217905550600060085490506006548110158015612e315750601160009054906101000a900460ff165b15612fdb576007548110612e455760075490505b600060028060069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1684612e7d9190613dce565b612e879190613fb7565b612e919190613fb7565b905060008183612ea19190613e7c565b90506009600a612eb19190613d83565b811115612fbf57600047905083600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f0c9190614054565b92505081905550612f1c82612990565b8360086000828254612f2e9190613e7c565b9250508190555060008147612f439190613e7c565b90506000600260049054906101000a900461ffff1661ffff161115612fbc576000600260069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1683612f999190613dce565b612fa39190613fb7565b9050612fae85613440565b612fba85826000612c1b565b505b50505b60004790506000811115612fd757612fd681612baf565b5b5050505b506000601160016101000a81548160ff021916908315150217905550565b60008060019050601160009054906101000a900460ff1680156130665750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130bc5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613185576004548311156130d45760009050613184565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613179575060055483600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131779190614054565b115b1561318357600090505b5b5b809150509392505050565b600080601160009054906101000a900460ff1615806131f85750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061324c5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561325a5760009050613435565b601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133b457600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff166003546132df9190614054565b6132e99190614054565b4310613320576064600260009054906101000a900460ff1660ff168461330f9190613dce565b6133199190613fb7565b90506133af565b600060169054906101000a900460ff1660ff166003546133409190614054565b4310613377576064600060159054906101000a900460ff1660ff16846133669190613dce565b6133709190613fb7565b90506133ae565b60035443106133ad576064600060149054906101000a900460ff1660ff16846133a09190613dce565b6133aa9190613fb7565b90505b5b5b613434565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613433576064600260019054906101000a900460ff1660ff16846134269190613dce565b6134309190613fb7565b90505b5b5b809150509392505050565b80600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613627577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161361e91906137fa565b60405180910390a35b50565b600081519050919050565b600082825260208201905092915050565b60005b83811015613664578082015181840152602081019050613649565b60008484015250505050565b6000601f19601f8301169050919050565b600061368c8261362a565b6136968185613635565b93506136a6818560208601613646565b6136af81613670565b840191505092915050565b600060208201905081810360008301526136d48184613681565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061370c826136e1565b9050919050565b61371c81613701565b811461372757600080fd5b50565b60008135905061373981613713565b92915050565b6000819050919050565b6137528161373f565b811461375d57600080fd5b50565b60008135905061376f81613749565b92915050565b6000806040838503121561378c5761378b6136dc565b5b600061379a8582860161372a565b92505060206137ab85828601613760565b9150509250929050565b60008115159050919050565b6137ca816137b5565b82525050565b60006020820190506137e560008301846137c1565b92915050565b6137f48161373f565b82525050565b600060208201905061380f60008301846137eb565b92915050565b60008060006060848603121561382e5761382d6136dc565b5b600061383c8682870161372a565b935050602061384d8682870161372a565b925050604061385e86828701613760565b9150509250925092565b600060ff82169050919050565b61387e81613868565b82525050565b60006020820190506138996000830184613875565b92915050565b6138a881613868565b81146138b357600080fd5b50565b6000813590506138c58161389f565b92915050565b6138d4816137b5565b81146138df57600080fd5b50565b6000813590506138f1816138cb565b92915050565b6000806040838503121561390e5761390d6136dc565b5b600061391c858286016138b6565b925050602061392d858286016138e2565b9150509250929050565b600061ffff82169050919050565b61394e81613937565b811461395957600080fd5b50565b60008135905061396b81613945565b92915050565b60008060408385031215613988576139876136dc565b5b60006139968582860161395c565b92505060206139a78582860161395c565b9150509250929050565b600080604083850312156139c8576139c76136dc565b5b60006139d6858286016138b6565b92505060206139e7858286016138b6565b9150509250929050565b600080600060608486031215613a0a57613a096136dc565b5b6000613a188682870161372a565b9350506020613a29868287016138e2565b9250506040613a3a868287016138e2565b9150509250925092565b600060208284031215613a5a57613a596136dc565b5b6000613a688482850161372a565b91505092915050565b613a7a81613937565b82525050565b6000604082019050613a956000830185613a71565b613aa26020830184613a71565b9392505050565b613ab281613701565b82525050565b6000602082019050613acd6000830184613aa9565b92915050565b600063ffffffff82169050919050565b613aec81613ad3565b8114613af757600080fd5b50565b600081359050613b0981613ae3565b92915050565b60008060008060808587031215613b2957613b286136dc565b5b6000613b3787828801613afa565b9450506020613b4887828801613afa565b9350506040613b5987828801613afa565b9250506060613b6a87828801613afa565b91505092959194509250565b60008060408385031215613b8d57613b8c6136dc565b5b6000613b9b8582860161372a565b9250506020613bac8582860161372a565b9150509250929050565b6000613bc1826136e1565b9050919050565b613bd181613bb6565b8114613bdc57600080fd5b50565b600081359050613bee81613bc8565b92915050565b600060208284031215613c0a57613c096136dc565b5b6000613c1884828501613bdf565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613ca757808604811115613c8357613c82613c21565b5b6001851615613c925780820291505b8081029050613ca085613c50565b9450613c67565b94509492505050565b600082613cc05760019050613d7c565b81613cce5760009050613d7c565b8160018114613ce45760028114613cee57613d1d565b6001915050613d7c565b60ff841115613d0057613cff613c21565b5b8360020a915084821115613d1757613d16613c21565b5b50613d7c565b5060208310610133831016604e8410600b8410161715613d525782820a905083811115613d4d57613d4c613c21565b5b613d7c565b613d5f8484846001613c5d565b92509050818404811115613d7657613d75613c21565b5b81810290505b9392505050565b6000613d8e8261373f565b9150613d9983613868565b9250613dc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613cb0565b905092915050565b6000613dd98261373f565b9150613de48361373f565b9250828202613df28161373f565b91508282048414831517613e0957613e08613c21565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000613e46601083613635565b9150613e5182613e10565b602082019050919050565b60006020820190508181036000830152613e7581613e39565b9050919050565b6000613e878261373f565b9150613e928361373f565b9250828203905081811115613eaa57613ea9613c21565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000613ee6601883613635565b9150613ef182613eb0565b602082019050919050565b60006020820190508181036000830152613f1581613ed9565b9050919050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b6000613f52601a83613635565b9150613f5d82613f1c565b602082019050919050565b60006020820190508181036000830152613f8181613f45565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fc28261373f565b9150613fcd8361373f565b925082613fdd57613fdc613f88565b5b828204905092915050565b7f4e6f204554480000000000000000000000000000000000000000000000000000600082015250565b600061401e600683613635565b915061402982613fe8565b602082019050919050565b6000602082019050818103600083015261404d81614011565b9050919050565b600061405f8261373f565b915061406a8361373f565b925082820190508082111561408257614081613c21565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006140be600a83613635565b91506140c982614088565b602082019050919050565b600060208201905081810360008301526140ed816140b1565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b600061412a600e83613635565b9150614135826140f4565b602082019050919050565b600060208201905081810360008301526141598161411d565b9050919050565b600061416b82613868565b915061417683613868565b9250828201905060ff81111561418f5761418e613c21565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b60006141cb601283613635565b91506141d682614195565b602082019050919050565b600060208201905081810360008301526141fa816141be565b9050919050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b6000614237601083613635565b915061424282614201565b602082019050919050565b600060208201905081810360008301526142668161422a565b9050919050565b7f4d696e2f4d6178206572726f7200000000000000000000000000000000000000600082015250565b60006142a3600d83613635565b91506142ae8261426d565b602082019050919050565b600060208201905081810360008301526142d281614296565b9050919050565b7f4d617820746f6f206c6f77000000000000000000000000000000000000000000600082015250565b600061430f600b83613635565b915061431a826142d9565b602082019050919050565b6000602082019050818103600083015261433e81614302565b9050919050565b7f4d617820746f6f20686967680000000000000000000000000000000000000000600082015250565b600061437b600c83613635565b915061438682614345565b602082019050919050565b600060208201905081810360008301526143aa8161436e565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006143e7600983613635565b91506143f2826143b1565b602082019050919050565b60006020820190508181036000830152614416816143da565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000614453600f83613635565b915061445e8261441d565b602082019050919050565b6000602082019050818103600083015261448281614446565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b60006144bf601d83613635565b91506144ca82614489565b602082019050919050565b600060208201905081810360008301526144ee816144b2565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b600061452b601583613635565b9150614536826144f5565b602082019050919050565b6000602082019050818103600083015261455a8161451e565b9050919050565b60008151905061457081613713565b92915050565b60006020828403121561458c5761458b6136dc565b5b600061459a84828501614561565b91505092915050565b60006040820190506145b86000830185613aa9565b6145c56020830184613aa9565b9392505050565b600081519050919050565b600081905092915050565b60006145ed826145cc565b6145f781856145d7565b9350614607818560208601613646565b80840191505092915050565b600061461f82846145e2565b915081905092915050565b7f4661696c656420616464696e67206c6971756964697479000000000000000000600082015250565b6000614660601783613635565b915061466b8261462a565b602082019050919050565b6000602082019050818103600083015261468f81614653565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b60006146cc601783613635565b91506146d782614696565b602082019050919050565b600060208201905081810360008301526146fb816146bf565b9050919050565b6000819050919050565b600061472761472261471d846136e1565b614702565b6136e1565b9050919050565b60006147398261470c565b9050919050565b600061474b8261472e565b9050919050565b61475b81614740565b82525050565b60006020820190506147766000830184614752565b92915050565b600061478782613937565b915061479283613937565b9250828201905061ffff8111156147ac576147ab613c21565b5b92915050565b7f416c6c2063616e6e6f7420626520300000000000000000000000000000000000600082015250565b60006147e8600f83613635565b91506147f3826147b2565b602082019050919050565b60006020820190508181036000830152614817816147db565b9050919050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614854601d83613635565b915061485f8261481e565b602082019050919050565b6000602082019050818103600083015261488381614847565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b60006148c0600b83613635565b91506148cb8261488a565b602082019050919050565b600060208201905081810360008301526148ef816148b3565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061492c601183613635565b9150614937826148f6565b602082019050919050565b6000602082019050818103600083015261495b8161491f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006149e56149e06149db846149c0565b614702565b61373f565b9050919050565b6149f5816149ca565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a3081613701565b82525050565b6000614a428383614a27565b60208301905092915050565b6000602082019050919050565b6000614a66826149fb565b614a708185614a06565b9350614a7b83614a17565b8060005b83811015614aac578151614a938882614a36565b9750614a9e83614a4e565b925050600181019050614a7f565b5085935050505092915050565b600060a082019050614ace60008301886137eb565b614adb60208301876149ec565b8181036040830152614aed8186614a5b565b9050614afc6060830185613aa9565b614b0960808301846137eb565b9695505050505050565b600060c082019050614b286000830189613aa9565b614b3560208301886137eb565b614b4260408301876149ec565b614b4f60608301866149ec565b614b5c6080830185613aa9565b614b6960a08301846137eb565b979650505050505050565b600081519050614b8381613749565b92915050565b600080600060608486031215614ba257614ba16136dc565b5b6000614bb086828701614b74565b9350506020614bc186828701614b74565b9250506040614bd286828701614b74565b915050925092509256fea26469706673582212204bf2fe6b43dc330292456a9a8efc4037cd3ca0e13f797916cb544285a78bb70664736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c806370a08231116100f7578063a9059cbb11610095578063e8ba854f11610064578063e8ba854f1461067b578063f2fde38b146106a4578063f8978401146106cd578063f8b45b05146106f6576101d8565b8063a9059cbb146105cc578063c3f70b5214610609578063dd62ed3e14610634578063e8078d9414610671576101d8565b80638d3e6e40116100d15780638d3e6e40146105105780638da5cb5b1461054d57806395d89b4114610578578063a6097b0a146105a3576101d8565b806370a0823114610491578063715018a6146104ce57806375f0a874146104e5576101d8565b8063368f48001161016f5780634fcd24461161013e5780634fcd2446146103d657806357ff135a146103ff5780635a90a49e146104285780636373ea6914610465576101d8565b8063368f48001461032c57806346b898341461035557806347062402146103805780634d4ce935146103ab576101d8565b806323b872dd116101ab57806323b872dd146102705780632b14ca56146102ad5780632fb528ba146102d8578063313ce56714610301576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610721565b6040516101ff91906136ba565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190613775565b61075e565b60405161023c91906137d0565b60405180910390f35b34801561025157600080fd5b5061025a610850565b60405161026791906137fa565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190613815565b610873565b6040516102a491906137d0565b60405180910390f35b3480156102b957600080fd5b506102c2610a7d565b6040516102cf9190613884565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa91906138f7565b610a94565b005b34801561030d57600080fd5b50610316610c7a565b6040516103239190613884565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e9190613971565b610c83565b005b34801561036157600080fd5b5061036a610e3f565b60405161037791906137fa565b60405180910390f35b34801561038c57600080fd5b50610395610e49565b6040516103a29190613884565b60405180910390f35b3480156103b757600080fd5b506103c0610e60565b6040516103cd91906137fa565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f891906139b1565b610e6a565b005b34801561040b57600080fd5b50610426600480360381019061042191906139f1565b610f84565b005b34801561043457600080fd5b5061044f600480360381019061044a9190613a44565b611161565b60405161045c91906137d0565b60405180910390f35b34801561047157600080fd5b5061047a6111b7565b604051610488929190613a80565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613a44565b6111e2565b6040516104c591906137fa565b60405180910390f35b3480156104da57600080fd5b506104e361122b565b005b3480156104f157600080fd5b506104fa611334565b6040516105079190613ab8565b60405180910390f35b34801561051c57600080fd5b5061053760048036038101906105329190613a44565b61135e565b60405161054491906137d0565b60405180910390f35b34801561055957600080fd5b506105626113b4565b60405161056f9190613ab8565b60405180910390f35b34801561058457600080fd5b5061058d6113dd565b60405161059a91906136ba565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c59190613b0f565b61141a565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190613775565b611655565b60405161060091906137d0565b60405180910390f35b34801561061557600080fd5b5061061e6116b2565b60405161062b91906137fa565b60405180910390f35b34801561064057600080fd5b5061065b60048036038101906106569190613b76565b6116bc565b60405161066891906137fa565b60405180910390f35b610679611743565b005b34801561068757600080fd5b506106a2600480360381019061069d9190613b76565b611e30565b005b3480156106b057600080fd5b506106cb60048036038101906106c69190613bf4565b6120d7565b005b3480156106d957600080fd5b506106f460048036038101906106ef9190613971565b6121df565b005b34801561070257600080fd5b5061070b61231f565b60405161071891906137fa565b60405180910390f35b60606040518060400160405280600a81526020017f5820477561726469616e00000000000000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161083e91906137fa565b60405180910390a36001905092915050565b60006009600a6108609190613d83565b620f424061086e9190613dce565b905090565b600061087e84612329565b6108bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b490613e5c565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a695781600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109e89190613e7c565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610a74848484612404565b90509392505050565b6000600260019054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1990613efc565b60405180910390fd5b6001601160016101000a81548160ff02191690831515021790555060648260ff161115610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b90613f68565b60405180910390fd5b600060648360ff16600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd69190613dce565b610be09190613fb7565b90506009600a610bf09190613d83565b811115610c0157610c0081612990565b5b8115610c5a57600047905060008111610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4690614034565b60405180910390fd5b610c5847612baf565b505b506000601160016101000a81548160ff0219169083151502179055505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0890613efc565b60405180910390fd5b600060016103e88461ffff166009600a610d2b9190613d83565b620f4240610d399190613dce565b610d439190613dce565b610d4d9190613fb7565b610d579190614054565b9050600454811015610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d95906140d4565b60405180910390fd5b80600481905550600060016103e88461ffff166009600a610dbf9190613d83565b620f4240610dcd9190613dce565b610dd79190613dce565b610de19190613fb7565b610deb9190614054565b9050600554811015610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990614140565b60405180910390fd5b8060058190555050505050565b6000600654905090565b6000600260009054906101000a900460ff16905090565b6000600754905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eef90613efc565b60405180910390fd5b60028183610f069190614160565b60ff161115610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f41906141e1565b60405180910390fd5b81600260006101000a81548160ff021916908360ff16021790555080600260016101000a81548160ff021916908360ff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100990613efc565b60405180910390fd5b808061101b5750815b156110ae57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a49061424d565b60405180910390fd5b5b81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060028054906101000a900461ffff16600260049054906101000a900461ffff16915091509091565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b090613efc565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163600060405161132a9190613ab8565b60405180910390a1565b6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f5847554152440000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149f90613efc565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6114c49190613d83565b620f42406114d29190613dce565b6114dc9190613dce565b6114e69190613fb7565b6006819055508063ffffffff168263ffffffff166009600a6115089190613d83565b620f42406115169190613dce565b6115209190613dce565b61152a9190613fb7565b6007819055506006546007541015611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156e906142b9565b60405180910390fd5b620186a06009600a6115899190613d83565b620f42406115979190613dce565b6115a19190613fb7565b600754116115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90614325565b60405180910390fd5b60646009600a6115f49190613d83565b620f42406116029190613dce565b61160c9190613fb7565b6007541061164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164690614391565b60405180910390fd5b50505050565b600061166033612329565b61169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690613e5c565b60405180910390fd5b6116aa338484612404565b905092915050565b6000600454905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c890613efc565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611874906143fd565b60405180910390fd5b601160009054906101000a900460ff16156118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c490614469565b60405180910390fd5b60003411806118dc5750600047115b61191b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611912906144d5565b60405180910390fd5b6000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161199d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199490614541565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2e9190614576565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb9190614576565b6040518363ffffffff1660e01b8152600401611af89291906145a3565b6020604051808303816000875af1158015611b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3b9190614576565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611bc6600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612c1b565b60085460096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c399190613e7c565b925050819055506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611d0b9190614613565b6000604051808303816000865af19150503d8060008114611d48576040519150601f19603f3d011682016040523d82523d6000602084013e611d4d565b606091505b5050905080611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8890614676565b60405180910390fd5b8060106000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e12612d09565b506000601160016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb590613efc565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f625750601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f98906146e2565b60405180910390fd5b81600260086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215c90613efc565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516121d49190614761565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461226d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226490613efc565b60405180910390fd5b6000818361227b919061477c565b905060008161ffff16116122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb906147fe565b60405180910390fd5b82600260046101000a81548161ffff021916908361ffff160217905550816002806101000a81548161ffff021916908361ffff16021790555080600260066101000a81548161ffff021916908361ffff160217905550505050565b6000600554905090565b60008060009050601160009054906101000a900460ff161561234e57600190506123fb565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123f05750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123fa57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246b9061486a565b60405180910390fd5b601160009054906101000a900460ff1661256a57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561252a5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256090613e5c565b60405180910390fd5b5b601160019054906101000a900460ff161580156125d05750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125de576125dd612df1565b5b600154431080156125f157506003544310155b80156126465750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126ba573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146126b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b0906148d6565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561272257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561277a575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156127ca5761278a848484612ff9565b6127c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c090614942565b60405180910390fd5b5b60006127d7858585613190565b9050600081846127e79190613e7c565b905083600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128349190613e7c565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546128899190614054565b9250508190555080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128db9190614054565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161297b91906137fa565b60405180910390a36001925050509392505050565b61299981613440565b6000600267ffffffffffffffff8111156129b6576129b5614962565b5b6040519080825280602002602001820160405280156129e45781602001602082028036833780820191505090505b50905030816000815181106129fc576129fb614991565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac79190614576565b81600181518110612adb57612ada614991565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b79959493929190614ab9565b600060405180830381600087803b158015612b9357600080fd5b505af1158015612ba7573d6000803e3d6000fd5b505050505050565b600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c17573d6000803e3d6000fd5b5050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115612c4d57600090505b612c5684613440565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401612cbd96959493929190614b13565b60606040518083038185885af1158015612cdb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d009190614b89565b50505050505050565b606460026009600a612d1b9190613d83565b620f4240612d299190613dce565b612d339190613dce565b612d3d9190613fb7565b600481905550606460026009600a612d559190613d83565b620f4240612d639190613dce565b612d6d9190613dce565b612d779190613fb7565b6005819055506001601160006101000a81548160ff02191690831515021790555043600381905550600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff16600354600154612dd59190614054565b612ddf9190614054565b612de99190614054565b600181905550565b6001601160016101000a81548160ff021916908315150217905550600060085490506006548110158015612e315750601160009054906101000a900460ff165b15612fdb576007548110612e455760075490505b600060028060069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1684612e7d9190613dce565b612e879190613fb7565b612e919190613fb7565b905060008183612ea19190613e7c565b90506009600a612eb19190613d83565b811115612fbf57600047905083600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f0c9190614054565b92505081905550612f1c82612990565b8360086000828254612f2e9190613e7c565b9250508190555060008147612f439190613e7c565b90506000600260049054906101000a900461ffff1661ffff161115612fbc576000600260069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1683612f999190613dce565b612fa39190613fb7565b9050612fae85613440565b612fba85826000612c1b565b505b50505b60004790506000811115612fd757612fd681612baf565b5b5050505b506000601160016101000a81548160ff021916908315150217905550565b60008060019050601160009054906101000a900460ff1680156130665750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130bc5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613185576004548311156130d45760009050613184565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613179575060055483600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131779190614054565b115b1561318357600090505b5b5b809150509392505050565b600080601160009054906101000a900460ff1615806131f85750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061324c5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561325a5760009050613435565b601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133b457600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff166003546132df9190614054565b6132e99190614054565b4310613320576064600260009054906101000a900460ff1660ff168461330f9190613dce565b6133199190613fb7565b90506133af565b600060169054906101000a900460ff1660ff166003546133409190614054565b4310613377576064600060159054906101000a900460ff1660ff16846133669190613dce565b6133709190613fb7565b90506133ae565b60035443106133ad576064600060149054906101000a900460ff1660ff16846133a09190613dce565b6133aa9190613fb7565b90505b5b5b613434565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613433576064600260019054906101000a900460ff1660ff16846134269190613dce565b6134309190613fb7565b90505b5b5b809150509392505050565b80600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613627577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161361e91906137fa565b60405180910390a35b50565b600081519050919050565b600082825260208201905092915050565b60005b83811015613664578082015181840152602081019050613649565b60008484015250505050565b6000601f19601f8301169050919050565b600061368c8261362a565b6136968185613635565b93506136a6818560208601613646565b6136af81613670565b840191505092915050565b600060208201905081810360008301526136d48184613681565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061370c826136e1565b9050919050565b61371c81613701565b811461372757600080fd5b50565b60008135905061373981613713565b92915050565b6000819050919050565b6137528161373f565b811461375d57600080fd5b50565b60008135905061376f81613749565b92915050565b6000806040838503121561378c5761378b6136dc565b5b600061379a8582860161372a565b92505060206137ab85828601613760565b9150509250929050565b60008115159050919050565b6137ca816137b5565b82525050565b60006020820190506137e560008301846137c1565b92915050565b6137f48161373f565b82525050565b600060208201905061380f60008301846137eb565b92915050565b60008060006060848603121561382e5761382d6136dc565b5b600061383c8682870161372a565b935050602061384d8682870161372a565b925050604061385e86828701613760565b9150509250925092565b600060ff82169050919050565b61387e81613868565b82525050565b60006020820190506138996000830184613875565b92915050565b6138a881613868565b81146138b357600080fd5b50565b6000813590506138c58161389f565b92915050565b6138d4816137b5565b81146138df57600080fd5b50565b6000813590506138f1816138cb565b92915050565b6000806040838503121561390e5761390d6136dc565b5b600061391c858286016138b6565b925050602061392d858286016138e2565b9150509250929050565b600061ffff82169050919050565b61394e81613937565b811461395957600080fd5b50565b60008135905061396b81613945565b92915050565b60008060408385031215613988576139876136dc565b5b60006139968582860161395c565b92505060206139a78582860161395c565b9150509250929050565b600080604083850312156139c8576139c76136dc565b5b60006139d6858286016138b6565b92505060206139e7858286016138b6565b9150509250929050565b600080600060608486031215613a0a57613a096136dc565b5b6000613a188682870161372a565b9350506020613a29868287016138e2565b9250506040613a3a868287016138e2565b9150509250925092565b600060208284031215613a5a57613a596136dc565b5b6000613a688482850161372a565b91505092915050565b613a7a81613937565b82525050565b6000604082019050613a956000830185613a71565b613aa26020830184613a71565b9392505050565b613ab281613701565b82525050565b6000602082019050613acd6000830184613aa9565b92915050565b600063ffffffff82169050919050565b613aec81613ad3565b8114613af757600080fd5b50565b600081359050613b0981613ae3565b92915050565b60008060008060808587031215613b2957613b286136dc565b5b6000613b3787828801613afa565b9450506020613b4887828801613afa565b9350506040613b5987828801613afa565b9250506060613b6a87828801613afa565b91505092959194509250565b60008060408385031215613b8d57613b8c6136dc565b5b6000613b9b8582860161372a565b9250506020613bac8582860161372a565b9150509250929050565b6000613bc1826136e1565b9050919050565b613bd181613bb6565b8114613bdc57600080fd5b50565b600081359050613bee81613bc8565b92915050565b600060208284031215613c0a57613c096136dc565b5b6000613c1884828501613bdf565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613ca757808604811115613c8357613c82613c21565b5b6001851615613c925780820291505b8081029050613ca085613c50565b9450613c67565b94509492505050565b600082613cc05760019050613d7c565b81613cce5760009050613d7c565b8160018114613ce45760028114613cee57613d1d565b6001915050613d7c565b60ff841115613d0057613cff613c21565b5b8360020a915084821115613d1757613d16613c21565b5b50613d7c565b5060208310610133831016604e8410600b8410161715613d525782820a905083811115613d4d57613d4c613c21565b5b613d7c565b613d5f8484846001613c5d565b92509050818404811115613d7657613d75613c21565b5b81810290505b9392505050565b6000613d8e8261373f565b9150613d9983613868565b9250613dc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613cb0565b905092915050565b6000613dd98261373f565b9150613de48361373f565b9250828202613df28161373f565b91508282048414831517613e0957613e08613c21565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000613e46601083613635565b9150613e5182613e10565b602082019050919050565b60006020820190508181036000830152613e7581613e39565b9050919050565b6000613e878261373f565b9150613e928361373f565b9250828203905081811115613eaa57613ea9613c21565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000613ee6601883613635565b9150613ef182613eb0565b602082019050919050565b60006020820190508181036000830152613f1581613ed9565b9050919050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b6000613f52601a83613635565b9150613f5d82613f1c565b602082019050919050565b60006020820190508181036000830152613f8181613f45565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fc28261373f565b9150613fcd8361373f565b925082613fdd57613fdc613f88565b5b828204905092915050565b7f4e6f204554480000000000000000000000000000000000000000000000000000600082015250565b600061401e600683613635565b915061402982613fe8565b602082019050919050565b6000602082019050818103600083015261404d81614011565b9050919050565b600061405f8261373f565b915061406a8361373f565b925082820190508082111561408257614081613c21565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006140be600a83613635565b91506140c982614088565b602082019050919050565b600060208201905081810360008301526140ed816140b1565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b600061412a600e83613635565b9150614135826140f4565b602082019050919050565b600060208201905081810360008301526141598161411d565b9050919050565b600061416b82613868565b915061417683613868565b9250828201905060ff81111561418f5761418e613c21565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b60006141cb601283613635565b91506141d682614195565b602082019050919050565b600060208201905081810360008301526141fa816141be565b9050919050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b6000614237601083613635565b915061424282614201565b602082019050919050565b600060208201905081810360008301526142668161422a565b9050919050565b7f4d696e2f4d6178206572726f7200000000000000000000000000000000000000600082015250565b60006142a3600d83613635565b91506142ae8261426d565b602082019050919050565b600060208201905081810360008301526142d281614296565b9050919050565b7f4d617820746f6f206c6f77000000000000000000000000000000000000000000600082015250565b600061430f600b83613635565b915061431a826142d9565b602082019050919050565b6000602082019050818103600083015261433e81614302565b9050919050565b7f4d617820746f6f20686967680000000000000000000000000000000000000000600082015250565b600061437b600c83613635565b915061438682614345565b602082019050919050565b600060208201905081810360008301526143aa8161436e565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006143e7600983613635565b91506143f2826143b1565b602082019050919050565b60006020820190508181036000830152614416816143da565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000614453600f83613635565b915061445e8261441d565b602082019050919050565b6000602082019050818103600083015261448281614446565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b60006144bf601d83613635565b91506144ca82614489565b602082019050919050565b600060208201905081810360008301526144ee816144b2565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b600061452b601583613635565b9150614536826144f5565b602082019050919050565b6000602082019050818103600083015261455a8161451e565b9050919050565b60008151905061457081613713565b92915050565b60006020828403121561458c5761458b6136dc565b5b600061459a84828501614561565b91505092915050565b60006040820190506145b86000830185613aa9565b6145c56020830184613aa9565b9392505050565b600081519050919050565b600081905092915050565b60006145ed826145cc565b6145f781856145d7565b9350614607818560208601613646565b80840191505092915050565b600061461f82846145e2565b915081905092915050565b7f4661696c656420616464696e67206c6971756964697479000000000000000000600082015250565b6000614660601783613635565b915061466b8261462a565b602082019050919050565b6000602082019050818103600083015261468f81614653565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b60006146cc601783613635565b91506146d782614696565b602082019050919050565b600060208201905081810360008301526146fb816146bf565b9050919050565b6000819050919050565b600061472761472261471d846136e1565b614702565b6136e1565b9050919050565b60006147398261470c565b9050919050565b600061474b8261472e565b9050919050565b61475b81614740565b82525050565b60006020820190506147766000830184614752565b92915050565b600061478782613937565b915061479283613937565b9250828201905061ffff8111156147ac576147ab613c21565b5b92915050565b7f416c6c2063616e6e6f7420626520300000000000000000000000000000000000600082015250565b60006147e8600f83613635565b91506147f3826147b2565b602082019050919050565b60006020820190508181036000830152614817816147db565b9050919050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614854601d83613635565b915061485f8261481e565b602082019050919050565b6000602082019050818103600083015261488381614847565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b60006148c0600b83613635565b91506148cb8261488a565b602082019050919050565b600060208201905081810360008301526148ef816148b3565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061492c601183613635565b9150614937826148f6565b602082019050919050565b6000602082019050818103600083015261495b8161491f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006149e56149e06149db846149c0565b614702565b61373f565b9050919050565b6149f5816149ca565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a3081613701565b82525050565b6000614a428383614a27565b60208301905092915050565b6000602082019050919050565b6000614a66826149fb565b614a708185614a06565b9350614a7b83614a17565b8060005b83811015614aac578151614a938882614a36565b9750614a9e83614a4e565b925050600181019050614a7f565b5085935050505092915050565b600060a082019050614ace60008301886137eb565b614adb60208301876149ec565b8181036040830152614aed8186614a5b565b9050614afc6060830185613aa9565b614b0960808301846137eb565b9695505050505050565b600060c082019050614b286000830189613aa9565b614b3560208301886137eb565b614b4260408301876149ec565b614b4f60608301866149ec565b614b5c6080830185613aa9565b614b6960a08301846137eb565b979650505050505050565b600081519050614b8381613749565b92915050565b600080600060608486031215614ba257614ba16136dc565b5b6000614bb086828701614b74565b9350506020614bc186828701614b74565b9250506040614bd286828701614b74565b915050925092509256fea26469706673582212204bf2fe6b43dc330292456a9a8efc4037cd3ca0e13f797916cb544285a78bb70664736f6c63430008130033

Deployed Bytecode Sourcemap

2378:14475:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5598:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5936:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5328:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6393:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11976:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16281:567;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5422:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13604:462;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13410:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11886:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13506:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12211:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11628:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11390:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12070:135;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5684:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2185:137;;;;;;;;;;;;;:::i;:::-;;12745:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11507:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1935:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5508:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14074:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6160:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13306:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5795:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7130:805;;;:::i;:::-;;12854:343;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2022:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12401:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13205:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5598:80;5646:13;5670:5;;;;;;;;;;;;;;;;;5663:12;;5598:80;:::o;5936:216::-;6011:4;6063:6;6028:11;:23;6040:10;6028:23;;;;;;;;;;;;;;;:32;6052:7;6028:32;;;;;;;;;;;;;;;:41;;;;6106:7;6085:37;;6094:10;6085:37;;;6115:6;6085:37;;;;;;:::i;:::-;;;;;;;;6140:4;6133:11;;5936:216;;;;:::o;5328:88::-;5383:7;2457:1;2518:2;:13;;;;:::i;:::-;2505:9;:27;;;;:::i;:::-;5394:19;;5328:88;:::o;6393:404::-;6493:4;6518:25;6536:6;6518:17;:25::i;:::-;6510:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;6613:17;6578:11;:19;6590:6;6578:19;;;;;;;;;;;;;;;:31;6598:10;6578:31;;;;;;;;;;;;;;;;:52;6575:157;;6714:6;6680:11;:19;6692:6;6680:19;;;;;;;;;;;;;;;:31;6700:10;6680:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6646:11;:19;6658:6;6646:19;;;;;;;;;;;;;;;:31;6666:10;6646:31;;;;;;;;;;;;;;;:74;;;;6575:157;6749:40;6763:6;6771:9;6782:6;6749:13;:40::i;:::-;6742:47;;6393:404;;;;;:::o;11976:86::-;12017:5;12042:12;;;;;;;;;;;12035:19;;11976:86;:::o;16281:567::-;1872:6;;;;;;;;;;1858:20;;:10;:20;;;1850:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4196:4:::1;4183:10;;:17;;;;;;;;;;;;;;;;;;16419:3:::2;16399:16;:23;;;;16391:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;16464:20;16533:3;16514:16;16487:43;;:9;:24;16505:4;16487:24;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:49;;;;:::i;:::-;16464:72;;2457:1;16566:2;:15;;;;:::i;:::-;16551:12;:30;16547:97;;;16598:34;16619:12;16598:20;:34::i;:::-;16547:97;16658:7;16654:187;;;16683:18;16704:21;16683:42;;16761:1;16748:10;:14;16740:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;16788:40;16806:21;16788:17;:40::i;:::-;16667:174;16654:187;16380:468;4238:5:::1;4225:10;;:18;;;;;;;;;;;;;;;;;;16281:567:::0;;:::o;5422:80::-;5474:5;2457:1;5483:16;;5422:80;:::o;13604:462::-;1872:6;;;;;;;;;;1858:20;;:10;:20;;;1850:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13710:16:::1;13776:1;13769:4;13744:22;13729:37;;2457:1;2518:2;:13;;;;:::i;:::-;2505:9;:27;;;;:::i;:::-;13729:37;;;;:::i;:::-;:44;;;;:::i;:::-;:48;;;;:::i;:::-;13710:67;;13808:12;;13796:8;:24;;13788:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13861:8;13846:12;:23;;;;13880:20;13945:1;13938:4;13918:17;13903:32;;2457:1;2518:2;:13;;;;:::i;:::-;2505:9;:27;;;;:::i;:::-;13903:32;;;;:::i;:::-;:39;;;;:::i;:::-;:43;;;;:::i;:::-;13880:66;;13981:16;;13965:12;:32;;13957:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;14046:12;14027:16;:31;;;;13699:367;;13604:462:::0;;:::o;13410:90::-;13454:7;13481:11;;13474:18;;13410:90;:::o;11886:84::-;11926:5;11951:11;;;;;;;;;;;11944:18;;11886:84;:::o;13506:90::-;13550:7;13577:11;;13570:18;;13506:90;:::o;12211:182::-;1872:6;;;;;;;;;;1858:20;;:10;:20;;;1850:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12303:1:::1;12295:4;12289:3;:10;;;;:::i;:::-;:15;;;;12281:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12352:3;12338:11;;:17;;;;;;;;;;;;;;;;;;12381:4;12366:12;;:19;;;;;;;;;;;;;;;;;;12211:182:::0;;:::o;11628:250::-;1872:6;;;;;;;;;;1858:20;;:10;:20;;;1850:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11725:8:::1;:18;;;;11737:6;11725:18;11721:72;;;11756:5;:13;11762:6;11756:13;;;;;;;;;;;;;;;;;;;;;;;;;11755:14;11747:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;11721:72;11823:6;11803:7;:17;11812:6;11803:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11862:8;11840:9;:19;11851:6;11840:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;11628:250:::0;;;:::o;11390:110::-;11453:4;11477:7;:15;11485:6;11477:15;;;;;;;;;;;;;;;;;;;;;;;;;11470:22;;11390:110;;;:::o;12070:135::-;12113:16;12131:9;12163:19;;;;;;;;;;12184:12;;;;;;;;;;;12154:43;;;;12070:135;;:::o;5684:105::-;5750:7;5768:9;:18;5778:7;5768:18;;;;;;;;;;;;;;;;5761:25;;5684:105;;;:::o;2185:137::-;1872:6;;;;;;;;;;1858:20;;:10;:20;;;1850:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2262:1:::1;2245:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2281:32;2310:1;2281:32;;;;;;:::i;:::-;;;;;;;;2185:137::o:0;12745:101::-;12795:7;12822:16;;;;;;;;;;;12815:23;;12745:101;:::o;11507:114::-;11572:4;11596:9;:17;11606:6;11596:17;;;;;;;;;;;;;;;;;;;;;;;;;11589:24;;11507:114;;;:::o;1935:81::-;1973:7;2001:6;;;;;;;;;;;1994:13;;1935:81;:::o;5508:84::-;5558:13;5582:7;;;;;;;;;;;;;;;;;5575:14;;5508:84;:::o;14074:436::-;1872:6;;;;;;;;;;1858:20;;:10;:20;;;1850:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14236:10:::1;14210:36;;14225:8;14210:23;;2457:1;2518:2;:13;;;;:::i;:::-;2505:9;:27;;;;:::i;:::-;14210:23;;;;:::i;:::-;:36;;;;:::i;:::-;14196:11;:50;;;;14297:10;14271:36;;14286:8;14271:23;;2457:1;2518:2;:13;;;;:::i;:::-;2505:9;:27;;;;:::i;:::-;14271:23;;;;:::i;:::-;:36;;;;:::i;:::-;14257:11;:50;;;;14339:11;;14326;;:24;;14318:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;14414:6;2457:1;2518:2;:13;;;;:::i;:::-;2505:9;:27;;;;:::i;:::-;14399:21;;;;:::i;:::-;14387:11;;:33;14379:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14482:3;2457:1;2518:2;:13;;;;:::i;:::-;2505:9;:27;;;;:::i;:::-;14467:18;;;;:::i;:::-;14455:11;;:30;14447:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;14074:436:::0;;;;:::o;6160:225::-;6240:4;6265:29;6283:10;6265:17;:29::i;:::-;6257:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6333:44;6347:10;6359:9;6370:6;6333:13;:44::i;:::-;6326:51;;6160:225;;;;:::o;13306:96::-;13355:7;13382:12;;13375:19;;13306:96;:::o;5795:133::-;5879:7;5897:11;:19;5909:6;5897:19;;;;;;;;;;;;;;;:28;5917:7;5897:28;;;;;;;;;;;;;;;;5890:35;;5795:133;;;;:::o;7130:805::-;1872:6;;;;;;;;;;1858:20;;:10;:20;;;1850:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4196:4:::1;4183:10;;:17;;;;;;;;;;;;;;;;;;7234:1:::2;7212:24;;:10;;;;;;;;;;;:24;;;7204:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7270:12;;;;;;;;;;;7269:13;7261:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7333:1;7321:9;:13;:40;;;;7360:1;7338:21;:23;7321:40;7313:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7439:1;7414:9;:24;7432:4;7414:24;;;;;;;;;;;;;;;;:26;7406:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7508:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7490:58;;;7557:4;7564:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7490:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7477:10;;:113;;;;;;;;;;;;;;;;;;7601:69;7615:9;:24;7633:4;7615:24;;;;;;;;;;;;;;;;7641:21;7664:5;7601:13;:69::i;:::-;7706:10;;7681:9;:21;7691:10;;;;;;;;;;;7681:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;7728:17;7750:10;;;;;;;;;;;:15;;7766:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7750:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7727:73;;;7819:12;7811:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;7890:12;7870:5;:17;7876:10;;;;;;;;;;;7870:17;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7913:14;:12;:14::i;:::-;7193:742;4238:5:::1;4225:10;;:18;;;;;;;;;;;;;;;;;;7130:805::o:0;12854:343::-;1872:6;;;;;;;;;;1858:20;;:10;:20;;;1850:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12953:5:::1;:16;12959:9;12953:16;;;;;;;;;;;;;;;;;;;;;;;;;12952:17;:37;;;;;12974:5;:15;12980:8;12974:15;;;;;;;;;;;;;;;;;;;;;;;;;12973:16;12952:37;12944:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13065:9;13038:16;;:37;;;;;;;;;;;;;;;;;;13097:8;13086;;:19;;;;;;;;;;;;;;;;;;13147:4;13126:7;:18;13134:9;13126:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13185:4;13162:9;:20;13172:9;13162:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12854:343:::0;;:::o;2022:157::-;1872:6;;;;;;;;;;1858:20;;:10;:20;;;1850:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2115:8:::1;2106:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2140:30;2161:8;2140:30;;;;;;:::i;:::-;;;;;;;;2022:157:::0;:::o;12401:336::-;1872:6;;;;;;;;;;1858:20;;:10;:20;;;1850:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12497:18:::1;12533:15;12518:12;:30;;;;:::i;:::-;12497:51;;12582:1;12568:11;:15;;;12559:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;12629:12;12614;;:27;;;;;;;;;;;;;;;;;;12674:15;12652:19;::::0;:37:::1;;;;;;;;;;;;;;;;;;12718:11;12700:15;;:29;;;;;;;;;;;;;;;;;;12486:251;12401:336:::0;;:::o;13205:95::-;13249:7;13276:16;;13269:23;;13205:95;:::o;10236:279::-;10301:4;10317:16;10336:5;10317:24;;10357:12;;;;;;;;;;;10352:124;;;10388:4;10374:18;;10352:124;;;10415:7;:15;10423:6;10415:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;10434:9;:17;10444:6;10434:17;;;;;;;;;;;;;;;;;;;;;;;;;10415:36;10411:65;;;10469:4;10455:18;;10411:65;10352:124;10496:11;10489:18;;;10236:279;;;:::o;8651:1074::-;8743:4;8786:1;8768:20;;:6;:20;;;8760:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8838:12;;;;;;;;;;;8833:89;;8862:7;:15;8870:6;8862:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;8881:9;:17;8891:6;8881:17;;;;;;;;;;;;;;;;;;;;;;;;;8862:36;8854:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8833:89;8938:10;;;;;;;;;;;8937:11;:31;;;;;8952:5;:16;8958:9;8952:16;;;;;;;;;;;;;;;;;;;;;;;;;8937:31;8932:64;;;8973:20;:18;:20::i;:::-;8932:64;9026:13;;9011:12;:28;:60;;;;;9059:12;;9043;:28;;9011:60;:77;;;;;9075:5;:13;9081:6;9075:13;;;;;;;;;;;;;;;;;;;;;;;;;9011:77;9006:158;;;9127:9;9114:22;;:9;:22;;;9106:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9006:158;9197:4;9179:23;;:6;:23;;;;:53;;;;;9227:4;9206:26;;:9;:26;;;;9179:53;:73;;;;;9246:6;;;;;;;;;;9236:16;;:6;:16;;;;9179:73;9174:179;;;9279:39;9292:6;9300:9;9311:6;9279:12;:39::i;:::-;9271:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;9174:179;9363:18;9384:40;9398:6;9406:9;9417:6;9384:13;:40::i;:::-;9363:61;;9435:23;9470:10;9461:6;:19;;;;:::i;:::-;9435:45;;9531:6;9511:9;:17;9521:6;9511:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9491:9;:17;9501:6;9491:17;;;;;;;;;;;;;;;:46;;;;9562:10;9548;;:24;;;;;;;:::i;:::-;;;;;;;;9629:15;9606:9;:20;9616:9;9606:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9583:9;:20;9593:9;9583:20;;;;;;;;;;;;;;;:61;;;;9677:9;9660:35;;9669:6;9660:35;;;9688:6;9660:35;;;;;;:::i;:::-;;;;;;;;9713:4;9706:11;;;;8651:1074;;;;;:::o;15796:366::-;15866:27;15881:11;15866:14;:27::i;:::-;15904:21;15942:1;15928:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15904:40;;15973:4;15955;15960:1;15955:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15999:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15989:4;15994:1;15989:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;16035:18;;;;;;;;;;;:69;;;16105:11;16117:1;16119:4;16132;16138:15;16035:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15855:307;15796:366;:::o;16170:103::-;16232:16;;;;;;;;;;;:25;;:33;16258:6;16232:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16170:103;:::o;7943:385::-;8046:24;8073:8;;;;;;;;;;;8046:35;;8097:8;8092:50;;;8137:1;8110:29;;8092:50;8152:28;8167:12;8152:14;:28::i;:::-;8191:18;;;;;;;;;;;:34;;;8233:13;8258:4;8265:12;8279:1;8282;8285:16;8303:15;8191:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8035:293;7943:385;;;:::o;8336:307::-;8418:3;8414:1;2457;2518:2;:13;;;;:::i;:::-;2505:9;:27;;;;:::i;:::-;8399:16;;;;:::i;:::-;:22;;;;:::i;:::-;8380:12;:41;;;;8471:3;8467:1;2457;2518:2;:13;;;;:::i;:::-;2505:9;:27;;;;:::i;:::-;8452:16;;;;:::i;:::-;:22;;;;:::i;:::-;8433:16;:41;;;;8500:4;8485:12;;:19;;;;;;;;;;;;;;;;;;8530:12;8515;:27;;;;8619:16;;;;;;;;;;;8569:66;;8600:16;;;;;;;;;;;8569:47;;8585:12;;8569:13;;:28;;;;:::i;:::-;:47;;;;:::i;:::-;:66;;;;:::i;:::-;8553:13;:82;;;;8336:307::o;14520:1268::-;4196:4;4183:10;;:17;;;;;;;;;;;;;;;;;;14581:27:::1;14611:10;;14581:40;;14660:11;;14637:19;:34;;:50;;;;;14675:12;;;;;;;;;;;14637:50;14632:1149;;;14733:11;;14710:19;:34;14705:80;;14771:11;;14749:33;;14705:80;14799:20;14877:1;14859:15:::0;::::1;;;;;;;;;;14822:52;;14844:12;;;;;;;;;;;14822:34;;:19;:34;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;14799:79;;14907:21;14953:12;14931:19;:34;;;;:::i;:::-;14907:58;;2457:1;15000:2;:13;;;;:::i;:::-;14984;:29;14980:639;;;15035:19;15057:21;15035:43;;15125:19;15097:9;:24;15115:4;15097:24;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;15163:35;15184:13;15163:20;:35::i;:::-;15231:19;15217:10;;:33;;;;;;;:::i;:::-;;;;;;;;15269:19;15315:11;15291:21;:35;;;;:::i;:::-;15269:57;;15365:1;15350:12;;;;;;;;;;;:16;;;15345:259;;;15392:21;15445:15;;;;;;;;;;;15416:44;;15430:12;;;;;;;;;;;15416:26;;:11;:26;;;;:::i;:::-;:44;;;;:::i;:::-;15392:68;;15484:28;15499:12;15484:14;:28::i;:::-;15535:49;15549:12;15563:13;15578:5;15535:13;:49::i;:::-;15369:235;15345:259;15016:603;;14980:639;15633:27;15663:21;15633:51;;15724:1;15702:19;:23;15699:71;;;15729:38;15747:19;15729:17;:38::i;:::-;15699:71;14690:1091;;;14632:1149;14570:1218;4238:5:::0;4225:10;;:18;;;;;;;;;;;;;;;;;;14520:1268::o;9733:495::-;9837:4;9854:21;9878:4;9854:28;;9898:12;;;;;;;;;;;:34;;;;;9915:9;:17;9925:6;9915:17;;;;;;;;;;;;;;;;;;;;;;;;;9914:18;9898:34;:59;;;;;9937:9;:20;9947:9;9937:20;;;;;;;;;;;;;;;;;;;;;;;;;9936:21;9898:59;9893:294;;;9997:12;;9980:14;:29;9975:201;;;10033:5;10014:24;;9975:201;;;10066:5;:16;10072:9;10066:16;;;;;;;;;;;;;;;;;;;;;;;;;10065:17;:79;;;;;10127:16;;10110:14;10087:9;:20;10097:9;10087:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;10065:79;10060:116;;;10168:5;10149:24;;10060:116;9975:201;9893:294;10204:16;10197:23;;;9733:495;;;;;:::o;10523:857::-;10620:7;10640:17;10684:12;;;;;;;;;;;10683:13;:32;;;;10700:7;:15;10708:6;10700:15;;;;;;;;;;;;;;;;;;;;;;;;;10683:32;:54;;;;10719:7;:18;10727:9;10719:18;;;;;;;;;;;;;;;;;;;;;;;;;10683:54;10678:656;;;10768:1;10756:13;;10678:656;;;10793:5;:13;10799:6;10793:13;;;;;;;;;;;;;;;;;;;;;;;;;10788:546;;;10880:16;;;;;;;;;;;10846:50;;10861:16;;;;;;;;;;;10846:31;;:12;;:31;;;;:::i;:::-;:50;;;;:::i;:::-;10830:12;:66;10825:400;;10953:3;10939:11;;;;;;;;;;;10930:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;10918:38;;10825:400;;;11015:16;;;;;;;;;;;11000:31;;:12;;:31;;;;:::i;:::-;10984:12;:47;10979:246;;11090:3;11074:13;;;;;;;;;;;11065:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11053:40;;10979:246;;;11136:12;;11120;:28;11115:110;;11206:3;11190:13;;;;;;;;;;;11181:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11169:40;;11115:110;10979:246;10825:400;10788:546;;;11247:5;:16;11253:9;11247:16;;;;;;;;;;;;;;;;;;;;;;;;;11242:92;;;11318:3;11303:12;;;;;;;;;;;11294:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;11282:39;;11242:92;10788:546;10678:656;11363:9;11356:16;;;10523:857;;;;;:::o;6805:317::-;6925:12;6876:11;:26;6896:4;6876:26;;;;;;;;;;;;;;;:46;3854:42;6876:46;;;;;;;;;;;;;;;;:61;6871:244;;;7004:17;6955:11;:26;6975:4;6955:26;;;;;;;;;;;;;;;:46;3854:42;6955:46;;;;;;;;;;;;;;;:66;;;;3854:42;7041:62;;7058:4;7041:62;;;7085:17;7041:62;;;;;;:::i;:::-;;;;;;;;6871:244;6805: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:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:118::-;4924:22;4940:5;4924:22;:::i;:::-;4917:5;4914:33;4904:61;;4961:1;4958;4951:12;4904:61;4853:118;:::o;4977:135::-;5021:5;5059:6;5046:20;5037:29;;5075:31;5100:5;5075:31;:::i;:::-;4977:135;;;;:::o;5118:116::-;5188:21;5203:5;5188:21;:::i;:::-;5181:5;5178:32;5168:60;;5224:1;5221;5214:12;5168:60;5118:116;:::o;5240:133::-;5283:5;5321:6;5308:20;5299:29;;5337:30;5361:5;5337:30;:::i;:::-;5240:133;;;;:::o;5379:464::-;5442:6;5450;5499:2;5487:9;5478:7;5474:23;5470:32;5467:119;;;5505:79;;:::i;:::-;5467:119;5625:1;5650:51;5693:7;5684:6;5673:9;5669:22;5650:51;:::i;:::-;5640:61;;5596:115;5750:2;5776:50;5818:7;5809:6;5798:9;5794:22;5776:50;:::i;:::-;5766:60;;5721:115;5379:464;;;;;:::o;5849:89::-;5885:7;5925:6;5918:5;5914:18;5903:29;;5849:89;;;:::o;5944:120::-;6016:23;6033:5;6016:23;:::i;:::-;6009:5;6006:34;5996:62;;6054:1;6051;6044:12;5996:62;5944:120;:::o;6070:137::-;6115:5;6153:6;6140:20;6131:29;;6169:32;6195:5;6169:32;:::i;:::-;6070:137;;;;:::o;6213:470::-;6279:6;6287;6336:2;6324:9;6315:7;6311:23;6307:32;6304:119;;;6342:79;;:::i;:::-;6304:119;6462:1;6487:52;6531:7;6522:6;6511:9;6507:22;6487:52;:::i;:::-;6477:62;;6433:116;6588:2;6614:52;6658:7;6649:6;6638:9;6634:22;6614:52;:::i;:::-;6604:62;;6559:117;6213:470;;;;;:::o;6689:466::-;6753:6;6761;6810:2;6798:9;6789:7;6785:23;6781:32;6778:119;;;6816:79;;:::i;:::-;6778:119;6936:1;6961:51;7004:7;6995:6;6984:9;6980:22;6961:51;:::i;:::-;6951:61;;6907:115;7061:2;7087:51;7130:7;7121:6;7110:9;7106:22;7087:51;:::i;:::-;7077:61;;7032:116;6689:466;;;;;:::o;7161:607::-;7232:6;7240;7248;7297:2;7285:9;7276:7;7272:23;7268:32;7265:119;;;7303:79;;:::i;:::-;7265:119;7423:1;7448:53;7493:7;7484:6;7473:9;7469:22;7448:53;:::i;:::-;7438:63;;7394:117;7550:2;7576:50;7618:7;7609:6;7598:9;7594:22;7576:50;:::i;:::-;7566:60;;7521:115;7675:2;7701:50;7743:7;7734:6;7723:9;7719:22;7701:50;:::i;:::-;7691:60;;7646:115;7161:607;;;;;:::o;7774:329::-;7833:6;7882:2;7870:9;7861:7;7857:23;7853:32;7850:119;;;7888:79;;:::i;:::-;7850:119;8008:1;8033:53;8078:7;8069:6;8058:9;8054:22;8033:53;:::i;:::-;8023:63;;7979:117;7774:329;;;;:::o;8109:115::-;8194:23;8211:5;8194:23;:::i;:::-;8189:3;8182:36;8109:115;;:::o;8230:324::-;8347:4;8385:2;8374:9;8370:18;8362:26;;8398:69;8464:1;8453:9;8449:17;8440:6;8398:69;:::i;:::-;8477:70;8543:2;8532:9;8528:18;8519:6;8477:70;:::i;:::-;8230:324;;;;;:::o;8560:118::-;8647:24;8665:5;8647:24;:::i;:::-;8642:3;8635:37;8560:118;;:::o;8684:222::-;8777:4;8815:2;8804:9;8800:18;8792:26;;8828:71;8896:1;8885:9;8881:17;8872:6;8828:71;:::i;:::-;8684:222;;;;:::o;8912:93::-;8948:7;8988:10;8981:5;8977:22;8966:33;;8912:93;;;:::o;9011:120::-;9083:23;9100:5;9083:23;:::i;:::-;9076:5;9073:34;9063:62;;9121:1;9118;9111:12;9063:62;9011:120;:::o;9137:137::-;9182:5;9220:6;9207:20;9198:29;;9236:32;9262:5;9236:32;:::i;:::-;9137:137;;;;:::o;9280:757::-;9362:6;9370;9378;9386;9435:3;9423:9;9414:7;9410:23;9406:33;9403:120;;;9442:79;;:::i;:::-;9403:120;9562:1;9587:52;9631:7;9622:6;9611:9;9607:22;9587:52;:::i;:::-;9577:62;;9533:116;9688:2;9714:52;9758:7;9749:6;9738:9;9734:22;9714:52;:::i;:::-;9704:62;;9659:117;9815:2;9841:52;9885:7;9876:6;9865:9;9861:22;9841:52;:::i;:::-;9831:62;;9786:117;9942:2;9968:52;10012:7;10003:6;9992:9;9988:22;9968:52;:::i;:::-;9958:62;;9913:117;9280:757;;;;;;;:::o;10043:474::-;10111:6;10119;10168:2;10156:9;10147:7;10143:23;10139:32;10136:119;;;10174:79;;:::i;:::-;10136:119;10294:1;10319:53;10364:7;10355:6;10344:9;10340:22;10319:53;:::i;:::-;10309:63;;10265:117;10421:2;10447:53;10492:7;10483:6;10472:9;10468:22;10447:53;:::i;:::-;10437:63;;10392:118;10043:474;;;;;:::o;10523:104::-;10568:7;10597:24;10615:5;10597:24;:::i;:::-;10586:35;;10523:104;;;:::o;10633:138::-;10714:32;10740:5;10714:32;:::i;:::-;10707:5;10704:43;10694:71;;10761:1;10758;10751:12;10694:71;10633:138;:::o;10777:155::-;10831:5;10869:6;10856:20;10847:29;;10885:41;10920:5;10885:41;:::i;:::-;10777:155;;;;:::o;10938:345::-;11005:6;11054:2;11042:9;11033:7;11029:23;11025:32;11022:119;;;11060:79;;:::i;:::-;11022:119;11180:1;11205:61;11258:7;11249:6;11238:9;11234:22;11205:61;:::i;:::-;11195:71;;11151:125;10938:345;;;;:::o;11289:180::-;11337:77;11334:1;11327:88;11434:4;11431:1;11424:15;11458:4;11455:1;11448:15;11475:102;11517:8;11564:5;11561:1;11557:13;11536:34;;11475:102;;;:::o;11583:848::-;11644:5;11651:4;11675:6;11666:15;;11699:5;11690:14;;11713:712;11734:1;11724:8;11721:15;11713:712;;;11829:4;11824:3;11820:14;11814:4;11811:24;11808:50;;;11838:18;;:::i;:::-;11808:50;11888:1;11878:8;11874:16;11871:451;;;12303:4;12296:5;12292:16;12283:25;;11871:451;12353:4;12347;12343:15;12335:23;;12383:32;12406:8;12383:32;:::i;:::-;12371:44;;11713:712;;;11583:848;;;;;;;:::o;12437:1073::-;12491:5;12682:8;12672:40;;12703:1;12694:10;;12705:5;;12672:40;12731:4;12721:36;;12748:1;12739:10;;12750:5;;12721:36;12817:4;12865:1;12860:27;;;;12901:1;12896:191;;;;12810:277;;12860:27;12878:1;12869:10;;12880:5;;;12896:191;12941:3;12931:8;12928:17;12925:43;;;12948:18;;:::i;:::-;12925:43;12997:8;12994:1;12990:16;12981:25;;13032:3;13025:5;13022:14;13019:40;;;13039:18;;:::i;:::-;13019:40;13072:5;;;12810:277;;13196:2;13186:8;13183:16;13177:3;13171:4;13168:13;13164:36;13146:2;13136:8;13133:16;13128:2;13122:4;13119:12;13115:35;13099:111;13096:246;;;13252:8;13246:4;13242:19;13233:28;;13287:3;13280:5;13277:14;13274:40;;;13294:18;;:::i;:::-;13274:40;13327:5;;13096:246;13367:42;13405:3;13395:8;13389:4;13386:1;13367:42;:::i;:::-;13352:57;;;;13441:4;13436:3;13432:14;13425:5;13422:25;13419:51;;;13450:18;;:::i;:::-;13419:51;13499:4;13492:5;13488:16;13479:25;;12437:1073;;;;;;:::o;13516:281::-;13574:5;13598:23;13616:4;13598:23;:::i;:::-;13590:31;;13642:25;13658:8;13642:25;:::i;:::-;13630:37;;13686:104;13723:66;13713:8;13707:4;13686:104;:::i;:::-;13677:113;;13516:281;;;;:::o;13803:410::-;13843:7;13866:20;13884:1;13866:20;:::i;:::-;13861:25;;13900:20;13918:1;13900:20;:::i;:::-;13895:25;;13955:1;13952;13948:9;13977:30;13995:11;13977:30;:::i;:::-;13966:41;;14156:1;14147:7;14143:15;14140:1;14137:22;14117:1;14110:9;14090:83;14067:139;;14186:18;;:::i;:::-;14067:139;13851:362;13803:410;;;;:::o;14219:166::-;14359:18;14355:1;14347:6;14343:14;14336:42;14219:166;:::o;14391:366::-;14533:3;14554:67;14618:2;14613:3;14554:67;:::i;:::-;14547:74;;14630:93;14719:3;14630:93;:::i;:::-;14748:2;14743:3;14739:12;14732:19;;14391:366;;;:::o;14763:419::-;14929:4;14967:2;14956:9;14952:18;14944:26;;15016:9;15010:4;15006:20;15002:1;14991:9;14987:17;14980:47;15044:131;15170:4;15044:131;:::i;:::-;15036:139;;14763:419;;;:::o;15188:194::-;15228:4;15248:20;15266:1;15248:20;:::i;:::-;15243:25;;15282:20;15300:1;15282:20;:::i;:::-;15277:25;;15326:1;15323;15319:9;15311:17;;15350:1;15344:4;15341:11;15338:37;;;15355:18;;:::i;:::-;15338:37;15188:194;;;;:::o;15388:174::-;15528:26;15524:1;15516:6;15512:14;15505:50;15388:174;:::o;15568:366::-;15710:3;15731:67;15795:2;15790:3;15731:67;:::i;:::-;15724:74;;15807:93;15896:3;15807:93;:::i;:::-;15925:2;15920:3;15916:12;15909:19;;15568:366;;;:::o;15940:419::-;16106:4;16144:2;16133:9;16129:18;16121:26;;16193:9;16187:4;16183:20;16179:1;16168:9;16164:17;16157:47;16221:131;16347:4;16221:131;:::i;:::-;16213:139;;15940:419;;;:::o;16365:176::-;16505:28;16501:1;16493:6;16489:14;16482:52;16365:176;:::o;16547:366::-;16689:3;16710:67;16774:2;16769:3;16710:67;:::i;:::-;16703:74;;16786:93;16875:3;16786:93;:::i;:::-;16904:2;16899:3;16895:12;16888:19;;16547:366;;;:::o;16919:419::-;17085:4;17123:2;17112:9;17108:18;17100:26;;17172:9;17166:4;17162:20;17158:1;17147:9;17143:17;17136:47;17200:131;17326:4;17200:131;:::i;:::-;17192:139;;16919:419;;;:::o;17344:180::-;17392:77;17389:1;17382:88;17489:4;17486:1;17479:15;17513:4;17510:1;17503:15;17530:185;17570:1;17587:20;17605:1;17587:20;:::i;:::-;17582:25;;17621:20;17639:1;17621:20;:::i;:::-;17616:25;;17660:1;17650:35;;17665:18;;:::i;:::-;17650:35;17707:1;17704;17700:9;17695:14;;17530:185;;;;:::o;17721:156::-;17861:8;17857:1;17849:6;17845:14;17838:32;17721:156;:::o;17883:365::-;18025:3;18046:66;18110:1;18105:3;18046:66;:::i;:::-;18039:73;;18121:93;18210:3;18121:93;:::i;:::-;18239:2;18234:3;18230:12;18223:19;;17883:365;;;:::o;18254:419::-;18420:4;18458:2;18447:9;18443:18;18435:26;;18507:9;18501:4;18497:20;18493:1;18482:9;18478:17;18471:47;18535:131;18661:4;18535:131;:::i;:::-;18527:139;;18254:419;;;:::o;18679:191::-;18719:3;18738:20;18756:1;18738:20;:::i;:::-;18733:25;;18772:20;18790:1;18772:20;:::i;:::-;18767:25;;18815:1;18812;18808:9;18801:16;;18836:3;18833:1;18830:10;18827:36;;;18843:18;;:::i;:::-;18827:36;18679:191;;;;:::o;18876:160::-;19016:12;19012:1;19004:6;19000:14;18993:36;18876:160;:::o;19042:366::-;19184:3;19205:67;19269:2;19264:3;19205:67;:::i;:::-;19198:74;;19281:93;19370:3;19281:93;:::i;:::-;19399:2;19394:3;19390:12;19383:19;;19042:366;;;:::o;19414:419::-;19580:4;19618:2;19607:9;19603:18;19595:26;;19667:9;19661:4;19657:20;19653:1;19642:9;19638:17;19631:47;19695:131;19821:4;19695:131;:::i;:::-;19687:139;;19414:419;;;:::o;19839:164::-;19979:16;19975:1;19967:6;19963:14;19956:40;19839:164;:::o;20009:366::-;20151:3;20172:67;20236:2;20231:3;20172:67;:::i;:::-;20165:74;;20248:93;20337:3;20248:93;:::i;:::-;20366:2;20361:3;20357:12;20350:19;;20009:366;;;:::o;20381:419::-;20547:4;20585:2;20574:9;20570:18;20562:26;;20634:9;20628:4;20624:20;20620:1;20609:9;20605:17;20598:47;20662:131;20788:4;20662:131;:::i;:::-;20654:139;;20381:419;;;:::o;20806:188::-;20844:3;20863:18;20879:1;20863:18;:::i;:::-;20858:23;;20895:18;20911:1;20895:18;:::i;:::-;20890:23;;20936:1;20933;20929:9;20922:16;;20959:4;20954:3;20951:13;20948:39;;;20967:18;;:::i;:::-;20948:39;20806:188;;;;:::o;21000:168::-;21140:20;21136:1;21128:6;21124:14;21117:44;21000:168;:::o;21174:366::-;21316:3;21337:67;21401:2;21396:3;21337:67;:::i;:::-;21330:74;;21413:93;21502:3;21413:93;:::i;:::-;21531:2;21526:3;21522:12;21515:19;;21174:366;;;:::o;21546:419::-;21712:4;21750:2;21739:9;21735:18;21727:26;;21799:9;21793:4;21789:20;21785:1;21774:9;21770:17;21763:47;21827:131;21953:4;21827:131;:::i;:::-;21819:139;;21546:419;;;:::o;21971:166::-;22111:18;22107:1;22099:6;22095:14;22088:42;21971:166;:::o;22143:366::-;22285:3;22306:67;22370:2;22365:3;22306:67;:::i;:::-;22299:74;;22382:93;22471:3;22382:93;:::i;:::-;22500:2;22495:3;22491:12;22484:19;;22143:366;;;:::o;22515:419::-;22681:4;22719:2;22708:9;22704:18;22696:26;;22768:9;22762:4;22758:20;22754:1;22743:9;22739:17;22732:47;22796:131;22922:4;22796:131;:::i;:::-;22788:139;;22515:419;;;:::o;22940:163::-;23080:15;23076:1;23068:6;23064:14;23057:39;22940:163;:::o;23109:366::-;23251:3;23272:67;23336:2;23331:3;23272:67;:::i;:::-;23265:74;;23348:93;23437:3;23348:93;:::i;:::-;23466:2;23461:3;23457:12;23450:19;;23109:366;;;:::o;23481:419::-;23647:4;23685:2;23674:9;23670:18;23662:26;;23734:9;23728:4;23724:20;23720:1;23709:9;23705:17;23698:47;23762:131;23888:4;23762:131;:::i;:::-;23754:139;;23481:419;;;:::o;23906:161::-;24046:13;24042:1;24034:6;24030:14;24023:37;23906:161;:::o;24073:366::-;24215:3;24236:67;24300:2;24295:3;24236:67;:::i;:::-;24229:74;;24312:93;24401:3;24312:93;:::i;:::-;24430:2;24425:3;24421:12;24414:19;;24073:366;;;:::o;24445:419::-;24611:4;24649:2;24638:9;24634:18;24626:26;;24698:9;24692:4;24688:20;24684:1;24673:9;24669:17;24662:47;24726:131;24852:4;24726:131;:::i;:::-;24718:139;;24445:419;;;:::o;24870:162::-;25010:14;25006:1;24998:6;24994:14;24987:38;24870:162;:::o;25038:366::-;25180:3;25201:67;25265:2;25260:3;25201:67;:::i;:::-;25194:74;;25277:93;25366:3;25277:93;:::i;:::-;25395:2;25390:3;25386:12;25379:19;;25038:366;;;:::o;25410:419::-;25576:4;25614:2;25603:9;25599:18;25591:26;;25663:9;25657:4;25653:20;25649:1;25638:9;25634:17;25627:47;25691:131;25817:4;25691:131;:::i;:::-;25683:139;;25410:419;;;:::o;25835:159::-;25975:11;25971:1;25963:6;25959:14;25952:35;25835:159;:::o;26000:365::-;26142:3;26163:66;26227:1;26222:3;26163:66;:::i;:::-;26156:73;;26238:93;26327:3;26238:93;:::i;:::-;26356:2;26351:3;26347:12;26340:19;;26000:365;;;:::o;26371:419::-;26537:4;26575:2;26564:9;26560:18;26552:26;;26624:9;26618:4;26614:20;26610:1;26599:9;26595:17;26588:47;26652:131;26778:4;26652:131;:::i;:::-;26644:139;;26371:419;;;:::o;26796:165::-;26936:17;26932:1;26924:6;26920:14;26913:41;26796:165;:::o;26967:366::-;27109:3;27130:67;27194:2;27189:3;27130:67;:::i;:::-;27123:74;;27206:93;27295:3;27206:93;:::i;:::-;27324:2;27319:3;27315:12;27308:19;;26967:366;;;:::o;27339:419::-;27505:4;27543:2;27532:9;27528:18;27520:26;;27592:9;27586:4;27582:20;27578:1;27567:9;27563:17;27556:47;27620:131;27746:4;27620:131;:::i;:::-;27612:139;;27339:419;;;:::o;27764:179::-;27904:31;27900:1;27892:6;27888:14;27881:55;27764:179;:::o;27949:366::-;28091:3;28112:67;28176:2;28171:3;28112:67;:::i;:::-;28105:74;;28188:93;28277:3;28188:93;:::i;:::-;28306:2;28301:3;28297:12;28290:19;;27949:366;;;:::o;28321:419::-;28487:4;28525:2;28514:9;28510:18;28502:26;;28574:9;28568:4;28564:20;28560:1;28549:9;28545:17;28538:47;28602:131;28728:4;28602:131;:::i;:::-;28594:139;;28321:419;;;:::o;28746:171::-;28886:23;28882:1;28874:6;28870:14;28863:47;28746:171;:::o;28923:366::-;29065:3;29086:67;29150:2;29145:3;29086:67;:::i;:::-;29079:74;;29162:93;29251:3;29162:93;:::i;:::-;29280:2;29275:3;29271:12;29264:19;;28923:366;;;:::o;29295:419::-;29461:4;29499:2;29488:9;29484:18;29476:26;;29548:9;29542:4;29538:20;29534:1;29523:9;29519:17;29512:47;29576:131;29702:4;29576:131;:::i;:::-;29568:139;;29295:419;;;:::o;29720:143::-;29777:5;29808:6;29802:13;29793:22;;29824:33;29851:5;29824:33;:::i;:::-;29720:143;;;;:::o;29869:351::-;29939:6;29988:2;29976:9;29967:7;29963:23;29959:32;29956:119;;;29994:79;;:::i;:::-;29956:119;30114:1;30139:64;30195:7;30186:6;30175:9;30171:22;30139:64;:::i;:::-;30129:74;;30085:128;29869:351;;;;:::o;30226:332::-;30347:4;30385:2;30374:9;30370:18;30362:26;;30398:71;30466:1;30455:9;30451:17;30442:6;30398:71;:::i;:::-;30479:72;30547:2;30536:9;30532:18;30523:6;30479:72;:::i;:::-;30226:332;;;;;:::o;30564:98::-;30615:6;30649:5;30643:12;30633:22;;30564:98;;;:::o;30668:147::-;30769:11;30806:3;30791:18;;30668:147;;;;:::o;30821:386::-;30925:3;30953:38;30985:5;30953:38;:::i;:::-;31007:88;31088:6;31083:3;31007:88;:::i;:::-;31000:95;;31104:65;31162:6;31157:3;31150:4;31143:5;31139:16;31104:65;:::i;:::-;31194:6;31189:3;31185:16;31178:23;;30929:278;30821:386;;;;:::o;31213:271::-;31343:3;31365:93;31454:3;31445:6;31365:93;:::i;:::-;31358:100;;31475:3;31468:10;;31213:271;;;;:::o;31490:173::-;31630:25;31626:1;31618:6;31614:14;31607:49;31490:173;:::o;31669:366::-;31811:3;31832:67;31896:2;31891:3;31832:67;:::i;:::-;31825:74;;31908:93;31997:3;31908:93;:::i;:::-;32026:2;32021:3;32017:12;32010:19;;31669:366;;;:::o;32041:419::-;32207:4;32245:2;32234:9;32230:18;32222:26;;32294:9;32288:4;32284:20;32280:1;32269:9;32265:17;32258:47;32322:131;32448:4;32322:131;:::i;:::-;32314:139;;32041:419;;;:::o;32466:173::-;32606:25;32602:1;32594:6;32590:14;32583:49;32466:173;:::o;32645:366::-;32787:3;32808:67;32872:2;32867:3;32808:67;:::i;:::-;32801:74;;32884:93;32973:3;32884:93;:::i;:::-;33002:2;32997:3;32993:12;32986:19;;32645:366;;;:::o;33017:419::-;33183:4;33221:2;33210:9;33206:18;33198:26;;33270:9;33264:4;33260:20;33256:1;33245:9;33241:17;33234:47;33298:131;33424:4;33298:131;:::i;:::-;33290:139;;33017:419;;;:::o;33442:60::-;33470:3;33491:5;33484:12;;33442:60;;;:::o;33508:142::-;33558:9;33591:53;33609:34;33618:24;33636:5;33618:24;:::i;:::-;33609:34;:::i;:::-;33591:53;:::i;:::-;33578:66;;33508:142;;;:::o;33656:126::-;33706:9;33739:37;33770:5;33739:37;:::i;:::-;33726:50;;33656:126;;;:::o;33788:134::-;33846:9;33879:37;33910:5;33879:37;:::i;:::-;33866:50;;33788:134;;;:::o;33928:147::-;34023:45;34062:5;34023:45;:::i;:::-;34018:3;34011:58;33928:147;;:::o;34081:238::-;34182:4;34220:2;34209:9;34205:18;34197:26;;34233:79;34309:1;34298:9;34294:17;34285:6;34233:79;:::i;:::-;34081:238;;;;:::o;34325:193::-;34364:3;34383:19;34400:1;34383:19;:::i;:::-;34378:24;;34416:19;34433:1;34416:19;:::i;:::-;34411:24;;34458:1;34455;34451:9;34444:16;;34481:6;34476:3;34473:15;34470:41;;;34491:18;;:::i;:::-;34470:41;34325:193;;;;:::o;34524:165::-;34664:17;34660:1;34652:6;34648:14;34641:41;34524:165;:::o;34695:366::-;34837:3;34858:67;34922:2;34917:3;34858:67;:::i;:::-;34851:74;;34934:93;35023:3;34934:93;:::i;:::-;35052:2;35047:3;35043:12;35036:19;;34695:366;;;:::o;35067:419::-;35233:4;35271:2;35260:9;35256:18;35248:26;;35320:9;35314:4;35310:20;35306:1;35295:9;35291:17;35284:47;35348:131;35474:4;35348:131;:::i;:::-;35340:139;;35067:419;;;:::o;35492:179::-;35632:31;35628:1;35620:6;35616:14;35609:55;35492:179;:::o;35677:366::-;35819:3;35840:67;35904:2;35899:3;35840:67;:::i;:::-;35833:74;;35916:93;36005:3;35916:93;:::i;:::-;36034:2;36029:3;36025:12;36018:19;;35677:366;;;:::o;36049:419::-;36215:4;36253:2;36242:9;36238:18;36230:26;;36302:9;36296:4;36292:20;36288:1;36277:9;36273:17;36266:47;36330:131;36456:4;36330:131;:::i;:::-;36322:139;;36049:419;;;:::o;36474:161::-;36614:13;36610:1;36602:6;36598:14;36591:37;36474:161;:::o;36641:366::-;36783:3;36804:67;36868:2;36863:3;36804:67;:::i;:::-;36797:74;;36880:93;36969:3;36880:93;:::i;:::-;36998:2;36993:3;36989:12;36982:19;;36641:366;;;:::o;37013:419::-;37179:4;37217:2;37206:9;37202:18;37194:26;;37266:9;37260:4;37256:20;37252:1;37241:9;37237:17;37230:47;37294:131;37420:4;37294:131;:::i;:::-;37286:139;;37013:419;;;:::o;37438:167::-;37578:19;37574:1;37566:6;37562:14;37555:43;37438:167;:::o;37611:366::-;37753:3;37774:67;37838:2;37833:3;37774:67;:::i;:::-;37767:74;;37850:93;37939:3;37850:93;:::i;:::-;37968:2;37963:3;37959:12;37952:19;;37611:366;;;:::o;37983:419::-;38149:4;38187:2;38176:9;38172:18;38164:26;;38236:9;38230:4;38226:20;38222:1;38211:9;38207:17;38200:47;38264:131;38390:4;38264:131;:::i;:::-;38256:139;;37983:419;;;:::o;38408:180::-;38456:77;38453:1;38446:88;38553:4;38550:1;38543:15;38577:4;38574:1;38567:15;38594:180;38642:77;38639:1;38632:88;38739:4;38736:1;38729:15;38763:4;38760:1;38753:15;38780:85;38825:7;38854:5;38843:16;;38780:85;;;:::o;38871:158::-;38929:9;38962:61;38980:42;38989:32;39015:5;38989:32;:::i;:::-;38980:42;:::i;:::-;38962:61;:::i;:::-;38949:74;;38871:158;;;:::o;39035:147::-;39130:45;39169:5;39130:45;:::i;:::-;39125:3;39118:58;39035:147;;:::o;39188:114::-;39255:6;39289:5;39283:12;39273:22;;39188:114;;;:::o;39308:184::-;39407:11;39441:6;39436:3;39429:19;39481:4;39476:3;39472:14;39457:29;;39308:184;;;;:::o;39498:132::-;39565:4;39588:3;39580:11;;39618:4;39613:3;39609:14;39601:22;;39498:132;;;:::o;39636:108::-;39713:24;39731:5;39713:24;:::i;:::-;39708:3;39701:37;39636:108;;:::o;39750:179::-;39819:10;39840:46;39882:3;39874:6;39840:46;:::i;:::-;39918:4;39913:3;39909:14;39895:28;;39750:179;;;;:::o;39935:113::-;40005:4;40037;40032:3;40028:14;40020:22;;39935:113;;;:::o;40084:732::-;40203:3;40232:54;40280:5;40232:54;:::i;:::-;40302:86;40381:6;40376:3;40302:86;:::i;:::-;40295:93;;40412:56;40462:5;40412:56;:::i;:::-;40491:7;40522:1;40507:284;40532:6;40529:1;40526:13;40507:284;;;40608:6;40602:13;40635:63;40694:3;40679:13;40635:63;:::i;:::-;40628:70;;40721:60;40774:6;40721:60;:::i;:::-;40711:70;;40567:224;40554:1;40551;40547:9;40542:14;;40507:284;;;40511:14;40807:3;40800:10;;40208:608;;;40084:732;;;;:::o;40822:831::-;41085:4;41123:3;41112:9;41108:19;41100:27;;41137:71;41205:1;41194:9;41190:17;41181:6;41137:71;:::i;:::-;41218:80;41294:2;41283:9;41279:18;41270:6;41218:80;:::i;:::-;41345:9;41339:4;41335:20;41330:2;41319:9;41315:18;41308:48;41373:108;41476:4;41467:6;41373:108;:::i;:::-;41365:116;;41491:72;41559:2;41548:9;41544:18;41535:6;41491:72;:::i;:::-;41573:73;41641:3;41630:9;41626:19;41617:6;41573:73;:::i;:::-;40822:831;;;;;;;;:::o;41659:807::-;41908:4;41946:3;41935:9;41931:19;41923:27;;41960:71;42028:1;42017:9;42013:17;42004:6;41960:71;:::i;:::-;42041:72;42109:2;42098:9;42094:18;42085:6;42041:72;:::i;:::-;42123:80;42199:2;42188:9;42184:18;42175:6;42123:80;:::i;:::-;42213;42289:2;42278:9;42274:18;42265:6;42213:80;:::i;:::-;42303:73;42371:3;42360:9;42356:19;42347:6;42303:73;:::i;:::-;42386;42454:3;42443:9;42439:19;42430:6;42386:73;:::i;:::-;41659:807;;;;;;;;;:::o;42472:143::-;42529:5;42560:6;42554:13;42545:22;;42576:33;42603:5;42576:33;:::i;:::-;42472:143;;;;:::o;42621:663::-;42709:6;42717;42725;42774:2;42762:9;42753:7;42749:23;42745:32;42742:119;;;42780:79;;:::i;:::-;42742:119;42900:1;42925:64;42981:7;42972:6;42961:9;42957:22;42925:64;:::i;:::-;42915:74;;42871:128;43038:2;43064:64;43120:7;43111:6;43100:9;43096:22;43064:64;:::i;:::-;43054:74;;43009:129;43177:2;43203:64;43259:7;43250:6;43239:9;43235:22;43203:64;:::i;:::-;43193:74;;43148:129;42621:663;;;;;:::o

Swarm Source

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