ETH Price: $3,502.20 (+2.50%)
Gas: 10 Gwei

Token

Baby Bitcoin 2.0 (BBTC2.0)
 

Overview

Max Total Supply

21,000,000,000 BBTC2.0

Holders

114

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000077 BBTC2.0

Value
$0.00
0x6971a1f61c3555d0e3e6e98dcb7263bd3eefc776
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:
bbtc2

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-07-11
*/

//SPDX-License-Identifier: MIT

/*
 t.me/BabyBitcoin2Erc
*/

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 bbtc2 is IERC20, Auth {
    uint8 private constant _decimals      = 9;
    uint256 private constant _totalSupply = 21_000_000_000 * (10**_decimals);
    string private constant _name         = "Baby Bitcoin 2.0";
    string private  constant _symbol      = "BBTC2.0";

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

    uint8 private _buyTaxRate  = 0;
    uint8 private _sellTaxRate = 0;

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

    address payable private _walletMarketing = payable(0x9e875BD3EA8cBa894022900B465cEE17205EB12E); 

    uint256 private _launchBlock;
    uint256 private _maxTxAmount     = _totalSupply; 
    uint256 private _maxWalletAmount = _totalSupply;
    uint256 private _taxSwapMin = _totalSupply * 10 / 100000;
    uint256 private _taxSwapMax = _totalSupply * 900 / 100000;
    uint256 private _swapLimit = _taxSwapMin * 45 * 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 * 2 / 100;
        uint256 marketingFunds = _totalSupply * 0 / 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 * 3 / 100; 
        _maxWalletAmount = _totalSupply * 3 / 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 <= 5, "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"}]

