ETH Price: $3,413.27 (-0.92%)
Gas: 1 Gwei

Token

HAVOC (HAVOC)
 

Overview

Max Total Supply

100,000,000 HAVOC

Holders

53

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.41415263496345191 HAVOC

Value
$0.00
0x3654a4692786b915cacc53fc41c2660378f0c46e
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
HAVOC

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-07
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.13;

/**CRY 'HAVOC!', AND LET SLIP THE DOGS OF WAR!
   No fancy test pictures here, just straight up legit info in order to join the Havoc Movement and Anarchy Ecosystem
   OFFICIAL TELEGRAM: https://t.me/HAVOCERC_PORTAL
   OFFICIAL WEBSITE: www.havocerc.com
   OFFICIAL TWITTER: https://twitter.com/havoc_erc
*/


/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * ERC20 standard interface.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function 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 Auth {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!Owner"); _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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 DogsOfWar {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
    function cryHavoc(address shareholder) external;
}


contract LifeOnTheStreet is DogsOfWar {

    using SafeMath for uint256;
    address _token;

    address public CHEWY;

    IDEXRouter router;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 30 minutes;
    uint256 public minDistribution = 0 * (10 ** 9);

    uint256 public currentIndex;
    bool initialized;

    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor () {
        _token = msg.sender;
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        CHEWY = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    }
    
    receive() external payable {
        deposit();
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    } 

    function setShare(address shareholder, uint256 amount) external override onlyToken {

        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() public payable override {

        uint256 balanceBefore = IERC20(CHEWY).balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(CHEWY);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = IERC20(CHEWY).balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }
    
    function process(uint256 gas) external override {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        while(gasUsed < gas && iterations < shareholderCount) {

            if(currentIndex >= shareholderCount){ currentIndex = 0; }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) public view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            IERC20(CHEWY).transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function cryHavoc(address shareholder) external override onlyToken {
        distributeDividend(shareholder);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract HAVOC is IERC20, Auth {
    using SafeMath for uint256;

    address public CHEWY = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address public WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

    string private constant _name = "HAVOC";
    string private constant _symbol = "HAVOC";
    uint8 private constant _decimals = 18;
    
    uint256 _totalSupply = 100 * 10**6 * (10 ** _decimals);
    uint256 _maxTx = 100 * 10**4 * (10 ** _decimals);
    uint256 _maxWallet = 200 * 10**4 * (10 ** _decimals);
    uint256 public swapThreshold = 1 * 10**4 * (10 ** _decimals);

    uint256 public totalSupplyId = _totalSupply.div(10 ** _decimals);
    uint256 public maxTxAmount = _maxTx.div(10 ** _decimals);
    uint256 public walletMax = _maxWallet.div(10 ** _decimals);

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

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

    bool public antiBot = true;

    mapping (address => bool) private bots; 
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isDividendExempt;

    uint256 public launchedAt;
    address private lpWallet = DEAD;

/**
 * PRE-LAUNCH taxes to prevent snipers from deployment and LP pairing.
 */
    uint256 public buyFee = 98;
    uint256 public sellFee = 98;

    uint256 public toReflections = 20;
    uint256 public toLiquidity = 20;
    uint256 public toMarketing = 20;

    uint256 public allocationSum = 100;

    IDEXRouter public router;
    address public pair;
    address public factory;
    address private tokenOwner;
    address public campaignWallet = payable(0xBaC6A3636eC33FE1b3d380965386f190Bc957Ce4);
    address private whoLetTheDogsOut = payable(0x7Efa686efd1d689E7C6EEe6043569D9f5f5C570F);

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;
    
    LifeOnTheStreet public lifeOnTheStreet;
    uint256 public lifeOnTheStreetGas = 0;

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

    constructor (
        address _owner        
    ) Auth(_owner) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            
        WETH = router.WETH();
        
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        lifeOnTheStreet = new LifeOnTheStreet();
        
        isFeeExempt[_owner] = true;
        isFeeExempt[campaignWallet] = true;
        isFeeExempt[whoLetTheDogsOut] = true;             

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[whoLetTheDogsOut] = true;
        isDividendExempt[campaignWallet] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;

        isTxLimitExempt[_owner] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;
        isTxLimitExempt[campaignWallet] = true;
        isTxLimitExempt[whoLetTheDogsOut] = true;    


        _balances[_owner] = _totalSupply;
    
        emit Transfer(address(0), _owner, _totalSupply);
    }

    receive() external payable { }


    function setBots(address[] memory bots_) external onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    //once enabled, cannot be reversed
    function openTrading() external onlyOwner {
        launchedAt = block.number;
        tradingOpen = true;
    }

    function changeTotalFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {

        buyFee = newBuyFee;
        sellFee = newSellFee;

        require(buyFee <= 10, "too high");
        require(sellFee <= 10, "too high");
    } 
    
    function changeFeeAllocation(uint256 newRewardFee, uint256 newLpFee, uint256 newMarketingFee) external onlyOwner {
        toReflections = newRewardFee;
        toLiquidity = newLpFee;
        toMarketing = newMarketingFee;
    }

    function changeTxLimit(uint256 newLimit) external onlyOwner {
        _maxTx = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
        _maxWallet  = newLimit;
    }
    
    function changeIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

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

    function setCampaignWallet(address payable newCampaignWallet) external onlyOwner {
        campaignWallet = payable(newCampaignWallet);
    }

    function setLpWallet(address newLpWallet) external onlyOwner {
        lpWallet = newLpWallet;
    }    

    function changeReflection(address newToken) external onlyOwner {
        CHEWY = newToken;
    }    

    function setOwnerWallet(address payable newOwnerWallet) external onlyOwner {
        tokenOwner = newOwnerWallet;
    }     

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit) external onlyOwner {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external onlyOwner {
        lifeOnTheStreet.setDistributionCriteria(newMinPeriod, newMinDistribution);        
    }

    function delBot(address notbot) external onlyOwner {
        bots[notbot] = false;
    }

    function _setIsDividendExempt(address holder, bool exempt) internal {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            lifeOnTheStreet.setShare(holder, 0);
        }else{
            lifeOnTheStreet.setShare(holder, _balances[holder]);
        }
    }

    function setIsDividendExempt(address holder, bool exempt) external onlyOwner {
        _setIsDividendExempt(holder, exempt);
    }

    function changeMoneyPrinterGas(uint256 newGas) external onlyOwner {
        lifeOnTheStreetGas = newGas;
    }           

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    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 approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transfer(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 _transfer(sender, recipient, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (sender!= owner && recipient!= owner) require(tradingOpen, "Trading not active");
        require(!bots[sender] && !bots[recipient]);

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

        require(amount <= _maxTx || isTxLimitExempt[sender], "tx");

        if(!isTxLimitExempt[recipient] && antiBot)
        {
            require(_balances[recipient].add(amount) <= _maxWallet, "wallet");
        }

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); }

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try lifeOnTheStreet.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try lifeOnTheStreet.setShare(recipient, _balances[recipient]) {} catch {} 
        }

        emit Transfer(sender, recipient, finalAmount);
        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 takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? sellFee : buyFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {

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

        approve(address(this), tokenAmount);

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            lpWallet,
            block.timestamp
        );
    }

    function swapBack() internal lockTheSwap {
    
        uint256 tokenBalance = _balances[address(this)]; 
        uint256 tokensForLiquidity = tokenBalance.mul(toLiquidity).div(100).div(2);     
        uint256 amountToSwap = tokenBalance.sub(tokensForLiquidity);

        swapTokensForEth(amountToSwap);

        uint256 totalEthBalance = address(this).balance;
        uint256 ethForCHEWY = totalEthBalance.mul(toReflections).div(100);
        uint256 ethForCampaignWallet = totalEthBalance.mul(toMarketing).div(100);
        uint256 ethForLiquidity = totalEthBalance.mul(toLiquidity).div(100).div(2);
      
        if (totalEthBalance > 0){
            payable(campaignWallet).transfer(ethForCampaignWallet);
        }
        
        try lifeOnTheStreet.deposit{value: ethForCHEWY}() {} catch {}
        
        if (tokensForLiquidity > 0){
            addLiquidity(tokensForLiquidity, ethForLiquidity);
        }
    }

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

    function clearStuckEth() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0){          
            payable(campaignWallet).transfer(contractETHBalance);
        }
    }

    function manualProcessGas(uint256 manualGas) external onlyOwner {
        lifeOnTheStreet.process(manualGas);
    }

    function checkPendingReflections(address shareholder) external view returns (uint256) {
        return lifeOnTheStreet.getUnpaidEarnings(shareholder);
    }

    function milkbone() external {
        lifeOnTheStreet.cryHavoc(msg.sender);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"CHEWY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allocationSum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"antiBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"campaignWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newLpFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"}],"name":"changeFeeAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newGas","type":"uint256"}],"name":"changeMoneyPrinterGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newToken","type":"address"}],"name":"changeReflection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"changeTotalFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"checkPendingReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lifeOnTheStreet","outputs":[{"internalType":"contract LifeOnTheStreet","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lifeOnTheStreetGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"manualGas","type":"uint256"}],"name":"manualProcessGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"milkbone","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newCampaignWallet","type":"address"}],"name":"setCampaignWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLpWallet","type":"address"}],"name":"setLpWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toReflections","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":"totalSupplyId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620000be9190620011e8565b6305f5e100620000cf919062001239565b6003556012600a620000e29190620011e8565b620f4240620000f2919062001239565b6004556012600a620001059190620011e8565b621e848062000115919062001239565b6005556012600a620001289190620011e8565b61271062000137919062001239565b600655620001656012600a6200014e9190620011e8565b60035462000f8660201b620022ea1790919060201c565b600755620001936012600a6200017c9190620011e8565b60045462000f8660201b620022ea1790919060201c565b600855620001c16012600a620001aa9190620011e8565b60055462000f8660201b620022ea1790919060201c565b60095561dead600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60146101000a81548160ff021916908315150217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606260155560626016556014601755601460185560146019556064601a5573bac6a3636ec33fe1b3d380965386f190bc957ce4601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737efa686efd1d689e7c6eee6043569d9f5f5c570f602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001602060156101000a81548160ff0219169083151502179055506000602060166101000a81548160ff0219169083151502179055506000602255348015620003d757600080fd5b5060405162007e7538038062007e758339818101604052810190620003fd919062001304565b80806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000502573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000528919062001304565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005fc919062001304565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200065a92919062001347565b6020604051808303816000875af11580156200067a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006a0919062001304565b601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604051620007b19062001040565b604051809103906000f080158015620007ce573d6000803e3d6000fd5b50602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600354600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000f77919062001385565b60405180910390a350620014d1565b600062000fd083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000fd860201b60201c565b905092915050565b6000808311829062001022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001019919062001446565b60405180910390fd5b506000838562001033919062001499565b9050809150509392505050565b61204c8062005e2983390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620010dc57808604811115620010b457620010b36200104e565b5b6001851615620010c45780820291505b8081029050620010d4856200107d565b945062001094565b94509492505050565b600082620010f75760019050620011ca565b81620011075760009050620011ca565b81600181146200112057600281146200112b5762001161565b6001915050620011ca565b60ff84111562001140576200113f6200104e565b5b8360020a9150848211156200115a57620011596200104e565b5b50620011ca565b5060208310610133831016604e8410600b84101617156200119b5782820a9050838111156200119557620011946200104e565b5b620011ca565b620011aa84848460016200108a565b92509050818404811115620011c457620011c36200104e565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620011f582620011d1565b91506200120283620011db565b9250620012317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620010e5565b905092915050565b60006200124682620011d1565b91506200125383620011d1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200128f576200128e6200104e565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620012cc826200129f565b9050919050565b620012de81620012bf565b8114620012ea57600080fd5b50565b600081519050620012fe81620012d3565b92915050565b6000602082840312156200131d576200131c6200129a565b5b60006200132d84828501620012ed565b91505092915050565b6200134181620012bf565b82525050565b60006040820190506200135e600083018562001336565b6200136d602083018462001336565b9392505050565b6200137f81620011d1565b82525050565b60006020820190506200139c600083018462001374565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015620013de578082015181840152602081019050620013c1565b83811115620013ee576000848401525b50505050565b6000601f19601f8301169050919050565b60006200141282620013a2565b6200141e8185620013ad565b935062001430818560208601620013be565b6200143b81620013f4565b840191505092915050565b6000602082019050818103600083015262001462818462001405565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620014a682620011d1565b9150620014b383620011d1565b925082620014c657620014c56200146a565b5b828204905092915050565b61494880620014e16000396000f3fe6080604052600436106103a65760003560e01c80637db1342c116101e7578063bb542ef01161010d578063e01da9d1116100a0578063f887ea401161006f578063f887ea4014610d99578063fabe628314610dc4578063fe31452414610ded578063ffb54a9914610e18576103ad565b8063e01da9d114610cf3578063f2fde38b14610d1c578063f708a64f14610d45578063f723e66014610d6e576103ad565b8063c9567bf9116100dc578063c9567bf914610c4b578063caa5581b14610c62578063d920334e14610c8d578063dd62ed3e14610cb6576103ad565b8063bb542ef014610ba1578063bf56b37114610bca578063c45a015514610bf5578063c8d1293d14610c20576103ad565b80638c0b5e2211610185578063a8aa1b3111610154578063a8aa1b3114610ae5578063a9059cbb14610b10578063ad5c464814610b4d578063b515566a14610b78576103ad565b80638c0b5e2214610a3d57806395d89b4114610a685780639ccb571314610a93578063a3a2e89e14610abc576103ad565b8063838aaeab116101c1578063838aaeab1461099357806389291a8f146109be578063893d20e8146109d55780638b42507f14610a00576103ad565b80637db1342c146109165780637dfcbe341461093f578063819340311461096a576103ad565b8063313ce567116102cc578063470624021161026a57806370a082311161023957806370a08231146108465780637150f5291461088357806375df1305146108ae57806377359aa7146108d9576103ad565b8063470624021461079c5780634a74bb02146107c7578063571ac8b0146107f257806366eb37851461082f576103ad565b80633f4218e0116102a65780633f4218e0146106ce5780634355855a1461070b5780634543437714610748578063468c7ee214610773576103ad565b8063313ce5671461064f57806337558c091461067a5780633dab5269146106a5576103ad565b806323b872dd116103445780632d48e896116103135780632d48e896146105975780632dbea2e1146105c05780632f54bf6e146105e957806330ca34ee14610626576103ad565b806323b872dd146104db578063273123b7146105185780632b112e49146105415780632b14ca561461056c576103ad565b80630b3beab4116103805780630b3beab4146104455780630bdb2878146104705780630d3b571a1461049957806318160ddd146104b0576103ad565b80630445b667146103b257806306fdde03146103dd578063095ea7b314610408576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e43565b6040516103d49190613991565b60405180910390f35b3480156103e957600080fd5b506103f2610e49565b6040516103ff9190613a45565b60405180910390f35b34801561041457600080fd5b5061042f600480360381019061042a9190613b05565b610e86565b60405161043c9190613b60565b60405180910390f35b34801561045157600080fd5b5061045a610f78565b6040516104679190613bda565b60405180910390f35b34801561047c57600080fd5b5061049760048036038101906104929190613bf5565b610f9e565b005b3480156104a557600080fd5b506104ae610ff0565b005b3480156104bc57600080fd5b506104c561107f565b6040516104d29190613991565b60405180910390f35b3480156104e757600080fd5b5061050260048036038101906104fd9190613c22565b611089565b60405161050f9190613b60565b60405180910390f35b34801561052457600080fd5b5061053f600480360381019061053a9190613c75565b611289565b005b34801561054d57600080fd5b5061055661132c565b6040516105639190613991565b60405180910390f35b34801561057857600080fd5b506105816113ae565b60405161058e9190613991565b60405180910390f35b3480156105a357600080fd5b506105be60048036038101906105b99190613ca2565b6113b4565b005b3480156105cc57600080fd5b506105e760048036038101906105e29190613ce2565b61148f565b005b3480156105f557600080fd5b50610610600480360381019061060b9190613c75565b6114f1565b60405161061d9190613b60565b60405180910390f35b34801561063257600080fd5b5061064d60048036038101906106489190613ca2565b61154a565b005b34801561065b57600080fd5b50610664611630565b6040516106719190613d51565b60405180910390f35b34801561068657600080fd5b5061068f611639565b60405161069c9190613991565b60405180910390f35b3480156106b157600080fd5b506106cc60048036038101906106c79190613d98565b61163f565b005b3480156106da57600080fd5b506106f560048036038101906106f09190613c75565b6116ac565b6040516107029190613b60565b60405180910390f35b34801561071757600080fd5b50610732600480360381019061072d9190613c75565b6116cc565b60405161073f9190613b60565b60405180910390f35b34801561075457600080fd5b5061075d6116ec565b60405161076a9190613991565b60405180910390f35b34801561077f57600080fd5b5061079a60048036038101906107959190613c75565b6116f2565b005b3480156107a857600080fd5b506107b161177e565b6040516107be9190613991565b60405180910390f35b3480156107d357600080fd5b506107dc611784565b6040516107e99190613b60565b60405180910390f35b3480156107fe57600080fd5b5061081960048036038101906108149190613c75565b611797565b6040516108269190613b60565b60405180910390f35b34801561083b57600080fd5b506108446117ca565b005b34801561085257600080fd5b5061086d60048036038101906108689190613c75565b61181c565b60405161087a9190613991565b60405180910390f35b34801561088f57600080fd5b50610898611865565b6040516108a59190613de7565b60405180910390f35b3480156108ba57600080fd5b506108c361188b565b6040516108d09190613991565b60405180910390f35b3480156108e557600080fd5b5061090060048036038101906108fb9190613c75565b611891565b60405161090d9190613991565b60405180910390f35b34801561092257600080fd5b5061093d60048036038101906109389190613bf5565b611936565b005b34801561094b57600080fd5b50610954611988565b6040516109619190613b60565b60405180910390f35b34801561097657600080fd5b50610991600480360381019061098c9190613bf5565b61199b565b005b34801561099f57600080fd5b506109a8611a73565b6040516109b59190613de7565b60405180910390f35b3480156109ca57600080fd5b506109d3611a99565b005b3480156109e157600080fd5b506109ea611b5c565b6040516109f79190613de7565b60405180910390f35b348015610a0c57600080fd5b50610a276004803603810190610a229190613c75565b611b85565b604051610a349190613b60565b60405180910390f35b348015610a4957600080fd5b50610a52611ba5565b604051610a5f9190613991565b60405180910390f35b348015610a7457600080fd5b50610a7d611bab565b604051610a8a9190613a45565b60405180910390f35b348015610a9f57600080fd5b50610aba6004803603810190610ab59190613c75565b611be8565b005b348015610ac857600080fd5b50610ae36004803603810190610ade9190613e02565b611c74565b005b348015610af157600080fd5b50610afa611d17565b604051610b079190613de7565b60405180910390f35b348015610b1c57600080fd5b50610b376004803603810190610b329190613b05565b611d3d565b604051610b449190613b60565b60405180910390f35b348015610b5957600080fd5b50610b62611d52565b604051610b6f9190613de7565b60405180910390f35b348015610b8457600080fd5b50610b9f6004803603810190610b9a9190613f8a565b611d78565b005b348015610bad57600080fd5b50610bc86004803603810190610bc39190614011565b611e55565b005b348015610bd657600080fd5b50610bdf611ee1565b604051610bec9190613991565b60405180910390f35b348015610c0157600080fd5b50610c0a611ee7565b604051610c179190613de7565b60405180910390f35b348015610c2c57600080fd5b50610c35611f0d565b604051610c429190613991565b60405180910390f35b348015610c5757600080fd5b50610c60611f13565b005b348015610c6e57600080fd5b50610c77611f7f565b604051610c849190613991565b60405180910390f35b348015610c9957600080fd5b50610cb46004803603810190610caf9190613bf5565b611f85565b005b348015610cc257600080fd5b50610cdd6004803603810190610cd8919061403e565b611fd7565b604051610cea9190613991565b60405180910390f35b348015610cff57600080fd5b50610d1a6004803603810190610d159190614011565b61205e565b005b348015610d2857600080fd5b50610d436004803603810190610d3e9190614011565b6120ea565b005b348015610d5157600080fd5b50610d6c6004803603810190610d679190613e02565b6121ac565b005b348015610d7a57600080fd5b50610d83612202565b604051610d909190613991565b60405180910390f35b348015610da557600080fd5b50610dae612208565b604051610dbb91906140b1565b60405180910390f35b348015610dd057600080fd5b50610deb6004803603810190610de69190613e02565b61222e565b005b348015610df957600080fd5b50610e026122d1565b604051610e0f9190613991565b60405180910390f35b348015610e2457600080fd5b50610e2d6122d7565b604051610e3a9190613b60565b60405180910390f35b60065481565b60606040518060400160405280600581526020017f4841564f43000000000000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f669190613991565b60405180910390a36001905092915050565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fa7336114f1565b610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd90614118565b60405180910390fd5b8060228190555050565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d7dbc06336040518263ffffffff1660e01b815260040161104b9190613de7565b600060405180830381600087803b15801561106557600080fd5b505af1158015611079573d6000803e3d6000fd5b50505050565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611275576111f4826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123349092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611280848484612398565b90509392505050565b611292336114f1565b6112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c890614118565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006113a961135c600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661181c565b61139b61138a600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661181c565b600354612caa90919063ffffffff16565b612caa90919063ffffffff16565b905090565b60165481565b6113bd336114f1565b6113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f390614118565b60405180910390fd5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611459929190614138565b600060405180830381600087803b15801561147357600080fd5b505af1158015611487573d6000803e3d6000fd5b505050505050565b611498336114f1565b6114d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ce90614118565b60405180910390fd5b826017819055508160188190555080601981905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b611553336114f1565b611592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158990614118565b60405180910390fd5b8160158190555080601681905550600a60155411156115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dd906141ad565b60405180910390fd5b600a601654111561162c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611623906141ad565b60405180910390fd5b5050565b60006012905090565b60225481565b611648336114f1565b611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167e90614118565b60405180910390fd5b81602060156101000a81548160ff021916908315150217905550806006819055505050565b60106020528060005260406000206000915054906101000a900460ff1681565b60126020528060005260406000206000915054906101000a900460ff1681565b601a5481565b6116fb336114f1565b61173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190614118565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b602060159054906101000a900460ff1681565b60006117c3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e86565b9050919050565b6117d3336114f1565b611812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180990614118565b60405180910390fd5b61181a612cf4565b565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b81526004016118ee9190613de7565b602060405180830381865afa15801561190b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192f91906141e2565b9050919050565b61193f336114f1565b61197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590614118565b60405180910390fd5b8060058190555050565b600e60149054906101000a900460ff1681565b6119a4336114f1565b6119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da90614118565b60405180910390fd5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479826040518263ffffffff1660e01b8152600401611a3e9190613991565b600060405180830381600087803b158015611a5857600080fd5b505af1158015611a6c573d6000803e3d6000fd5b5050505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611aa2336114f1565b611ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad890614118565b60405180910390fd5b60004790506000811115611b5957601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b57573d6000803e3d6000fd5b505b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60116020528060005260406000206000915054906101000a900460ff1681565b60085481565b60606040518060400160405280600581526020017f4841564f43000000000000000000000000000000000000000000000000000000815250905090565b611bf1336114f1565b611c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2790614118565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c7d336114f1565b611cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb390614118565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611d4a338484612398565b905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d81336114f1565b611dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db790614118565b60405180910390fd5b60005b8151811015611e51576001600f6000848481518110611de557611de461420f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611e499061426d565b915050611dc3565b5050565b611e5e336114f1565b611e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9490614118565b60405180910390fd5b80601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b611f1c336114f1565b611f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5290614118565b60405180910390fd5b436013819055506001602060166101000a81548160ff021916908315150217905550565b60175481565b611f8e336114f1565b611fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc490614118565b60405180910390fd5b8060048190555050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612067336114f1565b6120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d90614118565b60405180910390fd5b80601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6120f3336114f1565b612132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212990614118565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516121a191906142d6565b60405180910390a150565b6121b5336114f1565b6121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb90614118565b60405180910390fd5b6121fe8282612f76565b5050565b60075481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612237336114f1565b612276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226d90614118565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60095481565b602060169054906101000a900460ff1681565b600061232c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506131ce565b905092915050565b600083831115829061237c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123739190613a45565b60405180910390fd5b506000838561238b91906142f1565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612443575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561249857602060169054906101000a900460ff16612497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248e90614371565b60405180910390fd5b5b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561253c5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61254557600080fd5b602060149054906101000a900460ff161561256c57612565848484613231565b9050612ca3565b600454821115806125c65750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fc906143dd565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561266b5750600e60149054906101000a900460ff165b15612707576005546126c583600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340490919063ffffffff16565b1115612706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fd90614449565b60405180910390fd5b5b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156127725750602060149054906101000a900460ff16155b801561278a5750602060159054906101000a900460ff165b80156127d75750600654600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156127e5576127e4612cf4565b5b61286e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123349092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129575750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612961578261296d565b61296c858585613462565b5b90506129c181600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340490919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b1e57602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612af1929190614469565b600060405180830381600087803b158015612b0b57600080fd5b505af1925050508015612b1c575060015b505b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c3857602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612c0b929190614469565b600060405180830381600087803b158015612c2557600080fd5b505af1925050508015612c36575060015b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c959190613991565b60405180910390a360019150505b9392505050565b6000612cec83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612334565b905092915050565b6001602060146101000a81548160ff0219169083151502179055506000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000612d906002612d826064612d746018548761360a90919063ffffffff16565b6122ea90919063ffffffff16565b6122ea90919063ffffffff16565b90506000612da78284612caa90919063ffffffff16565b9050612db281613684565b60004790506000612de16064612dd36017548561360a90919063ffffffff16565b6122ea90919063ffffffff16565b90506000612e0d6064612dff6019548661360a90919063ffffffff16565b6122ea90919063ffffffff16565b90506000612e4c6002612e3e6064612e306018548961360a90919063ffffffff16565b6122ea90919063ffffffff16565b6122ea90919063ffffffff16565b90506000841115612ec157601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612ebf573d6000803e3d6000fd5b505b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015612f2b57600080fd5b505af193505050508015612f3d575060015b506000861115612f5257612f5186826138a5565b5b505050505050506000602060146101000a81548160ff021916908315150217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156130005750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61300957600080fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156130fb57602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016130c49291906144cd565b600060405180830381600087803b1580156130de57600080fd5b505af11580156130f2573d6000803e3d6000fd5b505050506131ca565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613197929190614469565b600060405180830381600087803b1580156131b157600080fd5b505af11580156131c5573d6000803e3d6000fd5b505050505b5050565b60008083118290613215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320c9190613a45565b60405180910390fd5b50600083856132249190614525565b9050809150509392505050565b60006132bc826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123349092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061335182600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340490919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133f19190613991565b60405180910390a3600190509392505050565b60008082846134139190614556565b905083811015613458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161344f906145f8565b60405180910390fd5b8091505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146134c2576015546134c6565b6016545b905060006134f060646134e2848761360a90919063ffffffff16565b6122ea90919063ffffffff16565b905061354481600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340490919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135e49190613991565b60405180910390a36135ff8185612caa90919063ffffffff16565b925050509392505050565b600080830361361c576000905061367e565b6000828461362a9190614618565b90508284826136399190614525565b14613679576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613670906146e4565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff8111156136a1576136a0613e47565b5b6040519080825280602002602001820160405280156136cf5781602001602082028036833780820191505090505b50905030816000815181106136e7576136e661420f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561378e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137b29190614719565b816001815181106137c6576137c561420f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061380a3083610e86565b50601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161386f959493929190614804565b600060405180830381600087803b15801561388957600080fd5b505af115801561389d573d6000803e3d6000fd5b505050505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161392e9695949392919061485e565b60606040518083038185885af115801561394c573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061397191906148bf565b5050505050565b6000819050919050565b61398b81613978565b82525050565b60006020820190506139a66000830184613982565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139e65780820151818401526020810190506139cb565b838111156139f5576000848401525b50505050565b6000601f19601f8301169050919050565b6000613a17826139ac565b613a2181856139b7565b9350613a318185602086016139c8565b613a3a816139fb565b840191505092915050565b60006020820190508181036000830152613a5f8184613a0c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613aa682613a7b565b9050919050565b613ab681613a9b565b8114613ac157600080fd5b50565b600081359050613ad381613aad565b92915050565b613ae281613978565b8114613aed57600080fd5b50565b600081359050613aff81613ad9565b92915050565b60008060408385031215613b1c57613b1b613a71565b5b6000613b2a85828601613ac4565b9250506020613b3b85828601613af0565b9150509250929050565b60008115159050919050565b613b5a81613b45565b82525050565b6000602082019050613b756000830184613b51565b92915050565b6000819050919050565b6000613ba0613b9b613b9684613a7b565b613b7b565b613a7b565b9050919050565b6000613bb282613b85565b9050919050565b6000613bc482613ba7565b9050919050565b613bd481613bb9565b82525050565b6000602082019050613bef6000830184613bcb565b92915050565b600060208284031215613c0b57613c0a613a71565b5b6000613c1984828501613af0565b91505092915050565b600080600060608486031215613c3b57613c3a613a71565b5b6000613c4986828701613ac4565b9350506020613c5a86828701613ac4565b9250506040613c6b86828701613af0565b9150509250925092565b600060208284031215613c8b57613c8a613a71565b5b6000613c9984828501613ac4565b91505092915050565b60008060408385031215613cb957613cb8613a71565b5b6000613cc785828601613af0565b9250506020613cd885828601613af0565b9150509250929050565b600080600060608486031215613cfb57613cfa613a71565b5b6000613d0986828701613af0565b9350506020613d1a86828701613af0565b9250506040613d2b86828701613af0565b9150509250925092565b600060ff82169050919050565b613d4b81613d35565b82525050565b6000602082019050613d666000830184613d42565b92915050565b613d7581613b45565b8114613d8057600080fd5b50565b600081359050613d9281613d6c565b92915050565b60008060408385031215613daf57613dae613a71565b5b6000613dbd85828601613d83565b9250506020613dce85828601613af0565b9150509250929050565b613de181613a9b565b82525050565b6000602082019050613dfc6000830184613dd8565b92915050565b60008060408385031215613e1957613e18613a71565b5b6000613e2785828601613ac4565b9250506020613e3885828601613d83565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613e7f826139fb565b810181811067ffffffffffffffff82111715613e9e57613e9d613e47565b5b80604052505050565b6000613eb1613a67565b9050613ebd8282613e76565b919050565b600067ffffffffffffffff821115613edd57613edc613e47565b5b602082029050602081019050919050565b600080fd5b6000613f06613f0184613ec2565b613ea7565b90508083825260208201905060208402830185811115613f2957613f28613eee565b5b835b81811015613f525780613f3e8882613ac4565b845260208401935050602081019050613f2b565b5050509392505050565b600082601f830112613f7157613f70613e42565b5b8135613f81848260208601613ef3565b91505092915050565b600060208284031215613fa057613f9f613a71565b5b600082013567ffffffffffffffff811115613fbe57613fbd613a76565b5b613fca84828501613f5c565b91505092915050565b6000613fde82613a7b565b9050919050565b613fee81613fd3565b8114613ff957600080fd5b50565b60008135905061400b81613fe5565b92915050565b60006020828403121561402757614026613a71565b5b600061403584828501613ffc565b91505092915050565b6000806040838503121561405557614054613a71565b5b600061406385828601613ac4565b925050602061407485828601613ac4565b9150509250929050565b600061408982613b85565b9050919050565b600061409b8261407e565b9050919050565b6140ab81614090565b82525050565b60006020820190506140c660008301846140a2565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b60006141026006836139b7565b915061410d826140cc565b602082019050919050565b60006020820190508181036000830152614131816140f5565b9050919050565b600060408201905061414d6000830185613982565b61415a6020830184613982565b9392505050565b7f746f6f2068696768000000000000000000000000000000000000000000000000600082015250565b60006141976008836139b7565b91506141a282614161565b602082019050919050565b600060208201905081810360008301526141c68161418a565b9050919050565b6000815190506141dc81613ad9565b92915050565b6000602082840312156141f8576141f7613a71565b5b6000614206848285016141cd565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061427882613978565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036142aa576142a961423e565b5b600182019050919050565b60006142c08261407e565b9050919050565b6142d0816142b5565b82525050565b60006020820190506142eb60008301846142c7565b92915050565b60006142fc82613978565b915061430783613978565b92508282101561431a5761431961423e565b5b828203905092915050565b7f54726164696e67206e6f74206163746976650000000000000000000000000000600082015250565b600061435b6012836139b7565b915061436682614325565b602082019050919050565b6000602082019050818103600083015261438a8161434e565b9050919050565b7f7478000000000000000000000000000000000000000000000000000000000000600082015250565b60006143c76002836139b7565b91506143d282614391565b602082019050919050565b600060208201905081810360008301526143f6816143ba565b9050919050565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b60006144336006836139b7565b915061443e826143fd565b602082019050919050565b6000602082019050818103600083015261446281614426565b9050919050565b600060408201905061447e6000830185613dd8565b61448b6020830184613982565b9392505050565b6000819050919050565b60006144b76144b26144ad84614492565b613b7b565b613978565b9050919050565b6144c78161449c565b82525050565b60006040820190506144e26000830185613dd8565b6144ef60208301846144be565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061453082613978565b915061453b83613978565b92508261454b5761454a6144f6565b5b828204905092915050565b600061456182613978565b915061456c83613978565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145a1576145a061423e565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006145e2601b836139b7565b91506145ed826145ac565b602082019050919050565b60006020820190508181036000830152614611816145d5565b9050919050565b600061462382613978565b915061462e83613978565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146675761466661423e565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006146ce6021836139b7565b91506146d982614672565b604082019050919050565b600060208201905081810360008301526146fd816146c1565b9050919050565b60008151905061471381613aad565b92915050565b60006020828403121561472f5761472e613a71565b5b600061473d84828501614704565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61477b81613a9b565b82525050565b600061478d8383614772565b60208301905092915050565b6000602082019050919050565b60006147b182614746565b6147bb8185614751565b93506147c683614762565b8060005b838110156147f75781516147de8882614781565b97506147e983614799565b9250506001810190506147ca565b5085935050505092915050565b600060a0820190506148196000830188613982565b61482660208301876144be565b818103604083015261483881866147a6565b90506148476060830185613dd8565b6148546080830184613982565b9695505050505050565b600060c0820190506148736000830189613dd8565b6148806020830188613982565b61488d60408301876144be565b61489a60608301866144be565b6148a76080830185613dd8565b6148b460a0830184613982565b979650505050505050565b6000806000606084860312156148d8576148d7613a71565b5b60006148e6868287016141cd565b93505060206148f7868287016141cd565b9250506040614908868287016141cd565b915050925092509256fea26469706673582212207cfba210aa61e78b37aee5b01865694cc12a32ec7e36ae54bbb6ac0d28190b9564736f6c634300080d003360806040526ec097ce7bc90715b34b9f1000000000600b55610708600c556000600d5534801561002e57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f24806101286000396000f3fe6080604052600436106101025760003560e01c80638c21cd5211610095578063d0e30db011610064578063d0e30db01461034c578063e2d2e21914610356578063efca2eed14610381578063ffb2c479146103ac578063ffd49c84146103d557610111565b80638c21cd521461027c5780638d7dbc06146102b9578063997664d7146102e2578063ce7c2ac21461030d57610111565b80632d48e896116100d15780632d48e896146101d25780633a98ef39146101fb5780634fab0ae8146102265780637150f5291461025157610111565b806311ce023d1461011657806314b6ca961461014157806326987b601461016a57806328fd31981461019557610111565b366101115761010f610400565b005b600080fd5b34801561012257600080fd5b5061012b6107e8565b604051610138919061167d565b60405180910390f35b34801561014d57600080fd5b5061016860048036038101906101639190611727565b6107ee565b005b34801561017657600080fd5b5061017f610aad565b60405161018c919061167d565b60405180910390f35b3480156101a157600080fd5b506101bc60048036038101906101b79190611767565b610ab3565b6040516101c9919061167d565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611794565b610bcc565b005b34801561020757600080fd5b50610210610c36565b60405161021d919061167d565b60405180910390f35b34801561023257600080fd5b5061023b610c3c565b604051610248919061167d565b60405180910390f35b34801561025d57600080fd5b50610266610c42565b60405161027391906117e3565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190611767565b610c68565b6040516102b09190611819565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db9190611767565b610cd5565b005b3480156102ee57600080fd5b506102f7610d39565b604051610304919061167d565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f9190611767565b610d3f565b60405161034393929190611834565b60405180910390f35b610354610400565b005b34801561036257600080fd5b5061036b610d69565b604051610378919061167d565b60405180910390f35b34801561038d57600080fd5b50610396610d6f565b6040516103a3919061167d565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce919061186b565b610d75565b005b3480156103e157600080fd5b506103ea610eb0565b6040516103f7919061167d565b60405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161045d91906117e3565b602060405180830381865afa15801561047a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049e91906118ad565b90506000600267ffffffffffffffff8111156104bd576104bc6118da565b5b6040519080825280602002602001820160405280156104eb5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f919061191e565b816000815181106105935761059261194b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106106045761060361194b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b81526004016106a19493929190611a7d565b6000604051808303818588803b1580156106ba57600080fd5b505af11580156106ce573d6000803e3d6000fd5b5050505050600061078383600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161073491906117e3565b602060405180830381865afa158015610751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077591906118ad565b610eb690919063ffffffff16565b905061079a81600854610f0090919063ffffffff16565b6008819055506107dd6107cc6007546107be84600b54610f5e90919063ffffffff16565b610fd890919063ffffffff16565b600a54610f0090919063ffffffff16565b600a81905550505050565b600b5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084657600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111561089b5761089a82611022565b5b6000811180156108ed57506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b15610900576108fb826112b5565b610962565b60008114801561095257506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156109615761096082611364565b5b5b6109cb816109bd600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754610eb690919063ffffffff16565b610f0090919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610a63600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600e5481565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015403610b075760009050610bc7565b6000610b54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050808211610baf57600092505050610bc7565b610bc28183610eb690919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c2457600080fd5b81600c8190555080600d819055505050565b60075481565b600d5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600042600c54600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cb89190611af8565b108015610cce5750600d54610ccc83610ab3565b115b9050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d2d57600080fd5b610d3681611022565b50565b60085481565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b600a5481565b60095481565b6000600380549050905060008103610d8d5750610ead565b60008060005a90505b8482108015610da457508383105b15610ea85783600e5410610dbb576000600e819055505b610e046003600e5481548110610dd457610dd361194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610c68565b15610e5357610e526003600e5481548110610e2257610e2161194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611022565b5b610e78610e695a83610eb690919063ffffffff16565b83610f0090919063ffffffff16565b91505a9050600e6000815480929190610e9090611b4e565b91905055508280610ea090611b4e565b935050610d96565b505050505b50565b600c5481565b6000610ef883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061159d565b905092915050565b6000808284610f0f9190611af8565b905083811015610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b90611bf3565b60405180910390fd5b8091505092915050565b6000808303610f705760009050610fd2565b60008284610f7e9190611c13565b9050828482610f8d9190611c9c565b14610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc490611d3f565b60405180910390fd5b809150505b92915050565b600061101a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611601565b905092915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015403156112b257600061107882610ab3565b905060008111156112b05761109881600954610f0090919063ffffffff16565b600981905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016110fb929190611d5f565b6020604051808303816000875af115801561111a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113e9190611db4565b5042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111d881600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610f0090919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611269600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360016003805490506113789190611de1565b815481106113895761138861194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106114075761140661194b565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460046000600360016003805490506114a79190611de1565b815481106114b8576114b761194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600380548061153357611532611e15565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000611596600b54611588600a5485610f5e90919063ffffffff16565b610fd890919063ffffffff16565b9050919050565b60008383111582906115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc9190611ecc565b60405180910390fd5b50600083856115f49190611de1565b9050809150509392505050565b60008083118290611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163f9190611ecc565b60405180910390fd5b50600083856116579190611c9c565b9050809150509392505050565b6000819050919050565b61167781611664565b82525050565b6000602082019050611692600083018461166e565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006116c88261169d565b9050919050565b6116d8816116bd565b81146116e357600080fd5b50565b6000813590506116f5816116cf565b92915050565b61170481611664565b811461170f57600080fd5b50565b600081359050611721816116fb565b92915050565b6000806040838503121561173e5761173d611698565b5b600061174c858286016116e6565b925050602061175d85828601611712565b9150509250929050565b60006020828403121561177d5761177c611698565b5b600061178b848285016116e6565b91505092915050565b600080604083850312156117ab576117aa611698565b5b60006117b985828601611712565b92505060206117ca85828601611712565b9150509250929050565b6117dd816116bd565b82525050565b60006020820190506117f860008301846117d4565b92915050565b60008115159050919050565b611813816117fe565b82525050565b600060208201905061182e600083018461180a565b92915050565b6000606082019050611849600083018661166e565b611856602083018561166e565b611863604083018461166e565b949350505050565b60006020828403121561188157611880611698565b5b600061188f84828501611712565b91505092915050565b6000815190506118a7816116fb565b92915050565b6000602082840312156118c3576118c2611698565b5b60006118d184828501611898565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050611918816116cf565b92915050565b60006020828403121561193457611933611698565b5b600061194284828501611909565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b60006119a96119a461199f8461197a565b611984565b611664565b9050919050565b6119b98161198e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6119f4816116bd565b82525050565b6000611a0683836119eb565b60208301905092915050565b6000602082019050919050565b6000611a2a826119bf565b611a3481856119ca565b9350611a3f836119db565b8060005b83811015611a70578151611a5788826119fa565b9750611a6283611a12565b925050600181019050611a43565b5085935050505092915050565b6000608082019050611a9260008301876119b0565b8181036020830152611aa48186611a1f565b9050611ab360408301856117d4565b611ac0606083018461166e565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b0382611664565b9150611b0e83611664565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611b4357611b42611ac9565b5b828201905092915050565b6000611b5982611664565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b8b57611b8a611ac9565b5b600182019050919050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611bdd601b83611b96565b9150611be882611ba7565b602082019050919050565b60006020820190508181036000830152611c0c81611bd0565b9050919050565b6000611c1e82611664565b9150611c2983611664565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c6257611c61611ac9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611ca782611664565b9150611cb283611664565b925082611cc257611cc1611c6d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d29602183611b96565b9150611d3482611ccd565b604082019050919050565b60006020820190508181036000830152611d5881611d1c565b9050919050565b6000604082019050611d7460008301856117d4565b611d81602083018461166e565b9392505050565b611d91816117fe565b8114611d9c57600080fd5b50565b600081519050611dae81611d88565b92915050565b600060208284031215611dca57611dc9611698565b5b6000611dd884828501611d9f565b91505092915050565b6000611dec82611664565b9150611df783611664565b925082821015611e0a57611e09611ac9565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081519050919050565b60005b83811015611e6d578082015181840152602081019050611e52565b83811115611e7c576000848401525b50505050565b6000601f19601f8301169050919050565b6000611e9e82611e44565b611ea88185611b96565b9350611eb8818560208601611e4f565b611ec181611e82565b840191505092915050565b60006020820190508181036000830152611ee68184611e93565b90509291505056fea2646970667358221220a3fa01cdcb322989d6bec335846c26330c5382e7306e56275dae38f9e18e1c7964736f6c634300080d00330000000000000000000000007efa686efd1d689e7c6eee6043569d9f5f5c570f

