ETH Price: $3,257.63 (-2.29%)
 

Overview

Max Total Supply

1,000,000,000 HPOS10R

Holders

38

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
7,500,000 HPOS10R

Value
$0.00
0xef4790b7532d0dbbde660096c553614dbbdc22da
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:
bitcoinr

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-20
*/

/*

Web: https://hpos10r.vip
TG: https://t.me/HPOS10R
Twitter: https://twitter.com/hpos10r

*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.13;

/**
 * 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 Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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


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

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

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

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

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

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

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

interface IBitcoinReflections {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
    function gibTokens(address shareholder) external;
}


contract BitcoinReflections is IBitcoinReflections {

    using SafeMath for uint256;
    address _token;

    address public BITCOIN;

    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);
        BITCOIN = 0x72e4f9F808C49A2a61dE9C5896298920Dc4EEEa9;
    }
    
    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(BITCOIN).balanceOf(address(this));

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

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

        uint256 amount = IERC20(BITCOIN).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(BITCOIN).transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function gibTokens(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 bitcoinr is Context, IERC20, Ownable {
    using SafeMath for uint256;

    address public BITCOIN = 0x72e4f9F808C49A2a61dE9C5896298920Dc4EEEa9; //BITCOIN CA

    string private constant _name = "$BITCOIN Reflections";
    string private constant _symbol = "HPOS10R";
    uint8 private constant _decimals = 18;
    
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);

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

    address private WETH;
    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 public lpWallet = DEAD;

    uint256 public buyFee = 25;
    uint256 public sellFee = 25;

    uint256 public toReflections = 33;
    uint256 public toLiquidity = 33;
    uint256 public toMarketing = 34;

    uint256 public allocationSum = 100;

    IDEXRouter public router;
    address public pair;
    address public factory;
    address private tokenOwner;
    address public devWallet = payable(0xf4b4b06E5c86BDfE3400db85742dc715f91b5e43);

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;
    
    BitcoinReflections public bitcoinReflections;
    uint256 public bitcoinReflectionsGas = 0;

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

    uint256 public maxTx = _totalSupply.div(100);
    uint256 public maxWallet = _totalSupply.div(50);
    uint256 public swapThreshold = _totalSupply.div(400);

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

        bitcoinReflections = new BitcoinReflections();
        
        isFeeExempt[owner()] = true;
        isFeeExempt[devWallet] = true;            

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

        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[devWallet] = 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;
    } 
    
    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 setDevWallet(address payable newDevWallet) external onlyOwner {
        devWallet = payable(newDevWallet);
    }

    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 {
        bitcoinReflections.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){
            bitcoinReflections.setShare(holder, 0);
        }else{
            bitcoinReflections.setShare(holder, _balances[holder]);
        }
    }

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

    function changeBitcoinReflectionsGas(uint256 newGas) external onlyOwner {
        bitcoinReflectionsGas = 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, "hold ur horses big guy."); //transfers disabled before tradingActive
        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 bitcoinReflections.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try bitcoinReflections.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 ethForBITCOIN = totalEthBalance.mul(toReflections).div(100);
        uint256 ethForDev = totalEthBalance.mul(toMarketing).div(100);
        uint256 ethForLiquidity = totalEthBalance.mul(toLiquidity).div(100).div(2);
      
        if (totalEthBalance > 0){
            payable(devWallet).transfer(ethForDev);
        }
        
        try bitcoinReflections.deposit{value: ethForBITCOIN}() {} 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(devWallet).transfer(contractETHBalance);
        }
    }

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

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

    function getBITCOIN() external {
        bitcoinReflections.gibTokens(msg.sender);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BITCOIN","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":"bitcoinReflections","outputs":[{"internalType":"contract BitcoinReflections","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bitcoinReflectionsGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newGas","type":"uint256"}],"name":"changeBitcoinReflectionsGas","outputs":[],"stateMutability":"nonpayable","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":"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBITCOIN","outputs":[],"stateMutability":"nonpayable","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":"","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":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":"newDevWallet","type":"address"}],"name":"setDevWallet","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 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":"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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040527372e4f9f808c49a2a61de9c5896298920dc4eeea9600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a62000069919062000e86565b633b9aca006200007a919062000ed7565b60025561dead600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860146101000a81548160ff021916908315150217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506019600f556019601055602160115560216012556022601355606460145573f4b4b06e5c86bdfe3400db85742dc715f91b5e43601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601960156101000a81548160ff0219169083151502179055506000601960166101000a81548160ff0219169083151502179055506000601b556200024b606460025462000bf360201b620028241790919060201c565b601c556200026b603260025462000bf360201b620028241790919060201c565b601d556200028c61019060025462000bf360201b620028241790919060201c565b601e553480156200029c57600080fd5b506000620002af62000c4560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000410573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000436919062000fa2565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050a919062000fa2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200056892919062000fe5565b6020604051808303816000875af115801562000588573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ae919062000fa2565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604051620006bf9062000cde565b604051809103906000f080158015620006dc573d6000803e3d6000fd5b50601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60006200073362000c4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200096062000c4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002546003600062000b3662000c4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000b8462000c4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60025460405162000be5919062001023565b60405180910390a36200116f565b600062000c3d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000c7660201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000cc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cb79190620010e4565b60405180910390fd5b506000838562000cd1919062001137565b9050809150509392505050565b61204c8062005fc083390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000d7a5780860481111562000d525762000d5162000cec565b5b600185161562000d625780820291505b808102905062000d728562000d1b565b945062000d32565b94509492505050565b60008262000d95576001905062000e68565b8162000da5576000905062000e68565b816001811462000dbe576002811462000dc95762000dff565b600191505062000e68565b60ff84111562000dde5762000ddd62000cec565b5b8360020a91508482111562000df85762000df762000cec565b5b5062000e68565b5060208310610133831016604e8410600b841016171562000e395782820a90508381111562000e335762000e3262000cec565b5b62000e68565b62000e48848484600162000d28565b9250905081840481111562000e625762000e6162000cec565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000e938262000e6f565b915062000ea08362000e79565b925062000ecf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d83565b905092915050565b600062000ee48262000e6f565b915062000ef18362000e6f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f2d5762000f2c62000cec565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f6a8262000f3d565b9050919050565b62000f7c8162000f5d565b811462000f8857600080fd5b50565b60008151905062000f9c8162000f71565b92915050565b60006020828403121562000fbb5762000fba62000f38565b5b600062000fcb8482850162000f8b565b91505092915050565b62000fdf8162000f5d565b82525050565b600060408201905062000ffc600083018562000fd4565b6200100b602083018462000fd4565b9392505050565b6200101d8162000e6f565b82525050565b60006020820190506200103a600083018462001012565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200107c5780820151818401526020810190506200105f565b838111156200108c576000848401525b50505050565b6000601f19601f8301169050919050565b6000620010b08262001040565b620010bc81856200104b565b9350620010ce8185602086016200105c565b620010d98162001092565b840191505092915050565b60006020820190508181036000830152620011008184620010a3565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011448262000e6f565b9150620011518362000e6f565b92508262001164576200116362001108565b5b828204905092915050565b614e41806200117f6000396000f3fe6080604052600436106103905760003560e01c80637db1342c116101dc578063bb542ef011610102578063dd62ed3e116100a0578063f8b45b051161006f578063f8b45b0514610d0b578063fabe628314610d36578063fec38f8314610d5f578063ffb54a9914610d8a57610397565b8063dd62ed3e14610c51578063f2fde38b14610c8e578063f708a64f14610cb7578063f887ea4014610ce057610397565b8063c8d1293d116100dc578063c8d1293d14610bbb578063c9567bf914610be6578063caa5581b14610bfd578063d920334e14610c2857610397565b8063bb542ef014610b3c578063bf56b37114610b65578063c45a015514610b9057610397565b80638ea5220f1161017a578063a6403ef511610149578063a6403ef514610a80578063a8aa1b3114610aab578063a9059cbb14610ad6578063b515566a14610b1357610397565b80638ea5220f146109d657806395d89b4114610a015780639e05002314610a2c578063a3a2e89e14610a5757610397565b806389291a8f116101b657806389291a8f1461092c578063893d20e8146109435780638b42507f1461096e5780638da5cb5b146109ab57610397565b80637db1342c146108af5780637dfcbe34146108d8578063819340311461090357610397565b80633f4218e0116102c15780636303516c1161025f578063715018a61161022e578063715018a6146108055780637437681e1461081c57806375df13051461084757806377359aa71461087257610397565b80636303516c1461075d57806366eb3785146107885780636f2506d51461079f57806370a08231146107c857610397565b8063470624021161029b57806347062402146106b357806348cc38fa146106de5780634a74bb02146106f5578063571ac8b01461072057610397565b80633f4218e01461060e5780634355855a1461064b578063454343771461068857610397565b80632b112e491161032e5780632dbea2e1116103085780632dbea2e11461056857806330ca34ee14610591578063313ce567146105ba5780633dab5269146105e557610397565b80632b112e49146104e95780632b14ca56146105145780632d48e8961461053f57610397565b806318160ddd1161036a57806318160ddd1461042f5780631f53ac021461045a57806323b872dd14610483578063273123b7146104c057610397565b80630445b6671461039c57806306fdde03146103c7578063095ea7b3146103f257610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610db5565b6040516103be9190613ea0565b60405180910390f35b3480156103d357600080fd5b506103dc610dbb565b6040516103e99190613f54565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190614014565b610df8565b604051610426919061406f565b60405180910390f35b34801561043b57600080fd5b50610444610eea565b6040516104519190613ea0565b60405180910390f35b34801561046657600080fd5b50610481600480360381019061047c91906140c8565b610ef4565b005b34801561048f57600080fd5b506104aa60048036038101906104a591906140f5565b610fcd565b6040516104b7919061406f565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e29190614148565b6111cd565b005b3480156104f557600080fd5b506104fe6112bd565b60405161050b9190613ea0565b60405180910390f35b34801561052057600080fd5b5061052961133f565b6040516105369190613ea0565b60405180910390f35b34801561054b57600080fd5b5061056660048036038101906105619190614175565b611345565b005b34801561057457600080fd5b5061058f600480360381019061058a91906141b5565b61146d565b005b34801561059d57600080fd5b506105b860048036038101906105b39190614175565b61151c565b005b3480156105c657600080fd5b506105cf6115c3565b6040516105dc9190614224565b60405180910390f35b3480156105f157600080fd5b5061060c6004803603810190610607919061426b565b6115cc565b005b34801561061a57600080fd5b5061063560048036038101906106309190614148565b611686565b604051610642919061406f565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d9190614148565b6116a6565b60405161067f919061406f565b60405180910390f35b34801561069457600080fd5b5061069d6116c6565b6040516106aa9190613ea0565b60405180910390f35b3480156106bf57600080fd5b506106c86116cc565b6040516106d59190613ea0565b60405180910390f35b3480156106ea57600080fd5b506106f36116d2565b005b34801561070157600080fd5b5061070a611761565b604051610717919061406f565b60405180910390f35b34801561072c57600080fd5b5061074760048036038101906107429190614148565b611774565b604051610754919061406f565b60405180910390f35b34801561076957600080fd5b506107726117a7565b60405161077f91906142ba565b60405180910390f35b34801561079457600080fd5b5061079d6117cd565b005b3480156107ab57600080fd5b506107c660048036038101906107c191906142d5565b61186c565b005b3480156107d457600080fd5b506107ef60048036038101906107ea9190614148565b61190b565b6040516107fc9190613ea0565b60405180910390f35b34801561081157600080fd5b5061081a611954565b005b34801561082857600080fd5b50610831611aa7565b60405161083e9190613ea0565b60405180910390f35b34801561085357600080fd5b5061085c611aad565b6040516108699190613ea0565b60405180910390f35b34801561087e57600080fd5b5061089960048036038101906108949190614148565b611ab3565b6040516108a69190613ea0565b60405180910390f35b3480156108bb57600080fd5b506108d660048036038101906108d191906142d5565b611b58565b005b3480156108e457600080fd5b506108ed611bf7565b6040516108fa919061406f565b60405180910390f35b34801561090f57600080fd5b5061092a600480360381019061092591906142d5565b611c0a565b005b34801561093857600080fd5b50610941611d2f565b005b34801561094f57600080fd5b50610958611e3f565b60405161096591906142ba565b60405180910390f35b34801561097a57600080fd5b5061099560048036038101906109909190614148565b611e4e565b6040516109a2919061406f565b60405180910390f35b3480156109b757600080fd5b506109c0611e6e565b6040516109cd91906142ba565b60405180910390f35b3480156109e257600080fd5b506109eb611e97565b6040516109f891906142ba565b60405180910390f35b348015610a0d57600080fd5b50610a16611ebd565b604051610a239190613f54565b60405180910390f35b348015610a3857600080fd5b50610a41611efa565b604051610a4e91906142ba565b60405180910390f35b348015610a6357600080fd5b50610a7e6004803603810190610a799190614302565b611f20565b005b348015610a8c57600080fd5b50610a95612010565b604051610aa29190613ea0565b60405180910390f35b348015610ab757600080fd5b50610ac0612016565b604051610acd91906142ba565b60405180910390f35b348015610ae257600080fd5b50610afd6004803603810190610af89190614014565b61203c565b604051610b0a919061406f565b60405180910390f35b348015610b1f57600080fd5b50610b3a6004803603810190610b35919061448a565b612051565b005b348015610b4857600080fd5b50610b636004803603810190610b5e91906140c8565b61217b565b005b348015610b7157600080fd5b50610b7a612254565b604051610b879190613ea0565b60405180910390f35b348015610b9c57600080fd5b50610ba561225a565b604051610bb291906142ba565b60405180910390f35b348015610bc757600080fd5b50610bd0612280565b604051610bdd9190613ea0565b60405180910390f35b348015610bf257600080fd5b50610bfb612286565b005b348015610c0957600080fd5b50610c1261233f565b604051610c1f9190613ea0565b60405180910390f35b348015610c3457600080fd5b50610c4f6004803603810190610c4a91906142d5565b612345565b005b348015610c5d57600080fd5b50610c786004803603810190610c7391906144d3565b6123e4565b604051610c859190613ea0565b60405180910390f35b348015610c9a57600080fd5b50610cb56004803603810190610cb09190614148565b61246b565b005b348015610cc357600080fd5b50610cde6004803603810190610cd99190614302565b61262c565b005b348015610cec57600080fd5b50610cf56126cf565b604051610d029190614572565b60405180910390f35b348015610d1757600080fd5b50610d206126f5565b604051610d2d9190613ea0565b60405180910390f35b348015610d4257600080fd5b50610d5d6004803603810190610d589190614302565b6126fb565b005b348015610d6b57600080fd5b50610d746127eb565b604051610d8191906145c0565b60405180910390f35b348015610d9657600080fd5b50610d9f612811565b604051610dac919061406f565b60405180910390f35b601e5481565b60606040518060400160405280601481526020017f24424954434f494e205265666c656374696f6e73000000000000000000000000815250905090565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ed89190613ea0565b60405180910390a36001905092915050565b6000600254905090565b610efc61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8090614627565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146111b957611138826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6111c48484846128da565b90509392505050565b6111d561286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125990614627565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061133a6112ed600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661190b565b61132c61131b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661190b565b6002546131b990919063ffffffff16565b6131b990919063ffffffff16565b905090565b60105481565b61134d61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d190614627565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611437929190614647565b600060405180830381600087803b15801561145157600080fd5b505af1158015611465573d6000803e3d6000fd5b505050505050565b61147561286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f990614627565b60405180910390fd5b826011819055508160128190555080601381905550505050565b61152461286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890614627565b60405180910390fd5b81600f81905550806010819055505050565b60006012905090565b6115d461286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165890614627565b60405180910390fd5b81601960156101000a81548160ff02191690831515021790555080601e819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b60145481565b600f5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd14ae27336040518263ffffffff1660e01b815260040161172d91906142ba565b600060405180830381600087803b15801561174757600080fd5b505af115801561175b573d6000803e3d6000fd5b50505050565b601960159054906101000a900460ff1681565b60006117a0827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610df8565b9050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117d561286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185990614627565b60405180910390fd5b61186a613203565b565b61187461286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f890614627565b60405180910390fd5b80601b8190555050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61195c61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e090614627565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c5481565b60135481565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b8152600401611b1091906142ba565b602060405180830381865afa158015611b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b519190614685565b9050919050565b611b6061286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be490614627565b60405180910390fd5b80601d8190555050565b600860149054906101000a900460ff1681565b611c1261286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9690614627565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479826040518263ffffffff1660e01b8152600401611cfa9190613ea0565b600060405180830381600087803b158015611d1457600080fd5b505af1158015611d28573d6000803e3d6000fd5b5050505050565b611d3761286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb90614627565b60405180910390fd5b60004790506000811115611e3c57601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e3a573d6000803e3d6000fd5b505b50565b6000611e49611e6e565b905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600781526020017f48504f5331305200000000000000000000000000000000000000000000000000815250905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f2861286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fac90614627565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006120493384846128da565b905092915050565b61205961286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120dd90614627565b60405180910390fd5b60005b81518110156121775760016009600084848151811061210b5761210a6146b2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061216f90614710565b9150506120e9565b5050565b61218361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220790614627565b60405180910390fd5b80601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b61228e61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461231b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231290614627565b60405180910390fd5b43600d819055506001601960166101000a81548160ff021916908315150217905550565b60115481565b61234d61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d190614627565b60405180910390fd5b80601c8190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61247361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f790614627565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361256f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612566906147ca565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61263461286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b890614627565b60405180910390fd5b6126cb8282613485565b5050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b61270361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278790614627565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960169054906101000a900460ff1681565b600061286683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506136dd565b905092915050565b600033905090565b60008383111582906128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b59190613f54565b60405180910390fd5b50600083856128cd91906147ea565b9050809150509392505050565b60006128e4611e6e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156129525750612922611e6e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156129a757601960169054906101000a900460ff166129a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299d9061486a565b60405180910390fd5b5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a4b5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612a5457600080fd5b601960149054906101000a900460ff1615612a7b57612a74848484613740565b90506131b2565b601c5482111580612ad55750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0b906148d6565b60405180910390fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b7a5750600860149054906101000a900460ff165b15612c1657601d54612bd483600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b1115612c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0c90614942565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612c815750601960149054906101000a900460ff16155b8015612c995750601960159054906101000a900460ff165b8015612ce65750601e54600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15612cf457612cf3613203565b5b612d7d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e665750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612e705782612e7c565b612e7b858585613971565b5b9050612ed081600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661302d57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613000929190614962565b600060405180830381600087803b15801561301a57600080fd5b505af192505050801561302b575060015b505b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661314757601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161311a929190614962565b600060405180830381600087803b15801561313457600080fd5b505af1925050508015613145575060015b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131a49190613ea0565b60405180910390a360019150505b9392505050565b60006131fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612876565b905092915050565b6001601960146101000a81548160ff0219169083151502179055506000600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061329f6002613291606461328360125487613b1990919063ffffffff16565b61282490919063ffffffff16565b61282490919063ffffffff16565b905060006132b682846131b990919063ffffffff16565b90506132c181613b93565b600047905060006132f060646132e260115485613b1990919063ffffffff16565b61282490919063ffffffff16565b9050600061331c606461330e60135486613b1990919063ffffffff16565b61282490919063ffffffff16565b9050600061335b600261334d606461333f60125489613b1990919063ffffffff16565b61282490919063ffffffff16565b61282490919063ffffffff16565b905060008411156133d057601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156133ce573d6000803e3d6000fd5b505b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561343a57600080fd5b505af19350505050801561344c575060015b506000861115613461576134608682613db4565b5b505050505050506000601960146101000a81548160ff021916908315150217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561350f5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61351857600080fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561360a57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016135d39291906149c6565b600060405180830381600087803b1580156135ed57600080fd5b505af1158015613601573d6000803e3d6000fd5b505050506136d9565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016136a6929190614962565b600060405180830381600087803b1580156136c057600080fd5b505af11580156136d4573d6000803e3d6000fd5b505050505b5050565b60008083118290613724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371b9190613f54565b60405180910390fd5b50600083856137339190614a1e565b9050809150509392505050565b60006137cb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061386082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139009190613ea0565b60405180910390a3600190509392505050565b60008082846139229190614a4f565b905083811015613967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395e90614af1565b60405180910390fd5b8091505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146139d157600f546139d5565b6010545b905060006139ff60646139f18487613b1990919063ffffffff16565b61282490919063ffffffff16565b9050613a5381600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613af39190613ea0565b60405180910390a3613b0e81856131b990919063ffffffff16565b925050509392505050565b6000808303613b2b5760009050613b8d565b60008284613b399190614b11565b9050828482613b489190614a1e565b14613b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b7f90614bdd565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff811115613bb057613baf614347565b5b604051908082528060200260200182016040528015613bde5781602001602082028036833780820191505090505b5090503081600081518110613bf657613bf56146b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc19190614c12565b81600181518110613cd557613cd46146b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d193083610df8565b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d7e959493929190614cfd565b600060405180830381600087803b158015613d9857600080fd5b505af1158015613dac573d6000803e3d6000fd5b505050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613e3d96959493929190614d57565b60606040518083038185885af1158015613e5b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e809190614db8565b5050505050565b6000819050919050565b613e9a81613e87565b82525050565b6000602082019050613eb56000830184613e91565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ef5578082015181840152602081019050613eda565b83811115613f04576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f2682613ebb565b613f308185613ec6565b9350613f40818560208601613ed7565b613f4981613f0a565b840191505092915050565b60006020820190508181036000830152613f6e8184613f1b565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613fb582613f8a565b9050919050565b613fc581613faa565b8114613fd057600080fd5b50565b600081359050613fe281613fbc565b92915050565b613ff181613e87565b8114613ffc57600080fd5b50565b60008135905061400e81613fe8565b92915050565b6000806040838503121561402b5761402a613f80565b5b600061403985828601613fd3565b925050602061404a85828601613fff565b9150509250929050565b60008115159050919050565b61406981614054565b82525050565b60006020820190506140846000830184614060565b92915050565b600061409582613f8a565b9050919050565b6140a58161408a565b81146140b057600080fd5b50565b6000813590506140c28161409c565b92915050565b6000602082840312156140de576140dd613f80565b5b60006140ec848285016140b3565b91505092915050565b60008060006060848603121561410e5761410d613f80565b5b600061411c86828701613fd3565b935050602061412d86828701613fd3565b925050604061413e86828701613fff565b9150509250925092565b60006020828403121561415e5761415d613f80565b5b600061416c84828501613fd3565b91505092915050565b6000806040838503121561418c5761418b613f80565b5b600061419a85828601613fff565b92505060206141ab85828601613fff565b9150509250929050565b6000806000606084860312156141ce576141cd613f80565b5b60006141dc86828701613fff565b93505060206141ed86828701613fff565b92505060406141fe86828701613fff565b9150509250925092565b600060ff82169050919050565b61421e81614208565b82525050565b60006020820190506142396000830184614215565b92915050565b61424881614054565b811461425357600080fd5b50565b6000813590506142658161423f565b92915050565b6000806040838503121561428257614281613f80565b5b600061429085828601614256565b92505060206142a185828601613fff565b9150509250929050565b6142b481613faa565b82525050565b60006020820190506142cf60008301846142ab565b92915050565b6000602082840312156142eb576142ea613f80565b5b60006142f984828501613fff565b91505092915050565b6000806040838503121561431957614318613f80565b5b600061432785828601613fd3565b925050602061433885828601614256565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61437f82613f0a565b810181811067ffffffffffffffff8211171561439e5761439d614347565b5b80604052505050565b60006143b1613f76565b90506143bd8282614376565b919050565b600067ffffffffffffffff8211156143dd576143dc614347565b5b602082029050602081019050919050565b600080fd5b6000614406614401846143c2565b6143a7565b90508083825260208201905060208402830185811115614429576144286143ee565b5b835b81811015614452578061443e8882613fd3565b84526020840193505060208101905061442b565b5050509392505050565b600082601f83011261447157614470614342565b5b81356144818482602086016143f3565b91505092915050565b6000602082840312156144a05761449f613f80565b5b600082013567ffffffffffffffff8111156144be576144bd613f85565b5b6144ca8482850161445c565b91505092915050565b600080604083850312156144ea576144e9613f80565b5b60006144f885828601613fd3565b925050602061450985828601613fd3565b9150509250929050565b6000819050919050565b600061453861453361452e84613f8a565b614513565b613f8a565b9050919050565b600061454a8261451d565b9050919050565b600061455c8261453f565b9050919050565b61456c81614551565b82525050565b60006020820190506145876000830184614563565b92915050565b60006145988261451d565b9050919050565b60006145aa8261458d565b9050919050565b6145ba8161459f565b82525050565b60006020820190506145d560008301846145b1565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614611602083613ec6565b915061461c826145db565b602082019050919050565b6000602082019050818103600083015261464081614604565b9050919050565b600060408201905061465c6000830185613e91565b6146696020830184613e91565b9392505050565b60008151905061467f81613fe8565b92915050565b60006020828403121561469b5761469a613f80565b5b60006146a984828501614670565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061471b82613e87565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361474d5761474c6146e1565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147b4602683613ec6565b91506147bf82614758565b604082019050919050565b600060208201905081810360008301526147e3816147a7565b9050919050565b60006147f582613e87565b915061480083613e87565b925082821015614813576148126146e1565b5b828203905092915050565b7f686f6c6420757220686f7273657320626967206775792e000000000000000000600082015250565b6000614854601783613ec6565b915061485f8261481e565b602082019050919050565b6000602082019050818103600083015261488381614847565b9050919050565b7f7478000000000000000000000000000000000000000000000000000000000000600082015250565b60006148c0600283613ec6565b91506148cb8261488a565b602082019050919050565b600060208201905081810360008301526148ef816148b3565b9050919050565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b600061492c600683613ec6565b9150614937826148f6565b602082019050919050565b6000602082019050818103600083015261495b8161491f565b9050919050565b600060408201905061497760008301856142ab565b6149846020830184613e91565b9392505050565b6000819050919050565b60006149b06149ab6149a68461498b565b614513565b613e87565b9050919050565b6149c081614995565b82525050565b60006040820190506149db60008301856142ab565b6149e860208301846149b7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a2982613e87565b9150614a3483613e87565b925082614a4457614a436149ef565b5b828204905092915050565b6000614a5a82613e87565b9150614a6583613e87565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a9a57614a996146e1565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614adb601b83613ec6565b9150614ae682614aa5565b602082019050919050565b60006020820190508181036000830152614b0a81614ace565b9050919050565b6000614b1c82613e87565b9150614b2783613e87565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b6057614b5f6146e1565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bc7602183613ec6565b9150614bd282614b6b565b604082019050919050565b60006020820190508181036000830152614bf681614bba565b9050919050565b600081519050614c0c81613fbc565b92915050565b600060208284031215614c2857614c27613f80565b5b6000614c3684828501614bfd565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c7481613faa565b82525050565b6000614c868383614c6b565b60208301905092915050565b6000602082019050919050565b6000614caa82614c3f565b614cb48185614c4a565b9350614cbf83614c5b565b8060005b83811015614cf0578151614cd78882614c7a565b9750614ce283614c92565b925050600181019050614cc3565b5085935050505092915050565b600060a082019050614d126000830188613e91565b614d1f60208301876149b7565b8181036040830152614d318186614c9f565b9050614d4060608301856142ab565b614d4d6080830184613e91565b9695505050505050565b600060c082019050614d6c60008301896142ab565b614d796020830188613e91565b614d8660408301876149b7565b614d9360608301866149b7565b614da060808301856142ab565b614dad60a0830184613e91565b979650505050505050565b600080600060608486031215614dd157614dd0613f80565b5b6000614ddf86828701614670565b9350506020614df086828701614670565b9250506040614e0186828701614670565b915050925092509256fea26469706673582212209662e59aea99769a5024e19e874d99451b9b0ede34468d61e4add324d033f6f764736f6c634300080d003360806040526ec097ce7bc90715b34b9f1000000000600b55610708600c556000600d5534801561002e57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507372e4f9f808c49a2a61de9c5896298920dc4eeea9600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f24806101286000396000f3fe6080604052600436106101025760003560e01c8063997664d711610095578063d0e30db011610064578063d0e30db01461034c578063e2d2e21914610356578063efca2eed14610381578063ffb2c479146103ac578063ffd49c84146103d557610111565b8063997664d71461028e5780639e050023146102b9578063bd14ae27146102e4578063ce7c2ac21461030d57610111565b80632d48e896116100d15780632d48e896146101d25780633a98ef39146101fb5780634fab0ae8146102265780638c21cd521461025157610111565b806311ce023d1461011657806314b6ca961461014157806326987b601461016a57806328fd31981461019557610111565b366101115761010f610400565b005b600080fd5b34801561012257600080fd5b5061012b6107e8565b604051610138919061167d565b60405180910390f35b34801561014d57600080fd5b5061016860048036038101906101639190611727565b6107ee565b005b34801561017657600080fd5b5061017f610aad565b60405161018c919061167d565b60405180910390f35b3480156101a157600080fd5b506101bc60048036038101906101b79190611767565b610ab3565b6040516101c9919061167d565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611794565b610bcc565b005b34801561020757600080fd5b50610210610c36565b60405161021d919061167d565b60405180910390f35b34801561023257600080fd5b5061023b610c3c565b604051610248919061167d565b60405180910390f35b34801561025d57600080fd5b5061027860048036038101906102739190611767565b610c42565b60405161028591906117ef565b60405180910390f35b34801561029a57600080fd5b506102a3610caf565b6040516102b0919061167d565b60405180910390f35b3480156102c557600080fd5b506102ce610cb5565b6040516102db9190611819565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190611767565b610cdb565b005b34801561031957600080fd5b50610334600480360381019061032f9190611767565b610d3f565b60405161034393929190611834565b60405180910390f35b610354610400565b005b34801561036257600080fd5b5061036b610d69565b604051610378919061167d565b60405180910390f35b34801561038d57600080fd5b50610396610d6f565b6040516103a3919061167d565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce919061186b565b610d75565b005b3480156103e157600080fd5b506103ea610eb0565b6040516103f7919061167d565b60405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161045d9190611819565b602060405180830381865afa15801561047a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049e91906118ad565b90506000600267ffffffffffffffff8111156104bd576104bc6118da565b5b6040519080825280602002602001820160405280156104eb5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f919061191e565b816000815181106105935761059261194b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106106045761060361194b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b81526004016106a19493929190611a7d565b6000604051808303818588803b1580156106ba57600080fd5b505af11580156106ce573d6000803e3d6000fd5b5050505050600061078383600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107349190611819565b602060405180830381865afa158015610751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077591906118ad565b610eb690919063ffffffff16565b905061079a81600854610f0090919063ffffffff16565b6008819055506107dd6107cc6007546107be84600b54610f5e90919063ffffffff16565b610fd890919063ffffffff16565b600a54610f0090919063ffffffff16565b600a81905550505050565b600b5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084657600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111561089b5761089a82611022565b5b6000811180156108ed57506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b15610900576108fb826112b5565b610962565b60008114801561095257506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156109615761096082611364565b5b5b6109cb816109bd600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754610eb690919063ffffffff16565b610f0090919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610a63600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600e5481565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015403610b075760009050610bc7565b6000610b54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050808211610baf57600092505050610bc7565b610bc28183610eb690919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c2457600080fd5b81600c8190555080600d819055505050565b60075481565b600d5481565b600042600c54600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c929190611af8565b108015610ca85750600d54610ca683610ab3565b115b9050919050565b60085481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d3357600080fd5b610d3c81611022565b50565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b600a5481565b60095481565b6000600380549050905060008103610d8d5750610ead565b60008060005a90505b8482108015610da457508383105b15610ea85783600e5410610dbb576000600e819055505b610e046003600e5481548110610dd457610dd361194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610c42565b15610e5357610e526003600e5481548110610e2257610e2161194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611022565b5b610e78610e695a83610eb690919063ffffffff16565b83610f0090919063ffffffff16565b91505a9050600e6000815480929190610e9090611b4e565b91905055508280610ea090611b4e565b935050610d96565b505050505b50565b600c5481565b6000610ef883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061159d565b905092915050565b6000808284610f0f9190611af8565b905083811015610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b90611bf3565b60405180910390fd5b8091505092915050565b6000808303610f705760009050610fd2565b60008284610f7e9190611c13565b9050828482610f8d9190611c9c565b14610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc490611d3f565b60405180910390fd5b809150505b92915050565b600061101a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611601565b905092915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015403156112b257600061107882610ab3565b905060008111156112b05761109881600954610f0090919063ffffffff16565b600981905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016110fb929190611d5f565b6020604051808303816000875af115801561111a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113e9190611db4565b5042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111d881600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610f0090919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611269600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360016003805490506113789190611de1565b815481106113895761138861194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106114075761140661194b565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460046000600360016003805490506114a79190611de1565b815481106114b8576114b761194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600380548061153357611532611e15565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000611596600b54611588600a5485610f5e90919063ffffffff16565b610fd890919063ffffffff16565b9050919050565b60008383111582906115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc9190611ecc565b60405180910390fd5b50600083856115f49190611de1565b9050809150509392505050565b60008083118290611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163f9190611ecc565b60405180910390fd5b50600083856116579190611c9c565b9050809150509392505050565b6000819050919050565b61167781611664565b82525050565b6000602082019050611692600083018461166e565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006116c88261169d565b9050919050565b6116d8816116bd565b81146116e357600080fd5b50565b6000813590506116f5816116cf565b92915050565b61170481611664565b811461170f57600080fd5b50565b600081359050611721816116fb565b92915050565b6000806040838503121561173e5761173d611698565b5b600061174c858286016116e6565b925050602061175d85828601611712565b9150509250929050565b60006020828403121561177d5761177c611698565b5b600061178b848285016116e6565b91505092915050565b600080604083850312156117ab576117aa611698565b5b60006117b985828601611712565b92505060206117ca85828601611712565b9150509250929050565b60008115159050919050565b6117e9816117d4565b82525050565b600060208201905061180460008301846117e0565b92915050565b611813816116bd565b82525050565b600060208201905061182e600083018461180a565b92915050565b6000606082019050611849600083018661166e565b611856602083018561166e565b611863604083018461166e565b949350505050565b60006020828403121561188157611880611698565b5b600061188f84828501611712565b91505092915050565b6000815190506118a7816116fb565b92915050565b6000602082840312156118c3576118c2611698565b5b60006118d184828501611898565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050611918816116cf565b92915050565b60006020828403121561193457611933611698565b5b600061194284828501611909565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b60006119a96119a461199f8461197a565b611984565b611664565b9050919050565b6119b98161198e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6119f4816116bd565b82525050565b6000611a0683836119eb565b60208301905092915050565b6000602082019050919050565b6000611a2a826119bf565b611a3481856119ca565b9350611a3f836119db565b8060005b83811015611a70578151611a5788826119fa565b9750611a6283611a12565b925050600181019050611a43565b5085935050505092915050565b6000608082019050611a9260008301876119b0565b8181036020830152611aa48186611a1f565b9050611ab3604083018561180a565b611ac0606083018461166e565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b0382611664565b9150611b0e83611664565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611b4357611b42611ac9565b5b828201905092915050565b6000611b5982611664565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b8b57611b8a611ac9565b5b600182019050919050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611bdd601b83611b96565b9150611be882611ba7565b602082019050919050565b60006020820190508181036000830152611c0c81611bd0565b9050919050565b6000611c1e82611664565b9150611c2983611664565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c6257611c61611ac9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611ca782611664565b9150611cb283611664565b925082611cc257611cc1611c6d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d29602183611b96565b9150611d3482611ccd565b604082019050919050565b60006020820190508181036000830152611d5881611d1c565b9050919050565b6000604082019050611d74600083018561180a565b611d81602083018461166e565b9392505050565b611d91816117d4565b8114611d9c57600080fd5b50565b600081519050611dae81611d88565b92915050565b600060208284031215611dca57611dc9611698565b5b6000611dd884828501611d9f565b91505092915050565b6000611dec82611664565b9150611df783611664565b925082821015611e0a57611e09611ac9565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081519050919050565b60005b83811015611e6d578082015181840152602081019050611e52565b83811115611e7c576000848401525b50505050565b6000601f19601f8301169050919050565b6000611e9e82611e44565b611ea88185611b96565b9350611eb8818560208601611e4f565b611ec181611e82565b840191505092915050565b60006020820190508181036000830152611ee68184611e93565b90509291505056fea264697066735822122086f8a29d280f59be2e205161347e360ae7f655f875ff6668cde54505211160b064736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106103905760003560e01c80637db1342c116101dc578063bb542ef011610102578063dd62ed3e116100a0578063f8b45b051161006f578063f8b45b0514610d0b578063fabe628314610d36578063fec38f8314610d5f578063ffb54a9914610d8a57610397565b8063dd62ed3e14610c51578063f2fde38b14610c8e578063f708a64f14610cb7578063f887ea4014610ce057610397565b8063c8d1293d116100dc578063c8d1293d14610bbb578063c9567bf914610be6578063caa5581b14610bfd578063d920334e14610c2857610397565b8063bb542ef014610b3c578063bf56b37114610b65578063c45a015514610b9057610397565b80638ea5220f1161017a578063a6403ef511610149578063a6403ef514610a80578063a8aa1b3114610aab578063a9059cbb14610ad6578063b515566a14610b1357610397565b80638ea5220f146109d657806395d89b4114610a015780639e05002314610a2c578063a3a2e89e14610a5757610397565b806389291a8f116101b657806389291a8f1461092c578063893d20e8146109435780638b42507f1461096e5780638da5cb5b146109ab57610397565b80637db1342c146108af5780637dfcbe34146108d8578063819340311461090357610397565b80633f4218e0116102c15780636303516c1161025f578063715018a61161022e578063715018a6146108055780637437681e1461081c57806375df13051461084757806377359aa71461087257610397565b80636303516c1461075d57806366eb3785146107885780636f2506d51461079f57806370a08231146107c857610397565b8063470624021161029b57806347062402146106b357806348cc38fa146106de5780634a74bb02146106f5578063571ac8b01461072057610397565b80633f4218e01461060e5780634355855a1461064b578063454343771461068857610397565b80632b112e491161032e5780632dbea2e1116103085780632dbea2e11461056857806330ca34ee14610591578063313ce567146105ba5780633dab5269146105e557610397565b80632b112e49146104e95780632b14ca56146105145780632d48e8961461053f57610397565b806318160ddd1161036a57806318160ddd1461042f5780631f53ac021461045a57806323b872dd14610483578063273123b7146104c057610397565b80630445b6671461039c57806306fdde03146103c7578063095ea7b3146103f257610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610db5565b6040516103be9190613ea0565b60405180910390f35b3480156103d357600080fd5b506103dc610dbb565b6040516103e99190613f54565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190614014565b610df8565b604051610426919061406f565b60405180910390f35b34801561043b57600080fd5b50610444610eea565b6040516104519190613ea0565b60405180910390f35b34801561046657600080fd5b50610481600480360381019061047c91906140c8565b610ef4565b005b34801561048f57600080fd5b506104aa60048036038101906104a591906140f5565b610fcd565b6040516104b7919061406f565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e29190614148565b6111cd565b005b3480156104f557600080fd5b506104fe6112bd565b60405161050b9190613ea0565b60405180910390f35b34801561052057600080fd5b5061052961133f565b6040516105369190613ea0565b60405180910390f35b34801561054b57600080fd5b5061056660048036038101906105619190614175565b611345565b005b34801561057457600080fd5b5061058f600480360381019061058a91906141b5565b61146d565b005b34801561059d57600080fd5b506105b860048036038101906105b39190614175565b61151c565b005b3480156105c657600080fd5b506105cf6115c3565b6040516105dc9190614224565b60405180910390f35b3480156105f157600080fd5b5061060c6004803603810190610607919061426b565b6115cc565b005b34801561061a57600080fd5b5061063560048036038101906106309190614148565b611686565b604051610642919061406f565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d9190614148565b6116a6565b60405161067f919061406f565b60405180910390f35b34801561069457600080fd5b5061069d6116c6565b6040516106aa9190613ea0565b60405180910390f35b3480156106bf57600080fd5b506106c86116cc565b6040516106d59190613ea0565b60405180910390f35b3480156106ea57600080fd5b506106f36116d2565b005b34801561070157600080fd5b5061070a611761565b604051610717919061406f565b60405180910390f35b34801561072c57600080fd5b5061074760048036038101906107429190614148565b611774565b604051610754919061406f565b60405180910390f35b34801561076957600080fd5b506107726117a7565b60405161077f91906142ba565b60405180910390f35b34801561079457600080fd5b5061079d6117cd565b005b3480156107ab57600080fd5b506107c660048036038101906107c191906142d5565b61186c565b005b3480156107d457600080fd5b506107ef60048036038101906107ea9190614148565b61190b565b6040516107fc9190613ea0565b60405180910390f35b34801561081157600080fd5b5061081a611954565b005b34801561082857600080fd5b50610831611aa7565b60405161083e9190613ea0565b60405180910390f35b34801561085357600080fd5b5061085c611aad565b6040516108699190613ea0565b60405180910390f35b34801561087e57600080fd5b5061089960048036038101906108949190614148565b611ab3565b6040516108a69190613ea0565b60405180910390f35b3480156108bb57600080fd5b506108d660048036038101906108d191906142d5565b611b58565b005b3480156108e457600080fd5b506108ed611bf7565b6040516108fa919061406f565b60405180910390f35b34801561090f57600080fd5b5061092a600480360381019061092591906142d5565b611c0a565b005b34801561093857600080fd5b50610941611d2f565b005b34801561094f57600080fd5b50610958611e3f565b60405161096591906142ba565b60405180910390f35b34801561097a57600080fd5b5061099560048036038101906109909190614148565b611e4e565b6040516109a2919061406f565b60405180910390f35b3480156109b757600080fd5b506109c0611e6e565b6040516109cd91906142ba565b60405180910390f35b3480156109e257600080fd5b506109eb611e97565b6040516109f891906142ba565b60405180910390f35b348015610a0d57600080fd5b50610a16611ebd565b604051610a239190613f54565b60405180910390f35b348015610a3857600080fd5b50610a41611efa565b604051610a4e91906142ba565b60405180910390f35b348015610a6357600080fd5b50610a7e6004803603810190610a799190614302565b611f20565b005b348015610a8c57600080fd5b50610a95612010565b604051610aa29190613ea0565b60405180910390f35b348015610ab757600080fd5b50610ac0612016565b604051610acd91906142ba565b60405180910390f35b348015610ae257600080fd5b50610afd6004803603810190610af89190614014565b61203c565b604051610b0a919061406f565b60405180910390f35b348015610b1f57600080fd5b50610b3a6004803603810190610b35919061448a565b612051565b005b348015610b4857600080fd5b50610b636004803603810190610b5e91906140c8565b61217b565b005b348015610b7157600080fd5b50610b7a612254565b604051610b879190613ea0565b60405180910390f35b348015610b9c57600080fd5b50610ba561225a565b604051610bb291906142ba565b60405180910390f35b348015610bc757600080fd5b50610bd0612280565b604051610bdd9190613ea0565b60405180910390f35b348015610bf257600080fd5b50610bfb612286565b005b348015610c0957600080fd5b50610c1261233f565b604051610c1f9190613ea0565b60405180910390f35b348015610c3457600080fd5b50610c4f6004803603810190610c4a91906142d5565b612345565b005b348015610c5d57600080fd5b50610c786004803603810190610c7391906144d3565b6123e4565b604051610c859190613ea0565b60405180910390f35b348015610c9a57600080fd5b50610cb56004803603810190610cb09190614148565b61246b565b005b348015610cc357600080fd5b50610cde6004803603810190610cd99190614302565b61262c565b005b348015610cec57600080fd5b50610cf56126cf565b604051610d029190614572565b60405180910390f35b348015610d1757600080fd5b50610d206126f5565b604051610d2d9190613ea0565b60405180910390f35b348015610d4257600080fd5b50610d5d6004803603810190610d589190614302565b6126fb565b005b348015610d6b57600080fd5b50610d746127eb565b604051610d8191906145c0565b60405180910390f35b348015610d9657600080fd5b50610d9f612811565b604051610dac919061406f565b60405180910390f35b601e5481565b60606040518060400160405280601481526020017f24424954434f494e205265666c656374696f6e73000000000000000000000000815250905090565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ed89190613ea0565b60405180910390a36001905092915050565b6000600254905090565b610efc61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8090614627565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146111b957611138826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6111c48484846128da565b90509392505050565b6111d561286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125990614627565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061133a6112ed600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661190b565b61132c61131b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661190b565b6002546131b990919063ffffffff16565b6131b990919063ffffffff16565b905090565b60105481565b61134d61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d190614627565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611437929190614647565b600060405180830381600087803b15801561145157600080fd5b505af1158015611465573d6000803e3d6000fd5b505050505050565b61147561286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f990614627565b60405180910390fd5b826011819055508160128190555080601381905550505050565b61152461286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890614627565b60405180910390fd5b81600f81905550806010819055505050565b60006012905090565b6115d461286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165890614627565b60405180910390fd5b81601960156101000a81548160ff02191690831515021790555080601e819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b60145481565b600f5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd14ae27336040518263ffffffff1660e01b815260040161172d91906142ba565b600060405180830381600087803b15801561174757600080fd5b505af115801561175b573d6000803e3d6000fd5b50505050565b601960159054906101000a900460ff1681565b60006117a0827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610df8565b9050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117d561286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185990614627565b60405180910390fd5b61186a613203565b565b61187461286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f890614627565b60405180910390fd5b80601b8190555050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61195c61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e090614627565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c5481565b60135481565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b8152600401611b1091906142ba565b602060405180830381865afa158015611b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b519190614685565b9050919050565b611b6061286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be490614627565b60405180910390fd5b80601d8190555050565b600860149054906101000a900460ff1681565b611c1261286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9690614627565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479826040518263ffffffff1660e01b8152600401611cfa9190613ea0565b600060405180830381600087803b158015611d1457600080fd5b505af1158015611d28573d6000803e3d6000fd5b5050505050565b611d3761286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb90614627565b60405180910390fd5b60004790506000811115611e3c57601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e3a573d6000803e3d6000fd5b505b50565b6000611e49611e6e565b905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600781526020017f48504f5331305200000000000000000000000000000000000000000000000000815250905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f2861286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fac90614627565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006120493384846128da565b905092915050565b61205961286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120dd90614627565b60405180910390fd5b60005b81518110156121775760016009600084848151811061210b5761210a6146b2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061216f90614710565b9150506120e9565b5050565b61218361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220790614627565b60405180910390fd5b80601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b61228e61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461231b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231290614627565b60405180910390fd5b43600d819055506001601960166101000a81548160ff021916908315150217905550565b60115481565b61234d61286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d190614627565b60405180910390fd5b80601c8190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61247361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f790614627565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361256f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612566906147ca565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61263461286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b890614627565b60405180910390fd5b6126cb8282613485565b5050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b61270361286e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278790614627565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960169054906101000a900460ff1681565b600061286683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506136dd565b905092915050565b600033905090565b60008383111582906128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b59190613f54565b60405180910390fd5b50600083856128cd91906147ea565b9050809150509392505050565b60006128e4611e6e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156129525750612922611e6e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156129a757601960169054906101000a900460ff166129a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299d9061486a565b60405180910390fd5b5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a4b5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612a5457600080fd5b601960149054906101000a900460ff1615612a7b57612a74848484613740565b90506131b2565b601c5482111580612ad55750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0b906148d6565b60405180910390fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b7a5750600860149054906101000a900460ff165b15612c1657601d54612bd483600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b1115612c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0c90614942565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612c815750601960149054906101000a900460ff16155b8015612c995750601960159054906101000a900460ff165b8015612ce65750601e54600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15612cf457612cf3613203565b5b612d7d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e665750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612e705782612e7c565b612e7b858585613971565b5b9050612ed081600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661302d57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613000929190614962565b600060405180830381600087803b15801561301a57600080fd5b505af192505050801561302b575060015b505b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661314757601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161311a929190614962565b600060405180830381600087803b15801561313457600080fd5b505af1925050508015613145575060015b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131a49190613ea0565b60405180910390a360019150505b9392505050565b60006131fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612876565b905092915050565b6001601960146101000a81548160ff0219169083151502179055506000600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061329f6002613291606461328360125487613b1990919063ffffffff16565b61282490919063ffffffff16565b61282490919063ffffffff16565b905060006132b682846131b990919063ffffffff16565b90506132c181613b93565b600047905060006132f060646132e260115485613b1990919063ffffffff16565b61282490919063ffffffff16565b9050600061331c606461330e60135486613b1990919063ffffffff16565b61282490919063ffffffff16565b9050600061335b600261334d606461333f60125489613b1990919063ffffffff16565b61282490919063ffffffff16565b61282490919063ffffffff16565b905060008411156133d057601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156133ce573d6000803e3d6000fd5b505b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561343a57600080fd5b505af19350505050801561344c575060015b506000861115613461576134608682613db4565b5b505050505050506000601960146101000a81548160ff021916908315150217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561350f5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61351857600080fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561360a57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016135d39291906149c6565b600060405180830381600087803b1580156135ed57600080fd5b505af1158015613601573d6000803e3d6000fd5b505050506136d9565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016136a6929190614962565b600060405180830381600087803b1580156136c057600080fd5b505af11580156136d4573d6000803e3d6000fd5b505050505b5050565b60008083118290613724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371b9190613f54565b60405180910390fd5b50600083856137339190614a1e565b9050809150509392505050565b60006137cb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128769092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061386082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139009190613ea0565b60405180910390a3600190509392505050565b60008082846139229190614a4f565b905083811015613967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395e90614af1565b60405180910390fd5b8091505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146139d157600f546139d5565b6010545b905060006139ff60646139f18487613b1990919063ffffffff16565b61282490919063ffffffff16565b9050613a5381600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461391390919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613af39190613ea0565b60405180910390a3613b0e81856131b990919063ffffffff16565b925050509392505050565b6000808303613b2b5760009050613b8d565b60008284613b399190614b11565b9050828482613b489190614a1e565b14613b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b7f90614bdd565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff811115613bb057613baf614347565b5b604051908082528060200260200182016040528015613bde5781602001602082028036833780820191505090505b5090503081600081518110613bf657613bf56146b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc19190614c12565b81600181518110613cd557613cd46146b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d193083610df8565b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d7e959493929190614cfd565b600060405180830381600087803b158015613d9857600080fd5b505af1158015613dac573d6000803e3d6000fd5b505050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613e3d96959493929190614d57565b60606040518083038185885af1158015613e5b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e809190614db8565b5050505050565b6000819050919050565b613e9a81613e87565b82525050565b6000602082019050613eb56000830184613e91565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ef5578082015181840152602081019050613eda565b83811115613f04576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f2682613ebb565b613f308185613ec6565b9350613f40818560208601613ed7565b613f4981613f0a565b840191505092915050565b60006020820190508181036000830152613f6e8184613f1b565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613fb582613f8a565b9050919050565b613fc581613faa565b8114613fd057600080fd5b50565b600081359050613fe281613fbc565b92915050565b613ff181613e87565b8114613ffc57600080fd5b50565b60008135905061400e81613fe8565b92915050565b6000806040838503121561402b5761402a613f80565b5b600061403985828601613fd3565b925050602061404a85828601613fff565b9150509250929050565b60008115159050919050565b61406981614054565b82525050565b60006020820190506140846000830184614060565b92915050565b600061409582613f8a565b9050919050565b6140a58161408a565b81146140b057600080fd5b50565b6000813590506140c28161409c565b92915050565b6000602082840312156140de576140dd613f80565b5b60006140ec848285016140b3565b91505092915050565b60008060006060848603121561410e5761410d613f80565b5b600061411c86828701613fd3565b935050602061412d86828701613fd3565b925050604061413e86828701613fff565b9150509250925092565b60006020828403121561415e5761415d613f80565b5b600061416c84828501613fd3565b91505092915050565b6000806040838503121561418c5761418b613f80565b5b600061419a85828601613fff565b92505060206141ab85828601613fff565b9150509250929050565b6000806000606084860312156141ce576141cd613f80565b5b60006141dc86828701613fff565b93505060206141ed86828701613fff565b92505060406141fe86828701613fff565b9150509250925092565b600060ff82169050919050565b61421e81614208565b82525050565b60006020820190506142396000830184614215565b92915050565b61424881614054565b811461425357600080fd5b50565b6000813590506142658161423f565b92915050565b6000806040838503121561428257614281613f80565b5b600061429085828601614256565b92505060206142a185828601613fff565b9150509250929050565b6142b481613faa565b82525050565b60006020820190506142cf60008301846142ab565b92915050565b6000602082840312156142eb576142ea613f80565b5b60006142f984828501613fff565b91505092915050565b6000806040838503121561431957614318613f80565b5b600061432785828601613fd3565b925050602061433885828601614256565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61437f82613f0a565b810181811067ffffffffffffffff8211171561439e5761439d614347565b5b80604052505050565b60006143b1613f76565b90506143bd8282614376565b919050565b600067ffffffffffffffff8211156143dd576143dc614347565b5b602082029050602081019050919050565b600080fd5b6000614406614401846143c2565b6143a7565b90508083825260208201905060208402830185811115614429576144286143ee565b5b835b81811015614452578061443e8882613fd3565b84526020840193505060208101905061442b565b5050509392505050565b600082601f83011261447157614470614342565b5b81356144818482602086016143f3565b91505092915050565b6000602082840312156144a05761449f613f80565b5b600082013567ffffffffffffffff8111156144be576144bd613f85565b5b6144ca8482850161445c565b91505092915050565b600080604083850312156144ea576144e9613f80565b5b60006144f885828601613fd3565b925050602061450985828601613fd3565b9150509250929050565b6000819050919050565b600061453861453361452e84613f8a565b614513565b613f8a565b9050919050565b600061454a8261451d565b9050919050565b600061455c8261453f565b9050919050565b61456c81614551565b82525050565b60006020820190506145876000830184614563565b92915050565b60006145988261451d565b9050919050565b60006145aa8261458d565b9050919050565b6145ba8161459f565b82525050565b60006020820190506145d560008301846145b1565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614611602083613ec6565b915061461c826145db565b602082019050919050565b6000602082019050818103600083015261464081614604565b9050919050565b600060408201905061465c6000830185613e91565b6146696020830184613e91565b9392505050565b60008151905061467f81613fe8565b92915050565b60006020828403121561469b5761469a613f80565b5b60006146a984828501614670565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061471b82613e87565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361474d5761474c6146e1565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147b4602683613ec6565b91506147bf82614758565b604082019050919050565b600060208201905081810360008301526147e3816147a7565b9050919050565b60006147f582613e87565b915061480083613e87565b925082821015614813576148126146e1565b5b828203905092915050565b7f686f6c6420757220686f7273657320626967206775792e000000000000000000600082015250565b6000614854601783613ec6565b915061485f8261481e565b602082019050919050565b6000602082019050818103600083015261488381614847565b9050919050565b7f7478000000000000000000000000000000000000000000000000000000000000600082015250565b60006148c0600283613ec6565b91506148cb8261488a565b602082019050919050565b600060208201905081810360008301526148ef816148b3565b9050919050565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b600061492c600683613ec6565b9150614937826148f6565b602082019050919050565b6000602082019050818103600083015261495b8161491f565b9050919050565b600060408201905061497760008301856142ab565b6149846020830184613e91565b9392505050565b6000819050919050565b60006149b06149ab6149a68461498b565b614513565b613e87565b9050919050565b6149c081614995565b82525050565b60006040820190506149db60008301856142ab565b6149e860208301846149b7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a2982613e87565b9150614a3483613e87565b925082614a4457614a436149ef565b5b828204905092915050565b6000614a5a82613e87565b9150614a6583613e87565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a9a57614a996146e1565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614adb601b83613ec6565b9150614ae682614aa5565b602082019050919050565b60006020820190508181036000830152614b0a81614ace565b9050919050565b6000614b1c82613e87565b9150614b2783613e87565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b6057614b5f6146e1565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bc7602183613ec6565b9150614bd282614b6b565b604082019050919050565b60006020820190508181036000830152614bf681614bba565b9050919050565b600081519050614c0c81613fbc565b92915050565b600060208284031215614c2857614c27613f80565b5b6000614c3684828501614bfd565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c7481613faa565b82525050565b6000614c868383614c6b565b60208301905092915050565b6000602082019050919050565b6000614caa82614c3f565b614cb48185614c4a565b9350614cbf83614c5b565b8060005b83811015614cf0578151614cd78882614c7a565b9750614ce283614c92565b925050600181019050614cc3565b5085935050505092915050565b600060a082019050614d126000830188613e91565b614d1f60208301876149b7565b8181036040830152614d318186614c9f565b9050614d4060608301856142ab565b614d4d6080830184613e91565b9695505050505050565b600060c082019050614d6c60008301896142ab565b614d796020830188613e91565b614d8660408301876149b7565b614d9360608301866149b7565b614da060808301856142ab565b614dad60a0830184613e91565b979650505050505050565b600080600060608486031215614dd157614dd0613f80565b5b6000614ddf86828701614670565b9350506020614df086828701614670565b9250506040614e0186828701614670565b915050925092509256fea26469706673582212209662e59aea99769a5024e19e874d99451b9b0ede34468d61e4add324d033f6f764736f6c634300080d0033

Deployed Bytecode Sourcemap

11228:11979:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13167:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17254:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17682:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16984:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15412:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18196:366;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16097:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16834:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12322:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15884:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14678:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14512:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17078:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15677:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12054:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12160:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12476:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12289:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23114:90;;;;;;;;;;;;;:::i;:::-;;12753:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17906:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12250:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22494:74;;;;;;;;;;;;;:::i;:::-;;16694:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17426:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3281:148;;;;;;;;;;;;;:::i;:::-;;13062:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12436:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22945:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15022:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11973:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22817:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22576:233;;;;;;;;;;;;;:::i;:::-;;17340:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12105:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3067:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12638:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17164:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11316:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15138:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12895:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12550:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18036:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14165:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15543:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12218:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12576:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12398:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14383:115;;;;;;;;;;;;;:::i;:::-;;12358:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14919:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17537:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3437:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16554:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12519:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13113:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15268:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12844:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12800:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13167:52;;;;:::o;17254:80::-;17302:13;17326:5;;;;;;;;;;;;;;;;;17319:12;;17254:80;:::o;17682:216::-;17757:4;17809:6;17774:11;:23;17786:10;17774:23;;;;;;;;;;;;;;;:32;17798:7;17774:32;;;;;;;;;;;;;;;:41;;;;17852:7;17831:37;;17840:10;17831:37;;;17861:6;17831:37;;;;;;:::i;:::-;;;;;;;;17886:4;17879:11;;17682:216;;;;:::o;16984:88::-;17039:7;17057:12;;17050:19;;16984:88;:::o;15412:123::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15514:12:::1;15494:9;;:33;;;;;;;;;;;;;;;;;;15412:123:::0;:::o;18196:366::-;18296:4;18351:17;18316:11;:19;18328:6;18316:19;;;;;;;;;;;;;;;:31;18336:10;18316:31;;;;;;;;;;;;;;;;:52;18313:186;;18418:69;18454:6;18418:69;;;;;;;;;;;;;;;;;:11;:19;18430:6;18418:19;;;;;;;;;;;;;;;:31;18438:10;18418:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;18384:11;:19;18396:6;18384:19;;;;;;;;;;;;;;;:31;18404:10;18384:31;;;;;;;;;;;;;;;:103;;;;18313:186;18518:36;18528:6;18536:9;18547:6;18518:9;:36::i;:::-;18511:43;;18196:366;;;;;:::o;16097:90::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16174:5:::1;16159:4;:12;16164:6;16159:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;16097:90:::0;:::o;16834:142::-;16887:7;16914:54;16952:15;16962:4;;;;;;;;;;;16952:9;:15::i;:::-;16914:33;16931:15;16941:4;;;;;;;;;;;16931:9;:15::i;:::-;16914:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;16907:61;;16834:142;:::o;12322:27::-;;;;:::o;15884:205::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15997:18:::1;;;;;;;;;;;:42;;;16040:12;16054:18;15997:76;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15884:205:::0;;:::o;14678:233::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14818:12:::1;14802:13;:28;;;;14855:8;14841:11;:22;;;;14888:15;14874:11;:29;;;;14678:233:::0;;;:::o;14512:153::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14617:9:::1;14608:6;:18;;;;14647:10;14637:7;:20;;;;14512:153:::0;;:::o;17078:80::-;17130:5;11551:2;17139:16;;17078:80;:::o;15677:199::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15811:14:::1;15786:21;;:39;;;;;;;;;;;;;;;;;;15852:16;15836:13;:32;;;;15677:199:::0;;:::o;12054:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;12160:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;12476:34::-;;;;:::o;12289:26::-;;;;:::o;23114:90::-;23156:18;;;;;;;;;;;:28;;;23185:10;23156:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23114:90::o;12753:40::-;;;;;;;;;;;;;:::o;17906:122::-;17961:4;17985:35;17993:7;18002:17;17985:7;:35::i;:::-;17978:42;;17906:122;;;:::o;12250:30::-;;;;;;;;;;;;;:::o;22494:74::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22550:10:::1;:8;:10::i;:::-;22494:74::o:0;16694:121::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16801:6:::1;16777:21;:30;;;;16694:121:::0;:::o;17426:105::-;17492:7;17510:9;:18;17520:7;17510:18;;;;;;;;;;;;;;;;17503:25;;17426:105;;;:::o;3281:148::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3388:1:::1;3351:40;;3372:6;::::0;::::1;;;;;;;;3351:40;;;;;;;;;;;;3419:1;3402:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3281:148::o:0;13062:44::-;;;;:::o;12436:31::-;;;;:::o;22945:161::-;23022:7;23049:18;;;;;;;;;;;:36;;;23086:11;23049:49;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23042:56;;22945:161;;;:::o;15022:104::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15110:8:::1;15097:9;:21;;;;15022:104:::0;:::o;11973:26::-;;;;;;;;;;;;;:::o;22817:120::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22892:18:::1;;;;;;;;;;;:26;;;22919:9;22892:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22817:120:::0;:::o;22576:233::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22631:26:::1;22660:21;22631:50;;22716:1;22695:18;:22;22692:110;;;22751:9;;;;;;;;;;;22743:27;;:47;22771:18;22743:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22692:110;22620:189;22576:233::o:0;17340:80::-;17392:7;17410;:5;:7::i;:::-;17403:14;;17340:80;:::o;12105:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3067:79::-;3105:7;3132:6;;;;;;;;;;;3125:13;;3067:79;:::o;12638:78::-;;;;;;;;;;;;;:::o;17164:84::-;17214:13;17238:7;;;;;;;;;;;;;;;;;17231:14;;17164:84;:::o;11316:67::-;;;;;;;;;;;;;:::o;15138:122::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15246:6:::1;15224:11;:19;15236:6;15224:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15138:122:::0;;:::o;12895:40::-;;;;:::o;12550:19::-;;;;;;;;;;;;;:::o;18036:152::-;18116:4;18140:40;18150:10;18162:9;18173:6;18140:9;:40::i;:::-;18133:47;;18036:152;;;;:::o;14165:166::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14241:6:::1;14236:88;14257:5;:12;14253:1;:16;14236:88;;;14308:4;14291;:14;14296:5;14302:1;14296:8;;;;;;;;:::i;:::-;;;;;;;;14291:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14271:3;;;;;:::i;:::-;;;;14236:88;;;;14165:166:::0;:::o;15543:121::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15642:14:::1;15629:10;;:27;;;;;;;;;;;;;;;;;;15543:121:::0;:::o;12218:25::-;;;;:::o;12576:22::-;;;;;;;;;;;;;:::o;12398:31::-;;;;:::o;14383:115::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14449:12:::1;14436:10;:25;;;;14486:4;14472:11;;:18;;;;;;;;;;;;;;;;;;14383:115::o:0;12358:33::-;;;;:::o;14919:95::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14998:8:::1;14990:5;:16;;;;14919:95:::0;:::o;17537:133::-;17621:7;17639:11;:19;17651:6;17639:19;;;;;;;;;;;;;;;:28;17659:7;17639:28;;;;;;;;;;;;;;;;17632:35;;17537:133;;;;:::o;3437:244::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3546:1:::1;3526:22;;:8;:22;;::::0;3518:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3636:8;3607:38;;3628:6;::::0;::::1;;;;;;;;3607:38;;;;;;;;;;;;3665:8;3656:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3437:244:::0;:::o;16554:132::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16642:36:::1;16663:6;16671;16642:20;:36::i;:::-;16554:132:::0;;:::o;12519:24::-;;;;;;;;;;;;;:::o;13113:47::-;;;;:::o;15268:136::-;3204:12;:10;:12::i;:::-;3194:22;;:6;;;;;;;;;;:22;;;3186:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15390:6:::1;15364:15;:23;15380:6;15364:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;15268:136:::0;;:::o;12844:44::-;;;;;;;;;;;;;:::o;12800:31::-;;;;;;;;;;;;;:::o;1051:132::-;1109:7;1136:39;1140:1;1143;1136:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1129:46;;1051:132;;;;:::o;2531:98::-;2584:7;2611:10;2604:17;;2531:98;:::o;597:192::-;683:7;716:1;711;:6;;719:12;703:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;743:9;759:1;755;:5;;;;:::i;:::-;743:17;;780:1;773:8;;;597:192;;;;;:::o;18570:1438::-;18658:4;18688:7;:5;:7::i;:::-;18679:16;;:6;:16;;;;:39;;;;;18711:7;:5;:7::i;:::-;18699:19;;:9;:19;;;;18679:39;18675:92;;;18728:11;;;;;;;;;;;18720:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;18675:92;18829:4;:12;18834:6;18829:12;;;;;;;;;;;;;;;;;;;;;;;;;18828:13;:33;;;;;18846:4;:15;18851:9;18846:15;;;;;;;;;;;;;;;;;;;;;;;;;18845:16;18828:33;18820:42;;;;;;18878:16;;;;;;;;;;;18875:73;;;18904:41;18919:6;18927:9;18938:6;18904:14;:41::i;:::-;18897:48;;;;18875:73;18978:5;;18968:6;:15;;:42;;;;18987:15;:23;19003:6;18987:23;;;;;;;;;;;;;;;;;;;;;;;;;18968:42;18960:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;19034:15;:26;19050:9;19034:26;;;;;;;;;;;;;;;;;;;;;;;;;19033:27;:38;;;;;19064:7;;;;;;;;;;;19033:38;19030:143;;;19141:9;;19105:32;19130:6;19105:9;:20;19115:9;19105:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:45;;19097:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19030:143;19202:4;;;;;;;;;;;19188:18;;:10;:18;;;;:39;;;;;19211:16;;;;;;;;;;;19210:17;19188:39;:64;;;;;19231:21;;;;;;;;;;;19188:64;:109;;;;;19284:13;;19256:9;:24;19274:4;19256:24;;;;;;;;;;;;;;;;:41;;19188:109;19185:128;;;19300:10;:8;:10::i;:::-;19185:128;19345:53;19367:6;19345:53;;;;;;;;;;;;;;;;;:9;:17;19355:6;19345:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19325:9;:17;19335:6;19325:17;;;;;;;;;;;;;;;:73;;;;19419:19;19442:11;:19;19454:6;19442:19;;;;;;;;;;;;;;;;;;;;;;;;;19441:20;:47;;;;;19466:11;:22;19478:9;19466:22;;;;;;;;;;;;;;;;;;;;;;;;;19465:23;19441:47;:93;;19528:6;19441:93;;;19491:34;19499:6;19507:9;19518:6;19491:7;:34::i;:::-;19441:93;19419:115;;19568:37;19593:11;19568:9;:20;19578:9;19568:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;19545:9;:20;19555:9;19545:20;;;;;;;;;;;;;;;:60;;;;19651:16;:24;19668:6;19651:24;;;;;;;;;;;;;;;;;;;;;;;;;19647:126;;19696:18;;;;;;;;;;;:27;;;19724:6;19732:9;:17;19742:6;19732:17;;;;;;;;;;;;;;;;19696:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19692:70;19647:126;19789:16;:27;19806:9;19789:27;;;;;;;;;;;;;;;;;;;;;;;;;19785:136;;19837:18;;;;;;;;;;;:27;;;19865:9;19876;:20;19886:9;19876:20;;;;;;;;;;;;;;;;19837:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19833:76;19785:136;19955:9;19938:40;;19947:6;19938:40;;;19966:11;19938:40;;;;;;:::i;:::-;;;;;;;;19996:4;19989:11;;;18570:1438;;;;;;:::o;455:136::-;513:7;540:43;544:1;547;540:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;533:50;;455:136;;;;:::o;21558:928::-;12995:4;12976:16;;:23;;;;;;;;;;;;;;;;;;21616:20:::1;21639:9;:24;21657:4;21639:24;;;;;;;;;;;;;;;;21616:47;;21675:26;21704:45;21747:1;21704:38;21738:3;21704:29;21721:11;;21704:12;:16;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;:42;;:45;;;;:::i;:::-;21675:74;;21765:20;21788:36;21805:18;21788:12;:16;;:36;;;;:::i;:::-;21765:59;;21837:30;21854:12;21837:16;:30::i;:::-;21880:23;21906:21;21880:47;;21938:21;21962:43;22001:3;21962:34;21982:13;;21962:15;:19;;:34;;;;:::i;:::-;:38;;:43;;;;:::i;:::-;21938:67;;22016:17;22036:41;22073:3;22036:32;22056:11;;22036:15;:19;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;22016:61;;22088:23;22114:48;22160:1;22114:41;22151:3;22114:32;22134:11;;22114:15;:19;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;:45;;:48;;;;:::i;:::-;22088:74;;22203:1;22185:15;:19;22181:89;;;22228:9;;;;;;;;;;;22220:27;;:38;22248:9;22220:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22181:89;22294:18;;;;;;;;;;;:26;;;22328:13;22294:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22290:66:::0;22401:1:::1;22380:18;:22;22376:103;;;22418:49;22431:18;22451:15;22418:12;:49::i;:::-;22376:103;21599:887;;;;;;;13041:5:::0;13022:16;;:24;;;;;;;;;;;;;;;;;;21558:928::o;16195:351::-;16300:4;16282:23;;:6;:23;;;;:41;;;;;16319:4;;;;;;;;;;;16309:14;;:6;:14;;;;16282:41;16274:50;;;;;;16362:6;16335:16;:24;16352:6;16335:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16382:6;16379:160;;;16404:18;;;;;;;;;;;:27;;;16432:6;16440:1;16404:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16379:160;;;16473:18;;;;;;;;;;;:27;;;16501:6;16509:9;:17;16519:6;16509:17;;;;;;;;;;;;;;;;16473:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16379:160;16195:351;;:::o;1189:345::-;1275:7;1374:1;1370;:5;1377:12;1362:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1401:9;1417:1;1413;:5;;;;:::i;:::-;1401:17;;1525:1;1518:8;;;1189:345;;;;;:::o;20020:330::-;20113:4;20150:53;20172:6;20150:53;;;;;;;;;;;;;;;;;:9;:17;20160:6;20150:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;20130:9;:17;20140:6;20130:17;;;;;;;;;;;;;;;:73;;;;20237:32;20262:6;20237:9;:20;20247:9;20237:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20214:9;:20;20224:9;20214:20;;;;;;;;;;;;;;;:55;;;;20302:9;20285:35;;20294:6;20285:35;;;20313:6;20285:35;;;;;;:::i;:::-;;;;;;;;20338:4;20331:11;;20020:330;;;;;:::o;268:181::-;326:7;346:9;362:1;358;:5;;;;:::i;:::-;346:17;;387:1;382;:6;;374:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;440:1;433:8;;;268:181;;;;:::o;20364:427::-;20450:7;20480:21;20512:9;20504:17;;:4;;;;;;;;;;;:17;;;:36;;20534:6;;20504:36;;;20524:7;;20504:36;20480:60;;20551:17;20571:34;20601:3;20571:25;20582:13;20571:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;20551:54;;20645:39;20674:9;20645;:24;20663:4;20645:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;20618:9;:24;20636:4;20618:24;;;;;;;;;;;;;;;:66;;;;20725:4;20700:42;;20709:6;20700:42;;;20732:9;20700:42;;;;;;:::i;:::-;;;;;;;;20762:21;20773:9;20762:6;:10;;:21;;;;:::i;:::-;20755:28;;;;20364:427;;;;;:::o;795:250::-;853:7;882:1;877;:6;873:47;;907:1;900:8;;;;873:47;932:9;948:1;944;:5;;;;:::i;:::-;932:17;;977:1;972;968;:5;;;;:::i;:::-;:10;960:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1036:1;1029:8;;;795:250;;;;;:::o;20803:460::-;20871:21;20909:1;20895:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20871:40;;20940:4;20922;20927:1;20922:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20966:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20956:4;20961:1;20956:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20992:35;21008:4;21015:11;20992:7;:35::i;:::-;;21040:6;;;;;;;;;;;:57;;;21112:11;21138:1;21182:4;21209;21229:15;21040:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20858:405;20803:460;:::o;21271:279::-;21352:6;;;;;;;;;;;:22;;;21382:9;21415:4;21435:11;21461:1;21477;21493:8;;;;;;;;;;;21516:15;21352:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21271: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:104::-;3891:7;3920:24;3938:5;3920:24;:::i;:::-;3909:35;;3846:104;;;:::o;3956:138::-;4037:32;4063:5;4037:32;:::i;:::-;4030:5;4027:43;4017:71;;4084:1;4081;4074:12;4017:71;3956:138;:::o;4100:155::-;4154:5;4192:6;4179:20;4170:29;;4208:41;4243:5;4208:41;:::i;:::-;4100:155;;;;:::o;4261:345::-;4328:6;4377:2;4365:9;4356:7;4352:23;4348:32;4345:119;;;4383:79;;:::i;:::-;4345:119;4503:1;4528:61;4581:7;4572:6;4561:9;4557:22;4528:61;:::i;:::-;4518:71;;4474:125;4261:345;;;;:::o;4612:619::-;4689:6;4697;4705;4754:2;4742:9;4733:7;4729:23;4725:32;4722:119;;;4760:79;;:::i;:::-;4722:119;4880:1;4905:53;4950:7;4941:6;4930:9;4926:22;4905:53;:::i;:::-;4895:63;;4851:117;5007:2;5033:53;5078:7;5069:6;5058:9;5054:22;5033:53;:::i;:::-;5023:63;;4978:118;5135:2;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5106:118;4612:619;;;;;:::o;5237:329::-;5296:6;5345:2;5333:9;5324:7;5320:23;5316:32;5313:119;;;5351:79;;:::i;:::-;5313:119;5471:1;5496:53;5541:7;5532:6;5521:9;5517:22;5496:53;:::i;:::-;5486:63;;5442:117;5237:329;;;;:::o;5572:474::-;5640:6;5648;5697:2;5685:9;5676:7;5672:23;5668:32;5665:119;;;5703:79;;:::i;:::-;5665:119;5823:1;5848:53;5893:7;5884:6;5873:9;5869:22;5848:53;:::i;:::-;5838:63;;5794:117;5950:2;5976:53;6021:7;6012:6;6001:9;5997:22;5976:53;:::i;:::-;5966:63;;5921:118;5572:474;;;;;:::o;6052:619::-;6129:6;6137;6145;6194:2;6182:9;6173:7;6169:23;6165:32;6162:119;;;6200:79;;:::i;:::-;6162:119;6320:1;6345:53;6390:7;6381:6;6370:9;6366:22;6345:53;:::i;:::-;6335:63;;6291:117;6447:2;6473:53;6518:7;6509:6;6498:9;6494:22;6473:53;:::i;:::-;6463:63;;6418:118;6575:2;6601:53;6646:7;6637:6;6626:9;6622:22;6601:53;:::i;:::-;6591:63;;6546:118;6052:619;;;;;:::o;6677:86::-;6712:7;6752:4;6745:5;6741:16;6730:27;;6677:86;;;:::o;6769:112::-;6852:22;6868:5;6852:22;:::i;:::-;6847:3;6840:35;6769:112;;:::o;6887:214::-;6976:4;7014:2;7003:9;6999:18;6991:26;;7027:67;7091:1;7080:9;7076:17;7067:6;7027:67;:::i;:::-;6887:214;;;;:::o;7107:116::-;7177:21;7192:5;7177:21;:::i;:::-;7170:5;7167:32;7157:60;;7213:1;7210;7203:12;7157:60;7107:116;:::o;7229:133::-;7272:5;7310:6;7297:20;7288:29;;7326:30;7350:5;7326:30;:::i;:::-;7229:133;;;;:::o;7368:468::-;7433:6;7441;7490:2;7478:9;7469:7;7465:23;7461:32;7458:119;;;7496:79;;:::i;:::-;7458:119;7616:1;7641:50;7683:7;7674:6;7663:9;7659:22;7641:50;:::i;:::-;7631:60;;7587:114;7740:2;7766:53;7811:7;7802:6;7791:9;7787:22;7766:53;:::i;:::-;7756:63;;7711:118;7368:468;;;;;:::o;7842:118::-;7929:24;7947:5;7929:24;:::i;:::-;7924:3;7917:37;7842:118;;:::o;7966:222::-;8059:4;8097:2;8086:9;8082:18;8074:26;;8110:71;8178:1;8167:9;8163:17;8154:6;8110:71;:::i;:::-;7966:222;;;;:::o;8194:329::-;8253:6;8302:2;8290:9;8281:7;8277:23;8273:32;8270:119;;;8308:79;;:::i;:::-;8270:119;8428:1;8453:53;8498:7;8489:6;8478:9;8474:22;8453:53;:::i;:::-;8443:63;;8399:117;8194:329;;;;:::o;8529:468::-;8594:6;8602;8651:2;8639:9;8630:7;8626:23;8622:32;8619:119;;;8657:79;;:::i;:::-;8619:119;8777:1;8802:53;8847:7;8838:6;8827:9;8823:22;8802:53;:::i;:::-;8792:63;;8748:117;8904:2;8930:50;8972:7;8963:6;8952:9;8948:22;8930:50;:::i;:::-;8920:60;;8875:115;8529:468;;;;;:::o;9003:117::-;9112:1;9109;9102:12;9126:180;9174:77;9171:1;9164:88;9271:4;9268:1;9261:15;9295:4;9292:1;9285:15;9312:281;9395:27;9417:4;9395:27;:::i;:::-;9387:6;9383:40;9525:6;9513:10;9510:22;9489:18;9477:10;9474:34;9471:62;9468:88;;;9536:18;;:::i;:::-;9468:88;9576:10;9572:2;9565:22;9355:238;9312:281;;:::o;9599:129::-;9633:6;9660:20;;:::i;:::-;9650:30;;9689:33;9717:4;9709:6;9689:33;:::i;:::-;9599:129;;;:::o;9734:311::-;9811:4;9901:18;9893:6;9890:30;9887:56;;;9923:18;;:::i;:::-;9887:56;9973:4;9965:6;9961:17;9953:25;;10033:4;10027;10023:15;10015:23;;9734:311;;;:::o;10051:117::-;10160:1;10157;10150:12;10191:710;10287:5;10312:81;10328:64;10385:6;10328:64;:::i;:::-;10312:81;:::i;:::-;10303:90;;10413:5;10442:6;10435:5;10428:21;10476:4;10469:5;10465:16;10458:23;;10529:4;10521:6;10517:17;10509:6;10505:30;10558:3;10550:6;10547:15;10544:122;;;10577:79;;:::i;:::-;10544:122;10692:6;10675:220;10709:6;10704:3;10701:15;10675:220;;;10784:3;10813:37;10846:3;10834:10;10813:37;:::i;:::-;10808:3;10801:50;10880:4;10875:3;10871:14;10864:21;;10751:144;10735:4;10730:3;10726:14;10719:21;;10675:220;;;10679:21;10293:608;;10191:710;;;;;:::o;10924:370::-;10995:5;11044:3;11037:4;11029:6;11025:17;11021:27;11011:122;;11052:79;;:::i;:::-;11011:122;11169:6;11156:20;11194:94;11284:3;11276:6;11269:4;11261:6;11257:17;11194:94;:::i;:::-;11185:103;;11001:293;10924:370;;;;:::o;11300:539::-;11384:6;11433:2;11421:9;11412:7;11408:23;11404:32;11401:119;;;11439:79;;:::i;:::-;11401:119;11587:1;11576:9;11572:17;11559:31;11617:18;11609:6;11606:30;11603:117;;;11639:79;;:::i;:::-;11603:117;11744:78;11814:7;11805:6;11794:9;11790:22;11744:78;:::i;:::-;11734:88;;11530:302;11300:539;;;;:::o;11845:474::-;11913:6;11921;11970:2;11958:9;11949:7;11945:23;11941:32;11938:119;;;11976:79;;:::i;:::-;11938:119;12096:1;12121:53;12166:7;12157:6;12146:9;12142:22;12121:53;:::i;:::-;12111:63;;12067:117;12223:2;12249:53;12294:7;12285:6;12274:9;12270:22;12249:53;:::i;:::-;12239:63;;12194:118;11845:474;;;;;:::o;12325:60::-;12353:3;12374:5;12367:12;;12325:60;;;:::o;12391:142::-;12441:9;12474:53;12492:34;12501:24;12519:5;12501:24;:::i;:::-;12492:34;:::i;:::-;12474:53;:::i;:::-;12461:66;;12391:142;;;:::o;12539:126::-;12589:9;12622:37;12653:5;12622:37;:::i;:::-;12609:50;;12539:126;;;:::o;12671:144::-;12739:9;12772:37;12803:5;12772:37;:::i;:::-;12759:50;;12671:144;;;:::o;12821:167::-;12926:55;12975:5;12926:55;:::i;:::-;12921:3;12914:68;12821:167;;:::o;12994:258::-;13105:4;13143:2;13132:9;13128:18;13120:26;;13156:89;13242:1;13231:9;13227:17;13218:6;13156:89;:::i;:::-;12994:258;;;;:::o;13258:134::-;13316:9;13349:37;13380:5;13349:37;:::i;:::-;13336:50;;13258:134;;;:::o;13398:169::-;13483:9;13516:45;13555:5;13516:45;:::i;:::-;13503:58;;13398:169;;;:::o;13573:201::-;13695:72;13761:5;13695:72;:::i;:::-;13690:3;13683:85;13573:201;;:::o;13780:292::-;13908:4;13946:2;13935:9;13931:18;13923:26;;13959:106;14062:1;14051:9;14047:17;14038:6;13959:106;:::i;:::-;13780:292;;;;:::o;14078:182::-;14218:34;14214:1;14206:6;14202:14;14195:58;14078:182;:::o;14266:366::-;14408:3;14429:67;14493:2;14488:3;14429:67;:::i;:::-;14422:74;;14505:93;14594:3;14505:93;:::i;:::-;14623:2;14618:3;14614:12;14607:19;;14266:366;;;:::o;14638:419::-;14804:4;14842:2;14831:9;14827:18;14819:26;;14891:9;14885:4;14881:20;14877:1;14866:9;14862:17;14855:47;14919:131;15045:4;14919:131;:::i;:::-;14911:139;;14638:419;;;:::o;15063:332::-;15184:4;15222:2;15211:9;15207:18;15199:26;;15235:71;15303:1;15292:9;15288:17;15279:6;15235:71;:::i;:::-;15316:72;15384:2;15373:9;15369:18;15360:6;15316:72;:::i;:::-;15063:332;;;;;:::o;15401:143::-;15458:5;15489:6;15483:13;15474:22;;15505:33;15532:5;15505:33;:::i;:::-;15401:143;;;;:::o;15550:351::-;15620:6;15669:2;15657:9;15648:7;15644:23;15640:32;15637:119;;;15675:79;;:::i;:::-;15637:119;15795:1;15820:64;15876:7;15867:6;15856:9;15852:22;15820:64;:::i;:::-;15810:74;;15766:128;15550:351;;;;:::o;15907:180::-;15955:77;15952:1;15945:88;16052:4;16049:1;16042:15;16076:4;16073:1;16066:15;16093:180;16141:77;16138:1;16131:88;16238:4;16235:1;16228:15;16262:4;16259:1;16252:15;16279:233;16318:3;16341:24;16359:5;16341:24;:::i;:::-;16332:33;;16387:66;16380:5;16377:77;16374:103;;16457:18;;:::i;:::-;16374:103;16504:1;16497:5;16493:13;16486:20;;16279:233;;;:::o;16518:225::-;16658:34;16654:1;16646:6;16642:14;16635:58;16727:8;16722:2;16714:6;16710:15;16703:33;16518:225;:::o;16749:366::-;16891:3;16912:67;16976:2;16971:3;16912:67;:::i;:::-;16905:74;;16988:93;17077:3;16988:93;:::i;:::-;17106:2;17101:3;17097:12;17090:19;;16749:366;;;:::o;17121:419::-;17287:4;17325:2;17314:9;17310:18;17302:26;;17374:9;17368:4;17364:20;17360:1;17349:9;17345:17;17338:47;17402:131;17528:4;17402:131;:::i;:::-;17394:139;;17121:419;;;:::o;17546:191::-;17586:4;17606:20;17624:1;17606:20;:::i;:::-;17601:25;;17640:20;17658:1;17640:20;:::i;:::-;17635:25;;17679:1;17676;17673:8;17670:34;;;17684:18;;:::i;:::-;17670:34;17729:1;17726;17722:9;17714:17;;17546:191;;;;:::o;17743:173::-;17883:25;17879:1;17871:6;17867:14;17860:49;17743:173;:::o;17922:366::-;18064:3;18085:67;18149:2;18144:3;18085:67;:::i;:::-;18078:74;;18161:93;18250:3;18161:93;:::i;:::-;18279:2;18274:3;18270:12;18263:19;;17922:366;;;:::o;18294:419::-;18460:4;18498:2;18487:9;18483:18;18475:26;;18547:9;18541:4;18537:20;18533:1;18522:9;18518:17;18511:47;18575:131;18701:4;18575:131;:::i;:::-;18567:139;;18294:419;;;:::o;18719:152::-;18859:4;18855:1;18847:6;18843:14;18836:28;18719:152;:::o;18877:365::-;19019:3;19040:66;19104:1;19099:3;19040:66;:::i;:::-;19033:73;;19115:93;19204:3;19115:93;:::i;:::-;19233:2;19228:3;19224:12;19217:19;;18877:365;;;:::o;19248:419::-;19414:4;19452:2;19441:9;19437:18;19429:26;;19501:9;19495:4;19491:20;19487:1;19476:9;19472:17;19465:47;19529:131;19655:4;19529:131;:::i;:::-;19521:139;;19248:419;;;:::o;19673:156::-;19813:8;19809:1;19801:6;19797:14;19790:32;19673:156;:::o;19835:365::-;19977:3;19998:66;20062:1;20057:3;19998:66;:::i;:::-;19991:73;;20073:93;20162:3;20073:93;:::i;:::-;20191:2;20186:3;20182:12;20175:19;;19835:365;;;:::o;20206:419::-;20372:4;20410:2;20399:9;20395:18;20387:26;;20459:9;20453:4;20449:20;20445:1;20434:9;20430:17;20423:47;20487:131;20613:4;20487:131;:::i;:::-;20479:139;;20206:419;;;:::o;20631:332::-;20752:4;20790:2;20779:9;20775:18;20767:26;;20803:71;20871:1;20860:9;20856:17;20847:6;20803:71;:::i;:::-;20884:72;20952:2;20941:9;20937:18;20928:6;20884:72;:::i;:::-;20631:332;;;;;:::o;20969:85::-;21014:7;21043:5;21032:16;;20969:85;;;:::o;21060:158::-;21118:9;21151:61;21169:42;21178:32;21204:5;21178:32;:::i;:::-;21169:42;:::i;:::-;21151:61;:::i;:::-;21138:74;;21060:158;;;:::o;21224:147::-;21319:45;21358:5;21319:45;:::i;:::-;21314:3;21307:58;21224:147;;:::o;21377:348::-;21506:4;21544:2;21533:9;21529:18;21521:26;;21557:71;21625:1;21614:9;21610:17;21601:6;21557:71;:::i;:::-;21638:80;21714:2;21703:9;21699:18;21690:6;21638:80;:::i;:::-;21377:348;;;;;:::o;21731:180::-;21779:77;21776:1;21769:88;21876:4;21873:1;21866:15;21900:4;21897:1;21890:15;21917:185;21957:1;21974:20;21992:1;21974:20;:::i;:::-;21969:25;;22008:20;22026:1;22008:20;:::i;:::-;22003:25;;22047:1;22037:35;;22052:18;;:::i;:::-;22037:35;22094:1;22091;22087:9;22082:14;;21917:185;;;;:::o;22108:305::-;22148:3;22167:20;22185:1;22167:20;:::i;:::-;22162:25;;22201:20;22219:1;22201:20;:::i;:::-;22196:25;;22355:1;22287:66;22283:74;22280:1;22277:81;22274:107;;;22361:18;;:::i;:::-;22274:107;22405:1;22402;22398:9;22391:16;;22108:305;;;;:::o;22419:177::-;22559:29;22555:1;22547:6;22543:14;22536:53;22419:177;:::o;22602:366::-;22744:3;22765:67;22829:2;22824:3;22765:67;:::i;:::-;22758:74;;22841:93;22930:3;22841:93;:::i;:::-;22959:2;22954:3;22950:12;22943:19;;22602:366;;;:::o;22974:419::-;23140:4;23178:2;23167:9;23163:18;23155:26;;23227:9;23221:4;23217:20;23213:1;23202:9;23198:17;23191:47;23255:131;23381:4;23255:131;:::i;:::-;23247:139;;22974:419;;;:::o;23399:348::-;23439:7;23462:20;23480:1;23462:20;:::i;:::-;23457:25;;23496:20;23514:1;23496:20;:::i;:::-;23491:25;;23684:1;23616:66;23612:74;23609:1;23606:81;23601:1;23594:9;23587:17;23583:105;23580:131;;;23691:18;;:::i;:::-;23580:131;23739:1;23736;23732:9;23721:20;;23399:348;;;;:::o;23753:220::-;23893:34;23889:1;23881:6;23877:14;23870:58;23962:3;23957:2;23949:6;23945:15;23938:28;23753:220;:::o;23979:366::-;24121:3;24142:67;24206:2;24201:3;24142:67;:::i;:::-;24135:74;;24218:93;24307:3;24218:93;:::i;:::-;24336:2;24331:3;24327:12;24320:19;;23979:366;;;:::o;24351:419::-;24517:4;24555:2;24544:9;24540:18;24532:26;;24604:9;24598:4;24594:20;24590:1;24579:9;24575:17;24568:47;24632:131;24758:4;24632:131;:::i;:::-;24624:139;;24351:419;;;:::o;24776:143::-;24833:5;24864:6;24858:13;24849:22;;24880:33;24907:5;24880:33;:::i;:::-;24776:143;;;;:::o;24925:351::-;24995:6;25044:2;25032:9;25023:7;25019:23;25015:32;25012:119;;;25050:79;;:::i;:::-;25012:119;25170:1;25195:64;25251:7;25242:6;25231:9;25227:22;25195:64;:::i;:::-;25185:74;;25141:128;24925:351;;;;:::o;25282:114::-;25349:6;25383:5;25377:12;25367:22;;25282:114;;;:::o;25402:184::-;25501:11;25535:6;25530:3;25523:19;25575:4;25570:3;25566:14;25551:29;;25402:184;;;;:::o;25592:132::-;25659:4;25682:3;25674:11;;25712:4;25707:3;25703:14;25695:22;;25592:132;;;:::o;25730:108::-;25807:24;25825:5;25807:24;:::i;:::-;25802:3;25795:37;25730:108;;:::o;25844:179::-;25913:10;25934:46;25976:3;25968:6;25934:46;:::i;:::-;26012:4;26007:3;26003:14;25989:28;;25844:179;;;;:::o;26029:113::-;26099:4;26131;26126:3;26122:14;26114:22;;26029:113;;;:::o;26178:732::-;26297:3;26326:54;26374:5;26326:54;:::i;:::-;26396:86;26475:6;26470:3;26396:86;:::i;:::-;26389:93;;26506:56;26556:5;26506:56;:::i;:::-;26585:7;26616:1;26601:284;26626:6;26623:1;26620:13;26601:284;;;26702:6;26696:13;26729:63;26788:3;26773:13;26729:63;:::i;:::-;26722:70;;26815:60;26868:6;26815:60;:::i;:::-;26805:70;;26661:224;26648:1;26645;26641:9;26636:14;;26601:284;;;26605:14;26901:3;26894:10;;26302:608;;;26178:732;;;;:::o;26916:831::-;27179:4;27217:3;27206:9;27202:19;27194:27;;27231:71;27299:1;27288:9;27284:17;27275:6;27231:71;:::i;:::-;27312:80;27388:2;27377:9;27373:18;27364:6;27312:80;:::i;:::-;27439:9;27433:4;27429:20;27424:2;27413:9;27409:18;27402:48;27467:108;27570:4;27561:6;27467:108;:::i;:::-;27459:116;;27585:72;27653:2;27642:9;27638:18;27629:6;27585:72;:::i;:::-;27667:73;27735:3;27724:9;27720:19;27711:6;27667:73;:::i;:::-;26916:831;;;;;;;;:::o;27753:807::-;28002:4;28040:3;28029:9;28025:19;28017:27;;28054:71;28122:1;28111:9;28107:17;28098:6;28054:71;:::i;:::-;28135:72;28203:2;28192:9;28188:18;28179:6;28135:72;:::i;:::-;28217:80;28293:2;28282:9;28278:18;28269:6;28217:80;:::i;:::-;28307;28383:2;28372:9;28368:18;28359:6;28307:80;:::i;:::-;28397:73;28465:3;28454:9;28450:19;28441:6;28397:73;:::i;:::-;28480;28548:3;28537:9;28533:19;28524:6;28480:73;:::i;:::-;27753:807;;;;;;;;;:::o;28566:663::-;28654:6;28662;28670;28719:2;28707:9;28698:7;28694:23;28690:32;28687:119;;;28725:79;;:::i;:::-;28687:119;28845:1;28870:64;28926:7;28917:6;28906:9;28902:22;28870:64;:::i;:::-;28860:74;;28816:128;28983:2;29009:64;29065:7;29056:6;29045:9;29041:22;29009:64;:::i;:::-;28999:74;;28954:129;29122:2;29148:64;29204:7;29195:6;29184:9;29180:22;29148:64;:::i;:::-;29138:74;;29093:129;28566:663;;;;;:::o

Swarm Source

ipfs://86f8a29d280f59be2e205161347e360ae7f655f875ff6668cde54505211160b0
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.