60806040526001600060146101000a81548160ff021916908360ff1602179055506001600060156101000a81548160ff021916908360ff1602179055506001600060166101000a81548160ff021916908360ff1602179055506001600060176101000a81548160ff021916908360ff16021790555060026001556000600260006101000a81548160ff021916908360ff1602179055506000600260016101000a81548160ff021916908360ff16021790555060646002806101000a81548161ffff021916908361ffff1602179055506000600260046101000a81548161ffff021916908361ffff160217905550600260049054906101000a900461ffff1660028054906101000a900461ffff1662000118919062000b78565b600260066101000a81548161ffff021916908361ffff160217905550739e875bd3ea8cba894022900b465cee17205eb12e600260086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000199919062000d20565b6404e3b29200620001ab919062000d71565b6004556009600a620001be919062000d20565b6404e3b29200620001d0919062000d71565b600555620186a0600a6009600a620001e9919062000d20565b6404e3b29200620001fb919062000d71565b62000207919062000d71565b62000213919062000deb565b600655620186a06103846009600a6200022d919062000d20565b6404e3b292006200023f919062000d71565b6200024b919062000d71565b62000257919062000deb565b6007556064602d6006546200026d919062000d71565b62000279919062000d71565b600855737a250d5630b4cf539739df2c5dacb4c659f2488d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601160016101000a81548160ff021916908315150217905550348015620002f957600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606460026009600a62000393919062000d20565b6404e3b29200620003a5919062000d71565b620003b1919062000d71565b620003bd919062000deb565b90506000606460006009600a620003d5919062000d20565b6404e3b29200620003e7919062000d71565b620003f3919062000d71565b620003ff919062000deb565b905080826009600a62000413919062000d20565b6404e3b2920062000425919062000d71565b62000431919062000e23565b6200043d919062000e23565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200051f919062000e6f565b60405180910390a381600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200066c919062000e6f565b60405180910390a38060096000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60096000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620007bd919062000e6f565b60405180910390a36001600b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000e8c565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b858262000b3b565b915062000b928362000b3b565b9250828201905061ffff81111562000baf5762000bae62000b49565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111562000c145780860481111562000bec5762000beb62000b49565b5b600185161562000bfc5780820291505b808102905062000c0c8562000bb5565b945062000bcc565b94509492505050565b60008262000c2f576001905062000d02565b8162000c3f576000905062000d02565b816001811462000c58576002811462000c635762000c99565b600191505062000d02565b60ff84111562000c785762000c7762000b49565b5b8360020a91508482111562000c925762000c9162000b49565b5b5062000d02565b5060208310610133831016604e8410600b841016171562000cd35782820a90508381111562000ccd5762000ccc62000b49565b5b62000d02565b62000ce2848484600162000bc2565b9250905081840481111562000cfc5762000cfb62000b49565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d2d8262000d09565b915062000d3a8362000d13565b925062000d697fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c1d565b905092915050565b600062000d7e8262000d09565b915062000d8b8362000d09565b925082820262000d9b8162000d09565b9150828204841483151762000db55762000db462000b49565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000df88262000d09565b915062000e058362000d09565b92508262000e185762000e1762000dbc565b5b828204905092915050565b600062000e308262000d09565b915062000e3d8362000d09565b925082820390508181111562000e585762000e5762000b49565b5b92915050565b62000e698162000d09565b82525050565b600060208201905062000e86600083018462000e5e565b92915050565b614c248062000e9c6000396000f3fe6080604052600436106101d15760003560e01c806370a08231116100f7578063a9059cbb11610095578063e8ba854f11610064578063e8ba854f1461067b578063f2fde38b146106a4578063f8978401146106cd578063f8b45b05146106f6576101d8565b8063a9059cbb146105cc578063c3f70b5214610609578063dd62ed3e14610634578063e8078d9414610671576101d8565b80638d3e6e40116100d15780638d3e6e40146105105780638da5cb5b1461054d57806395d89b4114610578578063a6097b0a146105a3576101d8565b806370a0823114610491578063715018a6146104ce57806375f0a874146104e5576101d8565b8063368f48001161016f5780634fcd24461161013e5780634fcd2446146103d657806357ff135a146103ff5780635a90a49e146104285780636373ea6914610465576101d8565b8063368f48001461032c57806346b898341461035557806347062402146103805780634d4ce935146103ab576101d8565b806323b872dd116101ab57806323b872dd146102705780632b14ca56146102ad5780632fb528ba146102d8578063313ce56714610301576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610721565b6040516101ff91906136cc565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190613787565b61075e565b60405161023c91906137e2565b60405180910390f35b34801561025157600080fd5b5061025a610850565b604051610267919061380c565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190613827565b610875565b6040516102a491906137e2565b60405180910390f35b3480156102b957600080fd5b506102c2610a7f565b6040516102cf9190613896565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190613909565b610a96565b005b34801561030d57600080fd5b50610316610c7c565b6040516103239190613896565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e9190613983565b610c85565b005b34801561036157600080fd5b5061036a610e45565b604051610377919061380c565b60405180910390f35b34801561038c57600080fd5b50610395610e4f565b6040516103a29190613896565b60405180910390f35b3480156103b757600080fd5b506103c0610e66565b6040516103cd919061380c565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f891906139c3565b610e70565b005b34801561040b57600080fd5b5061042660048036038101906104219190613a03565b610f8a565b005b34801561043457600080fd5b5061044f600480360381019061044a9190613a56565b611167565b60405161045c91906137e2565b60405180910390f35b34801561047157600080fd5b5061047a6111bd565b604051610488929190613a92565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613a56565b6111e8565b6040516104c5919061380c565b60405180910390f35b3480156104da57600080fd5b506104e3611231565b005b3480156104f157600080fd5b506104fa61133a565b6040516105079190613aca565b60405180910390f35b34801561051c57600080fd5b5061053760048036038101906105329190613a56565b611364565b60405161054491906137e2565b60405180910390f35b34801561055957600080fd5b506105626113ba565b60405161056f9190613aca565b60405180910390f35b34801561058457600080fd5b5061058d6113e3565b60405161059a91906136cc565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c59190613b21565b611420565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190613787565b611663565b60405161060091906137e2565b60405180910390f35b34801561061557600080fd5b5061061e6116c0565b60405161062b919061380c565b60405180910390f35b34801561064057600080fd5b5061065b60048036038101906106569190613b88565b6116ca565b604051610668919061380c565b60405180910390f35b610679611751565b005b34801561068757600080fd5b506106a2600480360381019061069d9190613b88565b611e3e565b005b3480156106b057600080fd5b506106cb60048036038101906106c69190613c06565b6120e5565b005b3480156106d957600080fd5b506106f460048036038101906106ef9190613983565b6121ed565b005b34801561070257600080fd5b5061070b61232d565b604051610718919061380c565b60405180910390f35b60606040518060400160405280601081526020017f4261627920426974636f696e20322e3000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161083e919061380c565b60405180910390a36001905092915050565b60006009600a6108609190613d95565b6404e3b292006108709190613de0565b905090565b600061088084612337565b6108bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b690613e6e565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a6b5781600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109ea9190613e8e565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610a76848484612412565b90509392505050565b6000600260019054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1b90613f0e565b60405180910390fd5b6001601160016101000a81548160ff02191690831515021790555060648260ff161115610b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7d90613f7a565b60405180910390fd5b600060648360ff16600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd89190613de0565b610be29190613fc9565b90506009600a610bf29190613d95565b811115610c0357610c028161299e565b5b8115610c5c57600047905060008111610c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4890614046565b60405180910390fd5b610c5a47612bbd565b505b506000601160016101000a81548160ff0219169083151502179055505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0a90613f0e565b60405180910390fd5b600060016103e88461ffff166009600a610d2d9190613d95565b6404e3b29200610d3d9190613de0565b610d479190613de0565b610d519190613fc9565b610d5b9190614066565b9050600454811015610da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d99906140e6565b60405180910390fd5b80600481905550600060016103e88461ffff166009600a610dc39190613d95565b6404e3b29200610dd39190613de0565b610ddd9190613de0565b610de79190613fc9565b610df19190614066565b9050600554811015610e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f90614152565b60405180910390fd5b8060058190555050505050565b6000600654905090565b6000600260009054906101000a900460ff16905090565b6000600754905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef590613f0e565b60405180910390fd5b60058183610f0c9190614172565b60ff161115610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f47906141f3565b60405180910390fd5b81600260006101000a81548160ff021916908360ff16021790555080600260016101000a81548160ff021916908360ff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100f90613f0e565b60405180910390fd5b80806110215750815b156110b457601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa9061425f565b60405180910390fd5b5b81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060028054906101000a900461ffff16600260049054906101000a900461ffff16915091509091565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b690613f0e565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516113309190613aca565b60405180910390a1565b6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f42425443322e3000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a590613f0e565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6114ca9190613d95565b6404e3b292006114da9190613de0565b6114e49190613de0565b6114ee9190613fc9565b6006819055508063ffffffff168263ffffffff166009600a6115109190613d95565b6404e3b292006115209190613de0565b61152a9190613de0565b6115349190613fc9565b6007819055506006546007541015611581576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611578906142cb565b60405180910390fd5b620186a06009600a6115939190613d95565b6404e3b292006115a39190613de0565b6115ad9190613fc9565b600754116115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790614337565b60405180910390fd5b60646009600a6116009190613d95565b6404e3b292006116109190613de0565b61161a9190613fc9565b6007541061165d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611654906143a3565b60405180910390fd5b50505050565b600061166e33612337565b6116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490613e6e565b60405180910390fd5b6116b8338484612412565b905092915050565b6000600454905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d690613f0e565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118829061440f565b60405180910390fd5b601160009054906101000a900460ff16156118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d29061447b565b60405180910390fd5b60003411806118ea5750600047115b611929576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611920906144e7565b60405180910390fd5b6000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290614553565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3c9190614588565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ac5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae99190614588565b6040518363ffffffff1660e01b8152600401611b069291906145b5565b6020604051808303816000875af1158015611b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b499190614588565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611bd4600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612c29565b60085460096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c479190613e8e565b925050819055506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611d199190614625565b6000604051808303816000865af19150503d8060008114611d56576040519150601f19603f3d011682016040523d82523d6000602084013e611d5b565b606091505b5050905080611d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9690614688565b60405180910390fd5b8060106000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e20612d17565b506000601160016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec390613f0e565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f705750601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa6906146f4565b60405180910390fd5b81600260086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216a90613f0e565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516121e29190614773565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461227b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227290613f0e565b60405180910390fd5b60008183612289919061478e565b905060008161ffff16116122d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c990614810565b60405180910390fd5b82600260046101000a81548161ffff021916908361ffff160217905550816002806101000a81548161ffff021916908361ffff16021790555080600260066101000a81548161ffff021916908361ffff160217905550505050565b6000600554905090565b60008060009050601160009054906101000a900460ff161561235c5760019050612409565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123fe5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561240857600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124799061487c565b60405180910390fd5b601160009054906101000a900460ff1661257857600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125385750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e90613e6e565b60405180910390fd5b5b601160019054906101000a900460ff161580156125de5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125ec576125eb612e03565b5b600154431080156125ff57506003544310155b80156126545750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126c8573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146126c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126be906148e8565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561273057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612788575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156127d85761279884848461300b565b6127d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ce90614954565b60405180910390fd5b5b60006127e58585856131a2565b9050600081846127f59190613e8e565b905083600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128429190613e8e565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546128979190614066565b9250508190555080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e99190614066565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612989919061380c565b60405180910390a36001925050509392505050565b6129a781613452565b6000600267ffffffffffffffff8111156129c4576129c3614974565b5b6040519080825280602002602001820160405280156129f25781602001602082028036833780820191505090505b5090503081600081518110612a0a57612a096149a3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ab1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad59190614588565b81600181518110612ae957612ae86149a3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b87959493929190614acb565b600060405180830381600087803b158015612ba157600080fd5b505af1158015612bb5573d6000803e3d6000fd5b505050505050565b600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c25573d6000803e3d6000fd5b5050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115612c5b57600090505b612c6484613452565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401612ccb96959493929190614b25565b60606040518083038185885af1158015612ce9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d0e9190614b9b565b50505050505050565b606460036009600a612d299190613d95565b6404e3b29200612d399190613de0565b612d439190613de0565b612d4d9190613fc9565b600481905550606460036009600a612d659190613d95565b6404e3b29200612d759190613de0565b612d7f9190613de0565b612d899190613fc9565b6005819055506001601160006101000a81548160ff02191690831515021790555043600381905550600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff16600354600154612de79190614066565b612df19190614066565b612dfb9190614066565b600181905550565b6001601160016101000a81548160ff021916908315150217905550600060085490506006548110158015612e435750601160009054906101000a900460ff165b15612fed576007548110612e575760075490505b600060028060069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1684612e8f9190613de0565b612e999190613fc9565b612ea39190613fc9565b905060008183612eb39190613e8e565b90506009600a612ec39190613d95565b811115612fd157600047905083600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f1e9190614066565b92505081905550612f2e8261299e565b8360086000828254612f409190613e8e565b9250508190555060008147612f559190613e8e565b90506000600260049054906101000a900461ffff1661ffff161115612fce576000600260069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1683612fab9190613de0565b612fb59190613fc9565b9050612fc085613452565b612fcc85826000612c29565b505b50505b60004790506000811115612fe957612fe881612bbd565b5b5050505b506000601160016101000a81548160ff021916908315150217905550565b60008060019050601160009054906101000a900460ff1680156130785750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130ce5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613197576004548311156130e65760009050613196565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561318b575060055483600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131899190614066565b115b1561319557600090505b5b5b809150509392505050565b600080601160009054906101000a900460ff16158061320a5750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061325e5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561326c5760009050613447565b601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133c657600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff166003546132f19190614066565b6132fb9190614066565b4310613332576064600260009054906101000a900460ff1660ff16846133219190613de0565b61332b9190613fc9565b90506133c1565b600060169054906101000a900460ff1660ff166003546133529190614066565b4310613389576064600060159054906101000a900460ff1660ff16846133789190613de0565b6133829190613fc9565b90506133c0565b60035443106133bf576064600060149054906101000a900460ff1660ff16846133b29190613de0565b6133bc9190613fc9565b90505b5b5b613446565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613445576064600260019054906101000a900460ff1660ff16846134389190613de0565b6134429190613fc9565b90505b5b5b809150509392505050565b80600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613639577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051613630919061380c565b60405180910390a35b50565b600081519050919050565b600082825260208201905092915050565b60005b8381101561367657808201518184015260208101905061365b565b60008484015250505050565b6000601f19601f8301169050919050565b600061369e8261363c565b6136a88185613647565b93506136b8818560208601613658565b6136c181613682565b840191505092915050565b600060208201905081810360008301526136e68184613693565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061371e826136f3565b9050919050565b61372e81613713565b811461373957600080fd5b50565b60008135905061374b81613725565b92915050565b6000819050919050565b61376481613751565b811461376f57600080fd5b50565b6000813590506137818161375b565b92915050565b6000806040838503121561379e5761379d6136ee565b5b60006137ac8582860161373c565b92505060206137bd85828601613772565b9150509250929050565b60008115159050919050565b6137dc816137c7565b82525050565b60006020820190506137f760008301846137d3565b92915050565b61380681613751565b82525050565b600060208201905061382160008301846137fd565b92915050565b6000806000606084860312156138405761383f6136ee565b5b600061384e8682870161373c565b935050602061385f8682870161373c565b925050604061387086828701613772565b9150509250925092565b600060ff82169050919050565b6138908161387a565b82525050565b60006020820190506138ab6000830184613887565b92915050565b6138ba8161387a565b81146138c557600080fd5b50565b6000813590506138d7816138b1565b92915050565b6138e6816137c7565b81146138f157600080fd5b50565b600081359050613903816138dd565b92915050565b600080604083850312156139205761391f6136ee565b5b600061392e858286016138c8565b925050602061393f858286016138f4565b9150509250929050565b600061ffff82169050919050565b61396081613949565b811461396b57600080fd5b50565b60008135905061397d81613957565b92915050565b6000806040838503121561399a576139996136ee565b5b60006139a88582860161396e565b92505060206139b98582860161396e565b9150509250929050565b600080604083850312156139da576139d96136ee565b5b60006139e8858286016138c8565b92505060206139f9858286016138c8565b9150509250929050565b600080600060608486031215613a1c57613a1b6136ee565b5b6000613a2a8682870161373c565b9350506020613a3b868287016138f4565b9250506040613a4c868287016138f4565b9150509250925092565b600060208284031215613a6c57613a6b6136ee565b5b6000613a7a8482850161373c565b91505092915050565b613a8c81613949565b82525050565b6000604082019050613aa76000830185613a83565b613ab46020830184613a83565b9392505050565b613ac481613713565b82525050565b6000602082019050613adf6000830184613abb565b92915050565b600063ffffffff82169050919050565b613afe81613ae5565b8114613b0957600080fd5b50565b600081359050613b1b81613af5565b92915050565b60008060008060808587031215613b3b57613b3a6136ee565b5b6000613b4987828801613b0c565b9450506020613b5a87828801613b0c565b9350506040613b6b87828801613b0c565b9250506060613b7c87828801613b0c565b91505092959194509250565b60008060408385031215613b9f57613b9e6136ee565b5b6000613bad8582860161373c565b9250506020613bbe8582860161373c565b9150509250929050565b6000613bd3826136f3565b9050919050565b613be381613bc8565b8114613bee57600080fd5b50565b600081359050613c0081613bda565b92915050565b600060208284031215613c1c57613c1b6136ee565b5b6000613c2a84828501613bf1565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613cb957808604811115613c9557613c94613c33565b5b6001851615613ca45780820291505b8081029050613cb285613c62565b9450613c79565b94509492505050565b600082613cd25760019050613d8e565b81613ce05760009050613d8e565b8160018114613cf65760028114613d0057613d2f565b6001915050613d8e565b60ff841115613d1257613d11613c33565b5b8360020a915084821115613d2957613d28613c33565b5b50613d8e565b5060208310610133831016604e8410600b8410161715613d645782820a905083811115613d5f57613d5e613c33565b5b613d8e565b613d718484846001613c6f565b92509050818404811115613d8857613d87613c33565b5b81810290505b9392505050565b6000613da082613751565b9150613dab8361387a565b9250613dd87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613cc2565b905092915050565b6000613deb82613751565b9150613df683613751565b9250828202613e0481613751565b91508282048414831517613e1b57613e1a613c33565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000613e58601083613647565b9150613e6382613e22565b602082019050919050565b60006020820190508181036000830152613e8781613e4b565b9050919050565b6000613e9982613751565b9150613ea483613751565b9250828203905081811115613ebc57613ebb613c33565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000613ef8601883613647565b9150613f0382613ec2565b602082019050919050565b60006020820190508181036000830152613f2781613eeb565b9050919050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b6000613f64601a83613647565b9150613f6f82613f2e565b602082019050919050565b60006020820190508181036000830152613f9381613f57565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fd482613751565b9150613fdf83613751565b925082613fef57613fee613f9a565b5b828204905092915050565b7f4e6f204554480000000000000000000000000000000000000000000000000000600082015250565b6000614030600683613647565b915061403b82613ffa565b602082019050919050565b6000602082019050818103600083015261405f81614023565b9050919050565b600061407182613751565b915061407c83613751565b925082820190508082111561409457614093613c33565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006140d0600a83613647565b91506140db8261409a565b602082019050919050565b600060208201905081810360008301526140ff816140c3565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b600061413c600e83613647565b915061414782614106565b602082019050919050565b6000602082019050818103600083015261416b8161412f565b9050919050565b600061417d8261387a565b91506141888361387a565b9250828201905060ff8111156141a1576141a0613c33565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b60006141dd601283613647565b91506141e8826141a7565b602082019050919050565b6000602082019050818103600083015261420c816141d0565b9050919050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b6000614249601083613647565b915061425482614213565b602082019050919050565b600060208201905081810360008301526142788161423c565b9050919050565b7f4d696e2f4d6178206572726f7200000000000000000000000000000000000000600082015250565b60006142b5600d83613647565b91506142c08261427f565b602082019050919050565b600060208201905081810360008301526142e4816142a8565b9050919050565b7f4d617820746f6f206c6f77000000000000000000000000000000000000000000600082015250565b6000614321600b83613647565b915061432c826142eb565b602082019050919050565b6000602082019050818103600083015261435081614314565b9050919050565b7f4d617820746f6f20686967680000000000000000000000000000000000000000600082015250565b600061438d600c83613647565b915061439882614357565b602082019050919050565b600060208201905081810360008301526143bc81614380565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006143f9600983613647565b9150614404826143c3565b602082019050919050565b60006020820190508181036000830152614428816143ec565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000614465600f83613647565b91506144708261442f565b602082019050919050565b6000602082019050818103600083015261449481614458565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b60006144d1601d83613647565b91506144dc8261449b565b602082019050919050565b60006020820190508181036000830152614500816144c4565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b600061453d601583613647565b915061454882614507565b602082019050919050565b6000602082019050818103600083015261456c81614530565b9050919050565b60008151905061458281613725565b92915050565b60006020828403121561459e5761459d6136ee565b5b60006145ac84828501614573565b91505092915050565b60006040820190506145ca6000830185613abb565b6145d76020830184613abb565b9392505050565b600081519050919050565b600081905092915050565b60006145ff826145de565b61460981856145e9565b9350614619818560208601613658565b80840191505092915050565b600061463182846145f4565b915081905092915050565b7f4661696c656420616464696e67206c6971756964697479000000000000000000600082015250565b6000614672601783613647565b915061467d8261463c565b602082019050919050565b600060208201905081810360008301526146a181614665565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b60006146de601783613647565b91506146e9826146a8565b602082019050919050565b6000602082019050818103600083015261470d816146d1565b9050919050565b6000819050919050565b600061473961473461472f846136f3565b614714565b6136f3565b9050919050565b600061474b8261471e565b9050919050565b600061475d82614740565b9050919050565b61476d81614752565b82525050565b60006020820190506147886000830184614764565b92915050565b600061479982613949565b91506147a483613949565b9250828201905061ffff8111156147be576147bd613c33565b5b92915050565b7f416c6c2063616e6e6f7420626520300000000000000000000000000000000000600082015250565b60006147fa600f83613647565b9150614805826147c4565b602082019050919050565b60006020820190508181036000830152614829816147ed565b9050919050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614866601d83613647565b915061487182614830565b602082019050919050565b6000602082019050818103600083015261489581614859565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b60006148d2600b83613647565b91506148dd8261489c565b602082019050919050565b60006020820190508181036000830152614901816148c5565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061493e601183613647565b915061494982614908565b602082019050919050565b6000602082019050818103600083015261496d81614931565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006149f76149f26149ed846149d2565b614714565b613751565b9050919050565b614a07816149dc565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a4281613713565b82525050565b6000614a548383614a39565b60208301905092915050565b6000602082019050919050565b6000614a7882614a0d565b614a828185614a18565b9350614a8d83614a29565b8060005b83811015614abe578151614aa58882614a48565b9750614ab083614a60565b925050600181019050614a91565b5085935050505092915050565b600060a082019050614ae060008301886137fd565b614aed60208301876149fe565b8181036040830152614aff8186614a6d565b9050614b0e6060830185613abb565b614b1b60808301846137fd565b9695505050505050565b600060c082019050614b3a6000830189613abb565b614b4760208301886137fd565b614b5460408301876149fe565b614b6160608301866149fe565b614b6e6080830185613abb565b614b7b60a08301846137fd565b979650505050505050565b600081519050614b958161375b565b92915050565b600080600060608486031215614bb457614bb36136ee565b5b6000614bc286828701614b86565b9350506020614bd386828701614b86565b9250506040614be486828701614b86565b915050925092509256fea26469706673582212208237ac625a8edcff7af1e85c9646667d9f91282ad5c4c2fdc88e99e4fc55a58264736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c806370a08231116100f7578063a9059cbb11610095578063e8ba854f11610064578063e8ba854f1461067b578063f2fde38b146106a4578063f8978401146106cd578063f8b45b05146106f6576101d8565b8063a9059cbb146105cc578063c3f70b5214610609578063dd62ed3e14610634578063e8078d9414610671576101d8565b80638d3e6e40116100d15780638d3e6e40146105105780638da5cb5b1461054d57806395d89b4114610578578063a6097b0a146105a3576101d8565b806370a0823114610491578063715018a6146104ce57806375f0a874146104e5576101d8565b8063368f48001161016f5780634fcd24461161013e5780634fcd2446146103d657806357ff135a146103ff5780635a90a49e146104285780636373ea6914610465576101d8565b8063368f48001461032c57806346b898341461035557806347062402146103805780634d4ce935146103ab576101d8565b806323b872dd116101ab57806323b872dd146102705780632b14ca56146102ad5780632fb528ba146102d8578063313ce56714610301576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610721565b6040516101ff91906136cc565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190613787565b61075e565b60405161023c91906137e2565b60405180910390f35b34801561025157600080fd5b5061025a610850565b604051610267919061380c565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190613827565b610875565b6040516102a491906137e2565b60405180910390f35b3480156102b957600080fd5b506102c2610a7f565b6040516102cf9190613896565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190613909565b610a96565b005b34801561030d57600080fd5b50610316610c7c565b6040516103239190613896565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e9190613983565b610c85565b005b34801561036157600080fd5b5061036a610e45565b604051610377919061380c565b60405180910390f35b34801561038c57600080fd5b50610395610e4f565b6040516103a29190613896565b60405180910390f35b3480156103b757600080fd5b506103c0610e66565b6040516103cd919061380c565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f891906139c3565b610e70565b005b34801561040b57600080fd5b5061042660048036038101906104219190613a03565b610f8a565b005b34801561043457600080fd5b5061044f600480360381019061044a9190613a56565b611167565b60405161045c91906137e2565b60405180910390f35b34801561047157600080fd5b5061047a6111bd565b604051610488929190613a92565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613a56565b6111e8565b6040516104c5919061380c565b60405180910390f35b3480156104da57600080fd5b506104e3611231565b005b3480156104f157600080fd5b506104fa61133a565b6040516105079190613aca565b60405180910390f35b34801561051c57600080fd5b5061053760048036038101906105329190613a56565b611364565b60405161054491906137e2565b60405180910390f35b34801561055957600080fd5b506105626113ba565b60405161056f9190613aca565b60405180910390f35b34801561058457600080fd5b5061058d6113e3565b60405161059a91906136cc565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c59190613b21565b611420565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190613787565b611663565b60405161060091906137e2565b60405180910390f35b34801561061557600080fd5b5061061e6116c0565b60405161062b919061380c565b60405180910390f35b34801561064057600080fd5b5061065b60048036038101906106569190613b88565b6116ca565b604051610668919061380c565b60405180910390f35b610679611751565b005b34801561068757600080fd5b506106a2600480360381019061069d9190613b88565b611e3e565b005b3480156106b057600080fd5b506106cb60048036038101906106c69190613c06565b6120e5565b005b3480156106d957600080fd5b506106f460048036038101906106ef9190613983565b6121ed565b005b34801561070257600080fd5b5061070b61232d565b604051610718919061380c565b60405180910390f35b60606040518060400160405280601081526020017f4261627920426974636f696e20322e3000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161083e919061380c565b60405180910390a36001905092915050565b60006009600a6108609190613d95565b6404e3b292006108709190613de0565b905090565b600061088084612337565b6108bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b690613e6e565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a6b5781600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109ea9190613e8e565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610a76848484612412565b90509392505050565b6000600260019054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1b90613f0e565b60405180910390fd5b6001601160016101000a81548160ff02191690831515021790555060648260ff161115610b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7d90613f7a565b60405180910390fd5b600060648360ff16600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd89190613de0565b610be29190613fc9565b90506009600a610bf29190613d95565b811115610c0357610c028161299e565b5b8115610c5c57600047905060008111610c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4890614046565b60405180910390fd5b610c5a47612bbd565b505b506000601160016101000a81548160ff0219169083151502179055505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0a90613f0e565b60405180910390fd5b600060016103e88461ffff166009600a610d2d9190613d95565b6404e3b29200610d3d9190613de0565b610d479190613de0565b610d519190613fc9565b610d5b9190614066565b9050600454811015610da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d99906140e6565b60405180910390fd5b80600481905550600060016103e88461ffff166009600a610dc39190613d95565b6404e3b29200610dd39190613de0565b610ddd9190613de0565b610de79190613fc9565b610df19190614066565b9050600554811015610e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f90614152565b60405180910390fd5b8060058190555050505050565b6000600654905090565b6000600260009054906101000a900460ff16905090565b6000600754905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef590613f0e565b60405180910390fd5b60058183610f0c9190614172565b60ff161115610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f47906141f3565b60405180910390fd5b81600260006101000a81548160ff021916908360ff16021790555080600260016101000a81548160ff021916908360ff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100f90613f0e565b60405180910390fd5b80806110215750815b156110b457601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa9061425f565b60405180910390fd5b5b81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060028054906101000a900461ffff16600260049054906101000a900461ffff16915091509091565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b690613f0e565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516113309190613aca565b60405180910390a1565b6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f42425443322e3000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a590613f0e565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6114ca9190613d95565b6404e3b292006114da9190613de0565b6114e49190613de0565b6114ee9190613fc9565b6006819055508063ffffffff168263ffffffff166009600a6115109190613d95565b6404e3b292006115209190613de0565b61152a9190613de0565b6115349190613fc9565b6007819055506006546007541015611581576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611578906142cb565b60405180910390fd5b620186a06009600a6115939190613d95565b6404e3b292006115a39190613de0565b6115ad9190613fc9565b600754116115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790614337565b60405180910390fd5b60646009600a6116009190613d95565b6404e3b292006116109190613de0565b61161a9190613fc9565b6007541061165d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611654906143a3565b60405180910390fd5b50505050565b600061166e33612337565b6116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490613e6e565b60405180910390fd5b6116b8338484612412565b905092915050565b6000600454905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d690613f0e565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118829061440f565b60405180910390fd5b601160009054906101000a900460ff16156118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d29061447b565b60405180910390fd5b60003411806118ea5750600047115b611929576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611920906144e7565b60405180910390fd5b6000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290614553565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3c9190614588565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ac5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae99190614588565b6040518363ffffffff1660e01b8152600401611b069291906145b5565b6020604051808303816000875af1158015611b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b499190614588565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611bd4600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612c29565b60085460096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c479190613e8e565b925050819055506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611d199190614625565b6000604051808303816000865af19150503d8060008114611d56576040519150601f19603f3d011682016040523d82523d6000602084013e611d5b565b606091505b5050905080611d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9690614688565b60405180910390fd5b8060106000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e20612d17565b506000601160016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec390613f0e565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f705750601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa6906146f4565b60405180910390fd5b81600260086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216a90613f0e565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516121e29190614773565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461227b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227290613f0e565b60405180910390fd5b60008183612289919061478e565b905060008161ffff16116122d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c990614810565b60405180910390fd5b82600260046101000a81548161ffff021916908361ffff160217905550816002806101000a81548161ffff021916908361ffff16021790555080600260066101000a81548161ffff021916908361ffff160217905550505050565b6000600554905090565b60008060009050601160009054906101000a900460ff161561235c5760019050612409565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123fe5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561240857600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124799061487c565b60405180910390fd5b601160009054906101000a900460ff1661257857600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125385750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e90613e6e565b60405180910390fd5b5b601160019054906101000a900460ff161580156125de5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125ec576125eb612e03565b5b600154431080156125ff57506003544310155b80156126545750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126c8573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146126c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126be906148e8565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561273057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612788575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156127d85761279884848461300b565b6127d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ce90614954565b60405180910390fd5b5b60006127e58585856131a2565b9050600081846127f59190613e8e565b905083600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128429190613e8e565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546128979190614066565b9250508190555080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e99190614066565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612989919061380c565b60405180910390a36001925050509392505050565b6129a781613452565b6000600267ffffffffffffffff8111156129c4576129c3614974565b5b6040519080825280602002602001820160405280156129f25781602001602082028036833780820191505090505b5090503081600081518110612a0a57612a096149a3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ab1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad59190614588565b81600181518110612ae957612ae86149a3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b87959493929190614acb565b600060405180830381600087803b158015612ba157600080fd5b505af1158015612bb5573d6000803e3d6000fd5b505050505050565b600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c25573d6000803e3d6000fd5b5050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115612c5b57600090505b612c6484613452565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401612ccb96959493929190614b25565b60606040518083038185885af1158015612ce9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d0e9190614b9b565b50505050505050565b606460036009600a612d299190613d95565b6404e3b29200612d399190613de0565b612d439190613de0565b612d4d9190613fc9565b600481905550606460036009600a612d659190613d95565b6404e3b29200612d759190613de0565b612d7f9190613de0565b612d899190613fc9565b6005819055506001601160006101000a81548160ff02191690831515021790555043600381905550600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff16600354600154612de79190614066565b612df19190614066565b612dfb9190614066565b600181905550565b6001601160016101000a81548160ff021916908315150217905550600060085490506006548110158015612e435750601160009054906101000a900460ff165b15612fed576007548110612e575760075490505b600060028060069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1684612e8f9190613de0565b612e999190613fc9565b612ea39190613fc9565b905060008183612eb39190613e8e565b90506009600a612ec39190613d95565b811115612fd157600047905083600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f1e9190614066565b92505081905550612f2e8261299e565b8360086000828254612f409190613e8e565b9250508190555060008147612f559190613e8e565b90506000600260049054906101000a900461ffff1661ffff161115612fce576000600260069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1683612fab9190613de0565b612fb59190613fc9565b9050612fc085613452565b612fcc85826000612c29565b505b50505b60004790506000811115612fe957612fe881612bbd565b5b5050505b506000601160016101000a81548160ff021916908315150217905550565b60008060019050601160009054906101000a900460ff1680156130785750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130ce5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613197576004548311156130e65760009050613196565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561318b575060055483600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131899190614066565b115b1561319557600090505b5b5b809150509392505050565b600080601160009054906101000a900460ff16158061320a5750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061325e5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561326c5760009050613447565b601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133c657600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff166003546132f19190614066565b6132fb9190614066565b4310613332576064600260009054906101000a900460ff1660ff16846133219190613de0565b61332b9190613fc9565b90506133c1565b600060169054906101000a900460ff1660ff166003546133529190614066565b4310613389576064600060159054906101000a900460ff1660ff16846133789190613de0565b6133829190613fc9565b90506133c0565b60035443106133bf576064600060149054906101000a900460ff1660ff16846133b29190613de0565b6133bc9190613fc9565b90505b5b5b613446565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613445576064600260019054906101000a900460ff1660ff16846134389190613de0565b6134429190613fc9565b90505b5b5b809150509392505050565b80600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613639577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051613630919061380c565b60405180910390a35b50565b600081519050919050565b600082825260208201905092915050565b60005b8381101561367657808201518184015260208101905061365b565b60008484015250505050565b6000601f19601f8301169050919050565b600061369e8261363c565b6136a88185613647565b93506136b8818560208601613658565b6136c181613682565b840191505092915050565b600060208201905081810360008301526136e68184613693565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061371e826136f3565b9050919050565b61372e81613713565b811461373957600080fd5b50565b60008135905061374b81613725565b92915050565b6000819050919050565b61376481613751565b811461376f57600080fd5b50565b6000813590506137818161375b565b92915050565b6000806040838503121561379e5761379d6136ee565b5b60006137ac8582860161373c565b92505060206137bd85828601613772565b9150509250929050565b60008115159050919050565b6137dc816137c7565b82525050565b60006020820190506137f760008301846137d3565b92915050565b61380681613751565b82525050565b600060208201905061382160008301846137fd565b92915050565b6000806000606084860312156138405761383f6136ee565b5b600061384e8682870161373c565b935050602061385f8682870161373c565b925050604061387086828701613772565b9150509250925092565b600060ff82169050919050565b6138908161387a565b82525050565b60006020820190506138ab6000830184613887565b92915050565b6138ba8161387a565b81146138c557600080fd5b50565b6000813590506138d7816138b1565b92915050565b6138e6816137c7565b81146138f157600080fd5b50565b600081359050613903816138dd565b92915050565b600080604083850312156139205761391f6136ee565b5b600061392e858286016138c8565b925050602061393f858286016138f4565b9150509250929050565b600061ffff82169050919050565b61396081613949565b811461396b57600080fd5b50565b60008135905061397d81613957565b92915050565b6000806040838503121561399a576139996136ee565b5b60006139a88582860161396e565b92505060206139b98582860161396e565b9150509250929050565b600080604083850312156139da576139d96136ee565b5b60006139e8858286016138c8565b92505060206139f9858286016138c8565b9150509250929050565b600080600060608486031215613a1c57613a1b6136ee565b5b6000613a2a8682870161373c565b9350506020613a3b868287016138f4565b9250506040613a4c868287016138f4565b9150509250925092565b600060208284031215613a6c57613a6b6136ee565b5b6000613a7a8482850161373c565b91505092915050565b613a8c81613949565b82525050565b6000604082019050613aa76000830185613a83565b613ab46020830184613a83565b9392505050565b613ac481613713565b82525050565b6000602082019050613adf6000830184613abb565b92915050565b600063ffffffff82169050919050565b613afe81613ae5565b8114613b0957600080fd5b50565b600081359050613b1b81613af5565b92915050565b60008060008060808587031215613b3b57613b3a6136ee565b5b6000613b4987828801613b0c565b9450506020613b5a87828801613b0c565b9350506040613b6b87828801613b0c565b9250506060613b7c87828801613b0c565b91505092959194509250565b60008060408385031215613b9f57613b9e6136ee565b5b6000613bad8582860161373c565b9250506020613bbe8582860161373c565b9150509250929050565b6000613bd3826136f3565b9050919050565b613be381613bc8565b8114613bee57600080fd5b50565b600081359050613c0081613bda565b92915050565b600060208284031215613c1c57613c1b6136ee565b5b6000613c2a84828501613bf1565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613cb957808604811115613c9557613c94613c33565b5b6001851615613ca45780820291505b8081029050613cb285613c62565b9450613c79565b94509492505050565b600082613cd25760019050613d8e565b81613ce05760009050613d8e565b8160018114613cf65760028114613d0057613d2f565b6001915050613d8e565b60ff841115613d1257613d11613c33565b5b8360020a915084821115613d2957613d28613c33565b5b50613d8e565b5060208310610133831016604e8410600b8410161715613d645782820a905083811115613d5f57613d5e613c33565b5b613d8e565b613d718484846001613c6f565b92509050818404811115613d8857613d87613c33565b5b81810290505b9392505050565b6000613da082613751565b9150613dab8361387a565b9250613dd87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613cc2565b905092915050565b6000613deb82613751565b9150613df683613751565b9250828202613e0481613751565b91508282048414831517613e1b57613e1a613c33565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000613e58601083613647565b9150613e6382613e22565b602082019050919050565b60006020820190508181036000830152613e8781613e4b565b9050919050565b6000613e9982613751565b9150613ea483613751565b9250828203905081811115613ebc57613ebb613c33565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000613ef8601883613647565b9150613f0382613ec2565b602082019050919050565b60006020820190508181036000830152613f2781613eeb565b9050919050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b6000613f64601a83613647565b9150613f6f82613f2e565b602082019050919050565b60006020820190508181036000830152613f9381613f57565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fd482613751565b9150613fdf83613751565b925082613fef57613fee613f9a565b5b828204905092915050565b7f4e6f204554480000000000000000000000000000000000000000000000000000600082015250565b6000614030600683613647565b915061403b82613ffa565b602082019050919050565b6000602082019050818103600083015261405f81614023565b9050919050565b600061407182613751565b915061407c83613751565b925082820190508082111561409457614093613c33565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006140d0600a83613647565b91506140db8261409a565b602082019050919050565b600060208201905081810360008301526140ff816140c3565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b600061413c600e83613647565b915061414782614106565b602082019050919050565b6000602082019050818103600083015261416b8161412f565b9050919050565b600061417d8261387a565b91506141888361387a565b9250828201905060ff8111156141a1576141a0613c33565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b60006141dd601283613647565b91506141e8826141a7565b602082019050919050565b6000602082019050818103600083015261420c816141d0565b9050919050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b6000614249601083613647565b915061425482614213565b602082019050919050565b600060208201905081810360008301526142788161423c565b9050919050565b7f4d696e2f4d6178206572726f7200000000000000000000000000000000000000600082015250565b60006142b5600d83613647565b91506142c08261427f565b602082019050919050565b600060208201905081810360008301526142e4816142a8565b9050919050565b7f4d617820746f6f206c6f77000000000000000000000000000000000000000000600082015250565b6000614321600b83613647565b915061432c826142eb565b602082019050919050565b6000602082019050818103600083015261435081614314565b9050919050565b7f4d617820746f6f20686967680000000000000000000000000000000000000000600082015250565b600061438d600c83613647565b915061439882614357565b602082019050919050565b600060208201905081810360008301526143bc81614380565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006143f9600983613647565b9150614404826143c3565b602082019050919050565b60006020820190508181036000830152614428816143ec565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000614465600f83613647565b91506144708261442f565b602082019050919050565b6000602082019050818103600083015261449481614458565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b60006144d1601d83613647565b91506144dc8261449b565b602082019050919050565b60006020820190508181036000830152614500816144c4565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b600061453d601583613647565b915061454882614507565b602082019050919050565b6000602082019050818103600083015261456c81614530565b9050919050565b60008151905061458281613725565b92915050565b60006020828403121561459e5761459d6136ee565b5b60006145ac84828501614573565b91505092915050565b60006040820190506145ca6000830185613abb565b6145d76020830184613abb565b9392505050565b600081519050919050565b600081905092915050565b60006145ff826145de565b61460981856145e9565b9350614619818560208601613658565b80840191505092915050565b600061463182846145f4565b915081905092915050565b7f4661696c656420616464696e67206c6971756964697479000000000000000000600082015250565b6000614672601783613647565b915061467d8261463c565b602082019050919050565b600060208201905081810360008301526146a181614665565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b60006146de601783613647565b91506146e9826146a8565b602082019050919050565b6000602082019050818103600083015261470d816146d1565b9050919050565b6000819050919050565b600061473961473461472f846136f3565b614714565b6136f3565b9050919050565b600061474b8261471e565b9050919050565b600061475d82614740565b9050919050565b61476d81614752565b82525050565b60006020820190506147886000830184614764565b92915050565b600061479982613949565b91506147a483613949565b9250828201905061ffff8111156147be576147bd613c33565b5b92915050565b7f416c6c2063616e6e6f7420626520300000000000000000000000000000000000600082015250565b60006147fa600f83613647565b9150614805826147c4565b602082019050919050565b60006020820190508181036000830152614829816147ed565b9050919050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614866601d83613647565b915061487182614830565b602082019050919050565b6000602082019050818103600083015261489581614859565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b60006148d2600b83613647565b91506148dd8261489c565b602082019050919050565b60006020820190508181036000830152614901816148c5565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061493e601183613647565b915061494982614908565b602082019050919050565b6000602082019050818103600083015261496d81614931565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006149f76149f26149ed846149d2565b614714565b613751565b9050919050565b614a07816149dc565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a4281613713565b82525050565b6000614a548383614a39565b60208301905092915050565b6000602082019050919050565b6000614a7882614a0d565b614a828185614a18565b9350614a8d83614a29565b8060005b83811015614abe578151614aa58882614a48565b9750614ab083614a60565b925050600181019050614a91565b5085935050505092915050565b600060a082019050614ae060008301886137fd565b614aed60208301876149fe565b8181036040830152614aff8186614a6d565b9050614b0e6060830185613abb565b614b1b60808301846137fd565b9695505050505050565b600060c082019050614b3a6000830189613abb565b614b4760208301886137fd565b614b5460408301876149fe565b614b6160608301866149fe565b614b6e6080830185613abb565b614b7b60a08301846137fd565b979650505050505050565b600081519050614b958161375b565b92915050565b600080600060608486031215614bb457614bb36136ee565b5b6000614bc286828701614b86565b9350506020614bd386828701614b86565b9250506040614be486828701614b86565b915050925092509256fea26469706673582212208237ac625a8edcff7af1e85c9646667d9f91282ad5c4c2fdc88e99e4fc55a58264736f6c63430008130033

