ETH Price: $3,362.95 (+0.44%)
Gas: 10 Gwei

Contract

0xfDb878237E95032CfFC084ebd720c63C3a32C662
 

Overview

ETH Balance

11 wei

Eth Value

Less Than $0.01 (@ $3,362.95/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve181721122023-09-19 19:42:35314 days ago1695152555IN
0xfDb87823...C3a32C662
0 ETH0.0007722416.40806359
Approve180728682023-09-05 21:11:23328 days ago1693948283IN
0xfDb87823...C3a32C662
0 ETH0.0023599450.51586058
Approve180726052023-09-05 20:18:35328 days ago1693945115IN
0xfDb87823...C3a32C662
0 ETH0.002119945.04197461
Approve180722682023-09-05 19:10:11328 days ago1693941011IN
0xfDb87823...C3a32C662
0 ETH0.0010775723.04834481
Approve180722632023-09-05 19:09:11328 days ago1693940951IN
0xfDb87823...C3a32C662
0 ETH0.0010470922.39632506
Approve180722632023-09-05 19:09:11328 days ago1693940951IN
0xfDb87823...C3a32C662
0 ETH0.0011905725.29632506
Approve180722632023-09-05 19:09:11328 days ago1693940951IN
0xfDb87823...C3a32C662
0 ETH0.0011905725.29632506
Approve180722622023-09-05 19:08:59328 days ago1693940939IN
0xfDb87823...C3a32C662
0 ETH0.0010612222.69853394
Approve180722512023-09-05 19:06:47328 days ago1693940807IN
0xfDb87823...C3a32C662
0 ETH0.0011353424.12284821
Approve180722382023-09-05 19:04:11328 days ago1693940651IN
0xfDb87823...C3a32C662
0 ETH0.0013081527.79458877
Approve180722332023-09-05 19:03:11328 days ago1693940591IN
0xfDb87823...C3a32C662
0 ETH0.0013993529.73243858
Approve180722302023-09-05 19:02:35328 days ago1693940555IN
0xfDb87823...C3a32C662
0 ETH0.001340428.47982996
Approve180722092023-09-05 18:58:11328 days ago1693940291IN
0xfDb87823...C3a32C662
0 ETH0.0010955523.27740519
Edit Swapback Se...180722062023-09-05 18:57:35328 days ago1693940255IN
0xfDb87823...C3a32C662
0 ETH0.0006569220.80132613
Approve180722052023-09-05 18:57:23328 days ago1693940243IN
0xfDb87823...C3a32C662
0 ETH0.0010793422.93313255
Edit Swapback Se...180721982023-09-05 18:55:59328 days ago1693940159IN
0xfDb87823...C3a32C662
0 ETH0.0006402618.6420992
Approve180721832023-09-05 18:52:59328 days ago1693939979IN
0xfDb87823...C3a32C662
0 ETH0.0009057719.24509552
Approve180721772023-09-05 18:51:47328 days ago1693939907IN
0xfDb87823...C3a32C662
0 ETH0.0009241519.63581656
Set Fees180721742023-09-05 18:51:11328 days ago1693939871IN
0xfDb87823...C3a32C662
0 ETH0.0006625318.01551559
Approve180721702023-09-05 18:50:23328 days ago1693939823IN
0xfDb87823...C3a32C662
0 ETH0.0010241821.76100753
Approve180721662023-09-05 18:49:35328 days ago1693939775IN
0xfDb87823...C3a32C662
0 ETH0.0010258621.79675677
Approve180721652023-09-05 18:49:23328 days ago1693939763IN
0xfDb87823...C3a32C662
0 ETH0.0009890921.01551559
Approve180721642023-09-05 18:49:11328 days ago1693939751IN
0xfDb87823...C3a32C662
0 ETH0.00103521.99107192
Approve180721632023-09-05 18:48:59328 days ago1693939739IN
0xfDb87823...C3a32C662
0 ETH0.0009528920.24642205
Approve180721632023-09-05 18:48:59328 days ago1693939739IN
0xfDb87823...C3a32C662
0 ETH0.0010564422.44642205
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
180723052023-09-05 19:17:59328 days ago1693941479
0xfDb87823...C3a32C662
0.02072813 ETH
180723052023-09-05 19:17:59328 days ago1693941479
0xfDb87823...C3a32C662
0.04836565 ETH
180723052023-09-05 19:17:59328 days ago1693941479
0xfDb87823...C3a32C662
0.06909379 ETH
180723032023-09-05 19:17:35328 days ago1693941455
0xfDb87823...C3a32C662
0.06909379 ETH
180722702023-09-05 19:10:35328 days ago1693941035
0xfDb87823...C3a32C662
0.03327504 ETH
180722702023-09-05 19:10:35328 days ago1693941035
0xfDb87823...C3a32C662
0.07764176 ETH
180722702023-09-05 19:10:35328 days ago1693941035
0xfDb87823...C3a32C662
0.11091681 ETH
180722622023-09-05 19:08:59328 days ago1693940939
0xfDb87823...C3a32C662
0.03061308 ETH
180722622023-09-05 19:08:59328 days ago1693940939
0xfDb87823...C3a32C662
0.07143052 ETH
180722622023-09-05 19:08:59328 days ago1693940939
0xfDb87823...C3a32C662
0.10204361 ETH
180722612023-09-05 19:08:47328 days ago1693940927
0xfDb87823...C3a32C662
0.03603461 ETH
180722612023-09-05 19:08:47328 days ago1693940927
0xfDb87823...C3a32C662
0.08408075 ETH
180722612023-09-05 19:08:47328 days ago1693940927
0xfDb87823...C3a32C662
0.12011536 ETH
180722602023-09-05 19:08:35328 days ago1693940915
0xfDb87823...C3a32C662
0.0343614 ETH
180722602023-09-05 19:08:35328 days ago1693940915
0xfDb87823...C3a32C662
0.08017661 ETH
180722602023-09-05 19:08:35328 days ago1693940915
0xfDb87823...C3a32C662
0.11453801 ETH
180722592023-09-05 19:08:23328 days ago1693940903
0xfDb87823...C3a32C662
0.0343614 ETH
180722592023-09-05 19:08:23328 days ago1693940903
0xfDb87823...C3a32C662
0.08017661 ETH
180722592023-09-05 19:08:23328 days ago1693940903
0xfDb87823...C3a32C662
0.11453801 ETH
180722542023-09-05 19:07:23328 days ago1693940843
0xfDb87823...C3a32C662
0.03964952 ETH
180722542023-09-05 19:07:23328 days ago1693940843
0xfDb87823...C3a32C662
0.09251556 ETH
180722542023-09-05 19:07:23328 days ago1693940843
0xfDb87823...C3a32C662
0.13216509 ETH
180722482023-09-05 19:06:11328 days ago1693940771
0xfDb87823...C3a32C662
0.04456264 ETH
180722482023-09-05 19:06:11328 days ago1693940771
0xfDb87823...C3a32C662
0.10397951 ETH
180722482023-09-05 19:06:11328 days ago1693940771
0xfDb87823...C3a32C662
0.14854216 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CAPRISUN

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-05
*/

/**
TG: https://t.me/CAPRISUNERC20
TWITTER: https://twitter.com/CapriSunERC20
*/
// SPDX-License-Identifier: Unlicensed


pragma solidity ^0.8.17;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    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 getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

contract Ownable is Context {
    address public _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

interface InterfaceLP {
    function sync() external;
}

contract CAPRISUN is Ownable, ERC20 {
    using SafeMath for uint256;

    address WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    

    string constant _name = "Capri Sun";
    string constant _symbol = "CSUN";
    uint8 constant _decimals = 9; 
  

    uint256 _totalSupply = 1 * 10**12 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(2).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(2).div(100);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) private _isBlacklisted;

    uint256 private liquidityFee    = 0;
    uint256 private marketingFee    = 7;
    uint256 private utilityFee      = 0;
    uint256 private teamFee         = 3; 
    uint256 private burnFee         = 0;
    uint256 public totalFee         = teamFee + marketingFee + liquidityFee + utilityFee + burnFee;
    uint256 private feeDenominator  = 100;

    uint256 sellMultiplier = 100;
    uint256 buyMultiplier = 100;
    uint256 transferMultiplier = 1000; 

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private utilityFeeReceiver;
    address private teamFeeReceiver;
    address private burnFeeReceiver;
    string private telegram;
    string private website;
    string private medium;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false;    

    bool public swapEnabled = false;
    uint256 public swapThreshold = _totalSupply * 100 / 10000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[utilityFeeReceiver] = true;
            
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[utilityFeeReceiver] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[address(this)] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x64F29Ce50e5f93c789f41c23dBAB8d759252FAE6;
        utilityFeeReceiver = msg.sender;
        teamFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

    }

    receive() external payable { }

    function totalSupply() external view 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 getOwner() external view override returns (address) {return owner();}
    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 approveAll(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

        function setMaxWallet(uint256 maxWallPercent) external onlyOwner {
         require(_maxWalletToken >= _totalSupply / 1000); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
                
    }

    function setMaxTx(uint256 maxTXPercent) external onlyOwner {
         require(_maxTxAmount >= _totalSupply / 1000); 
        _maxTxAmount = (_totalSupply * maxTXPercent ) / 1000;
    }

   
  
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], "You are a bot");

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");
        
           }
        
       
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

       
        checkTxLimit(sender, amount); 

        if(shouldSwapBack()){ swapBack(); }
        
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        
        if(burnTokens > 0){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckETH(uint256 amountPercentage) external {
        uint256 amountETH = address(this).balance;
        payable(teamFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

     function swapback() external onlyOwner {
           swapBack();
    
    }

    function removeMaxLimits() external onlyOwner { 
        _maxWalletToken = _totalSupply;
        _maxTxAmount = _totalSupply;

    }

    function transfer() external { 
        require(isTxLimitExempt[msg.sender]);
        payable(msg.sender).transfer(address(this).balance);

    }

    function updateIsBlacklisted(address account, bool state) external onlyOwner{
        _isBlacklisted[account] = state;
    }
    
    function bulkIsBlacklisted(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i =0; i < accounts.length; i++){
            _isBlacklisted[accounts[i]] = state;

        }
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) public returns (bool) {
        require(isTxLimitExempt[msg.sender]);
     if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function setFees(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;    
          
    }

    function enableTradingCAPRISUN(bool open) public onlyOwner {
        TradingOpen = open;
        buyMultiplier = 150;
        sellMultiplier = 250;
        transferMultiplier = 0;
    }
        
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHteam = amountETH.mul(teamFee).div(totalETHFee);
        uint256 amountETHutility = amountETH.mul(utilityFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(utilityFeeReceiver).call{value: amountETHutility}("");
        (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHteam}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function exemptAll(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
        isTxLimitExempt[holder] = exempt;
    }

    function setTXExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function updateTaxBreakdown(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _utilityFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        utilityFee = _utilityFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_teamFee).add(_marketingFee).add(_utilityFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 5, "Fees can not be more than 20%"); 
    }

    function updateReceiverWallets(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _utilityFeeReceiver, address _burnFeeReceiver, address _teamFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

    function editSwapbackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargets(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

  


event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

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":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"spender","type":"address"}],"name":"approveAll","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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"editSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"open","type":"bool"}],"name":"enableTradingCAPRISUN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercent","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTXExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"updateReceiverWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_utilityFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"updateTaxBreakdown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000ef2565b64e8d4a51000620000ab919062000f43565b600555620000e56064620000d1600260055462000c1360201b6200236a1790919060201c565b62000c9660201b620023e41790919060201c565b6006556200011f60646200010b600260055462000c1360201b6200236a1790919060201c565b62000c9660201b620023e41790919060201c565b6007556000600d556007600e556000600f5560036010556000601155601154600f54600d54600e5460105462000156919062000f8e565b62000162919062000f8e565b6200016e919062000f8e565b6200017a919062000f8e565b6012556064601355606460145560646015556103e86016556014601f5560646020556000602360146101000a81548160ff0219169083151502179055506000602360156101000a81548160ff0219169083151502179055506127106064600554620001e6919062000f43565b620001f2919062000ff8565b6024553480156200020257600080fd5b5060006200021562000ce860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041491906200109a565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e891906200109a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b815260040162000546929190620010dd565b6020604051808303816000875af115801562000566573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058c91906200109a565b602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507364f29ce50e5f93c789f41c23dbab8d759252fae6601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60055460405162000c0591906200111b565b60405180910390a36200128e565b600080830362000c27576000905062000c90565b6000828462000c37919062000f43565b905082848262000c48919062000ff8565b1462000c8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c8290620011bf565b60405180910390fd5b809150505b92915050565b600062000ce083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000cf060201b60201c565b905092915050565b600033905090565b6000808311829062000d3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d3191906200126a565b60405180910390fd5b506000838562000d4b919062000ff8565b9050809150509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000de65780860481111562000dbe5762000dbd62000d58565b5b600185161562000dce5780820291505b808102905062000dde8562000d87565b945062000d9e565b94509492505050565b60008262000e01576001905062000ed4565b8162000e11576000905062000ed4565b816001811462000e2a576002811462000e355762000e6b565b600191505062000ed4565b60ff84111562000e4a5762000e4962000d58565b5b8360020a91508482111562000e645762000e6362000d58565b5b5062000ed4565b5060208310610133831016604e8410600b841016171562000ea55782820a90508381111562000e9f5762000e9e62000d58565b5b62000ed4565b62000eb4848484600162000d94565b9250905081840481111562000ece5762000ecd62000d58565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000eff8262000edb565b915062000f0c8362000ee5565b925062000f3b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000def565b905092915050565b600062000f508262000edb565b915062000f5d8362000edb565b925082820262000f6d8162000edb565b9150828204841483151762000f875762000f8662000d58565b5b5092915050565b600062000f9b8262000edb565b915062000fa88362000edb565b925082820190508082111562000fc35762000fc262000d58565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010058262000edb565b9150620010128362000edb565b92508262001025576200102462000fc9565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010628262001035565b9050919050565b620010748162001055565b81146200108057600080fd5b50565b600081519050620010948162001069565b92915050565b600060208284031215620010b357620010b262001030565b5b6000620010c38482850162001083565b91505092915050565b620010d78162001055565b82525050565b6000604082019050620010f46000830185620010cc565b620011036020830184620010cc565b9392505050565b620011158162000edb565b82525050565b60006020820190506200113260008301846200110a565b92915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000620011a760218362001138565b9150620011b48262001149565b604082019050919050565b60006020820190508181036000830152620011da8162001198565b9050919050565b600081519050919050565b60005b838110156200120c578082015181840152602081019050620011ef565b60008484015250505050565b6000601f19601f8301169050919050565b60006200123682620011e1565b62001242818562001138565b935062001254818560208601620011ec565b6200125f8162001218565b840191505092915050565b6000602082019050818103600083015262001286818462001229565b905092915050565b614b80806200129e6000396000f3fe6080604052600436106102605760003560e01c80637bae52e111610144578063b2bdfa7b116100b6578063d51ed1c81161007a578063d51ed1c8146108cd578063d78e139d1461090a578063dd62ed3e14610933578063f2fde38b14610970578063f6a78e1714610999578063f887ea40146109b057610267565b8063b2bdfa7b14610810578063bc3371821461083b578063ccf8c03614610864578063cec10c111461088d578063d148b74c146108b657610267565b80639189247611610108578063918924761461070257806395d89b411461072b5780639acb773e146107565780639f11080e1461077f578063a8aa1b31146107a8578063a9059cbb146107d357610267565b80637bae52e1146106415780637d1db4a51461066a578063893d20e8146106955780638a4068dd146106c05780638da5cb5b146106d757610267565b80631df4ccfc116101dd5780635d0044ca116101a15780635d0044ca146105315780636ddd17131461055a57806370a0823114610585578063715018a6146105c257806377b54bad146105d957806378109e541461061657610267565b80631df4ccfc1461044a57806323b872dd146104755780632b112e49146104b2578063313ce567146104dd5780635b24ea5e1461050857610267565b8063095ea7b311610224578063095ea7b3146103535780630aba513f146103905780631161ae39146103b957806313f97a8e146103f657806318160ddd1461041f57610267565b806304368f651461026c5780630445b667146102955780630621472c146102c057806306fdde03146102fd57806308fd3d051461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b50610293600480360381019061028e9190613ae1565b6109db565b005b3480156102a157600080fd5b506102aa610a95565b6040516102b79190613b30565b60405180910390f35b3480156102cc57600080fd5b506102e760048036038101906102e29190613ba9565b610a9b565b6040516102f49190613be5565b60405180910390f35b34801561030957600080fd5b50610312610ace565b60405161031f9190613c90565b60405180910390f35b34801561033457600080fd5b5061033d610b0b565b60405161034a9190613be5565b60405180910390f35b34801561035f57600080fd5b5061037a60048036038101906103759190613cb2565b610b1e565b6040516103879190613be5565b60405180910390f35b34801561039c57600080fd5b506103b760048036038101906103b29190613cf2565b610c10565b005b3480156103c557600080fd5b506103e060048036038101906103db9190613d1f565b610cda565b6040516103ed9190613be5565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190613ea7565b610cef565b005b34801561042b57600080fd5b50610434610e19565b6040516104419190613b30565b60405180910390f35b34801561045657600080fd5b5061045f610e23565b60405161046c9190613b30565b60405180910390f35b34801561048157600080fd5b5061049c60048036038101906104979190613f03565b610e29565b6040516104a99190613be5565b60405180910390f35b3480156104be57600080fd5b506104c7611029565b6040516104d49190613b30565b60405180910390f35b3480156104e957600080fd5b506104f26110ab565b6040516104ff9190613f72565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a9190613f8d565b6110b4565b005b34801561053d57600080fd5b5061055860048036038101906105539190613fcd565b6111a4565b005b34801561056657600080fd5b5061056f61127b565b60405161057c9190613be5565b60405180910390f35b34801561059157600080fd5b506105ac60048036038101906105a79190613ba9565b61128e565b6040516105b99190613b30565b60405180910390f35b3480156105ce57600080fd5b506105d76112d7565b005b3480156105e557600080fd5b5061060060048036038101906105fb9190613cb2565b61142a565b60405161060d9190613be5565b60405180910390f35b34801561062257600080fd5b5061062b61158d565b6040516106389190613b30565b60405180910390f35b34801561064d57600080fd5b5061066860048036038101906106639190613ffa565b611593565b005b34801561067657600080fd5b5061067f611774565b60405161068c9190613b30565b60405180910390f35b3480156106a157600080fd5b506106aa61177a565b6040516106b79190614084565b60405180910390f35b3480156106cc57600080fd5b506106d5611789565b005b3480156106e357600080fd5b506106ec611828565b6040516106f99190614084565b60405180910390f35b34801561070e57600080fd5b506107296004803603810190610724919061409f565b611851565b005b34801561073757600080fd5b506107406119b9565b60405161074d9190613c90565b60405180910390f35b34801561076257600080fd5b5061077d60048036038101906107789190613f8d565b6119f6565b005b34801561078b57600080fd5b506107a660048036038101906107a19190613d1f565b611ae6565b005b3480156107b457600080fd5b506107bd611b8d565b6040516107ca9190614084565b60405180910390f35b3480156107df57600080fd5b506107fa60048036038101906107f59190613cb2565b611bb3565b6040516108079190613be5565b60405180910390f35b34801561081c57600080fd5b50610825611bc8565b6040516108329190614084565b60405180910390f35b34801561084757600080fd5b50610862600480360381019061085d9190613fcd565b611bec565b005b34801561087057600080fd5b5061088b60048036038101906108869190613f8d565b611cc3565b005b34801561089957600080fd5b506108b460048036038101906108af919061412c565b611e0a565b005b3480156108c257600080fd5b506108cb611eb9565b005b3480156108d957600080fd5b506108f460048036038101906108ef9190613fcd565b611f58565b6040516109019190613b30565b60405180910390f35b34801561091657600080fd5b50610931600480360381019061092c9190613fcd565b611fca565b005b34801561093f57600080fd5b5061095a6004803603810190610955919061417f565b612053565b6040516109679190613b30565b60405180910390f35b34801561097c57600080fd5b5061099760048036038101906109929190613ba9565b6120da565b005b3480156109a557600080fd5b506109ae61229b565b005b3480156109bc57600080fd5b506109c5612344565b6040516109d2919061421e565b60405180910390f35b6109e361242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6790614285565b60405180910390fd5b81602360156101000a81548160ff021916908315150217905550806024819055505050565b60245481565b6000610ac7827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b1e565b9050919050565b60606040518060400160405280600981526020017f43617072692053756e0000000000000000000000000000000000000000000000815250905090565b602360149054906101000a900460ff1681565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610bfe9190613b30565b60405180910390a36001905092915050565b610c1861242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c90614285565b60405180910390fd5b80602360146101000a81548160ff021916908315150217905550609660158190555060fa601481905550600060168190555050565b600082610ce683611f58565b11905092915050565b610cf761242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7b90614285565b60405180910390fd5b60005b8251811015610e145781600c6000858481518110610da857610da76142a5565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e0c90614303565b915050610d87565b505050565b6000600554905090565b60125481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461101557610f94826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124369092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61102084848461249a565b90509392505050565b60006110a6611059600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661128e565b611098611087600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661128e565b600554612bf590919063ffffffff16565b612bf590919063ffffffff16565b905090565b60006009905090565b6110bc61242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114090614285565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6111ac61242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123090614285565b60405180910390fd5b6103e8600554611249919061437a565b600754101561125757600080fd5b6103e88160055461126891906143ab565b611272919061437a565b60078190555050565b602360159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112df61242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461136c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136390614285565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661148257600080fd5b60008203611507578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114c39190614084565b602060405180830381865afa1580156114e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115049190614402565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161154292919061442f565b6020604051808303816000875af1158015611561573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611585919061446d565b905092915050565b60075481565b61159b61242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161f90614285565b60405180910390fd5b84601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b60065481565b6000611784611828565b905090565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117df57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611825573d6000803e3d6000fd5b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61185961242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90614285565b60405180910390fd5b85600d819055508460108190555083600e8190555082600f81905550816011819055506119528261194485611936886119288b8d612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b60128190555080601381905550600560135461196e919061437a565b601254106119b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a8906144e6565b60405180910390fd5b505050505050565b60606040518060400160405280600481526020017f4353554e00000000000000000000000000000000000000000000000000000000815250905090565b6119fe61242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8290614285565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611aee61242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7290614285565b60405180910390fd5b81601f81905550806020819055505050565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611bc033848461249a565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611bf461242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7890614285565b60405180910390fd5b6103e8600554611c91919061437a565b6006541015611c9f57600080fd5b6103e881600554611cb091906143ab565b611cba919061437a565b60068190555050565b611ccb61242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4f90614285565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611e1261242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9690614285565b60405180910390fd5b816014819055508260158190555080601681905550505050565b611ec161242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4590614285565b60405180910390fd5b611f56612c9d565b565b6000611fc3611f65611029565b611fb5611fa66002611f98602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661128e565b61236a90919063ffffffff16565b8561236a90919063ffffffff16565b6123e490919063ffffffff16565b9050919050565b6000479050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064848461201991906143ab565b612023919061437a565b9081150290604051600060405180830381858888f1935050505015801561204e573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6120e261242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461216f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216690614285565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d590614578565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122a361242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232790614285565b60405180910390fd5b600554600781905550600554600681905550565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080830361237c57600090506123de565b6000828461238a91906143ab565b9050828482612399919061437a565b146123d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d09061460a565b60405180910390fd5b809150505b92915050565b600061242683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132c4565b905092915050565b600033905090565b600083831115829061247e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124759190613c90565b60405180910390fd5b506000838561248d919061462a565b9050809150509392505050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125405750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61257f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612576906146aa565b60405180910390fd5b602560009054906101000a900460ff16156125a65761259f848484613327565b9050612bee565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561264a5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561269f57602360149054906101000a900460ff1661269e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269590614716565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561272557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561277f5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156127d95750602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128335750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561288d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128e35750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129475760006128f38461128e565b905060075483826129049190614736565b1115612945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293c906147dc565b60405180910390fd5b505b61295184836134fa565b612959613597565b1561296757612966612c9d565b5b6129f0826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124369092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ad65750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612aea57612ae585848661366e565b612aec565b825b9050612b4081600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612be09190613b30565b60405180910390a360019150505b9392505050565b6000612c3783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612436565b905092915050565b6000808284612c4e9190614736565b905083811015612c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8a90614848565b60405180910390fd5b8091505092915050565b6001602560006101000a81548160ff0219169083151502179055506000612cc8601f54602054610cda565b612cd457600d54612cd7565b60005b90506000612d176002612d09601254612cfb8660245461236a90919063ffffffff16565b6123e490919063ffffffff16565b6123e490919063ffffffff16565b90506000612d3082602454612bf590919063ffffffff16565b90506000600267ffffffffffffffff811115612d4f57612d4e613d64565b5b604051908082528060200260200182016040528015612d7d5781602001602082028036833780820191505090505b5090503081600081518110612d9557612d946142a5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612e0657612e056142a5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612ea9959493929190614961565b600060405180830381600087803b158015612ec357600080fd5b505af1158015612ed7573d6000803e3d6000fd5b505050506000612ef08247612bf590919063ffffffff16565b90506000612f1c612f0b6002896123e490919063ffffffff16565b601254612bf590919063ffffffff16565b90506000612f586002612f4a84612f3c8c8861236a90919063ffffffff16565b6123e490919063ffffffff16565b6123e490919063ffffffff16565b90506000612f8383612f75600e548761236a90919063ffffffff16565b6123e490919063ffffffff16565b90506000612fae84612fa06010548861236a90919063ffffffff16565b6123e490919063ffffffff16565b90506000612fd985612fcb600f548961236a90919063ffffffff16565b6123e490919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051613023906149ec565b60006040518083038185875af1925050503d8060008114613060576040519150601f19603f3d011682016040523d82523d6000602084013e613065565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516130af906149ec565b60006040518083038185875af1925050503d80600081146130ec576040519150601f19603f3d011682016040523d82523d6000602084013e6130f1565b606091505b505080915050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161313d906149ec565b60006040518083038185875af1925050503d806000811461317a576040519150601f19603f3d011682016040523d82523d6000602084013e61317f565b606091505b5050809150506000905060008b111561329b57602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161321b96959493929190614a01565b60606040518083038185885af1158015613239573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061325e9190614a62565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051613292929190614ab5565b60405180910390a15b5050505050505050505050506000602560006101000a81548160ff021916908315150217905550565b6000808311829061330b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133029190613c90565b60405180910390fd5b506000838561331a919061437a565b9050809150509392505050565b60006133b2826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124369092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061344782600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134e79190613b30565b60405180910390a3600190509392505050565b600654811115806135545750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358a90614b2a565b60405180910390fd5b5050565b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156136045750602560009054906101000a900460ff16155b801561361c5750602360159054906101000a900460ff165b80156136695750602454600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6000806016549050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136d5576014549050613731565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036137305760155490505b5b600061377a606460135461374591906143ab565b61376c8461375e6012548a61236a90919063ffffffff16565b61236a90919063ffffffff16565b6123e490919063ffffffff16565b905060006137a76012546137996011548561236a90919063ffffffff16565b6123e490919063ffffffff16565b905060006137be8284612bf590919063ffffffff16565b905061381281600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138c98260086000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b60086000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161398b9190613b30565b60405180910390a36000821115613a3f576139b182600554612bf590919063ffffffff16565b600581905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a369190613b30565b60405180910390a35b613a528388612bf590919063ffffffff16565b9450505050509392505050565b6000604051905090565b600080fd5b600080fd5b60008115159050919050565b613a8881613a73565b8114613a9357600080fd5b50565b600081359050613aa581613a7f565b92915050565b6000819050919050565b613abe81613aab565b8114613ac957600080fd5b50565b600081359050613adb81613ab5565b92915050565b60008060408385031215613af857613af7613a69565b5b6000613b0685828601613a96565b9250506020613b1785828601613acc565b9150509250929050565b613b2a81613aab565b82525050565b6000602082019050613b456000830184613b21565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b7682613b4b565b9050919050565b613b8681613b6b565b8114613b9157600080fd5b50565b600081359050613ba381613b7d565b92915050565b600060208284031215613bbf57613bbe613a69565b5b6000613bcd84828501613b94565b91505092915050565b613bdf81613a73565b82525050565b6000602082019050613bfa6000830184613bd6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c3a578082015181840152602081019050613c1f565b60008484015250505050565b6000601f19601f8301169050919050565b6000613c6282613c00565b613c6c8185613c0b565b9350613c7c818560208601613c1c565b613c8581613c46565b840191505092915050565b60006020820190508181036000830152613caa8184613c57565b905092915050565b60008060408385031215613cc957613cc8613a69565b5b6000613cd785828601613b94565b9250506020613ce885828601613acc565b9150509250929050565b600060208284031215613d0857613d07613a69565b5b6000613d1684828501613a96565b91505092915050565b60008060408385031215613d3657613d35613a69565b5b6000613d4485828601613acc565b9250506020613d5585828601613acc565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613d9c82613c46565b810181811067ffffffffffffffff82111715613dbb57613dba613d64565b5b80604052505050565b6000613dce613a5f565b9050613dda8282613d93565b919050565b600067ffffffffffffffff821115613dfa57613df9613d64565b5b602082029050602081019050919050565b600080fd5b6000613e23613e1e84613ddf565b613dc4565b90508083825260208201905060208402830185811115613e4657613e45613e0b565b5b835b81811015613e6f5780613e5b8882613b94565b845260208401935050602081019050613e48565b5050509392505050565b600082601f830112613e8e57613e8d613d5f565b5b8135613e9e848260208601613e10565b91505092915050565b60008060408385031215613ebe57613ebd613a69565b5b600083013567ffffffffffffffff811115613edc57613edb613a6e565b5b613ee885828601613e79565b9250506020613ef985828601613a96565b9150509250929050565b600080600060608486031215613f1c57613f1b613a69565b5b6000613f2a86828701613b94565b9350506020613f3b86828701613b94565b9250506040613f4c86828701613acc565b9150509250925092565b600060ff82169050919050565b613f6c81613f56565b82525050565b6000602082019050613f876000830184613f63565b92915050565b60008060408385031215613fa457613fa3613a69565b5b6000613fb285828601613b94565b9250506020613fc385828601613a96565b9150509250929050565b600060208284031215613fe357613fe2613a69565b5b6000613ff184828501613acc565b91505092915050565b600080600080600060a0868803121561401657614015613a69565b5b600061402488828901613b94565b955050602061403588828901613b94565b945050604061404688828901613b94565b935050606061405788828901613b94565b925050608061406888828901613b94565b9150509295509295909350565b61407e81613b6b565b82525050565b60006020820190506140996000830184614075565b92915050565b60008060008060008060c087890312156140bc576140bb613a69565b5b60006140ca89828a01613acc565b96505060206140db89828a01613acc565b95505060406140ec89828a01613acc565b94505060606140fd89828a01613acc565b935050608061410e89828a01613acc565b92505060a061411f89828a01613acc565b9150509295509295509295565b60008060006060848603121561414557614144613a69565b5b600061415386828701613acc565b935050602061416486828701613acc565b925050604061417586828701613acc565b9150509250925092565b6000806040838503121561419657614195613a69565b5b60006141a485828601613b94565b92505060206141b585828601613b94565b9150509250929050565b6000819050919050565b60006141e46141df6141da84613b4b565b6141bf565b613b4b565b9050919050565b60006141f6826141c9565b9050919050565b6000614208826141eb565b9050919050565b614218816141fd565b82525050565b6000602082019050614233600083018461420f565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061426f602083613c0b565b915061427a82614239565b602082019050919050565b6000602082019050818103600083015261429e81614262565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061430e82613aab565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143405761433f6142d4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061438582613aab565b915061439083613aab565b9250826143a05761439f61434b565b5b828204905092915050565b60006143b682613aab565b91506143c183613aab565b92508282026143cf81613aab565b915082820484148315176143e6576143e56142d4565b5b5092915050565b6000815190506143fc81613ab5565b92915050565b60006020828403121561441857614417613a69565b5b6000614426848285016143ed565b91505092915050565b60006040820190506144446000830185614075565b6144516020830184613b21565b9392505050565b60008151905061446781613a7f565b92915050565b60006020828403121561448357614482613a69565b5b600061449184828501614458565b91505092915050565b7f466565732063616e206e6f74206265206d6f7265207468616e20323025000000600082015250565b60006144d0601d83613c0b565b91506144db8261449a565b602082019050919050565b600060208201905081810360008301526144ff816144c3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614562602683613c0b565b915061456d82614506565b604082019050919050565b6000602082019050818103600083015261459181614555565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006145f4602183613c0b565b91506145ff82614598565b604082019050919050565b60006020820190508181036000830152614623816145e7565b9050919050565b600061463582613aab565b915061464083613aab565b9250828203905081811115614658576146576142d4565b5b92915050565b7f596f7520617265206120626f7400000000000000000000000000000000000000600082015250565b6000614694600d83613c0b565b915061469f8261465e565b602082019050919050565b600060208201905081810360008301526146c381614687565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000614700601483613c0b565b915061470b826146ca565b602082019050919050565b6000602082019050818103600083015261472f816146f3565b9050919050565b600061474182613aab565b915061474c83613aab565b9250828201905080821115614764576147636142d4565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b60006147c6603e83613c0b565b91506147d18261476a565b604082019050919050565b600060208201905081810360008301526147f5816147b9565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614832601b83613c0b565b915061483d826147fc565b602082019050919050565b6000602082019050818103600083015261486181614825565b9050919050565b6000819050919050565b600061488d61488861488384614868565b6141bf565b613aab565b9050919050565b61489d81614872565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148d881613b6b565b82525050565b60006148ea83836148cf565b60208301905092915050565b6000602082019050919050565b600061490e826148a3565b61491881856148ae565b9350614923836148bf565b8060005b8381101561495457815161493b88826148de565b9750614946836148f6565b925050600181019050614927565b5085935050505092915050565b600060a0820190506149766000830188613b21565b6149836020830187614894565b81810360408301526149958186614903565b90506149a46060830185614075565b6149b16080830184613b21565b9695505050505050565b600081905092915050565b50565b60006149d66000836149bb565b91506149e1826149c6565b600082019050919050565b60006149f7826149c9565b9150819050919050565b600060c082019050614a166000830189614075565b614a236020830188613b21565b614a306040830187614894565b614a3d6060830186614894565b614a4a6080830185614075565b614a5760a0830184613b21565b979650505050505050565b600080600060608486031215614a7b57614a7a613a69565b5b6000614a89868287016143ed565b9350506020614a9a868287016143ed565b9250506040614aab868287016143ed565b9150509250925092565b6000604082019050614aca6000830185613b21565b614ad76020830184613b21565b9392505050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000614b14601183613c0b565b9150614b1f82614ade565b602082019050919050565b60006020820190508181036000830152614b4381614b07565b905091905056fea264697066735822122090b7ec8cce09c90e4a878060281fdccc81e23b2a6bdee8ba494844488270182a64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102605760003560e01c80637bae52e111610144578063b2bdfa7b116100b6578063d51ed1c81161007a578063d51ed1c8146108cd578063d78e139d1461090a578063dd62ed3e14610933578063f2fde38b14610970578063f6a78e1714610999578063f887ea40146109b057610267565b8063b2bdfa7b14610810578063bc3371821461083b578063ccf8c03614610864578063cec10c111461088d578063d148b74c146108b657610267565b80639189247611610108578063918924761461070257806395d89b411461072b5780639acb773e146107565780639f11080e1461077f578063a8aa1b31146107a8578063a9059cbb146107d357610267565b80637bae52e1146106415780637d1db4a51461066a578063893d20e8146106955780638a4068dd146106c05780638da5cb5b146106d757610267565b80631df4ccfc116101dd5780635d0044ca116101a15780635d0044ca146105315780636ddd17131461055a57806370a0823114610585578063715018a6146105c257806377b54bad146105d957806378109e541461061657610267565b80631df4ccfc1461044a57806323b872dd146104755780632b112e49146104b2578063313ce567146104dd5780635b24ea5e1461050857610267565b8063095ea7b311610224578063095ea7b3146103535780630aba513f146103905780631161ae39146103b957806313f97a8e146103f657806318160ddd1461041f57610267565b806304368f651461026c5780630445b667146102955780630621472c146102c057806306fdde03146102fd57806308fd3d051461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b50610293600480360381019061028e9190613ae1565b6109db565b005b3480156102a157600080fd5b506102aa610a95565b6040516102b79190613b30565b60405180910390f35b3480156102cc57600080fd5b506102e760048036038101906102e29190613ba9565b610a9b565b6040516102f49190613be5565b60405180910390f35b34801561030957600080fd5b50610312610ace565b60405161031f9190613c90565b60405180910390f35b34801561033457600080fd5b5061033d610b0b565b60405161034a9190613be5565b60405180910390f35b34801561035f57600080fd5b5061037a60048036038101906103759190613cb2565b610b1e565b6040516103879190613be5565b60405180910390f35b34801561039c57600080fd5b506103b760048036038101906103b29190613cf2565b610c10565b005b3480156103c557600080fd5b506103e060048036038101906103db9190613d1f565b610cda565b6040516103ed9190613be5565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190613ea7565b610cef565b005b34801561042b57600080fd5b50610434610e19565b6040516104419190613b30565b60405180910390f35b34801561045657600080fd5b5061045f610e23565b60405161046c9190613b30565b60405180910390f35b34801561048157600080fd5b5061049c60048036038101906104979190613f03565b610e29565b6040516104a99190613be5565b60405180910390f35b3480156104be57600080fd5b506104c7611029565b6040516104d49190613b30565b60405180910390f35b3480156104e957600080fd5b506104f26110ab565b6040516104ff9190613f72565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a9190613f8d565b6110b4565b005b34801561053d57600080fd5b5061055860048036038101906105539190613fcd565b6111a4565b005b34801561056657600080fd5b5061056f61127b565b60405161057c9190613be5565b60405180910390f35b34801561059157600080fd5b506105ac60048036038101906105a79190613ba9565b61128e565b6040516105b99190613b30565b60405180910390f35b3480156105ce57600080fd5b506105d76112d7565b005b3480156105e557600080fd5b5061060060048036038101906105fb9190613cb2565b61142a565b60405161060d9190613be5565b60405180910390f35b34801561062257600080fd5b5061062b61158d565b6040516106389190613b30565b60405180910390f35b34801561064d57600080fd5b5061066860048036038101906106639190613ffa565b611593565b005b34801561067657600080fd5b5061067f611774565b60405161068c9190613b30565b60405180910390f35b3480156106a157600080fd5b506106aa61177a565b6040516106b79190614084565b60405180910390f35b3480156106cc57600080fd5b506106d5611789565b005b3480156106e357600080fd5b506106ec611828565b6040516106f99190614084565b60405180910390f35b34801561070e57600080fd5b506107296004803603810190610724919061409f565b611851565b005b34801561073757600080fd5b506107406119b9565b60405161074d9190613c90565b60405180910390f35b34801561076257600080fd5b5061077d60048036038101906107789190613f8d565b6119f6565b005b34801561078b57600080fd5b506107a660048036038101906107a19190613d1f565b611ae6565b005b3480156107b457600080fd5b506107bd611b8d565b6040516107ca9190614084565b60405180910390f35b3480156107df57600080fd5b506107fa60048036038101906107f59190613cb2565b611bb3565b6040516108079190613be5565b60405180910390f35b34801561081c57600080fd5b50610825611bc8565b6040516108329190614084565b60405180910390f35b34801561084757600080fd5b50610862600480360381019061085d9190613fcd565b611bec565b005b34801561087057600080fd5b5061088b60048036038101906108869190613f8d565b611cc3565b005b34801561089957600080fd5b506108b460048036038101906108af919061412c565b611e0a565b005b3480156108c257600080fd5b506108cb611eb9565b005b3480156108d957600080fd5b506108f460048036038101906108ef9190613fcd565b611f58565b6040516109019190613b30565b60405180910390f35b34801561091657600080fd5b50610931600480360381019061092c9190613fcd565b611fca565b005b34801561093f57600080fd5b5061095a6004803603810190610955919061417f565b612053565b6040516109679190613b30565b60405180910390f35b34801561097c57600080fd5b5061099760048036038101906109929190613ba9565b6120da565b005b3480156109a557600080fd5b506109ae61229b565b005b3480156109bc57600080fd5b506109c5612344565b6040516109d2919061421e565b60405180910390f35b6109e361242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6790614285565b60405180910390fd5b81602360156101000a81548160ff021916908315150217905550806024819055505050565b60245481565b6000610ac7827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b1e565b9050919050565b60606040518060400160405280600981526020017f43617072692053756e0000000000000000000000000000000000000000000000815250905090565b602360149054906101000a900460ff1681565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610bfe9190613b30565b60405180910390a36001905092915050565b610c1861242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c90614285565b60405180910390fd5b80602360146101000a81548160ff021916908315150217905550609660158190555060fa601481905550600060168190555050565b600082610ce683611f58565b11905092915050565b610cf761242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7b90614285565b60405180910390fd5b60005b8251811015610e145781600c6000858481518110610da857610da76142a5565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e0c90614303565b915050610d87565b505050565b6000600554905090565b60125481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461101557610f94826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124369092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61102084848461249a565b90509392505050565b60006110a6611059600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661128e565b611098611087600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661128e565b600554612bf590919063ffffffff16565b612bf590919063ffffffff16565b905090565b60006009905090565b6110bc61242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114090614285565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6111ac61242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123090614285565b60405180910390fd5b6103e8600554611249919061437a565b600754101561125757600080fd5b6103e88160055461126891906143ab565b611272919061437a565b60078190555050565b602360159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112df61242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461136c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136390614285565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661148257600080fd5b60008203611507578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114c39190614084565b602060405180830381865afa1580156114e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115049190614402565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161154292919061442f565b6020604051808303816000875af1158015611561573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611585919061446d565b905092915050565b60075481565b61159b61242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161f90614285565b60405180910390fd5b84601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b60065481565b6000611784611828565b905090565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117df57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611825573d6000803e3d6000fd5b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61185961242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90614285565b60405180910390fd5b85600d819055508460108190555083600e8190555082600f81905550816011819055506119528261194485611936886119288b8d612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b60128190555080601381905550600560135461196e919061437a565b601254106119b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a8906144e6565b60405180910390fd5b505050505050565b60606040518060400160405280600481526020017f4353554e00000000000000000000000000000000000000000000000000000000815250905090565b6119fe61242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8290614285565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611aee61242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7290614285565b60405180910390fd5b81601f81905550806020819055505050565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611bc033848461249a565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611bf461242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7890614285565b60405180910390fd5b6103e8600554611c91919061437a565b6006541015611c9f57600080fd5b6103e881600554611cb091906143ab565b611cba919061437a565b60068190555050565b611ccb61242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4f90614285565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611e1261242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9690614285565b60405180910390fd5b816014819055508260158190555080601681905550505050565b611ec161242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4590614285565b60405180910390fd5b611f56612c9d565b565b6000611fc3611f65611029565b611fb5611fa66002611f98602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661128e565b61236a90919063ffffffff16565b8561236a90919063ffffffff16565b6123e490919063ffffffff16565b9050919050565b6000479050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064848461201991906143ab565b612023919061437a565b9081150290604051600060405180830381858888f1935050505015801561204e573d6000803e3d6000fd5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6120e261242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461216f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216690614285565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d590614578565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122a361242e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232790614285565b60405180910390fd5b600554600781905550600554600681905550565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080830361237c57600090506123de565b6000828461238a91906143ab565b9050828482612399919061437a565b146123d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d09061460a565b60405180910390fd5b809150505b92915050565b600061242683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132c4565b905092915050565b600033905090565b600083831115829061247e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124759190613c90565b60405180910390fd5b506000838561248d919061462a565b9050809150509392505050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125405750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61257f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612576906146aa565b60405180910390fd5b602560009054906101000a900460ff16156125a65761259f848484613327565b9050612bee565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561264a5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561269f57602360149054906101000a900460ff1661269e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269590614716565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561272557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561277f5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156127d95750602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128335750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561288d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128e35750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129475760006128f38461128e565b905060075483826129049190614736565b1115612945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293c906147dc565b60405180910390fd5b505b61295184836134fa565b612959613597565b1561296757612966612c9d565b5b6129f0826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124369092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ad65750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612aea57612ae585848661366e565b612aec565b825b9050612b4081600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612be09190613b30565b60405180910390a360019150505b9392505050565b6000612c3783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612436565b905092915050565b6000808284612c4e9190614736565b905083811015612c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8a90614848565b60405180910390fd5b8091505092915050565b6001602560006101000a81548160ff0219169083151502179055506000612cc8601f54602054610cda565b612cd457600d54612cd7565b60005b90506000612d176002612d09601254612cfb8660245461236a90919063ffffffff16565b6123e490919063ffffffff16565b6123e490919063ffffffff16565b90506000612d3082602454612bf590919063ffffffff16565b90506000600267ffffffffffffffff811115612d4f57612d4e613d64565b5b604051908082528060200260200182016040528015612d7d5781602001602082028036833780820191505090505b5090503081600081518110612d9557612d946142a5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612e0657612e056142a5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612ea9959493929190614961565b600060405180830381600087803b158015612ec357600080fd5b505af1158015612ed7573d6000803e3d6000fd5b505050506000612ef08247612bf590919063ffffffff16565b90506000612f1c612f0b6002896123e490919063ffffffff16565b601254612bf590919063ffffffff16565b90506000612f586002612f4a84612f3c8c8861236a90919063ffffffff16565b6123e490919063ffffffff16565b6123e490919063ffffffff16565b90506000612f8383612f75600e548761236a90919063ffffffff16565b6123e490919063ffffffff16565b90506000612fae84612fa06010548861236a90919063ffffffff16565b6123e490919063ffffffff16565b90506000612fd985612fcb600f548961236a90919063ffffffff16565b6123e490919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051613023906149ec565b60006040518083038185875af1925050503d8060008114613060576040519150601f19603f3d011682016040523d82523d6000602084013e613065565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516130af906149ec565b60006040518083038185875af1925050503d80600081146130ec576040519150601f19603f3d011682016040523d82523d6000602084013e6130f1565b606091505b505080915050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161313d906149ec565b60006040518083038185875af1925050503d806000811461317a576040519150601f19603f3d011682016040523d82523d6000602084013e61317f565b606091505b5050809150506000905060008b111561329b57602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161321b96959493929190614a01565b60606040518083038185885af1158015613239573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061325e9190614a62565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051613292929190614ab5565b60405180910390a15b5050505050505050505050506000602560006101000a81548160ff021916908315150217905550565b6000808311829061330b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133029190613c90565b60405180910390fd5b506000838561331a919061437a565b9050809150509392505050565b60006133b2826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124369092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061344782600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134e79190613b30565b60405180910390a3600190509392505050565b600654811115806135545750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358a90614b2a565b60405180910390fd5b5050565b6000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156136045750602560009054906101000a900460ff16155b801561361c5750602360159054906101000a900460ff165b80156136695750602454600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6000806016549050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136d5576014549050613731565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036137305760155490505b5b600061377a606460135461374591906143ab565b61376c8461375e6012548a61236a90919063ffffffff16565b61236a90919063ffffffff16565b6123e490919063ffffffff16565b905060006137a76012546137996011548561236a90919063ffffffff16565b6123e490919063ffffffff16565b905060006137be8284612bf590919063ffffffff16565b905061381281600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138c98260086000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b60086000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161398b9190613b30565b60405180910390a36000821115613a3f576139b182600554612bf590919063ffffffff16565b600581905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a369190613b30565b60405180910390a35b613a528388612bf590919063ffffffff16565b9450505050509392505050565b6000604051905090565b600080fd5b600080fd5b60008115159050919050565b613a8881613a73565b8114613a9357600080fd5b50565b600081359050613aa581613a7f565b92915050565b6000819050919050565b613abe81613aab565b8114613ac957600080fd5b50565b600081359050613adb81613ab5565b92915050565b60008060408385031215613af857613af7613a69565b5b6000613b0685828601613a96565b9250506020613b1785828601613acc565b9150509250929050565b613b2a81613aab565b82525050565b6000602082019050613b456000830184613b21565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b7682613b4b565b9050919050565b613b8681613b6b565b8114613b9157600080fd5b50565b600081359050613ba381613b7d565b92915050565b600060208284031215613bbf57613bbe613a69565b5b6000613bcd84828501613b94565b91505092915050565b613bdf81613a73565b82525050565b6000602082019050613bfa6000830184613bd6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c3a578082015181840152602081019050613c1f565b60008484015250505050565b6000601f19601f8301169050919050565b6000613c6282613c00565b613c6c8185613c0b565b9350613c7c818560208601613c1c565b613c8581613c46565b840191505092915050565b60006020820190508181036000830152613caa8184613c57565b905092915050565b60008060408385031215613cc957613cc8613a69565b5b6000613cd785828601613b94565b9250506020613ce885828601613acc565b9150509250929050565b600060208284031215613d0857613d07613a69565b5b6000613d1684828501613a96565b91505092915050565b60008060408385031215613d3657613d35613a69565b5b6000613d4485828601613acc565b9250506020613d5585828601613acc565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613d9c82613c46565b810181811067ffffffffffffffff82111715613dbb57613dba613d64565b5b80604052505050565b6000613dce613a5f565b9050613dda8282613d93565b919050565b600067ffffffffffffffff821115613dfa57613df9613d64565b5b602082029050602081019050919050565b600080fd5b6000613e23613e1e84613ddf565b613dc4565b90508083825260208201905060208402830185811115613e4657613e45613e0b565b5b835b81811015613e6f5780613e5b8882613b94565b845260208401935050602081019050613e48565b5050509392505050565b600082601f830112613e8e57613e8d613d5f565b5b8135613e9e848260208601613e10565b91505092915050565b60008060408385031215613ebe57613ebd613a69565b5b600083013567ffffffffffffffff811115613edc57613edb613a6e565b5b613ee885828601613e79565b9250506020613ef985828601613a96565b9150509250929050565b600080600060608486031215613f1c57613f1b613a69565b5b6000613f2a86828701613b94565b9350506020613f3b86828701613b94565b9250506040613f4c86828701613acc565b9150509250925092565b600060ff82169050919050565b613f6c81613f56565b82525050565b6000602082019050613f876000830184613f63565b92915050565b60008060408385031215613fa457613fa3613a69565b5b6000613fb285828601613b94565b9250506020613fc385828601613a96565b9150509250929050565b600060208284031215613fe357613fe2613a69565b5b6000613ff184828501613acc565b91505092915050565b600080600080600060a0868803121561401657614015613a69565b5b600061402488828901613b94565b955050602061403588828901613b94565b945050604061404688828901613b94565b935050606061405788828901613b94565b925050608061406888828901613b94565b9150509295509295909350565b61407e81613b6b565b82525050565b60006020820190506140996000830184614075565b92915050565b60008060008060008060c087890312156140bc576140bb613a69565b5b60006140ca89828a01613acc565b96505060206140db89828a01613acc565b95505060406140ec89828a01613acc565b94505060606140fd89828a01613acc565b935050608061410e89828a01613acc565b92505060a061411f89828a01613acc565b9150509295509295509295565b60008060006060848603121561414557614144613a69565b5b600061415386828701613acc565b935050602061416486828701613acc565b925050604061417586828701613acc565b9150509250925092565b6000806040838503121561419657614195613a69565b5b60006141a485828601613b94565b92505060206141b585828601613b94565b9150509250929050565b6000819050919050565b60006141e46141df6141da84613b4b565b6141bf565b613b4b565b9050919050565b60006141f6826141c9565b9050919050565b6000614208826141eb565b9050919050565b614218816141fd565b82525050565b6000602082019050614233600083018461420f565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061426f602083613c0b565b915061427a82614239565b602082019050919050565b6000602082019050818103600083015261429e81614262565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061430e82613aab565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143405761433f6142d4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061438582613aab565b915061439083613aab565b9250826143a05761439f61434b565b5b828204905092915050565b60006143b682613aab565b91506143c183613aab565b92508282026143cf81613aab565b915082820484148315176143e6576143e56142d4565b5b5092915050565b6000815190506143fc81613ab5565b92915050565b60006020828403121561441857614417613a69565b5b6000614426848285016143ed565b91505092915050565b60006040820190506144446000830185614075565b6144516020830184613b21565b9392505050565b60008151905061446781613a7f565b92915050565b60006020828403121561448357614482613a69565b5b600061449184828501614458565b91505092915050565b7f466565732063616e206e6f74206265206d6f7265207468616e20323025000000600082015250565b60006144d0601d83613c0b565b91506144db8261449a565b602082019050919050565b600060208201905081810360008301526144ff816144c3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614562602683613c0b565b915061456d82614506565b604082019050919050565b6000602082019050818103600083015261459181614555565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006145f4602183613c0b565b91506145ff82614598565b604082019050919050565b60006020820190508181036000830152614623816145e7565b9050919050565b600061463582613aab565b915061464083613aab565b9250828203905081811115614658576146576142d4565b5b92915050565b7f596f7520617265206120626f7400000000000000000000000000000000000000600082015250565b6000614694600d83613c0b565b915061469f8261465e565b602082019050919050565b600060208201905081810360008301526146c381614687565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000614700601483613c0b565b915061470b826146ca565b602082019050919050565b6000602082019050818103600083015261472f816146f3565b9050919050565b600061474182613aab565b915061474c83613aab565b9250828201905080821115614764576147636142d4565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b60006147c6603e83613c0b565b91506147d18261476a565b604082019050919050565b600060208201905081810360008301526147f5816147b9565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614832601b83613c0b565b915061483d826147fc565b602082019050919050565b6000602082019050818103600083015261486181614825565b9050919050565b6000819050919050565b600061488d61488861488384614868565b6141bf565b613aab565b9050919050565b61489d81614872565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148d881613b6b565b82525050565b60006148ea83836148cf565b60208301905092915050565b6000602082019050919050565b600061490e826148a3565b61491881856148ae565b9350614923836148bf565b8060005b8381101561495457815161493b88826148de565b9750614946836148f6565b925050600181019050614927565b5085935050505092915050565b600060a0820190506149766000830188613b21565b6149836020830187614894565b81810360408301526149958186614903565b90506149a46060830185614075565b6149b16080830184613b21565b9695505050505050565b600081905092915050565b50565b60006149d66000836149bb565b91506149e1826149c6565b600082019050919050565b60006149f7826149c9565b9150819050919050565b600060c082019050614a166000830189614075565b614a236020830188613b21565b614a306040830187614894565b614a3d6060830186614894565b614a4a6080830185614075565b614a5760a0830184613b21565b979650505050505050565b600080600060608486031215614a7b57614a7a613a69565b5b6000614a89868287016143ed565b9350506020614a9a868287016143ed565b9250506040614aab868287016143ed565b9150509250925092565b6000604082019050614aca6000830185613b21565b614ad76020830184613b21565b9392505050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000614b14601183613c0b565b9150614b1f82614ade565b602082019050919050565b60006020820190508181036000830152614b4381614b07565b905091905056fea264697066735822122090b7ec8cce09c90e4a878060281fdccc81e23b2a6bdee8ba494844488270182a64736f6c63430008110033

Deployed Bytecode Sourcemap

5066:14128:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18293:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6916:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9078:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8432:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6834:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8854:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14859:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18968:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14111:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8162:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6096:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9372:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18643:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8256:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13973:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9754:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6878:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8602:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3123:148;;;;;;;;;;;;;:::i;:::-;;14328:308;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5545:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17830:455;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5480:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8518:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13816:149;;;;;;;;;;;;;:::i;:::-;;2909:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17243:579;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8342:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17115:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18457:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6802:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9208:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2529:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9981:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16950:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14644:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13587:77;;;;;;;;;;;;;:::i;:::-;;18793:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13380:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8713:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3279:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13672:136;;;;;;;;;;;;;:::i;:::-;;6732:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18293:156;3046:12;:10;:12::i;:::-;3036:22;;:6;;;;;;;;;;:22;;;3028:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18399:8:::1;18385:11;;:22;;;;;;;;;;;;;;;;;;18434:7;18418:13;:23;;;;18293:156:::0;;:::o;6916:57::-;;;;:::o;9078:122::-;9133:4;9157:35;9165:7;9174:17;9157:7;:35::i;:::-;9150:42;;9078:122;;;:::o;8432:80::-;8480:13;8504:5;;;;;;;;;;;;;;;;;8497:12;;8432:80;:::o;6834:31::-;;;;;;;;;;;;;:::o;8854:216::-;8929:4;8981:6;8946:11;:23;8958:10;8946:23;;;;;;;;;;;;;;;:32;8970:7;8946:32;;;;;;;;;;;;;;;:41;;;;9024:7;9003:37;;9012:10;9003:37;;;9033:6;9003:37;;;;;;:::i;:::-;;;;;;;;9058:4;9051:11;;8854:216;;;;:::o;14859:190::-;3046:12;:10;:12::i;:::-;3036:22;;:6;;;;;;;;;;:22;;;3028:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14943:4:::1;14929:11;;:18;;;;;;;;;;;;;;;;;;14974:3;14958:13;:19;;;;15005:3;14988:14;:20;;;;15040:1;15019:18;:22;;;;14859:190:::0;:::o;18968:150::-;19048:4;19104:6;19072:29;19092:8;19072:19;:29::i;:::-;:38;19065:45;;18968:150;;;;:::o;14111:209::-;3046:12;:10;:12::i;:::-;3036:22;;:6;;;;;;;;;;:22;;;3028:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14210:9:::1;14206:107;14228:8;:15;14224:1;:19;14206:107;;;14294:5;14264:14;:27;14279:8;14288:1;14279:11;;;;;;;;:::i;:::-;;;;;;;;14264:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;14245:3;;;;;:::i;:::-;;;;14206:107;;;;14111:209:::0;;:::o;8162:88::-;8217:7;8235:12;;8228:19;;8162:88;:::o;6096:94::-;;;;:::o;9372:370::-;9472:4;9527:17;9492:11;:19;9504:6;9492:19;;;;;;;;;;;;;;;:31;9512:10;9492:31;;;;;;;;;;;;;;;;:52;9489:186;;9594:69;9630:6;9594:69;;;;;;;;;;;;;;;;;:11;:19;9606:6;9594:19;;;;;;;;;;;;;;;:31;9614:10;9594:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;9560:11;:19;9572:6;9560:19;;;;;;;;;;;;;;;:31;9580:10;9560:31;;;;;;;;;;;;;;;:103;;;;9489:186;9694:40;9708:6;9716:9;9727:6;9694:13;:40::i;:::-;9687:47;;9372:370;;;;;:::o;18643:142::-;18696:7;18723:54;18761:15;18771:4;;;;;;;;;;;18761:9;:15::i;:::-;18723:33;18740:15;18750:4;;;;;;;;;;;18740:9;:15::i;:::-;18723:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;18716:61;;18643:142;:::o;8256:80::-;8308:5;5407:1;8317:16;;8256:80;:::o;13973:126::-;3046:12;:10;:12::i;:::-;3036:22;;:6;;;;;;;;;;:22;;;3028:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14086:5:::1;14060:14;:23;14075:7;14060:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;13973:126:::0;;:::o;9754:219::-;3046:12;:10;:12::i;:::-;3036:22;;:6;;;;;;;;;;:22;;;3028:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9873:4:::1;9858:12;;:19;;;;:::i;:::-;9839:15;;:38;;9831:47;;;::::0;::::1;;9943:4;9924:14;9909:12;;:29;;;;:::i;:::-;9908:39;;;;:::i;:::-;9890:15;:57;;;;9754:219:::0;:::o;6878:31::-;;;;;;;;;;;;;:::o;8602:105::-;8668:7;8686:9;:18;8696:7;8686:18;;;;;;;;;;;;;;;;8679:25;;8602:105;;;:::o;3123:148::-;3046:12;:10;:12::i;:::-;3036:22;;:6;;;;;;;;;;:22;;;3028:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3230:1:::1;3193:40;;3214:6;::::0;::::1;;;;;;;;3193:40;;;;;;;;;;;;3261:1;3244:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3123:148::o:0;14328:308::-;14407:4;14432:15;:27;14448:10;14432:27;;;;;;;;;;;;;;;;;;;;;;;;;14424:36;;;;;;14481:1;14471:6;:11;14468:95;;14513:12;14507:29;;;14545:4;14507:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14498:53;;14468:95;14586:12;14580:28;;;14609:10;14621:6;14580:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14573:55;;14328:308;;;;:::o;5545:61::-;;;;:::o;17830:455::-;3046:12;:10;:12::i;:::-;3036:22;;:6;;;;;;;;;;:22;;;3028:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18059:22:::1;18035:21;;:46;;;;;;;;;;;;;;;;;;18115:21;18092:20;;:44;;;;;;;;;;;;;;;;;;18168:19;18147:18;;:40;;;;;;;;;;;;;;;;;;18216:16;18198:15;;:34;;;;;;;;;;;;;;;;;;18261:16;18243:15;;:34;;;;;;;;;;;;;;;;;;17830:455:::0;;;;;:::o;5480:58::-;;;;:::o;8518:78::-;8570:7;8587;:5;:7::i;:::-;8580:14;;8518:78;:::o;13816:149::-;13865:15;:27;13881:10;13865:27;;;;;;;;;;;;;;;;;;;;;;;;;13857:36;;;;;;13912:10;13904:28;;:51;13933:21;13904:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13816:149::o;2909:79::-;2947:7;2974:6;;;;;;;;;;;2967:13;;2909:79;:::o;17243:579::-;3046:12;:10;:12::i;:::-;3036:22;;:6;;;;;;;;;;:22;;;3028:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17444:13:::1;17429:12;:28;;;;17478:8;17468:7;:18;;;;17512:13;17497:12;:28;;;;17549:11;17536:10;:24;;;;17581:8;17571:7;:18;;;;17611:77;17679:8;17611:63;17662:11;17611:46;17643:13;17611:27;17629:8;17611:13;:17;;:27;;;;:::i;:::-;:31;;:46;;;;:::i;:::-;:50;;:63;;;;:::i;:::-;:67;;:77;;;;:::i;:::-;17600:8;:88;;;;17716:15;17699:14;:32;;;;17778:1;17761:14;;:18;;;;:::i;:::-;17750:8;;:29;17742:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17243:579:::0;;;;;;:::o;8342:84::-;8392:13;8416:7;;;;;;;;;;;;;;;;;8409:14;;8342:84;:::o;17115:120::-;3046:12;:10;:12::i;:::-;3036:22;;:6;;;;;;;;;;:22;;;3028:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17221:6:::1;17195:15;:23;17211:6;17195:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17115:120:::0;;:::o;18457:174::-;3046:12;:10;:12::i;:::-;3036:22;;:6;;;;;;;;;;:22;;;3028:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18564:7:::1;18546:15;:25;;;;18611:12;18582:26;:41;;;;18457:174:::0;;:::o;6802:19::-;;;;;;;;;;;;;:::o;9208:156::-;9288:4;9312:44;9326:10;9338:9;9349:6;9312:13;:44::i;:::-;9305:51;;9208:156;;;;:::o;2529:21::-;;;;;;;;;;;;:::o;9981:187::-;3046:12;:10;:12::i;:::-;3036:22;;:6;;;;;;;;;;:22;;;3028:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10091:4:::1;10076:12;;:19;;;;:::i;:::-;10060:12;;:35;;10052:44;;;::::0;::::1;;10156:4;10139:12;10124;;:27;;;;:::i;:::-;10123:37;;;;:::i;:::-;10108:12;:52;;;;9981:187:::0;:::o;16950:157::-;3046:12;:10;:12::i;:::-;3036:22;;:6;;;;;;;;;;:22;;;3028:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17050:6:::1;17028:11;:19;17040:6;17028:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;17093:6;17067:15;:23;17083:6;17067:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16950:157:::0;;:::o;14644:207::-;3046:12;:10;:12::i;:::-;3036:22;;:6;;;;;;;;;;:22;;;3028:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14753:5:::1;14736:14;:22;;;;14785:4;14769:13;:20;;;;14821:6;14800:18;:27;;;;14644:207:::0;;;:::o;13587:77::-;3046:12;:10;:12::i;:::-;3036:22;;:6;;;;;;;;;;:22;;;3028:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13640:10:::1;:8;:10::i;:::-;13587:77::o:0;18793:167::-;18861:7;18888:64;18929:22;:20;:22::i;:::-;18888:36;18901:22;18921:1;18901:15;18911:4;;;;;;;;;;;18901:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;18888:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;18881:71;;18793:167;;;:::o;13380:198::-;13449:17;13469:21;13449:41;;13509:15;;;;;;;;;;;13501:33;;:69;13566:3;13547:16;13535:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;13501:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13438:140;13380:198;:::o;8713:133::-;8797:7;8815:11;:19;8827:6;8815:19;;;;;;;;;;;;;;;:28;8835:7;8815:28;;;;;;;;;;;;;;;;8808:35;;8713:133;;;;:::o;3279:244::-;3046:12;:10;:12::i;:::-;3036:22;;:6;;;;;;;;;;:22;;;3028:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3388:1:::1;3368:22;;:8;:22;;::::0;3360:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3478:8;3449:38;;3470:6;::::0;::::1;;;;;;;;3449:38;;;;;;;;;;;;3507:8;3498:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3279:244:::0;:::o;13672:136::-;3046:12;:10;:12::i;:::-;3036:22;;:6;;;;;;;;;;:22;;;3028:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13748:12:::1;;13730:15;:30;;;;13786:12;;13771;:27;;;;13672:136::o:0;6732:24::-;;;;;;;;;;;;;:::o;708:250::-;766:7;795:1;790;:6;786:47;;820:1;813:8;;;;786:47;845:9;861:1;857;:5;;;;:::i;:::-;845:17;;890:1;885;881;:5;;;;:::i;:::-;:10;873:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;949:1;942:8;;;708:250;;;;;:::o;964:132::-;1022:7;1049:39;1053:1;1056;1049:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1042:46;;964:132;;;;:::o;2250:115::-;2303:15;2346:10;2331:26;;2250:115;:::o;510:192::-;596:7;629:1;624;:6;;632:12;616:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;656:9;672:1;668;:5;;;;:::i;:::-;656:17;;693:1;686:8;;;510:192;;;;;:::o;10185:1329::-;10277:4;10303:14;:22;10318:6;10303:22;;;;;;;;;;;;;;;;;;;;;;;;;10302:23;:53;;;;;10330:14;:25;10345:9;10330:25;;;;;;;;;;;;;;;;;;;;;;;;;10329:26;10302:53;10294:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10389:6;;;;;;;;;;;10386:63;;;10405:41;10420:6;10428:9;10439:6;10405:14;:41::i;:::-;10398:48;;;;10386:63;10465:14;:22;10480:6;10465:22;;;;;;;;;;;;;;;;;;;;;;;;;10464:23;:53;;;;;10492:14;:25;10507:9;10492:25;;;;;;;;;;;;;;;;;;;;;;;;;10491:26;10464:53;10461:140;;;10541:11;;;;;;;;;;;10533:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;10461:140;10635:14;:22;10650:6;10635:22;;;;;;;;;;;;;;;;;;;;;;;;;10634:23;:53;;;;;10682:4;10661:26;;:9;:26;;;;10634:53;:84;;;;;10713:4;;;;;;;;;;;10692:26;;:9;:26;;;;10634:84;:105;;;;;10735:4;;;;;;;;;;;10722:17;;:9;:17;;;;10634:105;:137;;;;;10756:15;;;;;;;;;;;10743:28;;:9;:28;;;;10634:137;:174;;;;;10788:20;;;;;;;;;;;10775:33;;:9;:33;;;;10634:174;:205;;;;;10813:15;:26;10829:9;10813:26;;;;;;;;;;;;;;;;;;;;;;;;;10812:27;10634:205;10630:397;;;10855:18;10876:20;10886:9;10876;:20::i;:::-;10855:41;;10944:15;;10933:6;10920:10;:19;;;;:::i;:::-;10919:40;;10911:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;10840:187;10630:397;11048:28;11061:6;11069;11048:12;:28::i;:::-;11093:16;:14;:16::i;:::-;11090:35;;;11112:10;:8;:10::i;:::-;11090:35;11165:53;11187:6;11165:53;;;;;;;;;;;;;;;;;:9;:17;11175:6;11165:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11145:9;:17;11155:6;11145:17;;;;;;;;;;;;;;;:73;;;;11231:22;11257:11;:19;11269:6;11257:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;11280:11;:22;11292:9;11280:22;;;;;;;;;;;;;;;;;;;;;;;;;11257:45;11256:93;;11315:34;11323:6;11331;11339:9;11315:7;:34::i;:::-;11256:93;;;11306:6;11256:93;11231:118;;11383:40;11408:14;11383:9;:20;11393:9;11383:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;11360:9;:20;11370:9;11360:20;;;;;;;;;;;;;;;:63;;;;11458:9;11441:43;;11450:6;11441:43;;;11469:14;11441:43;;;;;;:::i;:::-;;;;;;;;11502:4;11495:11;;;10185:1329;;;;;;:::o;368:136::-;426:7;453:43;457:1;460;453:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;446:50;;368:136;;;;:::o;181:181::-;239:7;259:9;275:1;271;:5;;;;:::i;:::-;259:17;;300:1;295;:6;;287:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;353:1;346:8;;;181:181;;;;:::o;15065:1877::-;7030:4;7021:6;;:13;;;;;;;;;;;;;;;;;;15114:27:::1;15144:60;15160:15;;15177:26;;15144:15;:60::i;:::-;:79;;15211:12;;15144:79;;;15207:1;15144:79;15114:109;;15234:23;15260:59;15317:1;15260:52;15303:8;;15260:38;15278:19;15260:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;15234:85;;15330:20;15353:34;15371:15;15353:13;;:17;;:34;;;;:::i;:::-;15330:57;;15400:21;15438:1;15424:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15400:40;;15469:4;15451;15456:1;15451:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15495:4;;;;;;;;;;;15485;15490:1;15485:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;15512:21;15536;15512:45;;15570:6;;;;;;;;;;;:57;;;15642:12;15669:1;15685:4;15712;15732:15;15570:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15771:17;15791:40;15817:13;15791:21;:25;;:40;;;;:::i;:::-;15771:60;;15844:19;15866:40;15879:26;15903:1;15879:19;:23;;:26;;;;:::i;:::-;15866:8;;:12;;:40;;;;:::i;:::-;15844:62;;15927:26;15956:58;16012:1;15956:51;15995:11;15956:34;15970:19;15956:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;15927:87;;16025:26;16054:44;16086:11;16054:27;16068:12;;16054:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;16025:73;;16109:21;16133:39;16160:11;16133:22;16147:7;;16133:9;:13;;:22;;;;:::i;:::-;:26;;:39;;;;:::i;:::-;16109:63;;16183:24;16210:42;16240:11;16210:25;16224:10;;16210:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;16183:69;;16266:15;16294:20;;;;;;;;;;;16286:34;;16328:18;16286:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16265:86;;;16386:18;;;;;;;;;;;16378:32;;16418:16;16378:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16362:77;;;;;16474:15;;;;;;;;;;;16466:29;;16503:13;16466:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16450:71;;;;;16555:5;16542:18;;16594:1;16576:15;:19;16573:362;;;16611:6;;;;;;;;;;;:22;;;16641:18;16687:4;16711:15;16745:1;16765::::0;16785:21:::1;;;;;;;;;;;16825:15;16611:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16875:48;16887:18;16907:15;16875:48;;;;;;;:::i;:::-;;;;;;;;16573:362;15103:1839;;;;;;;;;;;;7048:5:::0;7039:6;;:14;;;;;;;;;;;;;;;;;;15065:1877::o;1102:189::-;1188:7;1220:1;1216;:5;1223:12;1208:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1247:9;1263:1;1259;:5;;;;:::i;:::-;1247:17;;1282:1;1275:8;;;1102:189;;;;;:::o;11526:330::-;11619:4;11656:53;11678:6;11656:53;;;;;;;;;;;;;;;;;:9;:17;11666:6;11656:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11636:9;:17;11646:6;11636:17;;;;;;;;;;;;;;;:73;;;;11743:32;11768:6;11743:9;:20;11753:9;11743:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11720:9;:20;11730:9;11720:20;;;;;;;;;;;;;;;:55;;;;11808:9;11791:35;;11800:6;11791:35;;;11819:6;11791:35;;;;;;:::i;:::-;;;;;;;;11844:4;11837:11;;11526:330;;;;;:::o;11864:166::-;11961:12;;11951:6;:22;;:49;;;;11977:15;:23;11993:6;11977:23;;;;;;;;;;;;;;;;;;;;;;;;;11951:49;11943:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11864:166;;:::o;13175:197::-;13224:4;13262;;;;;;;;;;;13248:18;;:10;:18;;;;:38;;;;;13280:6;;;;;;;;;;;13279:7;13248:38;:62;;;;;13299:11;;;;;;;;;;;13248:62;:116;;;;;13351:13;;13323:9;:24;13341:4;13323:24;;;;;;;;;;;;;;;;:41;;13248:116;13241:123;;13175:197;:::o;12160:1007::-;12246:7;12276:18;12297;;12276:39;;12344:4;;;;;;;;;;;12331:17;;:9;:17;;;12328:154;;12378:14;;12365:27;;12328:154;;;12423:4;;;;;;;;;;;12413:14;;:6;:14;;;12410:72;;12457:13;;12444:26;;12410:72;12328:154;12494:17;12514:62;12572:3;12555:14;;:20;;;;:::i;:::-;12514:36;12539:10;12514:20;12525:8;;12514:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;12494:82;;12587:18;12608:36;12635:8;;12608:22;12622:7;;12608:9;:13;;:22;;;;:::i;:::-;:26;;:36;;;;:::i;:::-;12587:57;;12655:22;12680:25;12694:10;12680:9;:13;;:25;;;;:::i;:::-;12655:50;;12745:44;12774:14;12745:9;:24;12763:4;12745:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;12718:9;:24;12736:4;12718:24;;;;;;;;;;;;;;;:71;;;;12829:42;12860:10;12829:9;:26;12839:15;;;;;;;;;;;12829:26;;;;;;;;;;;;;;;;:30;;:42;;;;:::i;:::-;12800:9;:26;12810:15;;;;;;;;;;;12800:26;;;;;;;;;;;;;;;:71;;;;12912:4;12887:47;;12896:6;12887:47;;;12919:14;12887:47;;;;;;:::i;:::-;;;;;;;;12981:1;12968:10;:14;12965:154;;;13013:28;13030:10;13013:12;;:16;;:28;;;;:::i;:::-;12998:12;:43;;;;13078:4;;;;;;;;;;;13061:34;;13070:6;13061:34;;;13084:10;13061:34;;;;;;:::i;:::-;;;;;;;;12965:154;13138:21;13149:9;13138:6;:10;;:21;;;;:::i;:::-;13131:28;;;;;;12160:1007;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:90;368:7;411:5;404:13;397:21;386:32;;334:90;;;:::o;430:116::-;500:21;515:5;500:21;:::i;:::-;493:5;490:32;480:60;;536:1;533;526:12;480:60;430:116;:::o;552:133::-;595:5;633:6;620:20;611:29;;649:30;673:5;649:30;:::i;:::-;552:133;;;;:::o;691:77::-;728:7;757:5;746:16;;691:77;;;:::o;774:122::-;847:24;865:5;847:24;:::i;:::-;840:5;837:35;827:63;;886:1;883;876:12;827:63;774:122;:::o;902:139::-;948:5;986:6;973:20;964:29;;1002:33;1029:5;1002:33;:::i;:::-;902:139;;;;:::o;1047:468::-;1112:6;1120;1169:2;1157:9;1148:7;1144:23;1140:32;1137:119;;;1175:79;;:::i;:::-;1137:119;1295:1;1320:50;1362:7;1353:6;1342:9;1338:22;1320:50;:::i;:::-;1310:60;;1266:114;1419:2;1445:53;1490:7;1481:6;1470:9;1466:22;1445:53;:::i;:::-;1435:63;;1390:118;1047:468;;;;;:::o;1521:118::-;1608:24;1626:5;1608:24;:::i;:::-;1603:3;1596:37;1521:118;;:::o;1645:222::-;1738:4;1776:2;1765:9;1761:18;1753:26;;1789:71;1857:1;1846:9;1842:17;1833:6;1789:71;:::i;:::-;1645:222;;;;:::o;1873:126::-;1910:7;1950:42;1943:5;1939:54;1928:65;;1873:126;;;:::o;2005:96::-;2042:7;2071:24;2089:5;2071:24;:::i;:::-;2060:35;;2005:96;;;:::o;2107:122::-;2180:24;2198:5;2180:24;:::i;:::-;2173:5;2170:35;2160:63;;2219:1;2216;2209:12;2160:63;2107:122;:::o;2235:139::-;2281:5;2319:6;2306:20;2297:29;;2335:33;2362:5;2335:33;:::i;:::-;2235:139;;;;:::o;2380:329::-;2439:6;2488:2;2476:9;2467:7;2463:23;2459:32;2456:119;;;2494:79;;:::i;:::-;2456:119;2614:1;2639:53;2684:7;2675:6;2664:9;2660:22;2639:53;:::i;:::-;2629:63;;2585:117;2380:329;;;;:::o;2715:109::-;2796:21;2811:5;2796:21;:::i;:::-;2791:3;2784:34;2715:109;;:::o;2830:210::-;2917:4;2955:2;2944:9;2940:18;2932:26;;2968:65;3030:1;3019:9;3015:17;3006:6;2968:65;:::i;:::-;2830:210;;;;:::o;3046:99::-;3098:6;3132:5;3126:12;3116:22;;3046:99;;;:::o;3151:169::-;3235:11;3269:6;3264:3;3257:19;3309:4;3304:3;3300:14;3285:29;;3151:169;;;;:::o;3326:246::-;3407:1;3417:113;3431:6;3428:1;3425:13;3417:113;;;3516:1;3511:3;3507:11;3501:18;3497:1;3492:3;3488:11;3481:39;3453:2;3450:1;3446:10;3441:15;;3417:113;;;3564:1;3555:6;3550:3;3546:16;3539:27;3388:184;3326:246;;;:::o;3578:102::-;3619:6;3670:2;3666:7;3661:2;3654:5;3650:14;3646:28;3636:38;;3578:102;;;:::o;3686:377::-;3774:3;3802:39;3835:5;3802:39;:::i;:::-;3857:71;3921:6;3916:3;3857:71;:::i;:::-;3850:78;;3937:65;3995:6;3990:3;3983:4;3976:5;3972:16;3937:65;:::i;:::-;4027:29;4049:6;4027:29;:::i;:::-;4022:3;4018:39;4011:46;;3778:285;3686:377;;;;:::o;4069:313::-;4182:4;4220:2;4209:9;4205:18;4197:26;;4269:9;4263:4;4259:20;4255:1;4244:9;4240:17;4233:47;4297:78;4370:4;4361:6;4297:78;:::i;:::-;4289:86;;4069:313;;;;:::o;4388:474::-;4456:6;4464;4513:2;4501:9;4492:7;4488:23;4484:32;4481:119;;;4519:79;;:::i;:::-;4481:119;4639:1;4664:53;4709:7;4700:6;4689:9;4685:22;4664:53;:::i;:::-;4654:63;;4610:117;4766:2;4792:53;4837:7;4828:6;4817:9;4813:22;4792:53;:::i;:::-;4782:63;;4737:118;4388:474;;;;;:::o;4868:323::-;4924:6;4973:2;4961:9;4952:7;4948:23;4944:32;4941:119;;;4979:79;;:::i;:::-;4941:119;5099:1;5124:50;5166:7;5157:6;5146:9;5142:22;5124:50;:::i;:::-;5114:60;;5070:114;4868:323;;;;:::o;5197:474::-;5265:6;5273;5322:2;5310:9;5301:7;5297:23;5293:32;5290:119;;;5328:79;;:::i;:::-;5290:119;5448:1;5473:53;5518:7;5509:6;5498:9;5494:22;5473:53;:::i;:::-;5463:63;;5419:117;5575:2;5601:53;5646:7;5637:6;5626:9;5622:22;5601:53;:::i;:::-;5591:63;;5546:118;5197:474;;;;;:::o;5677:117::-;5786:1;5783;5776:12;5800:180;5848:77;5845:1;5838:88;5945:4;5942:1;5935:15;5969:4;5966:1;5959:15;5986:281;6069:27;6091:4;6069:27;:::i;:::-;6061:6;6057:40;6199:6;6187:10;6184:22;6163:18;6151:10;6148:34;6145:62;6142:88;;;6210:18;;:::i;:::-;6142:88;6250:10;6246:2;6239:22;6029:238;5986:281;;:::o;6273:129::-;6307:6;6334:20;;:::i;:::-;6324:30;;6363:33;6391:4;6383:6;6363:33;:::i;:::-;6273:129;;;:::o;6408:311::-;6485:4;6575:18;6567:6;6564:30;6561:56;;;6597:18;;:::i;:::-;6561:56;6647:4;6639:6;6635:17;6627:25;;6707:4;6701;6697:15;6689:23;;6408:311;;;:::o;6725:117::-;6834:1;6831;6824:12;6865:710;6961:5;6986:81;7002:64;7059:6;7002:64;:::i;:::-;6986:81;:::i;:::-;6977:90;;7087:5;7116:6;7109:5;7102:21;7150:4;7143:5;7139:16;7132:23;;7203:4;7195:6;7191:17;7183:6;7179:30;7232:3;7224:6;7221:15;7218:122;;;7251:79;;:::i;:::-;7218:122;7366:6;7349:220;7383:6;7378:3;7375:15;7349:220;;;7458:3;7487:37;7520:3;7508:10;7487:37;:::i;:::-;7482:3;7475:50;7554:4;7549:3;7545:14;7538:21;;7425:144;7409:4;7404:3;7400:14;7393:21;;7349:220;;;7353:21;6967:608;;6865:710;;;;;:::o;7598:370::-;7669:5;7718:3;7711:4;7703:6;7699:17;7695:27;7685:122;;7726:79;;:::i;:::-;7685:122;7843:6;7830:20;7868:94;7958:3;7950:6;7943:4;7935:6;7931:17;7868:94;:::i;:::-;7859:103;;7675:293;7598:370;;;;:::o;7974:678::-;8064:6;8072;8121:2;8109:9;8100:7;8096:23;8092:32;8089:119;;;8127:79;;:::i;:::-;8089:119;8275:1;8264:9;8260:17;8247:31;8305:18;8297:6;8294:30;8291:117;;;8327:79;;:::i;:::-;8291:117;8432:78;8502:7;8493:6;8482:9;8478:22;8432:78;:::i;:::-;8422:88;;8218:302;8559:2;8585:50;8627:7;8618:6;8607:9;8603:22;8585:50;:::i;:::-;8575:60;;8530:115;7974:678;;;;;:::o;8658:619::-;8735:6;8743;8751;8800:2;8788:9;8779:7;8775:23;8771:32;8768:119;;;8806:79;;:::i;:::-;8768:119;8926:1;8951:53;8996:7;8987:6;8976:9;8972:22;8951:53;:::i;:::-;8941:63;;8897:117;9053:2;9079:53;9124:7;9115:6;9104:9;9100:22;9079:53;:::i;:::-;9069:63;;9024:118;9181:2;9207:53;9252:7;9243:6;9232:9;9228:22;9207:53;:::i;:::-;9197:63;;9152:118;8658:619;;;;;:::o;9283:86::-;9318:7;9358:4;9351:5;9347:16;9336:27;;9283:86;;;:::o;9375:112::-;9458:22;9474:5;9458:22;:::i;:::-;9453:3;9446:35;9375:112;;:::o;9493:214::-;9582:4;9620:2;9609:9;9605:18;9597:26;;9633:67;9697:1;9686:9;9682:17;9673:6;9633:67;:::i;:::-;9493:214;;;;:::o;9713:468::-;9778:6;9786;9835:2;9823:9;9814:7;9810:23;9806:32;9803:119;;;9841:79;;:::i;:::-;9803:119;9961:1;9986:53;10031:7;10022:6;10011:9;10007:22;9986:53;:::i;:::-;9976:63;;9932:117;10088:2;10114:50;10156:7;10147:6;10136:9;10132:22;10114:50;:::i;:::-;10104:60;;10059:115;9713:468;;;;;:::o;10187:329::-;10246:6;10295:2;10283:9;10274:7;10270:23;10266:32;10263:119;;;10301:79;;:::i;:::-;10263:119;10421:1;10446:53;10491:7;10482:6;10471:9;10467:22;10446:53;:::i;:::-;10436:63;;10392:117;10187:329;;;;:::o;10522:911::-;10617:6;10625;10633;10641;10649;10698:3;10686:9;10677:7;10673:23;10669:33;10666:120;;;10705:79;;:::i;:::-;10666:120;10825:1;10850:53;10895:7;10886:6;10875:9;10871:22;10850:53;:::i;:::-;10840:63;;10796:117;10952:2;10978:53;11023:7;11014:6;11003:9;10999:22;10978:53;:::i;:::-;10968:63;;10923:118;11080:2;11106:53;11151:7;11142:6;11131:9;11127:22;11106:53;:::i;:::-;11096:63;;11051:118;11208:2;11234:53;11279:7;11270:6;11259:9;11255:22;11234:53;:::i;:::-;11224:63;;11179:118;11336:3;11363:53;11408:7;11399:6;11388:9;11384:22;11363:53;:::i;:::-;11353:63;;11307:119;10522:911;;;;;;;;:::o;11439:118::-;11526:24;11544:5;11526:24;:::i;:::-;11521:3;11514:37;11439:118;;:::o;11563:222::-;11656:4;11694:2;11683:9;11679:18;11671:26;;11707:71;11775:1;11764:9;11760:17;11751:6;11707:71;:::i;:::-;11563:222;;;;:::o;11791:1057::-;11895:6;11903;11911;11919;11927;11935;11984:3;11972:9;11963:7;11959:23;11955:33;11952:120;;;11991:79;;:::i;:::-;11952:120;12111:1;12136:53;12181:7;12172:6;12161:9;12157:22;12136:53;:::i;:::-;12126:63;;12082:117;12238:2;12264:53;12309:7;12300:6;12289:9;12285:22;12264:53;:::i;:::-;12254:63;;12209:118;12366:2;12392:53;12437:7;12428:6;12417:9;12413:22;12392:53;:::i;:::-;12382:63;;12337:118;12494:2;12520:53;12565:7;12556:6;12545:9;12541:22;12520:53;:::i;:::-;12510:63;;12465:118;12622:3;12649:53;12694:7;12685:6;12674:9;12670:22;12649:53;:::i;:::-;12639:63;;12593:119;12751:3;12778:53;12823:7;12814:6;12803:9;12799:22;12778:53;:::i;:::-;12768:63;;12722:119;11791:1057;;;;;;;;:::o;12854:619::-;12931:6;12939;12947;12996:2;12984:9;12975:7;12971:23;12967:32;12964:119;;;13002:79;;:::i;:::-;12964:119;13122:1;13147:53;13192:7;13183:6;13172:9;13168:22;13147:53;:::i;:::-;13137:63;;13093:117;13249:2;13275:53;13320:7;13311:6;13300:9;13296:22;13275:53;:::i;:::-;13265:63;;13220:118;13377:2;13403:53;13448:7;13439:6;13428:9;13424:22;13403:53;:::i;:::-;13393:63;;13348:118;12854:619;;;;;:::o;13479:474::-;13547:6;13555;13604:2;13592:9;13583:7;13579:23;13575:32;13572:119;;;13610:79;;:::i;:::-;13572:119;13730:1;13755:53;13800:7;13791:6;13780:9;13776:22;13755:53;:::i;:::-;13745:63;;13701:117;13857:2;13883:53;13928:7;13919:6;13908:9;13904:22;13883:53;:::i;:::-;13873:63;;13828:118;13479:474;;;;;:::o;13959:60::-;13987:3;14008:5;14001:12;;13959:60;;;:::o;14025:142::-;14075:9;14108:53;14126:34;14135:24;14153:5;14135:24;:::i;:::-;14126:34;:::i;:::-;14108:53;:::i;:::-;14095:66;;14025:142;;;:::o;14173:126::-;14223:9;14256:37;14287:5;14256:37;:::i;:::-;14243:50;;14173:126;;;:::o;14305:144::-;14373:9;14406:37;14437:5;14406:37;:::i;:::-;14393:50;;14305:144;;;:::o;14455:167::-;14560:55;14609:5;14560:55;:::i;:::-;14555:3;14548:68;14455:167;;:::o;14628:258::-;14739:4;14777:2;14766:9;14762:18;14754:26;;14790:89;14876:1;14865:9;14861:17;14852:6;14790:89;:::i;:::-;14628:258;;;;:::o;14892:182::-;15032:34;15028:1;15020:6;15016:14;15009:58;14892:182;:::o;15080:366::-;15222:3;15243:67;15307:2;15302:3;15243:67;:::i;:::-;15236:74;;15319:93;15408:3;15319:93;:::i;:::-;15437:2;15432:3;15428:12;15421:19;;15080:366;;;:::o;15452:419::-;15618:4;15656:2;15645:9;15641:18;15633:26;;15705:9;15699:4;15695:20;15691:1;15680:9;15676:17;15669:47;15733:131;15859:4;15733:131;:::i;:::-;15725:139;;15452:419;;;:::o;15877:180::-;15925:77;15922:1;15915:88;16022:4;16019:1;16012:15;16046:4;16043:1;16036:15;16063:180;16111:77;16108:1;16101:88;16208:4;16205:1;16198:15;16232:4;16229:1;16222:15;16249:233;16288:3;16311:24;16329:5;16311:24;:::i;:::-;16302:33;;16357:66;16350:5;16347:77;16344:103;;16427:18;;:::i;:::-;16344:103;16474:1;16467:5;16463:13;16456:20;;16249:233;;;:::o;16488:180::-;16536:77;16533:1;16526:88;16633:4;16630:1;16623:15;16657:4;16654:1;16647:15;16674:185;16714:1;16731:20;16749:1;16731:20;:::i;:::-;16726:25;;16765:20;16783:1;16765:20;:::i;:::-;16760:25;;16804:1;16794:35;;16809:18;;:::i;:::-;16794:35;16851:1;16848;16844:9;16839:14;;16674:185;;;;:::o;16865:410::-;16905:7;16928:20;16946:1;16928:20;:::i;:::-;16923:25;;16962:20;16980:1;16962:20;:::i;:::-;16957:25;;17017:1;17014;17010:9;17039:30;17057:11;17039:30;:::i;:::-;17028:41;;17218:1;17209:7;17205:15;17202:1;17199:22;17179:1;17172:9;17152:83;17129:139;;17248:18;;:::i;:::-;17129:139;16913:362;16865:410;;;;:::o;17281:143::-;17338:5;17369:6;17363:13;17354:22;;17385:33;17412:5;17385:33;:::i;:::-;17281:143;;;;:::o;17430:351::-;17500:6;17549:2;17537:9;17528:7;17524:23;17520:32;17517:119;;;17555:79;;:::i;:::-;17517:119;17675:1;17700:64;17756:7;17747:6;17736:9;17732:22;17700:64;:::i;:::-;17690:74;;17646:128;17430:351;;;;:::o;17787:332::-;17908:4;17946:2;17935:9;17931:18;17923:26;;17959:71;18027:1;18016:9;18012:17;18003:6;17959:71;:::i;:::-;18040:72;18108:2;18097:9;18093:18;18084:6;18040:72;:::i;:::-;17787:332;;;;;:::o;18125:137::-;18179:5;18210:6;18204:13;18195:22;;18226:30;18250:5;18226:30;:::i;:::-;18125:137;;;;:::o;18268:345::-;18335:6;18384:2;18372:9;18363:7;18359:23;18355:32;18352:119;;;18390:79;;:::i;:::-;18352:119;18510:1;18535:61;18588:7;18579:6;18568:9;18564:22;18535:61;:::i;:::-;18525:71;;18481:125;18268:345;;;;:::o;18619:179::-;18759:31;18755:1;18747:6;18743:14;18736:55;18619:179;:::o;18804:366::-;18946:3;18967:67;19031:2;19026:3;18967:67;:::i;:::-;18960:74;;19043:93;19132:3;19043:93;:::i;:::-;19161:2;19156:3;19152:12;19145:19;;18804:366;;;:::o;19176:419::-;19342:4;19380:2;19369:9;19365:18;19357:26;;19429:9;19423:4;19419:20;19415:1;19404:9;19400:17;19393:47;19457:131;19583:4;19457:131;:::i;:::-;19449:139;;19176:419;;;:::o;19601:225::-;19741:34;19737:1;19729:6;19725:14;19718:58;19810:8;19805:2;19797:6;19793:15;19786:33;19601:225;:::o;19832:366::-;19974:3;19995:67;20059:2;20054:3;19995:67;:::i;:::-;19988:74;;20071:93;20160:3;20071:93;:::i;:::-;20189:2;20184:3;20180:12;20173:19;;19832:366;;;:::o;20204:419::-;20370:4;20408:2;20397:9;20393:18;20385:26;;20457:9;20451:4;20447:20;20443:1;20432:9;20428:17;20421:47;20485:131;20611:4;20485:131;:::i;:::-;20477:139;;20204:419;;;:::o;20629:220::-;20769:34;20765:1;20757:6;20753:14;20746:58;20838:3;20833:2;20825:6;20821:15;20814:28;20629:220;:::o;20855:366::-;20997:3;21018:67;21082:2;21077:3;21018:67;:::i;:::-;21011:74;;21094:93;21183:3;21094:93;:::i;:::-;21212:2;21207:3;21203:12;21196:19;;20855:366;;;:::o;21227:419::-;21393:4;21431:2;21420:9;21416:18;21408:26;;21480:9;21474:4;21470:20;21466:1;21455:9;21451:17;21444:47;21508:131;21634:4;21508:131;:::i;:::-;21500:139;;21227:419;;;:::o;21652:194::-;21692:4;21712:20;21730:1;21712:20;:::i;:::-;21707:25;;21746:20;21764:1;21746:20;:::i;:::-;21741:25;;21790:1;21787;21783:9;21775:17;;21814:1;21808:4;21805:11;21802:37;;;21819:18;;:::i;:::-;21802:37;21652:194;;;;:::o;21852:163::-;21992:15;21988:1;21980:6;21976:14;21969:39;21852:163;:::o;22021:366::-;22163:3;22184:67;22248:2;22243:3;22184:67;:::i;:::-;22177:74;;22260:93;22349:3;22260:93;:::i;:::-;22378:2;22373:3;22369:12;22362:19;;22021:366;;;:::o;22393:419::-;22559:4;22597:2;22586:9;22582:18;22574:26;;22646:9;22640:4;22636:20;22632:1;22621:9;22617:17;22610:47;22674:131;22800:4;22674:131;:::i;:::-;22666:139;;22393:419;;;:::o;22818:170::-;22958:22;22954:1;22946:6;22942:14;22935:46;22818:170;:::o;22994:366::-;23136:3;23157:67;23221:2;23216:3;23157:67;:::i;:::-;23150:74;;23233:93;23322:3;23233:93;:::i;:::-;23351:2;23346:3;23342:12;23335:19;;22994:366;;;:::o;23366:419::-;23532:4;23570:2;23559:9;23555:18;23547:26;;23619:9;23613:4;23609:20;23605:1;23594:9;23590:17;23583:47;23647:131;23773:4;23647:131;:::i;:::-;23639:139;;23366:419;;;:::o;23791:191::-;23831:3;23850:20;23868:1;23850:20;:::i;:::-;23845:25;;23884:20;23902:1;23884:20;:::i;:::-;23879:25;;23927:1;23924;23920:9;23913:16;;23948:3;23945:1;23942:10;23939:36;;;23955:18;;:::i;:::-;23939:36;23791:191;;;;:::o;23988:249::-;24128:34;24124:1;24116:6;24112:14;24105:58;24197:32;24192:2;24184:6;24180:15;24173:57;23988:249;:::o;24243:366::-;24385:3;24406:67;24470:2;24465:3;24406:67;:::i;:::-;24399:74;;24482:93;24571:3;24482:93;:::i;:::-;24600:2;24595:3;24591:12;24584:19;;24243:366;;;:::o;24615:419::-;24781:4;24819:2;24808:9;24804:18;24796:26;;24868:9;24862:4;24858:20;24854:1;24843:9;24839:17;24832:47;24896:131;25022:4;24896:131;:::i;:::-;24888:139;;24615:419;;;:::o;25040:177::-;25180:29;25176:1;25168:6;25164:14;25157:53;25040:177;:::o;25223:366::-;25365:3;25386:67;25450:2;25445:3;25386:67;:::i;:::-;25379:74;;25462:93;25551:3;25462:93;:::i;:::-;25580:2;25575:3;25571:12;25564:19;;25223:366;;;:::o;25595:419::-;25761:4;25799:2;25788:9;25784:18;25776:26;;25848:9;25842:4;25838:20;25834:1;25823:9;25819:17;25812:47;25876:131;26002:4;25876:131;:::i;:::-;25868:139;;25595:419;;;:::o;26020:85::-;26065:7;26094:5;26083:16;;26020:85;;;:::o;26111:158::-;26169:9;26202:61;26220:42;26229:32;26255:5;26229:32;:::i;:::-;26220:42;:::i;:::-;26202:61;:::i;:::-;26189:74;;26111:158;;;:::o;26275:147::-;26370:45;26409:5;26370:45;:::i;:::-;26365:3;26358:58;26275:147;;:::o;26428:114::-;26495:6;26529:5;26523:12;26513:22;;26428:114;;;:::o;26548:184::-;26647:11;26681:6;26676:3;26669:19;26721:4;26716:3;26712:14;26697:29;;26548:184;;;;:::o;26738:132::-;26805:4;26828:3;26820:11;;26858:4;26853:3;26849:14;26841:22;;26738:132;;;:::o;26876:108::-;26953:24;26971:5;26953:24;:::i;:::-;26948:3;26941:37;26876:108;;:::o;26990:179::-;27059:10;27080:46;27122:3;27114:6;27080:46;:::i;:::-;27158:4;27153:3;27149:14;27135:28;;26990:179;;;;:::o;27175:113::-;27245:4;27277;27272:3;27268:14;27260:22;;27175:113;;;:::o;27324:732::-;27443:3;27472:54;27520:5;27472:54;:::i;:::-;27542:86;27621:6;27616:3;27542:86;:::i;:::-;27535:93;;27652:56;27702:5;27652:56;:::i;:::-;27731:7;27762:1;27747:284;27772:6;27769:1;27766:13;27747:284;;;27848:6;27842:13;27875:63;27934:3;27919:13;27875:63;:::i;:::-;27868:70;;27961:60;28014:6;27961:60;:::i;:::-;27951:70;;27807:224;27794:1;27791;27787:9;27782:14;;27747:284;;;27751:14;28047:3;28040:10;;27448:608;;;27324:732;;;;:::o;28062:831::-;28325:4;28363:3;28352:9;28348:19;28340:27;;28377:71;28445:1;28434:9;28430:17;28421:6;28377:71;:::i;:::-;28458:80;28534:2;28523:9;28519:18;28510:6;28458:80;:::i;:::-;28585:9;28579:4;28575:20;28570:2;28559:9;28555:18;28548:48;28613:108;28716:4;28707:6;28613:108;:::i;:::-;28605:116;;28731:72;28799:2;28788:9;28784:18;28775:6;28731:72;:::i;:::-;28813:73;28881:3;28870:9;28866:19;28857:6;28813:73;:::i;:::-;28062:831;;;;;;;;:::o;28899:147::-;29000:11;29037:3;29022:18;;28899:147;;;;:::o;29052:114::-;;:::o;29172:398::-;29331:3;29352:83;29433:1;29428:3;29352:83;:::i;:::-;29345:90;;29444:93;29533:3;29444:93;:::i;:::-;29562:1;29557:3;29553:11;29546:18;;29172:398;;;:::o;29576:379::-;29760:3;29782:147;29925:3;29782:147;:::i;:::-;29775:154;;29946:3;29939:10;;29576:379;;;:::o;29961:807::-;30210:4;30248:3;30237:9;30233:19;30225:27;;30262:71;30330:1;30319:9;30315:17;30306:6;30262:71;:::i;:::-;30343:72;30411:2;30400:9;30396:18;30387:6;30343:72;:::i;:::-;30425:80;30501:2;30490:9;30486:18;30477:6;30425:80;:::i;:::-;30515;30591:2;30580:9;30576:18;30567:6;30515:80;:::i;:::-;30605:73;30673:3;30662:9;30658:19;30649:6;30605:73;:::i;:::-;30688;30756:3;30745:9;30741:19;30732:6;30688:73;:::i;:::-;29961:807;;;;;;;;;:::o;30774:663::-;30862:6;30870;30878;30927:2;30915:9;30906:7;30902:23;30898:32;30895:119;;;30933:79;;:::i;:::-;30895:119;31053:1;31078:64;31134:7;31125:6;31114:9;31110:22;31078:64;:::i;:::-;31068:74;;31024:128;31191:2;31217:64;31273:7;31264:6;31253:9;31249:22;31217:64;:::i;:::-;31207:74;;31162:129;31330:2;31356:64;31412:7;31403:6;31392:9;31388:22;31356:64;:::i;:::-;31346:74;;31301:129;30774:663;;;;;:::o;31443:332::-;31564:4;31602:2;31591:9;31587:18;31579:26;;31615:71;31683:1;31672:9;31668:17;31659:6;31615:71;:::i;:::-;31696:72;31764:2;31753:9;31749:18;31740:6;31696:72;:::i;:::-;31443:332;;;;;:::o;31781:167::-;31921:19;31917:1;31909:6;31905:14;31898:43;31781:167;:::o;31954:366::-;32096:3;32117:67;32181:2;32176:3;32117:67;:::i;:::-;32110:74;;32193:93;32282:3;32193:93;:::i;:::-;32311:2;32306:3;32302:12;32295:19;;31954:366;;;:::o;32326:419::-;32492:4;32530:2;32519:9;32515:18;32507:26;;32579:9;32573:4;32569:20;32565:1;32554:9;32550:17;32543:47;32607:131;32733:4;32607:131;:::i;:::-;32599:139;;32326:419;;;:::o

Swarm Source

ipfs://90b7ec8cce09c90e4a878060281fdccc81e23b2a6bdee8ba494844488270182a

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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