Deployed Bytecode

0x6080604052600436106103a65760003560e01c80637db1342c116101e7578063bb542ef01161010d578063e01da9d1116100a0578063f887ea401161006f578063f887ea4014610d99578063fabe628314610dc4578063fe31452414610ded578063ffb54a9914610e18576103ad565b8063e01da9d114610cf3578063f2fde38b14610d1c578063f708a64f14610d45578063f723e66014610d6e576103ad565b8063c9567bf9116100dc578063c9567bf914610c4b578063caa5581b14610c62578063d920334e14610c8d578063dd62ed3e14610cb6576103ad565b8063bb542ef014610ba1578063bf56b37114610bca578063c45a015514610bf5578063c8d1293d14610c20576103ad565b80638c0b5e2211610185578063a8aa1b3111610154578063a8aa1b3114610ae5578063a9059cbb14610b10578063ad5c464814610b4d578063b515566a14610b78576103ad565b80638c0b5e2214610a3d57806395d89b4114610a685780639ccb571314610a93578063a3a2e89e14610abc576103ad565b8063838aaeab116101c1578063838aaeab1461099357806389291a8f146109be578063893d20e8146109d55780638b42507f14610a00576103ad565b80637db1342c146109165780637dfcbe341461093f578063819340311461096a576103ad565b8063313ce567116102cc578063470624021161026a57806370a082311161023957806370a08231146108465780637150f5291461088357806375df1305146108ae57806377359aa7146108d9576103ad565b8063470624021461079c5780634a74bb02146107c7578063571ac8b0146107f257806366eb37851461082f576103ad565b80633f4218e0116102a65780633f4218e0146106ce5780634355855a1461070b5780634543437714610748578063468c7ee214610773576103ad565b8063313ce5671461064f57806337558c091461067a5780633dab5269146106a5576103ad565b806323b872dd116103445780632d48e896116103135780632d48e896146105975780632dbea2e1146105c05780632f54bf6e146105e957806330ca34ee14610626576103ad565b806323b872dd146104db578063273123b7146105185780632b112e49146105415780632b14ca561461056c576103ad565b80630b3beab4116103805780630b3beab4146104455780630bdb2878146104705780630d3b571a1461049957806318160ddd146104b0576103ad565b80630445b667146103b257806306fdde03146103dd578063095ea7b314610408576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e43565b6040516103d49190613991565b60405180910390f35b3480156103e957600080fd5b506103f2610e49565b6040516103ff9190613a45565b60405180910390f35b34801561041457600080fd5b5061042f600480360381019061042a9190613b05565b610e86565b60405161043c9190613b60565b60405180910390f35b34801561045157600080fd5b5061045a610f78565b6040516104679190613bda565b60405180910390f35b34801561047c57600080fd5b5061049760048036038101906104929190613bf5565b610f9e565b005b3480156104a557600080fd5b506104ae610ff0565b005b3480156104bc57600080fd5b506104c561107f565b6040516104d29190613991565b60405180910390f35b3480156104e757600080fd5b5061050260048036038101906104fd9190613c22565b611089565b60405161050f9190613b60565b60405180910390f35b34801561052457600080fd5b5061053f600480360381019061053a9190613c75565b611289565b005b34801561054d57600080fd5b5061055661132c565b6040516105639190613991565b60405180910390f35b34801561057857600080fd5b506105816113ae565b60405161058e9190613991565b60405180910390f35b3480156105a357600080fd5b506105be60048036038101906105b99190613ca2565b6113b4565b005b3480156105cc57600080fd5b506105e760048036038101906105e29190613ce2565b61148f565b005b3480156105f557600080fd5b50610610600480360381019061060b9190613c75565b6114f1565b60405161061d9190613b60565b60405180910390f35b34801561063257600080fd5b5061064d60048036038101906106489190613ca2565b61154a565b005b34801561065b57600080fd5b50610664611630565b6040516106719190613d51565b60405180910390f35b34801561068657600080fd5b5061068f611639565b60405161069c9190613991565b60405180910390f35b3480156106b157600080fd5b506106cc60048036038101906106c79190613d98565b61163f565b005b3480156106da57600080fd5b506106f560048036038101906106f09190613c75565b6116ac565b6040516107029190613b60565b60405180910390f35b34801561071757600080fd5b50610732600480360381019061072d9190613c75565b6116cc565b60405161073f9190613b60565b60405180910390f35b34801561075457600080fd5b5061075d6116ec565b60405161076a9190613991565b60405180910390f35b34801561077f57600080fd5b5061079a60048036038101906107959190613c75565b6116f2565b005b3480156107a857600080fd5b506107b161177e565b6040516107be9190613991565b60405180910390f35b3480156107d357600080fd5b506107dc611784565b6040516107e99190613b60565b60405180910390f35b3480156107fe57600080fd5b5061081960048036038101906108149190613c75565b611797565b6040516108269190613b60565b60405180910390f35b34801561083b57600080fd5b506108446117ca565b005b34801561085257600080fd5b5061086d60048036038101906108689190613c75565b61181c565b60405161087a9190613991565b60405180910390f35b34801561088f57600080fd5b50610898611865565b6040516108a59190613de7565b60405180910390f35b3480156108ba57600080fd5b506108c361188b565b6040516108d09190613991565b60405180910390f35b3480156108e557600080fd5b5061090060048036038101906108fb9190613c75565b611891565b60405161090d9190613991565b60405180910390f35b34801561092257600080fd5b5061093d60048036038101906109389190613bf5565b611936565b005b34801561094b57600080fd5b50610954611988565b6040516109619190613b60565b60405180910390f35b34801561097657600080fd5b50610991600480360381019061098c9190613bf5565b61199b565b005b34801561099f57600080fd5b506109a8611a73565b6040516109b59190613de7565b60405180910390f35b3480156109ca57600080fd5b506109d3611a99565b005b3480156109e157600080fd5b506109ea611b5c565b6040516109f79190613de7565b60405180910390f35b348015610a0c57600080fd5b50610a276004803603810190610a229190613c75565b611b85565b604051610a349190613b60565b60405180910390f35b348015610a4957600080fd5b50610a52611ba5565b604051610a5f9190613991565b60405180910390f35b348015610a7457600080fd5b50610a7d611bab565b604051610a8a9190613a45565b60405180910390f35b348015610a9f57600080fd5b50610aba6004803603810190610ab59190613c75565b611be8565b005b348015610ac857600080fd5b50610ae36004803603810190610ade9190613e02565b611c74565b005b348015610af157600080fd5b50610afa611d17565b604051610b079190613de7565b60405180910390f35b348015610b1c57600080fd5b50610b376004803603810190610b329190613b05565b611d3d565b604051610b449190613b60565b60405180910390f35b348015610b5957600080fd5b50610b62611d52565b604051610b6f9190613de7565b60405180910390f35b348015610b8457600080fd5b50610b9f6004803603810190610b9a9190613f8a565b611d78565b005b348015610bad57600080fd5b50610bc86004803603810190610bc39190614011565b611e55565b005b348015610bd657600080fd5b50610bdf611ee1565b604051610bec9190613991565b60405180910390f35b348015610c0157600080fd5b50610c0a611ee7565b604051610c179190613de7565b60405180910390f35b348015610c2c57600080fd5b50610c35611f0d565b604051610c429190613991565b60405180910390f35b348015610c5757600080fd5b50610c60611f13565b005b348015610c6e57600080fd5b50610c77611f7f565b604051610c849190613991565b60405180910390f35b348015610c9957600080fd5b50610cb46004803603810190610caf9190613bf5565b611f85565b005b348015610cc257600080fd5b50610cdd6004803603810190610cd8919061403e565b611fd7565b604051610cea9190613991565b60405180910390f35b348015610cff57600080fd5b50610d1a6004803603810190610d159190614011565b61205e565b005b348015610d2857600080fd5b50610d436004803603810190610d3e9190614011565b6120ea565b005b348015610d5157600080fd5b50610d6c6004803603810190610d679190613e02565b6121ac565b005b348015610d7a57600080fd5b50610d83612202565b604051610d909190613991565b60405180910390f35b348015610da557600080fd5b50610dae612208565b604051610dbb91906140b1565b60405180910390f35b348015610dd057600080fd5b50610deb6004803603810190610de69190613e02565b61222e565b005b348015610df957600080fd5b50610e026122d1565b604051610e0f9190613991565b60405180910390f35b348015610e2457600080fd5b50610e2d6122d7565b604051610e3a9190613b60565b60405180910390f35b60065481565b60606040518060400160405280600581526020017f4841564f43000000000000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f669190613991565b60405180910390a36001905092915050565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fa7336114f1565b610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd90614118565b60405180910390fd5b8060228190555050565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d7dbc06336040518263ffffffff1660e01b815260040161104b9190613de7565b600060405180830381600087803b15801561106557600080fd5b505af1158015611079573d6000803e3d6000fd5b50505050565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611275576111f4826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123349092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611280848484612398565b90509392505050565b611292336114f1565b6112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c890614118565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006113a961135c600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661181c565b61139b61138a600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661181c565b600354612caa90919063ffffffff16565b612caa90919063ffffffff16565b905090565b60165481565b6113bd336114f1565b6113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f390614118565b60405180910390fd5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611459929190614138565b600060405180830381600087803b15801561147357600080fd5b505af1158015611487573d6000803e3d6000fd5b505050505050565b611498336114f1565b6114d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ce90614118565b60405180910390fd5b826017819055508160188190555080601981905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b611553336114f1565b611592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158990614118565b60405180910390fd5b8160158190555080601681905550600a60155411156115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dd906141ad565b60405180910390fd5b600a601654111561162c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611623906141ad565b60405180910390fd5b5050565b60006012905090565b60225481565b611648336114f1565b611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167e90614118565b60405180910390fd5b81602060156101000a81548160ff021916908315150217905550806006819055505050565b60106020528060005260406000206000915054906101000a900460ff1681565b60126020528060005260406000206000915054906101000a900460ff1681565b601a5481565b6116fb336114f1565b61173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190614118565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b602060159054906101000a900460ff1681565b60006117c3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e86565b9050919050565b6117d3336114f1565b611812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180990614118565b60405180910390fd5b61181a612cf4565b565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b81526004016118ee9190613de7565b602060405180830381865afa15801561190b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192f91906141e2565b9050919050565b61193f336114f1565b61197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590614118565b60405180910390fd5b8060058190555050565b600e60149054906101000a900460ff1681565b6119a4336114f1565b6119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da90614118565b60405180910390fd5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479826040518263ffffffff1660e01b8152600401611a3e9190613991565b600060405180830381600087803b158015611a5857600080fd5b505af1158015611a6c573d6000803e3d6000fd5b5050505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611aa2336114f1565b611ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad890614118565b60405180910390fd5b60004790506000811115611b5957601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b57573d6000803e3d6000fd5b505b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60116020528060005260406000206000915054906101000a900460ff1681565b60085481565b60606040518060400160405280600581526020017f4841564f43000000000000000000000000000000000000000000000000000000815250905090565b611bf1336114f1565b611c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2790614118565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c7d336114f1565b611cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb390614118565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611d4a338484612398565b905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d81336114f1565b611dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db790614118565b60405180910390fd5b60005b8151811015611e51576001600f6000848481518110611de557611de461420f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611e499061426d565b915050611dc3565b5050565b611e5e336114f1565b611e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9490614118565b60405180910390fd5b80601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b611f1c336114f1565b611f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5290614118565b60405180910390fd5b436013819055506001602060166101000a81548160ff021916908315150217905550565b60175481565b611f8e336114f1565b611fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc490614118565b60405180910390fd5b8060048190555050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612067336114f1565b6120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d90614118565b60405180910390fd5b80601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6120f3336114f1565b612132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212990614118565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516121a191906142d6565b60405180910390a150565b6121b5336114f1565b6121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb90614118565b60405180910390fd5b6121fe8282612f76565b5050565b60075481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612237336114f1565b612276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226d90614118565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60095481565b602060169054906101000a900460ff1681565b600061232c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506131ce565b905092915050565b600083831115829061237c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123739190613a45565b60405180910390fd5b506000838561238b91906142f1565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612443575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561249857602060169054906101000a900460ff16612497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248e90614371565b60405180910390fd5b5b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561253c5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61254557600080fd5b602060149054906101000a900460ff161561256c57612565848484613231565b9050612ca3565b600454821115806125c65750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fc906143dd565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561266b5750600e60149054906101000a900460ff165b15612707576005546126c583600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340490919063ffffffff16565b1115612706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fd90614449565b60405180910390fd5b5b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156127725750602060149054906101000a900460ff16155b801561278a5750602060159054906101000a900460ff165b80156127d75750600654600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156127e5576127e4612cf4565b5b61286e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123349092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129575750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612961578261296d565b61296c858585613462565b5b90506129c181600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340490919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b1e57602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612af1929190614469565b600060405180830381600087803b158015612b0b57600080fd5b505af1925050508015612b1c575060015b505b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c3857602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612c0b929190614469565b600060405180830381600087803b158015612c2557600080fd5b505af1925050508015612c36575060015b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c959190613991565b60405180910390a360019150505b9392505050565b6000612cec83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612334565b905092915050565b6001602060146101000a81548160ff0219169083151502179055506000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000612d906002612d826064612d746018548761360a90919063ffffffff16565b6122ea90919063ffffffff16565b6122ea90919063ffffffff16565b90506000612da78284612caa90919063ffffffff16565b9050612db281613684565b60004790506000612de16064612dd36017548561360a90919063ffffffff16565b6122ea90919063ffffffff16565b90506000612e0d6064612dff6019548661360a90919063ffffffff16565b6122ea90919063ffffffff16565b90506000612e4c6002612e3e6064612e306018548961360a90919063ffffffff16565b6122ea90919063ffffffff16565b6122ea90919063ffffffff16565b90506000841115612ec157601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612ebf573d6000803e3d6000fd5b505b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015612f2b57600080fd5b505af193505050508015612f3d575060015b506000861115612f5257612f5186826138a5565b5b505050505050506000602060146101000a81548160ff021916908315150217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156130005750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61300957600080fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156130fb57602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016130c49291906144cd565b600060405180830381600087803b1580156130de57600080fd5b505af11580156130f2573d6000803e3d6000fd5b505050506131ca565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613197929190614469565b600060405180830381600087803b1580156131b157600080fd5b505af11580156131c5573d6000803e3d6000fd5b505050505b5050565b60008083118290613215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320c9190613a45565b60405180910390fd5b50600083856132249190614525565b9050809150509392505050565b60006132bc826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123349092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061335182600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340490919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133f19190613991565b60405180910390a3600190509392505050565b60008082846134139190614556565b905083811015613458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161344f906145f8565b60405180910390fd5b8091505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146134c2576015546134c6565b6016545b905060006134f060646134e2848761360a90919063ffffffff16565b6122ea90919063ffffffff16565b905061354481600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340490919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135e49190613991565b60405180910390a36135ff8185612caa90919063ffffffff16565b925050509392505050565b600080830361361c576000905061367e565b6000828461362a9190614618565b90508284826136399190614525565b14613679576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613670906146e4565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff8111156136a1576136a0613e47565b5b6040519080825280602002602001820160405280156136cf5781602001602082028036833780820191505090505b50905030816000815181106136e7576136e661420f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561378e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137b29190614719565b816001815181106137c6576137c561420f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061380a3083610e86565b50601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161386f959493929190614804565b600060405180830381600087803b15801561388957600080fd5b505af115801561389d573d6000803e3d6000fd5b505050505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161392e9695949392919061485e565b60606040518083038185885af115801561394c573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061397191906148bf565b5050505050565b6000819050919050565b61398b81613978565b82525050565b60006020820190506139a66000830184613982565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139e65780820151818401526020810190506139cb565b838111156139f5576000848401525b50505050565b6000601f19601f8301169050919050565b6000613a17826139ac565b613a2181856139b7565b9350613a318185602086016139c8565b613a3a816139fb565b840191505092915050565b60006020820190508181036000830152613a5f8184613a0c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613aa682613a7b565b9050919050565b613ab681613a9b565b8114613ac157600080fd5b50565b600081359050613ad381613aad565b92915050565b613ae281613978565b8114613aed57600080fd5b50565b600081359050613aff81613ad9565b92915050565b60008060408385031215613b1c57613b1b613a71565b5b6000613b2a85828601613ac4565b9250506020613b3b85828601613af0565b9150509250929050565b60008115159050919050565b613b5a81613b45565b82525050565b6000602082019050613b756000830184613b51565b92915050565b6000819050919050565b6000613ba0613b9b613b9684613a7b565b613b7b565b613a7b565b9050919050565b6000613bb282613b85565b9050919050565b6000613bc482613ba7565b9050919050565b613bd481613bb9565b82525050565b6000602082019050613bef6000830184613bcb565b92915050565b600060208284031215613c0b57613c0a613a71565b5b6000613c1984828501613af0565b91505092915050565b600080600060608486031215613c3b57613c3a613a71565b5b6000613c4986828701613ac4565b9350506020613c5a86828701613ac4565b9250506040613c6b86828701613af0565b9150509250925092565b600060208284031215613c8b57613c8a613a71565b5b6000613c9984828501613ac4565b91505092915050565b60008060408385031215613cb957613cb8613a71565b5b6000613cc785828601613af0565b9250506020613cd885828601613af0565b9150509250929050565b600080600060608486031215613cfb57613cfa613a71565b5b6000613d0986828701613af0565b9350506020613d1a86828701613af0565b9250506040613d2b86828701613af0565b9150509250925092565b600060ff82169050919050565b613d4b81613d35565b82525050565b6000602082019050613d666000830184613d42565b92915050565b613d7581613b45565b8114613d8057600080fd5b50565b600081359050613d9281613d6c565b92915050565b60008060408385031215613daf57613dae613a71565b5b6000613dbd85828601613d83565b9250506020613dce85828601613af0565b9150509250929050565b613de181613a9b565b82525050565b6000602082019050613dfc6000830184613dd8565b92915050565b60008060408385031215613e1957613e18613a71565b5b6000613e2785828601613ac4565b9250506020613e3885828601613d83565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613e7f826139fb565b810181811067ffffffffffffffff82111715613e9e57613e9d613e47565b5b80604052505050565b6000613eb1613a67565b9050613ebd8282613e76565b919050565b600067ffffffffffffffff821115613edd57613edc613e47565b5b602082029050602081019050919050565b600080fd5b6000613f06613f0184613ec2565b613ea7565b90508083825260208201905060208402830185811115613f2957613f28613eee565b5b835b81811015613f525780613f3e8882613ac4565b845260208401935050602081019050613f2b565b5050509392505050565b600082601f830112613f7157613f70613e42565b5b8135613f81848260208601613ef3565b91505092915050565b600060208284031215613fa057613f9f613a71565b5b600082013567ffffffffffffffff811115613fbe57613fbd613a76565b5b613fca84828501613f5c565b91505092915050565b6000613fde82613a7b565b9050919050565b613fee81613fd3565b8114613ff957600080fd5b50565b60008135905061400b81613fe5565b92915050565b60006020828403121561402757614026613a71565b5b600061403584828501613ffc565b91505092915050565b6000806040838503121561405557614054613a71565b5b600061406385828601613ac4565b925050602061407485828601613ac4565b9150509250929050565b600061408982613b85565b9050919050565b600061409b8261407e565b9050919050565b6140ab81614090565b82525050565b60006020820190506140c660008301846140a2565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b60006141026006836139b7565b915061410d826140cc565b602082019050919050565b60006020820190508181036000830152614131816140f5565b9050919050565b600060408201905061414d6000830185613982565b61415a6020830184613982565b9392505050565b7f746f6f2068696768000000000000000000000000000000000000000000000000600082015250565b60006141976008836139b7565b91506141a282614161565b602082019050919050565b600060208201905081810360008301526141c68161418a565b9050919050565b6000815190506141dc81613ad9565b92915050565b6000602082840312156141f8576141f7613a71565b5b6000614206848285016141cd565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061427882613978565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036142aa576142a961423e565b5b600182019050919050565b60006142c08261407e565b9050919050565b6142d0816142b5565b82525050565b60006020820190506142eb60008301846142c7565b92915050565b60006142fc82613978565b915061430783613978565b92508282101561431a5761431961423e565b5b828203905092915050565b7f54726164696e67206e6f74206163746976650000000000000000000000000000600082015250565b600061435b6012836139b7565b915061436682614325565b602082019050919050565b6000602082019050818103600083015261438a8161434e565b9050919050565b7f7478000000000000000000000000000000000000000000000000000000000000600082015250565b60006143c76002836139b7565b91506143d282614391565b602082019050919050565b600060208201905081810360008301526143f6816143ba565b9050919050565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b60006144336006836139b7565b915061443e826143fd565b602082019050919050565b6000602082019050818103600083015261446281614426565b9050919050565b600060408201905061447e6000830185613dd8565b61448b6020830184613982565b9392505050565b6000819050919050565b60006144b76144b26144ad84614492565b613b7b565b613978565b9050919050565b6144c78161449c565b82525050565b60006040820190506144e26000830185613dd8565b6144ef60208301846144be565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061453082613978565b915061453b83613978565b92508261454b5761454a6144f6565b5b828204905092915050565b600061456182613978565b915061456c83613978565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145a1576145a061423e565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006145e2601b836139b7565b91506145ed826145ac565b602082019050919050565b60006020820190508181036000830152614611816145d5565b9050919050565b600061462382613978565b915061462e83613978565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146675761466661423e565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006146ce6021836139b7565b91506146d982614672565b604082019050919050565b600060208201905081810360008301526146fd816146c1565b9050919050565b60008151905061471381613aad565b92915050565b60006020828403121561472f5761472e613a71565b5b600061473d84828501614704565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61477b81613a9b565b82525050565b600061478d8383614772565b60208301905092915050565b6000602082019050919050565b60006147b182614746565b6147bb8185614751565b93506147c683614762565b8060005b838110156147f75781516147de8882614781565b97506147e983614799565b9250506001810190506147ca565b5085935050505092915050565b600060a0820190506148196000830188613982565b61482660208301876144be565b818103604083015261483881866147a6565b90506148476060830185613dd8565b6148546080830184613982565b9695505050505050565b600060c0820190506148736000830189613dd8565b6148806020830188613982565b61488d60408301876144be565b61489a60608301866144be565b6148a76080830185613dd8565b6148b460a0830184613982565b979650505050505050565b6000806000606084860312156148d8576148d7613a71565b5b60006148e6868287016141cd565b93505060206148f7868287016141cd565b9250506040614908868287016141cd565b915050925092509256fea26469706673582212207cfba210aa61e78b37aee5b01865694cc12a32ec7e36ae54bbb6ac0d28190b9564736f6c634300080d0033

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