Deployed Bytecode Sourcemap

2307:14475:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5537:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5875:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5267:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6332:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11905:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16210:567;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5361:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13533:462;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13339:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11815:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13435:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12140:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11557:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11319:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11999:135;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5623:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2114:137;;;;;;;;;;;;;:::i;:::-;;12674:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11436:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1864:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5447:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14003:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6099:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13235:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5734:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7069:805;;;:::i;:::-;;12783:343;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1951:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12330:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13134:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5537:80;5585:13;5609:5;;;;;;;;;;;;;;;;;5602:12;;5537:80;:::o;5875:216::-;5950:4;6002:6;5967:11;:23;5979:10;5967:23;;;;;;;;;;;;;;;:32;5991:7;5967:32;;;;;;;;;;;;;;;:41;;;;6045:7;6024:37;;6033:10;6024:37;;;6054:6;6024:37;;;;;;:::i;:::-;;;;;;;;6079:4;6072:11;;5875:216;;;;:::o;5267:88::-;5322:7;2385:1;2451:2;:13;;;;:::i;:::-;2433:14;:32;;;;:::i;:::-;5333:19;;5267:88;:::o;6332:404::-;6432:4;6457:25;6475:6;6457:17;:25::i;:::-;6449:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;6552:17;6517:11;:19;6529:6;6517:19;;;;;;;;;;;;;;;:31;6537:10;6517:31;;;;;;;;;;;;;;;;:52;6514:157;;6653:6;6619:11;:19;6631:6;6619:19;;;;;;;;;;;;;;;:31;6639:10;6619:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6585:11;:19;6597:6;6585:19;;;;;;;;;;;;;;;:31;6605:10;6585:31;;;;;;;;;;;;;;;:74;;;;6514:157;6688:40;6702:6;6710:9;6721:6;6688:13;:40::i;:::-;6681:47;;6332:404;;;;;:::o;11905:86::-;11946:5;11971:12;;;;;;;;;;;11964:19;;11905:86;:::o;16210:567::-;1801:6;;;;;;;;;;1787:20;;:10;:20;;;1779:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4136:4:::1;4123:10;;:17;;;;;;;;;;;;;;;;;;16348:3:::2;16328:16;:23;;;;16320:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;16393:20;16462:3;16443:16;16416:43;;:9;:24;16434:4;16416:24;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:49;;;;:::i;:::-;16393:72;;2385:1;16495:2;:15;;;;:::i;:::-;16480:12;:30;16476:97;;;16527:34;16548:12;16527:20;:34::i;:::-;16476:97;16587:7;16583:187;;;16612:18;16633:21;16612:42;;16690:1;16677:10;:14;16669:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;16717:40;16735:21;16717:17;:40::i;:::-;16596:174;16583:187;16309:468;4178:5:::1;4165:10;;:18;;;;;;;;;;;;;;;;;;16210:567:::0;;:::o;5361:80::-;5413:5;2385:1;5422:16;;5361:80;:::o;13533:462::-;1801:6;;;;;;;;;;1787:20;;:10;:20;;;1779:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13639:16:::1;13705:1;13698:4;13673:22;13658:37;;2385:1;2451:2;:13;;;;:::i;:::-;2433:14;:32;;;;:::i;:::-;13658:37;;;;:::i;:::-;:44;;;;:::i;:::-;:48;;;;:::i;:::-;13639:67;;13737:12;;13725:8;:24;;13717:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13790:8;13775:12;:23;;;;13809:20;13874:1;13867:4;13847:17;13832:32;;2385:1;2451:2;:13;;;;:::i;:::-;2433:14;:32;;;;:::i;:::-;13832;;;;:::i;:::-;:39;;;;:::i;:::-;:43;;;;:::i;:::-;13809:66;;13910:16;;13894:12;:32;;13886:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13975:12;13956:16;:31;;;;13628:367;;13533:462:::0;;:::o;13339:90::-;13383:7;13410:11;;13403:18;;13339:90;:::o;11815:84::-;11855:5;11880:11;;;;;;;;;;;11873:18;;11815:84;:::o;13435:90::-;13479:7;13506:11;;13499:18;;13435:90;:::o;12140:182::-;1801:6;;;;;;;;;;1787:20;;:10;:20;;;1779:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12232:1:::1;12224:4;12218:3;:10;;;;:::i;:::-;:15;;;;12210:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12281:3;12267:11;;:17;;;;;;;;;;;;;;;;;;12310:4;12295:12;;:19;;;;;;;;;;;;;;;;;;12140:182:::0;;:::o;11557:250::-;1801:6;;;;;;;;;;1787:20;;:10;:20;;;1779:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11654:8:::1;:18;;;;11666:6;11654:18;11650:72;;;11685:5;:13;11691:6;11685:13;;;;;;;;;;;;;;;;;;;;;;;;;11684:14;11676:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;11650:72;11752:6;11732:7;:17;11741:6;11732:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11791:8;11769:9;:19;11780:6;11769:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;11557:250:::0;;;:::o;11319:110::-;11382:4;11406:7;:15;11414:6;11406:15;;;;;;;;;;;;;;;;;;;;;;;;;11399:22;;11319:110;;;:::o;11999:135::-;12042:16;12060:9;12092:19;;;;;;;;;;12113:12;;;;;;;;;;;12083:43;;;;11999:135;;:::o;5623:105::-;5689:7;5707:9;:18;5717:7;5707:18;;;;;;;;;;;;;;;;5700:25;;5623:105;;;:::o;2114:137::-;1801:6;;;;;;;;;;1787:20;;:10;:20;;;1779:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2191:1:::1;2174:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2210:32;2239:1;2210:32;;;;;;:::i;:::-;;;;;;;;2114:137::o:0;12674:101::-;12724:7;12751:16;;;;;;;;;;;12744:23;;12674:101;:::o;11436:114::-;11501:4;11525:9;:17;11535:6;11525:17;;;;;;;;;;;;;;;;;;;;;;;;;11518:24;;11436:114;;;:::o;1864:81::-;1902:7;1930:6;;;;;;;;;;;1923:13;;1864:81;:::o;5447:84::-;5497:13;5521:7;;;;;;;;;;;;;;;;;5514:14;;5447:84;:::o;14003:436::-;1801:6;;;;;;;;;;1787:20;;:10;:20;;;1779:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14165:10:::1;14139:36;;14154:8;14139:23;;2385:1;2451:2;:13;;;;:::i;:::-;2433:14;:32;;;;:::i;:::-;14139:23;;;;:::i;:::-;:36;;;;:::i;:::-;14125:11;:50;;;;14226:10;14200:36;;14215:8;14200:23;;2385:1;2451:2;:13;;;;:::i;:::-;2433:14;:32;;;;:::i;:::-;14200:23;;;;:::i;:::-;:36;;;;:::i;:::-;14186:11;:50;;;;14268:11;;14255;;:24;;14247:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;14343:6;2385:1;2451:2;:13;;;;:::i;:::-;2433:14;:32;;;;:::i;:::-;14328:21;;;;:::i;:::-;14316:11;;:33;14308:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14411:3;2385:1;2451:2;:13;;;;:::i;:::-;2433:14;:32;;;;:::i;:::-;14396:18;;;;:::i;:::-;14384:11;;:30;14376:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;14003:436:::0;;;;:::o;6099:225::-;6179:4;6204:29;6222:10;6204:17;:29::i;:::-;6196:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6272:44;6286:10;6298:9;6309:6;6272:13;:44::i;:::-;6265:51;;6099:225;;;;:::o;13235:96::-;13284:7;13311:12;;13304:19;;13235:96;:::o;5734:133::-;5818:7;5836:11;:19;5848:6;5836:19;;;;;;;;;;;;;;;:28;5856:7;5836:28;;;;;;;;;;;;;;;;5829:35;;5734:133;;;;:::o;7069:805::-;1801:6;;;;;;;;;;1787:20;;:10;:20;;;1779:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4136:4:::1;4123:10;;:17;;;;;;;;;;;;;;;;;;7173:1:::2;7151:24;;:10;;;;;;;;;;;:24;;;7143:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7209:12;;;;;;;;;;;7208:13;7200:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7272:1;7260:9;:13;:40;;;;7299:1;7277:21;:23;7260:40;7252:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7378:1;7353:9;:24;7371:4;7353:24;;;;;;;;;;;;;;;;:26;7345:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7447:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7429:58;;;7496:4;7503:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7429:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7416:10;;:113;;;;;;;;;;;;;;;;;;7540:69;7554:9;:24;7572:4;7554:24;;;;;;;;;;;;;;;;7580:21;7603:5;7540:13;:69::i;:::-;7645:10;;7620:9;:21;7630:10;;;;;;;;;;;7620:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;7667:17;7689:10;;;;;;;;;;;:15;;7705:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7689:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7666:73;;;7758:12;7750:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;7829:12;7809:5;:17;7815:10;;;;;;;;;;;7809:17;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7852:14;:12;:14::i;:::-;7132:742;4178:5:::1;4165:10;;:18;;;;;;;;;;;;;;;;;;7069:805::o:0;12783:343::-;1801:6;;;;;;;;;;1787:20;;:10;:20;;;1779:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12882:5:::1;:16;12888:9;12882:16;;;;;;;;;;;;;;;;;;;;;;;;;12881:17;:37;;;;;12903:5;:15;12909:8;12903:15;;;;;;;;;;;;;;;;;;;;;;;;;12902:16;12881:37;12873:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12994:9;12967:16;;:37;;;;;;;;;;;;;;;;;;13026:8;13015;;:19;;;;;;;;;;;;;;;;;;13076:4;13055:7;:18;13063:9;13055:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13114:4;13091:9;:20;13101:9;13091:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12783:343:::0;;:::o;1951:157::-;1801:6;;;;;;;;;;1787:20;;:10;:20;;;1779:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2044:8:::1;2035:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2069:30;2090:8;2069:30;;;;;;:::i;:::-;;;;;;;;1951:157:::0;:::o;12330:336::-;1801:6;;;;;;;;;;1787:20;;:10;:20;;;1779:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12426:18:::1;12462:15;12447:12;:30;;;;:::i;:::-;12426:51;;12511:1;12497:11;:15;;;12488:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;12558:12;12543;;:27;;;;;;;;;;;;;;;;;;12603:15;12581:19;::::0;:37:::1;;;;;;;;;;;;;;;;;;12647:11;12629:15;;:29;;;;;;;;;;;;;;;;;;12415:251;12330:336:::0;;:::o;13134:95::-;13178:7;13205:16;;13198:23;;13134:95;:::o;10175:279::-;10240:4;10256:16;10275:5;10256:24;;10296:12;;;;;;;;;;;10291:124;;;10327:4;10313:18;;10291:124;;;10354:7;:15;10362:6;10354:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;10373:9;:17;10383:6;10373:17;;;;;;;;;;;;;;;;;;;;;;;;;10354:36;10350:65;;;10408:4;10394:18;;10350:65;10291:124;10435:11;10428:18;;;10175:279;;;:::o;8590:1074::-;8682:4;8725:1;8707:20;;:6;:20;;;8699:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8777:12;;;;;;;;;;;8772:89;;8801:7;:15;8809:6;8801:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;8820:9;:17;8830:6;8820:17;;;;;;;;;;;;;;;;;;;;;;;;;8801:36;8793:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8772:89;8877:10;;;;;;;;;;;8876:11;:31;;;;;8891:5;:16;8897:9;8891:16;;;;;;;;;;;;;;;;;;;;;;;;;8876:31;8871:64;;;8912:20;:18;:20::i;:::-;8871:64;8965:13;;8950:12;:28;:60;;;;;8998:12;;8982;:28;;8950:60;:77;;;;;9014:5;:13;9020:6;9014:13;;;;;;;;;;;;;;;;;;;;;;;;;8950:77;8945:158;;;9066:9;9053:22;;:9;:22;;;9045:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8945:158;9136:4;9118:23;;:6;:23;;;;:53;;;;;9166:4;9145:26;;:9;:26;;;;9118:53;:73;;;;;9185:6;;;;;;;;;;9175:16;;:6;:16;;;;9118:73;9113:179;;;9218:39;9231:6;9239:9;9250:6;9218:12;:39::i;:::-;9210:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;9113:179;9302:18;9323:40;9337:6;9345:9;9356:6;9323:13;:40::i;:::-;9302:61;;9374:23;9409:10;9400:6;:19;;;;:::i;:::-;9374:45;;9470:6;9450:9;:17;9460:6;9450:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9430:9;:17;9440:6;9430:17;;;;;;;;;;;;;;;:46;;;;9501:10;9487;;:24;;;;;;;:::i;:::-;;;;;;;;9568:15;9545:9;:20;9555:9;9545:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9522:9;:20;9532:9;9522:20;;;;;;;;;;;;;;;:61;;;;9616:9;9599:35;;9608:6;9599:35;;;9627:6;9599:35;;;;;;:::i;:::-;;;;;;;;9652:4;9645:11;;;;8590:1074;;;;;:::o;15725:366::-;15795:27;15810:11;15795:14;:27::i;:::-;15833:21;15871:1;15857:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15833:40;;15902:4;15884;15889:1;15884:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15928:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15918:4;15923:1;15918:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;15964:18;;;;;;;;;;;:69;;;16034:11;16046:1;16048:4;16061;16067:15;15964:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15784:307;15725:366;:::o;16099:103::-;16161:16;;;;;;;;;;;:25;;:33;16187:6;16161:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16099:103;:::o;7882:385::-;7985:24;8012:8;;;;;;;;;;;7985:35;;8036:8;8031:50;;;8076:1;8049:29;;8031:50;8091:28;8106:12;8091:14;:28::i;:::-;8130:18;;;;;;;;;;;:34;;;8172:13;8197:4;8204:12;8218:1;8221;8224:16;8242:15;8130:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7974:293;7882:385;;;:::o;8275:307::-;8357:3;8353:1;2385;2451:2;:13;;;;:::i;:::-;2433:14;:32;;;;:::i;:::-;8338:16;;;;:::i;:::-;:22;;;;:::i;:::-;8319:12;:41;;;;8410:3;8406:1;2385;2451:2;:13;;;;:::i;:::-;2433:14;:32;;;;:::i;:::-;8391:16;;;;:::i;:::-;:22;;;;:::i;:::-;8372:16;:41;;;;8439:4;8424:12;;:19;;;;;;;;;;;;;;;;;;8469:12;8454;:27;;;;8558:16;;;;;;;;;;;8508:66;;8539:16;;;;;;;;;;;8508:47;;8524:12;;8508:13;;:28;;;;:::i;:::-;:47;;;;:::i;:::-;:66;;;;:::i;:::-;8492:13;:82;;;;8275:307::o;14449:1268::-;4136:4;4123:10;;:17;;;;;;;;;;;;;;;;;;14510:27:::1;14540:10;;14510:40;;14589:11;;14566:19;:34;;:50;;;;;14604:12;;;;;;;;;;;14566:50;14561:1149;;;14662:11;;14639:19;:34;14634:80;;14700:11;;14678:33;;14634:80;14728:20;14806:1;14788:15:::0;::::1;;;;;;;;;;14751:52;;14773:12;;;;;;;;;;;14751:34;;:19;:34;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;14728:79;;14836:21;14882:12;14860:19;:34;;;;:::i;:::-;14836:58;;2385:1;14929:2;:13;;;;:::i;:::-;14913;:29;14909:639;;;14964:19;14986:21;14964:43;;15054:19;15026:9;:24;15044:4;15026:24;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;15092:35;15113:13;15092:20;:35::i;:::-;15160:19;15146:10;;:33;;;;;;;:::i;:::-;;;;;;;;15198:19;15244:11;15220:21;:35;;;;:::i;:::-;15198:57;;15294:1;15279:12;;;;;;;;;;;:16;;;15274:259;;;15321:21;15374:15;;;;;;;;;;;15345:44;;15359:12;;;;;;;;;;;15345:26;;:11;:26;;;;:::i;:::-;:44;;;;:::i;:::-;15321:68;;15413:28;15428:12;15413:14;:28::i;:::-;15464:49;15478:12;15492:13;15507:5;15464:13;:49::i;:::-;15298:235;15274:259;14945:603;;14909:639;15562:27;15592:21;15562:51;;15653:1;15631:19;:23;15628:71;;;15658:38;15676:19;15658:17;:38::i;:::-;15628:71;14619:1091;;;14561:1149;14499:1218;4178:5:::0;4165:10;;:18;;;;;;;;;;;;;;;;;;14449:1268::o;9672:495::-;9776:4;9793:21;9817:4;9793:28;;9837:12;;;;;;;;;;;:34;;;;;9854:9;:17;9864:6;9854:17;;;;;;;;;;;;;;;;;;;;;;;;;9853:18;9837:34;:59;;;;;9876:9;:20;9886:9;9876:20;;;;;;;;;;;;;;;;;;;;;;;;;9875:21;9837:59;9832:294;;;9936:12;;9919:14;:29;9914:201;;;9972:5;9953:24;;9914:201;;;10005:5;:16;10011:9;10005:16;;;;;;;;;;;;;;;;;;;;;;;;;10004:17;:79;;;;;10066:16;;10049:14;10026:9;:20;10036:9;10026:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;10004:79;9999:116;;;10107:5;10088:24;;9999:116;9914:201;9832:294;10143:16;10136:23;;;9672:495;;;;;:::o;10462:847::-;10559:7;10579:17;10623:12;;;;;;;;;;;10622:13;:32;;;;10639:7;:15;10647:6;10639:15;;;;;;;;;;;;;;;;;;;;;;;;;10622:32;:54;;;;10658:7;:18;10666:9;10658:18;;;;;;;;;;;;;;;;;;;;;;;;;10622:54;10617:656;;;10707:1;10695:13;;10617:656;;;10732:5;:13;10738:6;10732:13;;;;;;;;;;;;;;;;;;;;;;;;;10727:546;;;10819:16;;;;;;;;;;;10785:50;;10800:16;;;;;;;;;;;10785:31;;:12;;:31;;;;:::i;:::-;:50;;;;:::i;:::-;10769:12;:66;10764:400;;10892:3;10878:11;;;;;;;;;;;10869:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;10857:38;;10764:400;;;10954:16;;;;;;;;;;;10939:31;;:12;;:31;;;;:::i;:::-;10923:12;:47;10918:246;;11029:3;11013:13;;;;;;;;;;;11004:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;10992:40;;10918:246;;;11075:12;;11059;:28;11054:110;;11145:3;11129:13;;;;;;;;;;;11120:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11108:40;;11054:110;10918:246;10764:400;10727:546;;;11186:5;:16;11192:9;11186:16;;;;;;;;;;;;;;;;;;;;;;;;;11181:92;;;11257:3;11242:12;;;;;;;;;;;11233:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;11221:39;;11181:92;10727:546;10617:656;11292:9;11285:16;;;10462:847;;;;;:::o;6744:317::-;6864:12;6815:11;:26;6835:4;6815:26;;;;;;;;;;;;;;;:46;3794:42;6815:46;;;;;;;;;;;;;;;;:61;6810:244;;;6943:17;6894:11;:26;6914:4;6894:26;;;;;;;;;;;;;;;:46;3794:42;6894:46;;;;;;;;;;;;;;;:66;;;;3794:42;6980:62;;6997:4;6980:62;;;7024:17;6980:62;;;;;;:::i;:::-;;;;;;;;6810:244;6744: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://8237ac625a8edcff7af1e85c9646667d9f91282ad5c4c2fdc88e99e4fc55a582
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.