0000000000000000000000007efa686efd1d689e7c6eee6043569d9f5f5c570f

-----Decoded View---------------
Arg [0] : _owner (address): 0x7Efa686efd1d689E7C6EEe6043569D9f5f5C570F

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


Deployed Bytecode Sourcemap

10727:12955:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11264:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17773:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18199:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12896:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17222:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23595:84;;;;;;;;;;;;;:::i;:::-;;17503:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18713:366;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16631:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17353:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12276:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16421:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14969:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2921:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14712:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17597:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12941:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16214:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11925:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12031:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12430:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15856:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12243:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12805:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18423:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22976:74;;;;;;;;;;;;;:::i;:::-;;17943:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10800:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12390:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23429:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15314:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11844:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23304:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12592:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23058:238;;;;;;;;;;;;;:::i;:::-;;17859:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11976:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11404:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17683:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15970:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15431:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12504:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18553:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10872:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14371:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16080:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12089:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12530:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12352:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14589:115;;;;;;;;;;;;;:::i;:::-;;12312:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15210:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18054:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15705:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3032:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17082:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11333:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12473:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15561:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11467:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12852:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11264:60;;;;:::o;17773:80::-;17821:13;17845:5;;;;;;;;;;;;;;;;;17838:12;;17773:80;:::o;18199:216::-;18274:4;18326:6;18291:11;:23;18303:10;18291:23;;;;;;;;;;;;;;;:32;18315:7;18291:32;;;;;;;;;;;;;;;:41;;;;18369:7;18348:37;;18357:10;18348:37;;;18378:6;18348:37;;;;;;:::i;:::-;;;;;;;;18403:4;18396:11;;18199:216;;;;:::o;12896:38::-;;;;;;;;;;;;;:::o;17222:112::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17320:6:::1;17299:18;:27;;;;17222:112:::0;:::o;23595:84::-;23635:15;;;;;;;;;;;:24;;;23660:10;23635:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23595:84::o;17503:88::-;17558:7;17576:12;;17569:19;;17503:88;:::o;18713:366::-;18813:4;18868:17;18833:11;:19;18845:6;18833:19;;;;;;;;;;;;;;;:31;18853:10;18833:31;;;;;;;;;;;;;;;;:52;18830:186;;18935:69;18971:6;18935:69;;;;;;;;;;;;;;;;;:11;:19;18947:6;18935:19;;;;;;;;;;;;;;;:31;18955:10;18935:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;18901:11;:19;18913:6;18901:19;;;;;;;;;;;;;;;:31;18921:10;18901:31;;;;;;;;;;;;;;;:103;;;;18830:186;19035:36;19045:6;19053:9;19064:6;19035:9;:36::i;:::-;19028:43;;18713:366;;;;;:::o;16631:90::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16708:5:::1;16693:4;:12;16698:6;16693:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;16631:90:::0;:::o;17353:142::-;17406:7;17433:54;17471:15;17481:4;;;;;;;;;;;17471:9;:15::i;:::-;17433:33;17450:15;17460:4;;;;;;;;;;;17450:9;:15::i;:::-;17433:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;17426:61;;17353:142;:::o;12276:27::-;;;;:::o;16421:202::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16534:15:::1;;;;;;;;;;;:39;;;16574:12;16588:18;16534:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16421:202:::0;;:::o;14969:233::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15109:12:::1;15093:13;:28;;;;15146:8;15132:11;:22;;;;15179:15;15165:11;:29;;;;14969:233:::0;;;:::o;2921:103::-;2976:4;3011:5;;;;;;;;;;;3000:16;;:7;:16;;;2993:23;;2921:103;;;:::o;14712:244::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14817:9:::1;14808:6;:18;;;;14847:10;14837:7;:20;;;;14888:2;14878:6;;:12;;14870:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;14933:2;14922:7;;:13;;14914:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;14712:244:::0;;:::o;17597:80::-;17649:5;11074:2;17658:16;;17597:80;:::o;12941:37::-;;;;:::o;16214:199::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16348:14:::1;16323:21;;:39;;;;;;;;;;;;;;;;;;16389:16;16373:13;:32;;;;16214:199:::0;;:::o;11925:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;12031:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;12430:34::-;;;;:::o;15856:102::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15939:11:::1;15928:8;;:22;;;;;;;;;;;;;;;;;;15856:102:::0;:::o;12243:26::-;;;;:::o;12805:40::-;;;;;;;;;;;;;:::o;18423:122::-;18478:4;18502:35;18510:7;18519:17;18502:7;:35::i;:::-;18495:42;;18423:122;;;:::o;22976:74::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;23032:10:::1;:8;:10::i;:::-;22976:74::o:0;17943:105::-;18009:7;18027:9;:18;18037:7;18027:18;;;;;;;;;;;;;;;;18020:25;;17943:105;;;:::o;10800:65::-;;;;;;;;;;;;;:::o;12390:31::-;;;;:::o;23429:158::-;23506:7;23533:15;;;;;;;;;;;:33;;;23567:11;23533:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23526:53;;23429:158;;;:::o;15314:105::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15403:8:::1;15389:10;:22;;;;15314:105:::0;:::o;11844:26::-;;;;;;;;;;;;;:::o;23304:117::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;23379:15:::1;;;;;;;;;;;:23;;;23403:9;23379:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23304:117:::0;:::o;12592:83::-;;;;;;;;;;;;;:::o;23058:238::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;23113:26:::1;23142:21;23113:50;;23198:1;23177:18;:22;23174:115;;;23233:14;;;;;;;;;;;23225:32;;:52;23258:18;23225:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;23174:115;23102:194;23058:238::o:0;17859:78::-;17911:7;17929:5;;;;;;;;;;;17922:12;;17859:78;:::o;11976:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;11404:56::-;;;;:::o;17683:84::-;17733:13;17757:7;;;;;;;;;;;;;;;;;17750:14;;17683:84;:::o;15970:98::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16052:8:::1;16044:5;;:16;;;;;;;;;;;;;;;;;;15970:98:::0;:::o;15431:122::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15539:6:::1;15517:11;:19;15529:6;15517:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15431:122:::0;;:::o;12504:19::-;;;;;;;;;;;;;:::o;18553:152::-;18633:4;18657:40;18667:10;18679:9;18690:6;18657:9;:40::i;:::-;18650:47;;18553:152;;;;:::o;10872:64::-;;;;;;;;;;;;;:::o;14371:166::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14447:6:::1;14442:88;14463:5;:12;14459:1;:16;14442:88;;;14514:4;14497;:14;14502:5;14508:1;14502:8;;;;;;;;:::i;:::-;;;;;;;;14497:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14477:3;;;;;:::i;:::-;;;;14442:88;;;;14371:166:::0;:::o;16080:121::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16179:14:::1;16166:10;;:27;;;;;;;;;;;;;;;;;;16080:121:::0;:::o;12089:25::-;;;;:::o;12530:22::-;;;;;;;;;;;;;:::o;12352:31::-;;;;:::o;14589:115::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14655:12:::1;14642:10;:25;;;;14692:4;14678:11;;:18;;;;;;;;;;;;;;;;;;14589:115::o:0;12312:33::-;;;;:::o;15210:96::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15290:8:::1;15281:6;:17;;;;15210:96:::0;:::o;18054:133::-;18138:7;18156:11;:19;18168:6;18156:19;;;;;;;;;;;;;;;:28;18176:7;18156:28;;;;;;;;;;;;;;;;18149:35;;18054:133;;;;:::o;15705:143::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15822:17:::1;15797:14;;:43;;;;;;;;;;;;;;;;;;15705:143:::0;:::o;3032:136::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3116:3:::1;3108:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3135:25;3156:3;3135:25;;;;;;:::i;:::-;;;;;;;;3032:136:::0;:::o;17082:132::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17170:36:::1;17191:6;17199;17170:20;:36::i;:::-;17082:132:::0;;:::o;11333:64::-;;;;:::o;12473:24::-;;;;;;;;;;;;;:::o;15561:136::-;2872:19;2880:10;2872:7;:19::i;:::-;2864:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15683:6:::1;15657:15;:23;15673:6;15657:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;15561:136:::0;;:::o;11467:58::-;;;;:::o;12852:31::-;;;;;;;;;;;;;:::o;1258:132::-;1316:7;1343:39;1347:1;1350;1343:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1336:46;;1258:132;;;;:::o;804:192::-;890:7;923:1;918;:6;;926:12;910:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;950:9;966:1;962;:5;;;;:::i;:::-;950:17;;987:1;980:8;;;804:192;;;;;:::o;19087:1383::-;19175:4;19205:5;;;;;;;;;;;19196:14;;:6;:14;;;;:35;;;;;19226:5;;;;;;;;;;19214:17;;:9;:17;;;;19196:35;19192:83;;;19241:11;;;;;;;;;;;19233:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;19192:83;19295:4;:12;19300:6;19295:12;;;;;;;;;;;;;;;;;;;;;;;;;19294:13;:33;;;;;19312:4;:15;19317:9;19312:15;;;;;;;;;;;;;;;;;;;;;;;;;19311:16;19294:33;19286:42;;;;;;19344:16;;;;;;;;;;;19341:73;;;19370:41;19385:6;19393:9;19404:6;19370:14;:41::i;:::-;19363:48;;;;19341:73;19444:6;;19434;:16;;:43;;;;19454:15;:23;19470:6;19454:23;;;;;;;;;;;;;;;;;;;;;;;;;19434:43;19426:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;19501:15;:26;19517:9;19501:26;;;;;;;;;;;;;;;;;;;;;;;;;19500:27;:38;;;;;19531:7;;;;;;;;;;;19500:38;19497:144;;;19608:10;;19572:32;19597:6;19572:9;:20;19582:9;19572:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:46;;19564:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;19497:144;19670:4;;;;;;;;;;;19656:18;;:10;:18;;;;:39;;;;;19679:16;;;;;;;;;;;19678:17;19656:39;:64;;;;;19699:21;;;;;;;;;;;19656:64;:109;;;;;19752:13;;19724:9;:24;19742:4;19724:24;;;;;;;;;;;;;;;;:41;;19656:109;19653:128;;;19768:10;:8;:10::i;:::-;19653:128;19813:53;19835:6;19813:53;;;;;;;;;;;;;;;;;:9;:17;19823:6;19813:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19793:9;:17;19803:6;19793:17;;;;;;;;;;;;;;;:73;;;;19887:19;19910:11;:19;19922:6;19910:19;;;;;;;;;;;;;;;;;;;;;;;;;19909:20;:47;;;;;19934:11;:22;19946:9;19934:22;;;;;;;;;;;;;;;;;;;;;;;;;19933:23;19909:47;:93;;19996:6;19909:93;;;19959:34;19967:6;19975:9;19986:6;19959:7;:34::i;:::-;19909:93;19887:115;;20036:37;20061:11;20036:9;:20;20046:9;20036:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;20013:9;:20;20023:9;20013:20;;;;;;;;;;;;;;;:60;;;;20119:16;:24;20136:6;20119:24;;;;;;;;;;;;;;;;;;;;;;;;;20115:123;;20164:15;;;;;;;;;;;:24;;;20189:6;20197:9;:17;20207:6;20197:17;;;;;;;;;;;;;;;;20164:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20160:67;20115:123;20254:16;:27;20271:9;20254:27;;;;;;;;;;;;;;;;;;;;;;;;;20250:133;;20302:15;;;;;;;;;;;:24;;;20327:9;20338;:20;20348:9;20338:20;;;;;;;;;;;;;;;;20302:57;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20298:73;20250:133;20417:9;20400:40;;20409:6;20400:40;;;20428:11;20400:40;;;;;;:::i;:::-;;;;;;;;20458:4;20451:11;;;19087:1383;;;;;;:::o;662:136::-;720:7;747:43;751:1;754;747:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;740:50;;662:136;;;;:::o;22020:948::-;13038:4;13019:16;;:23;;;;;;;;;;;;;;;;;;22078:20:::1;22101:9;:24;22119:4;22101:24;;;;;;;;;;;;;;;;22078:47;;22137:26;22166:45;22209:1;22166:38;22200:3;22166:29;22183:11;;22166:12;:16;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;:42;;:45;;;;:::i;:::-;22137:74;;22227:20;22250:36;22267:18;22250:12;:16;;:36;;;;:::i;:::-;22227:59;;22299:30;22316:12;22299:16;:30::i;:::-;22342:23;22368:21;22342:47;;22400:19;22422:43;22461:3;22422:34;22442:13;;22422:15;:19;;:34;;;;:::i;:::-;:38;;:43;;;;:::i;:::-;22400:65;;22476:28;22507:41;22544:3;22507:32;22527:11;;22507:15;:19;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;22476:72;;22559:23;22585:48;22631:1;22585:41;22622:3;22585:32;22605:11;;22585:15;:19;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;:45;;:48;;;;:::i;:::-;22559:74;;22674:1;22656:15;:19;22652:105;;;22699:14;;;;;;;;;;;22691:32;;:54;22724:20;22691:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22652:105;22781:15;;;;;;;;;;;:23;;;22812:11;22781:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22777:61:::0;22883:1:::1;22862:18;:22;22858:103;;;22900:49;22913:18;22933:15;22900:12;:49::i;:::-;22858:103;22061:907;;;;;;;13084:5:::0;13065:16;;:24;;;;;;;;;;;;;;;;;;22020:948::o;16729:345::-;16834:4;16816:23;;:6;:23;;;;:41;;;;;16853:4;;;;;;;;;;;16843:14;;:6;:14;;;;16816:41;16808:50;;;;;;16896:6;16869:16;:24;16886:6;16869:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16916:6;16913:154;;;16938:15;;;;;;;;;;;:24;;;16963:6;16971:1;16938:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16913:154;;;17004:15;;;;;;;;;;;:24;;;17029:6;17037:9;:17;17047:6;17037:17;;;;;;;;;;;;;;;;17004:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16913:154;16729:345;;:::o;1396:::-;1482:7;1581:1;1577;:5;1584:12;1569:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1608:9;1624:1;1620;:5;;;;:::i;:::-;1608:17;;1732:1;1725:8;;;1396:345;;;;;:::o;20482:330::-;20575:4;20612:53;20634:6;20612:53;;;;;;;;;;;;;;;;;:9;:17;20622:6;20612:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;20592:9;:17;20602:6;20592:17;;;;;;;;;;;;;;;:73;;;;20699:32;20724:6;20699:9;:20;20709:9;20699:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20676:9;:20;20686:9;20676:20;;;;;;;;;;;;;;;:55;;;;20764:9;20747:35;;20756:6;20747:35;;;20775:6;20747:35;;;;;;:::i;:::-;;;;;;;;20800:4;20793:11;;20482:330;;;;;:::o;475:181::-;533:7;553:9;569:1;565;:5;;;;:::i;:::-;553:17;;594:1;589;:6;;581:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;647:1;640:8;;;475:181;;;;:::o;20826:427::-;20912:7;20942:21;20974:9;20966:17;;:4;;;;;;;;;;;:17;;;:36;;20996:6;;20966:36;;;20986:7;;20966:36;20942:60;;21013:17;21033:34;21063:3;21033:25;21044:13;21033:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;21013:54;;21107:39;21136:9;21107;:24;21125:4;21107:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;21080:9;:24;21098:4;21080:24;;;;;;;;;;;;;;;:66;;;;21187:4;21162:42;;21171:6;21162:42;;;21194:9;21162:42;;;;;;:::i;:::-;;;;;;;;21224:21;21235:9;21224:6;:10;;:21;;;;:::i;:::-;21217:28;;;;20826:427;;;;;:::o;1002:250::-;1060:7;1089:1;1084;:6;1080:47;;1114:1;1107:8;;;;1080:47;1139:9;1155:1;1151;:5;;;;:::i;:::-;1139:17;;1184:1;1179;1175;:5;;;;:::i;:::-;:10;1167:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1243:1;1236:8;;;1002:250;;;;;:::o;21265:460::-;21333:21;21371:1;21357:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21333:40;;21402:4;21384;21389:1;21384:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21428:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21418:4;21423:1;21418:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21454:35;21470:4;21477:11;21454:7;:35::i;:::-;;21502:6;;;;;;;;;;;:57;;;21574:11;21600:1;21644:4;21671;21691:15;21502:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21320:405;21265:460;:::o;21733:279::-;21814:6;;;;;;;;;;;:22;;;21844:9;21877:4;21897:11;21923:1;21939;21955:8;;;;;;;;;;;21978:15;21814:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21733:279;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1832:75::-;1865:6;1898:2;1892:9;1882:19;;1832:75;:::o;1913:117::-;2022:1;2019;2012:12;2036:117;2145:1;2142;2135:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:60::-;3874:3;3895:5;3888:12;;3846:60;;;:::o;3912:142::-;3962:9;3995:53;4013:34;4022:24;4040:5;4022:24;:::i;:::-;4013:34;:::i;:::-;3995:53;:::i;:::-;3982:66;;3912:142;;;:::o;4060:134::-;4118:9;4151:37;4182:5;4151:37;:::i;:::-;4138:50;;4060:134;;;:::o;4200:166::-;4282:9;4315:45;4354:5;4315:45;:::i;:::-;4302:58;;4200:166;;;:::o;4372:195::-;4491:69;4554:5;4491:69;:::i;:::-;4486:3;4479:82;4372:195;;:::o;4573:286::-;4698:4;4736:2;4725:9;4721:18;4713:26;;4749:103;4849:1;4838:9;4834:17;4825:6;4749:103;:::i;:::-;4573:286;;;;:::o;4865:329::-;4924:6;4973:2;4961:9;4952:7;4948:23;4944:32;4941:119;;;4979:79;;:::i;:::-;4941:119;5099:1;5124:53;5169:7;5160:6;5149:9;5145:22;5124:53;:::i;:::-;5114:63;;5070:117;4865:329;;;;:::o;5200:619::-;5277:6;5285;5293;5342:2;5330:9;5321:7;5317:23;5313:32;5310:119;;;5348:79;;:::i;:::-;5310:119;5468:1;5493:53;5538:7;5529:6;5518:9;5514:22;5493:53;:::i;:::-;5483:63;;5439:117;5595:2;5621:53;5666:7;5657:6;5646:9;5642:22;5621:53;:::i;:::-;5611:63;;5566:118;5723:2;5749:53;5794:7;5785:6;5774:9;5770:22;5749:53;:::i;:::-;5739:63;;5694:118;5200:619;;;;;:::o;5825:329::-;5884:6;5933:2;5921:9;5912:7;5908:23;5904:32;5901:119;;;5939:79;;:::i;:::-;5901:119;6059:1;6084:53;6129:7;6120:6;6109:9;6105:22;6084:53;:::i;:::-;6074:63;;6030:117;5825:329;;;;:::o;6160:474::-;6228:6;6236;6285:2;6273:9;6264:7;6260:23;6256:32;6253:119;;;6291:79;;:::i;:::-;6253:119;6411:1;6436:53;6481:7;6472:6;6461:9;6457:22;6436:53;:::i;:::-;6426:63;;6382:117;6538:2;6564:53;6609:7;6600:6;6589:9;6585:22;6564:53;:::i;:::-;6554:63;;6509:118;6160:474;;;;;:::o;6640:619::-;6717:6;6725;6733;6782:2;6770:9;6761:7;6757:23;6753:32;6750:119;;;6788:79;;:::i;:::-;6750:119;6908:1;6933:53;6978:7;6969:6;6958:9;6954:22;6933:53;:::i;:::-;6923:63;;6879:117;7035:2;7061:53;7106:7;7097:6;7086:9;7082:22;7061:53;:::i;:::-;7051:63;;7006:118;7163:2;7189:53;7234:7;7225:6;7214:9;7210:22;7189:53;:::i;:::-;7179:63;;7134:118;6640:619;;;;;:::o;7265:86::-;7300:7;7340:4;7333:5;7329:16;7318:27;;7265:86;;;:::o;7357:112::-;7440:22;7456:5;7440:22;:::i;:::-;7435:3;7428:35;7357:112;;:::o;7475:214::-;7564:4;7602:2;7591:9;7587:18;7579:26;;7615:67;7679:1;7668:9;7664:17;7655:6;7615:67;:::i;:::-;7475:214;;;;:::o;7695:116::-;7765:21;7780:5;7765:21;:::i;:::-;7758:5;7755:32;7745:60;;7801:1;7798;7791:12;7745:60;7695:116;:::o;7817:133::-;7860:5;7898:6;7885:20;7876:29;;7914:30;7938:5;7914:30;:::i;:::-;7817:133;;;;:::o;7956:468::-;8021:6;8029;8078:2;8066:9;8057:7;8053:23;8049:32;8046:119;;;8084:79;;:::i;:::-;8046:119;8204:1;8229:50;8271:7;8262:6;8251:9;8247:22;8229:50;:::i;:::-;8219:60;;8175:114;8328:2;8354:53;8399:7;8390:6;8379:9;8375:22;8354:53;:::i;:::-;8344:63;;8299:118;7956:468;;;;;:::o;8430:118::-;8517:24;8535:5;8517:24;:::i;:::-;8512:3;8505:37;8430:118;;:::o;8554:222::-;8647:4;8685:2;8674:9;8670:18;8662:26;;8698:71;8766:1;8755:9;8751:17;8742:6;8698:71;:::i;:::-;8554:222;;;;:::o;8782:468::-;8847:6;8855;8904:2;8892:9;8883:7;8879:23;8875:32;8872:119;;;8910:79;;:::i;:::-;8872:119;9030:1;9055:53;9100:7;9091:6;9080:9;9076:22;9055:53;:::i;:::-;9045:63;;9001:117;9157:2;9183:50;9225:7;9216:6;9205:9;9201:22;9183:50;:::i;:::-;9173:60;;9128:115;8782:468;;;;;:::o;9256:117::-;9365:1;9362;9355:12;9379:180;9427:77;9424:1;9417:88;9524:4;9521:1;9514:15;9548:4;9545:1;9538:15;9565:281;9648:27;9670:4;9648:27;:::i;:::-;9640:6;9636:40;9778:6;9766:10;9763:22;9742:18;9730:10;9727:34;9724:62;9721:88;;;9789:18;;:::i;:::-;9721:88;9829:10;9825:2;9818:22;9608:238;9565:281;;:::o;9852:129::-;9886:6;9913:20;;:::i;:::-;9903:30;;9942:33;9970:4;9962:6;9942:33;:::i;:::-;9852:129;;;:::o;9987:311::-;10064:4;10154:18;10146:6;10143:30;10140:56;;;10176:18;;:::i;:::-;10140:56;10226:4;10218:6;10214:17;10206:25;;10286:4;10280;10276:15;10268:23;;9987:311;;;:::o;10304:117::-;10413:1;10410;10403:12;10444:710;10540:5;10565:81;10581:64;10638:6;10581:64;:::i;:::-;10565:81;:::i;:::-;10556:90;;10666:5;10695:6;10688:5;10681:21;10729:4;10722:5;10718:16;10711:23;;10782:4;10774:6;10770:17;10762:6;10758:30;10811:3;10803:6;10800:15;10797:122;;;10830:79;;:::i;:::-;10797:122;10945:6;10928:220;10962:6;10957:3;10954:15;10928:220;;;11037:3;11066:37;11099:3;11087:10;11066:37;:::i;:::-;11061:3;11054:50;11133:4;11128:3;11124:14;11117:21;;11004:144;10988:4;10983:3;10979:14;10972:21;;10928:220;;;10932:21;10546:608;;10444:710;;;;;:::o;11177:370::-;11248:5;11297:3;11290:4;11282:6;11278:17;11274:27;11264:122;;11305:79;;:::i;:::-;11264:122;11422:6;11409:20;11447:94;11537:3;11529:6;11522:4;11514:6;11510:17;11447:94;:::i;:::-;11438:103;;11254:293;11177:370;;;;:::o;11553:539::-;11637:6;11686:2;11674:9;11665:7;11661:23;11657:32;11654:119;;;11692:79;;:::i;:::-;11654:119;11840:1;11829:9;11825:17;11812:31;11870:18;11862:6;11859:30;11856:117;;;11892:79;;:::i;:::-;11856:117;11997:78;12067:7;12058:6;12047:9;12043:22;11997:78;:::i;:::-;11987:88;;11783:302;11553:539;;;;:::o;12098:104::-;12143:7;12172:24;12190:5;12172:24;:::i;:::-;12161:35;;12098:104;;;:::o;12208:138::-;12289:32;12315:5;12289:32;:::i;:::-;12282:5;12279:43;12269:71;;12336:1;12333;12326:12;12269:71;12208:138;:::o;12352:155::-;12406:5;12444:6;12431:20;12422:29;;12460:41;12495:5;12460:41;:::i;:::-;12352:155;;;;:::o;12513:345::-;12580:6;12629:2;12617:9;12608:7;12604:23;12600:32;12597:119;;;12635:79;;:::i;:::-;12597:119;12755:1;12780:61;12833:7;12824:6;12813:9;12809:22;12780:61;:::i;:::-;12770:71;;12726:125;12513:345;;;;:::o;12864:474::-;12932:6;12940;12989:2;12977:9;12968:7;12964:23;12960:32;12957:119;;;12995:79;;:::i;:::-;12957:119;13115:1;13140:53;13185:7;13176:6;13165:9;13161:22;13140:53;:::i;:::-;13130:63;;13086:117;13242:2;13268:53;13313:7;13304:6;13293:9;13289:22;13268:53;:::i;:::-;13258:63;;13213:118;12864:474;;;;;:::o;13344:126::-;13394:9;13427:37;13458:5;13427:37;:::i;:::-;13414:50;;13344:126;;;:::o;13476:144::-;13544:9;13577:37;13608:5;13577:37;:::i;:::-;13564:50;;13476:144;;;:::o;13626:167::-;13731:55;13780:5;13731:55;:::i;:::-;13726:3;13719:68;13626:167;;:::o;13799:258::-;13910:4;13948:2;13937:9;13933:18;13925:26;;13961:89;14047:1;14036:9;14032:17;14023:6;13961:89;:::i;:::-;13799:258;;;;:::o;14063:156::-;14203:8;14199:1;14191:6;14187:14;14180:32;14063:156;:::o;14225:365::-;14367:3;14388:66;14452:1;14447:3;14388:66;:::i;:::-;14381:73;;14463:93;14552:3;14463:93;:::i;:::-;14581:2;14576:3;14572:12;14565:19;;14225:365;;;:::o;14596:419::-;14762:4;14800:2;14789:9;14785:18;14777:26;;14849:9;14843:4;14839:20;14835:1;14824:9;14820:17;14813:47;14877:131;15003:4;14877:131;:::i;:::-;14869:139;;14596:419;;;:::o;15021:332::-;15142:4;15180:2;15169:9;15165:18;15157:26;;15193:71;15261:1;15250:9;15246:17;15237:6;15193:71;:::i;:::-;15274:72;15342:2;15331:9;15327:18;15318:6;15274:72;:::i;:::-;15021:332;;;;;:::o;15359:158::-;15499:10;15495:1;15487:6;15483:14;15476:34;15359:158;:::o;15523:365::-;15665:3;15686:66;15750:1;15745:3;15686:66;:::i;:::-;15679:73;;15761:93;15850:3;15761:93;:::i;:::-;15879:2;15874:3;15870:12;15863:19;;15523:365;;;:::o;15894:419::-;16060:4;16098:2;16087:9;16083:18;16075:26;;16147:9;16141:4;16137:20;16133:1;16122:9;16118:17;16111:47;16175:131;16301:4;16175:131;:::i;:::-;16167:139;;15894:419;;;:::o;16319:143::-;16376:5;16407:6;16401:13;16392:22;;16423:33;16450:5;16423:33;:::i;:::-;16319:143;;;;:::o;16468:351::-;16538:6;16587:2;16575:9;16566:7;16562:23;16558:32;16555:119;;;16593:79;;:::i;:::-;16555:119;16713:1;16738:64;16794:7;16785:6;16774:9;16770:22;16738:64;:::i;:::-;16728:74;;16684:128;16468:351;;;;:::o;16825:180::-;16873:77;16870:1;16863:88;16970:4;16967:1;16960:15;16994:4;16991:1;16984:15;17011:180;17059:77;17056:1;17049:88;17156:4;17153:1;17146:15;17180:4;17177:1;17170:15;17197:233;17236:3;17259:24;17277:5;17259:24;:::i;:::-;17250:33;;17305:66;17298:5;17295:77;17292:103;;17375:18;;:::i;:::-;17292:103;17422:1;17415:5;17411:13;17404:20;;17197:233;;;:::o;17436:134::-;17494:9;17527:37;17558:5;17527:37;:::i;:::-;17514:50;;17436:134;;;:::o;17576:147::-;17671:45;17710:5;17671:45;:::i;:::-;17666:3;17659:58;17576:147;;:::o;17729:238::-;17830:4;17868:2;17857:9;17853:18;17845:26;;17881:79;17957:1;17946:9;17942:17;17933:6;17881:79;:::i;:::-;17729:238;;;;:::o;17973:191::-;18013:4;18033:20;18051:1;18033:20;:::i;:::-;18028:25;;18067:20;18085:1;18067:20;:::i;:::-;18062:25;;18106:1;18103;18100:8;18097:34;;;18111:18;;:::i;:::-;18097:34;18156:1;18153;18149:9;18141:17;;17973:191;;;;:::o;18170:168::-;18310:20;18306:1;18298:6;18294:14;18287:44;18170:168;:::o;18344:366::-;18486:3;18507:67;18571:2;18566:3;18507:67;:::i;:::-;18500:74;;18583:93;18672:3;18583:93;:::i;:::-;18701:2;18696:3;18692:12;18685:19;;18344:366;;;:::o;18716:419::-;18882:4;18920:2;18909:9;18905:18;18897:26;;18969:9;18963:4;18959:20;18955:1;18944:9;18940:17;18933:47;18997:131;19123:4;18997:131;:::i;:::-;18989:139;;18716:419;;;:::o;19141:152::-;19281:4;19277:1;19269:6;19265:14;19258:28;19141:152;:::o;19299:365::-;19441:3;19462:66;19526:1;19521:3;19462:66;:::i;:::-;19455:73;;19537:93;19626:3;19537:93;:::i;:::-;19655:2;19650:3;19646:12;19639:19;;19299:365;;;:::o;19670:419::-;19836:4;19874:2;19863:9;19859:18;19851:26;;19923:9;19917:4;19913:20;19909:1;19898:9;19894:17;19887:47;19951:131;20077:4;19951:131;:::i;:::-;19943:139;;19670:419;;;:::o;20095:156::-;20235:8;20231:1;20223:6;20219:14;20212:32;20095:156;:::o;20257:365::-;20399:3;20420:66;20484:1;20479:3;20420:66;:::i;:::-;20413:73;;20495:93;20584:3;20495:93;:::i;:::-;20613:2;20608:3;20604:12;20597:19;;20257:365;;;:::o;20628:419::-;20794:4;20832:2;20821:9;20817:18;20809:26;;20881:9;20875:4;20871:20;20867:1;20856:9;20852:17;20845:47;20909:131;21035:4;20909:131;:::i;:::-;20901:139;;20628:419;;;:::o;21053:332::-;21174:4;21212:2;21201:9;21197:18;21189:26;;21225:71;21293:1;21282:9;21278:17;21269:6;21225:71;:::i;:::-;21306:72;21374:2;21363:9;21359:18;21350:6;21306:72;:::i;:::-;21053:332;;;;;:::o;21391:85::-;21436:7;21465:5;21454:16;;21391:85;;;:::o;21482:158::-;21540:9;21573:61;21591:42;21600:32;21626:5;21600:32;:::i;:::-;21591:42;:::i;:::-;21573:61;:::i;:::-;21560:74;;21482:158;;;:::o;21646:147::-;21741:45;21780:5;21741:45;:::i;:::-;21736:3;21729:58;21646:147;;:::o;21799:348::-;21928:4;21966:2;21955:9;21951:18;21943:26;;21979:71;22047:1;22036:9;22032:17;22023:6;21979:71;:::i;:::-;22060:80;22136:2;22125:9;22121:18;22112:6;22060:80;:::i;:::-;21799:348;;;;;:::o;22153:180::-;22201:77;22198:1;22191:88;22298:4;22295:1;22288:15;22322:4;22319:1;22312:15;22339:185;22379:1;22396:20;22414:1;22396:20;:::i;:::-;22391:25;;22430:20;22448:1;22430:20;:::i;:::-;22425:25;;22469:1;22459:35;;22474:18;;:::i;:::-;22459:35;22516:1;22513;22509:9;22504:14;;22339:185;;;;:::o;22530:305::-;22570:3;22589:20;22607:1;22589:20;:::i;:::-;22584:25;;22623:20;22641:1;22623:20;:::i;:::-;22618:25;;22777:1;22709:66;22705:74;22702:1;22699:81;22696:107;;;22783:18;;:::i;:::-;22696:107;22827:1;22824;22820:9;22813:16;;22530:305;;;;:::o;22841:177::-;22981:29;22977:1;22969:6;22965:14;22958:53;22841:177;:::o;23024:366::-;23166:3;23187:67;23251:2;23246:3;23187:67;:::i;:::-;23180:74;;23263:93;23352:3;23263:93;:::i;:::-;23381:2;23376:3;23372:12;23365:19;;23024:366;;;:::o;23396:419::-;23562:4;23600:2;23589:9;23585:18;23577:26;;23649:9;23643:4;23639:20;23635:1;23624:9;23620:17;23613:47;23677:131;23803:4;23677:131;:::i;:::-;23669:139;;23396:419;;;:::o;23821:348::-;23861:7;23884:20;23902:1;23884:20;:::i;:::-;23879:25;;23918:20;23936:1;23918:20;:::i;:::-;23913:25;;24106:1;24038:66;24034:74;24031:1;24028:81;24023:1;24016:9;24009:17;24005:105;24002:131;;;24113:18;;:::i;:::-;24002:131;24161:1;24158;24154:9;24143:20;;23821:348;;;;:::o;24175:220::-;24315:34;24311:1;24303:6;24299:14;24292:58;24384:3;24379:2;24371:6;24367:15;24360:28;24175:220;:::o;24401:366::-;24543:3;24564:67;24628:2;24623:3;24564:67;:::i;:::-;24557:74;;24640:93;24729:3;24640:93;:::i;:::-;24758:2;24753:3;24749:12;24742:19;;24401:366;;;:::o;24773:419::-;24939:4;24977:2;24966:9;24962:18;24954:26;;25026:9;25020:4;25016:20;25012:1;25001:9;24997:17;24990:47;25054:131;25180:4;25054:131;:::i;:::-;25046:139;;24773:419;;;:::o;25198:143::-;25255:5;25286:6;25280:13;25271:22;;25302:33;25329:5;25302:33;:::i;:::-;25198:143;;;;:::o;25347:351::-;25417:6;25466:2;25454:9;25445:7;25441:23;25437:32;25434:119;;;25472:79;;:::i;:::-;25434:119;25592:1;25617:64;25673:7;25664:6;25653:9;25649:22;25617:64;:::i;:::-;25607:74;;25563:128;25347:351;;;;:::o;25704:114::-;25771:6;25805:5;25799:12;25789:22;;25704:114;;;:::o;25824:184::-;25923:11;25957:6;25952:3;25945:19;25997:4;25992:3;25988:14;25973:29;;25824:184;;;;:::o;26014:132::-;26081:4;26104:3;26096:11;;26134:4;26129:3;26125:14;26117:22;;26014:132;;;:::o;26152:108::-;26229:24;26247:5;26229:24;:::i;:::-;26224:3;26217:37;26152:108;;:::o;26266:179::-;26335:10;26356:46;26398:3;26390:6;26356:46;:::i;:::-;26434:4;26429:3;26425:14;26411:28;;26266:179;;;;:::o;26451:113::-;26521:4;26553;26548:3;26544:14;26536:22;;26451:113;;;:::o;26600:732::-;26719:3;26748:54;26796:5;26748:54;:::i;:::-;26818:86;26897:6;26892:3;26818:86;:::i;:::-;26811:93;;26928:56;26978:5;26928:56;:::i;:::-;27007:7;27038:1;27023:284;27048:6;27045:1;27042:13;27023:284;;;27124:6;27118:13;27151:63;27210:3;27195:13;27151:63;:::i;:::-;27144:70;;27237:60;27290:6;27237:60;:::i;:::-;27227:70;;27083:224;27070:1;27067;27063:9;27058:14;;27023:284;;;27027:14;27323:3;27316:10;;26724:608;;;26600:732;;;;:::o;27338:831::-;27601:4;27639:3;27628:9;27624:19;27616:27;;27653:71;27721:1;27710:9;27706:17;27697:6;27653:71;:::i;:::-;27734:80;27810:2;27799:9;27795:18;27786:6;27734:80;:::i;:::-;27861:9;27855:4;27851:20;27846:2;27835:9;27831:18;27824:48;27889:108;27992:4;27983:6;27889:108;:::i;:::-;27881:116;;28007:72;28075:2;28064:9;28060:18;28051:6;28007:72;:::i;:::-;28089:73;28157:3;28146:9;28142:19;28133:6;28089:73;:::i;:::-;27338:831;;;;;;;;:::o;28175:807::-;28424:4;28462:3;28451:9;28447:19;28439:27;;28476:71;28544:1;28533:9;28529:17;28520:6;28476:71;:::i;:::-;28557:72;28625:2;28614:9;28610:18;28601:6;28557:72;:::i;:::-;28639:80;28715:2;28704:9;28700:18;28691:6;28639:80;:::i;:::-;28729;28805:2;28794:9;28790:18;28781:6;28729:80;:::i;:::-;28819:73;28887:3;28876:9;28872:19;28863:6;28819:73;:::i;:::-;28902;28970:3;28959:9;28955:19;28946:6;28902:73;:::i;:::-;28175:807;;;;;;;;;:::o;28988:663::-;29076:6;29084;29092;29141:2;29129:9;29120:7;29116:23;29112:32;29109:119;;;29147:79;;:::i;:::-;29109:119;29267:1;29292:64;29348:7;29339:6;29328:9;29324:22;29292:64;:::i;:::-;29282:74;;29238:128;29405:2;29431:64;29487:7;29478:6;29467:9;29463:22;29431:64;:::i;:::-;29421:74;;29376:129;29544:2;29570:64;29626:7;29617:6;29606:9;29602:22;29570:64;:::i;:::-;29560:74;;29515:129;28988:663;;;;;:::o

Swarm Source

ipfs://a3fa01cdcb322989d6bec335846c26330c5382e7306e56275dae38f9e18e1c79
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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