Token CroNomics

Overview CRC20

Price
$0.00 @ 0.000000 CRO
Fully Diluted Market Cap
Total Supply:
1,000,000,000 CRON

Holders:
85 addresses
Contract:
0xfafdd6074a7a5c72228253f014c0361c7135ac8c0xFafdD6074a7A5c72228253f014C0361C7135aC8C

Decimals:
9

Social Profiles:
Not Available, Update ?

Balance
0.5 CRON

Value
$0.00
0x7dae8fbcc37f67cb1ca02b959fa97c1473bd3a63
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
CroNomics

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-02-20
*/

/**

*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.7.4;


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;
    }
}

/**
 * BEP20 standard interface.
 */
interface IBEP20 {
    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);
}

/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

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

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

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

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

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

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

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

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

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

    IBEP20 ADA = IBEP20(0xc21223249CA28397B4B6541dfFaEcC539BfF0c59); // USDC
    address WBNB = 0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23;
    IDEXRouter router;

    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;

    //SETMEUP, change this to 1 hour instead of 10mins
    uint256 public minPeriod = 45 minutes;
    uint256 public minDistribution = 10000 * (10 ** 18);

    uint256 currentIndex;

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

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

    constructor (address _router) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x145677FC4d9b8F19B5D56d1820c48e0443049a30);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    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() external payable override onlyToken {
        uint256 balanceBefore = ADA.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WBNB;
        path[1] = address(ADA);

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

        uint256 amount = ADA.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

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

        uint256 iterations = 0;

        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) internal 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);
            ADA.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }

    function claimDividend() external {
        distributeDividend(msg.sender);
    }

    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 CroNomics is IBEP20, Auth {
    using SafeMath for uint256;

    address ADA =  0xc21223249CA28397B4B6541dfFaEcC539BfF0c59; // USDC
    address WBNB = 0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "CroNomics";
    string constant _symbol = "CRON";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1 * 10**9 * (10 ** _decimals);
    uint256 public _maxTxAmount = ( _totalSupply * 1 )  / 100;

    //max wallet holding of 3%
    uint256 public _maxWalletToken = ( _totalSupply * 2 ) / 100;

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isTimelockExempt;
    mapping (address => bool) isDividendExempt;

    uint256 liquidityFee    = 4;
    uint256 reflectionFee   = 10;
    uint256 marketingFee    = 1;
    uint256 public totalFee = 15; //Total Fee
    uint256 feeDenominator  = 100;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    bool public tradingOpen = false;

    DividendDistributor distributor;
    uint256 distributorGas = 500000;

    // Cooldown & timer functionality
    bool public buyCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 5; // In Seconds
    mapping (address => uint) private cooldownTimer;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 10 / 10000; // 0.01% of supply
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x145677FC4d9b8F19B5D56d1820c48e0443049a30);
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        _allowances[address(this)][address(router)] = uint256(-1);

        distributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;

        // No timelock for these people
        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;

        // TO DO, manually whitelist this
        //isFeeExempt[_presaleContract] = true;
        //isTxLimitExempt[_presaleContract] = true;
        //isDividendExempt[_presaleContract] = true;

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

        // NICE!
        autoLiquidityReceiver = DEAD;
        marketingFeeReceiver = msg.sender;

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

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, uint256(-1));
    }

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

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

        return _transferFrom(sender, recipient, amount);
    }

    //settting the maximum permitted wallet holding (percent of total supply)
     function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 100;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }

        // max wallet code
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != autoLiquidityReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}



        // cooldown timer, so a bot doesnt do quick trades! 1min gap between 2 trades.
        if (sender == pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for cooldown between buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }


        // Checks max transaction limit
        checkTxLimit(sender, amount);

        // Liquidity, Maintained at 25%
        if(shouldSwapBack()){ swapBack(); }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

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

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

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

        try distributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

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

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

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

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);

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

        return amount.sub(feeAmount);
    }

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

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountBNB = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountBNB * amountPercentage / 100);
    }


    // switch Trading
    function tradingStatus(bool _status) public onlyOwner {
        tradingOpen = _status;
    }

    // enable cooldown between trades
    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }



    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = balanceOf(address(this)).mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = balanceOf(address(this)).sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

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

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

        uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2));

        uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);

        try distributor.deposit{value: amountBNBReflection}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");

        // only to supress warning msg
        tmpSuccess = false;

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


    function setTxLimit(uint256 amount) external authorized {
        _maxTxAmount = amount;
    }

    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

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

    function setIsTimelockExempt(address holder, bool exempt) external authorized {
        isTimelockExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/4);
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }

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

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

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



/* Airdrop Begins */


 function airdrop(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

    uint256 SCCC = 0;

    require(addresses.length == tokens.length,"Mismatch between Address and token count");

    for(uint i=0; i < addresses.length; i++){
        SCCC = SCCC + tokens[i];
    }

    require(balanceOf(from) >= SCCC, "Not enough tokens to airdrop");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
        if(!isDividendExempt[addresses[i]]) {
            try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {}
        }
    }

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

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","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":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c21223249ca28397b4b6541dffaecc539bff0c59600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735c7f8a570d578ed84e63fdfa7b1ee72deae1ae23600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960ff16600a0a633b9aca00026006556064600160065402816200015457fe5b046007556064600260065402816200016857fe5b046008556004600f55600a6010556001601155600f6012556064601355601460165560646017556000601b60006101000a81548160ff0219169083151502179055506207a120601c556001601d60006101000a81548160ff0219169083151502179055506005601d60016101000a81548160ff021916908360ff1602179055506001601f60006101000a81548160ff021916908315150217905550612710600a60065402816200021457fe5b046020553480156200022557600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505073145677fc4d9b8f19b5d56d1820c48e0443049a30601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037d57600080fd5b505afa15801562000392573d6000803e3d6000fd5b505050506040513d6020811015620003a957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200046357600080fd5b505af115801562000478573d6000803e3d6000fd5b505050506040513d60208110156200048f57600080fd5b8101908080519060200190929190505050601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620005d49062000b4a565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000611573d6000803e3d6000fd5b50601b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a362000b58565b6119d3806200543583390190565b6148cd8062000b686000396000f3fe6080604052600436106102975760003560e01c8063722b62ad1161015a578063ca33e64c116100c1578063f2fde38b1161007a578063f2fde38b14610fe4578063f708a64f14611035578063f84ba65d14611092578063f887ea40146110ef578063fe9fbb8014611130578063ffb54a99146111975761029e565b8063ca33e64c14610df6578063d51ed1c814610e37578063dd62ed3e14610e86578063df20fd4914610f0b578063e96fada214610f52578063f0b37c0414610f935761029e565b80639d1944f5116101135780639d1944f514610c1c578063a4b45c0014610c57578063a8aa1b3114610cc8578063a9059cbb14610d09578063b6a5d7de14610d7a578063bf56b37114610dcb5761029e565b8063722b62ad14610a8c57806378109e5414610aba5780637d1db4a514610ae557806382bf293c14610b10578063893d20e814610b4b57806395d89b4114610b8c5761029e565b80632d48e896116101fe5780635c85974f116101b75780635c85974f146108dc578063617fe0ed14610917578063658d4b7f146109445780636ddd1713146109a15780636fcba377146109ce57806370a0823114610a275761029e565b80632d48e896146106f45780632d594567146107395780632f54bf6e14610783578063313ce567146107ea57806350db71fb14610818578063571ac8b0146108755761029e565b806318160ddd1161025057806318160ddd146105625780631da1db5e1461058d5780631df4ccfc146105c8578063201e7991146105f357806323b872dd146106385780632b112e49146106c95761029e565b8063025ff12f146102a35780630445b6671461039e57806306fdde03146103c9578063095ea7b3146104595780630d295980146104ca5780631161ae39146105075761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b5061039c600480360360608110156102c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561030357600080fd5b82018360208201111561031557600080fd5b8035906020019184602083028401116401000000008311171561033757600080fd5b90919293919293908035906020019064010000000081111561035857600080fd5b82018360208201111561036a57600080fd5b8035906020019184602083028401116401000000008311171561038c57600080fd5b90919293919293905050506111c4565b005b3480156103aa57600080fd5b506103b36116b0565b6040518082815260200191505060405180910390f35b3480156103d557600080fd5b506103de6116b6565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561041e578082015181840152602081019050610403565b50505050905090810190601f16801561044b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561046557600080fd5b506104b26004803603604081101561047c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116f3565b60405180821515815260200191505060405180910390f35b3480156104d657600080fd5b50610505600480360360208110156104ed57600080fd5b810190808035151590602001909291905050506117e5565b005b34801561051357600080fd5b5061054a6004803603604081101561052a57600080fd5b81019080803590602001909291908035906020019092919050505061187d565b60405180821515815260200191505060405180910390f35b34801561056e57600080fd5b50610577611892565b6040518082815260200191505060405180910390f35b34801561059957600080fd5b506105c6600480360360208110156105b057600080fd5b810190808035906020019092919050505061189c565b005b3480156105d457600080fd5b506105dd611995565b6040518082815260200191505060405180910390f35b3480156105ff57600080fd5b506106366004803603604081101561061657600080fd5b81019080803590602001909291908035906020019092919050505061199b565b005b34801561064457600080fd5b506106b16004803603606081101561065b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a28565b60405180821515815260200191505060405180910390f35b3480156106d557600080fd5b506106de611c28565b6040518082815260200191505060405180910390f35b34801561070057600080fd5b506107376004803603604081101561071757600080fd5b810190808035906020019092919080359060200190929190505050611caa565b005b34801561074557600080fd5b506107816004803603604081101561075c57600080fd5b81019080803515159060200190929190803560ff169060200190929190505050611dbe565b005b34801561078f57600080fd5b506107d2600480360360208110156107a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e72565b60405180821515815260200191505060405180910390f35b3480156107f657600080fd5b506107ff611ecb565b604051808260ff16815260200191505060405180910390f35b34801561082457600080fd5b506108736004803603604081101561083b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611ed4565b005b34801561088157600080fd5b506108c46004803603602081101561089857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611faa565b60405180821515815260200191505060405180910390f35b3480156108e857600080fd5b50610915600480360360208110156108ff57600080fd5b8101908080359060200190929190505050611fdd565b005b34801561092357600080fd5b5061092c612062565b60405180821515815260200191505060405180910390f35b34801561095057600080fd5b5061099f6004803603604081101561096757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612075565b005b3480156109ad57600080fd5b506109b661214b565b60405180821515815260200191505060405180910390f35b3480156109da57600080fd5b50610a25600480360360808110156109f157600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035906020019092919050505061215e565b005b348015610a3357600080fd5b50610a7660048036036020811015610a4a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612240565b6040518082815260200191505060405180910390f35b348015610a9857600080fd5b50610aa1612289565b604051808260ff16815260200191505060405180910390f35b348015610ac657600080fd5b50610acf61229c565b6040518082815260200191505060405180910390f35b348015610af157600080fd5b50610afa6122a2565b6040518082815260200191505060405180910390f35b348015610b1c57600080fd5b50610b4960048036036020811015610b3357600080fd5b81019080803590602001909291905050506122a8565b005b348015610b5757600080fd5b50610b6061233b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b9857600080fd5b50610ba1612364565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610be1578082015181840152602081019050610bc6565b50505050905090810190601f168015610c0e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c2857600080fd5b50610c5560048036036020811015610c3f57600080fd5b81019080803590602001909291905050506123a1565b005b348015610c6357600080fd5b50610cc660048036036040811015610c7a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612435565b005b348015610cd457600080fd5b50610cdd612536565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d1557600080fd5b50610d6260048036036040811015610d2c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061255c565b60405180821515815260200191505060405180910390f35b348015610d8657600080fd5b50610dc960048036036020811015610d9d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612571565b005b348015610dd757600080fd5b50610de0612646565b6040518082815260200191505060405180910390f35b348015610e0257600080fd5b50610e0b61264c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e4357600080fd5b50610e7060048036036020811015610e5a57600080fd5b8101908080359060200190929190505050612672565b6040518082815260200191505060405180910390f35b348015610e9257600080fd5b50610ef560048036036040811015610ea957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126e4565b6040518082815260200191505060405180910390f35b348015610f1757600080fd5b50610f5060048036036040811015610f2e57600080fd5b810190808035151590602001909291908035906020019092919050505061276b565b005b348015610f5e57600080fd5b50610f6761280b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f9f57600080fd5b50610fe260048036036020811015610fb657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612831565b005b348015610ff057600080fd5b506110336004803603602081101561100757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612907565b005b34801561104157600080fd5b506110906004803603604081101561105857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612a69565b005b34801561109e57600080fd5b506110ed600480360360408110156110b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612d74565b005b3480156110fb57600080fd5b50611104612e4a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561113c57600080fd5b5061117f6004803603602081101561115357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e70565b60405180821515815260200191505060405180910390f35b3480156111a357600080fd5b506111ac612ec6565b60405180821515815260200191505060405180910390f35b6111cd33611e72565b61123f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600082829050858590501461129f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806147ec6028913960400191505060405180910390fd5b60005b858590508110156112d1578383828181106112b957fe5b905060200201358201915080806001019150506112a2565b50806112dc87612240565b1015611350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4e6f7420656e6f75676820746f6b656e7320746f2061697264726f700000000081525060200191505060405180910390fd5b60005b85859050811015611568576113a38787878481811061136e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1686868581811061139757fe5b90506020020135612ed9565b50600e60008787848181106113b457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661155b57601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687878481811061146757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16600960008a8a8781811061149457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561153f57600080fd5b505af1925050508015611550575060015b6115595761155a565b5b5b8080600101915050611353565b50600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166116a857601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561168c57600080fd5b505af192505050801561169d575060015b6116a6576116a7565b5b5b505050505050565b60205481565b60606040518060400160405280600981526020017f43726f4e6f6d6963730000000000000000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6117ee33611e72565b611860576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b60008261188983612672565b11905092915050565b6000600654905090565b6118a533611e72565b611917576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000479050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648484028161196457fe5b049081150290604051600060405180830381858888f19350505050158015611990573d6000803e3d6000fd5b505050565b60125481565b6119a433612e70565b611a16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601681905550806017819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611c1457611b93826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ac9092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611c1f84848461316c565b90509392505050565b6000611ca5611c58600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612240565b611c97611c86600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612240565b600654613bf990919063ffffffff16565b613bf990919063ffffffff16565b905090565b611cb333612e70565b611d25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015611da257600080fd5b505af1158015611db6573d6000803e3d6000fd5b505050505050565b611dc733611e72565b611e39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601d60006101000a81548160ff02191690831515021790555080601d60016101000a81548160ff021916908360ff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b611edd33612e70565b611f4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611fd6827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6116f3565b9050919050565b611fe633612e70565b612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b601d60009054906101000a900460ff1681565b61207e33612e70565b6120f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601f60009054906101000a900460ff1681565b61216733612e70565b6121d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b83600f819055508260108190555081601181905550612213826122058587613c4390919063ffffffff16565b613c4390919063ffffffff16565b6012819055508060138190555060046013548161222c57fe5b046012541061223a57600080fd5b50505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601d60019054906101000a900460ff1681565b60085481565b60075481565b6122b133611e72565b612323576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b606481600654028161233157fe5b0460088190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f43524f4e00000000000000000000000000000000000000000000000000000000815250905090565b6123aa33612e70565b61241c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b0811061242b57600080fd5b80601c8190555050565b61243e33612e70565b6124b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061256933848461316c565b905092915050565b61257a33611e72565b6125ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601a5481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006126dd61267f611c28565b6126cf6126c060026126b2601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612240565b613ccb90919063ffffffff16565b85613ccb90919063ffffffff16565b613d5190919063ffffffff16565b9050919050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61277433612e70565b6127e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601f60006101000a81548160ff021916908315150217905550806020819055505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61283a33611e72565b6128ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61291033611e72565b612982576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b612a7233612e70565b612ae4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612b6e5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612b7757600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612c8557601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612c6857600080fd5b505af1158015612c7c573d6000803e3d6000fd5b50505050612d70565b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612d5757600080fd5b505af1158015612d6b573d6000803e3d6000fd5b505050505b5050565b612d7d33612e70565b612def576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601b60009054906101000a900460ff1681565b6000612f64826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ac9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ff982600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c4390919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000838311158290613159576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561311e578082015181840152602081019050613103565b50505050905090810190601f16801561314b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602160009054906101000a900460ff16156131955761318e848484612ed9565b9050613bf2565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132395750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132c157601b60009054906101000a900460ff166132c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f54726164696e67206e6f74206f70656e2079657400000000000000000000000081525060200191505060405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561334757503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156133a15750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156133fb5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156134555750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156134af5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156135205760006134bf84612240565b9050600854838201111561351e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e81526020018061485a603e913960400191505060405180910390fd5b505b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156135895750601d60009054906101000a900460ff165b80156135df5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136d45742601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061367b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806148146025913960400191505060405180910390fd5b601d60019054906101000a900460ff1660ff164201601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6136de8483613d9b565b6136e6613e6b565b156136f4576136f3613f42565b5b61377d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ac9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006137cb8561458a565b6137d557826137e0565b6137df85846145e1565b5b905061383481600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c4390919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166139b657601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561399a57600080fd5b505af19250505080156139ab575060015b6139b4576139b5565b5b5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613af557601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613ad957600080fd5b505af1925050508015613aea575060015b613af357613af4565b5b5b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601c546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015613b6c57600080fd5b505af1925050508015613b7d575060015b613b8657613b87565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b6000613c3b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130ac565b905092915050565b600080828401905083811015613cc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415613cde5760009050613d4b565b6000828402905082848281613cef57fe5b0414613d46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806148396021913960400191505060405180910390fd5b809150505b92915050565b6000613d9383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614725565b905092915050565b60075481111580613df55750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613e67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b5050565b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613ed85750602160009054906101000a900460ff16155b8015613ef05750601f60009054906101000a900460ff165b8015613f3d5750602054600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602160006101000a81548160ff0219169083151502179055506000613f6d60165460175461187d565b613f7957600f54613f7c565b60005b90506000613fc26002613fb4601254613fa686613f9830612240565b613ccb90919063ffffffff16565b613d5190919063ffffffff16565b613d5190919063ffffffff16565b90506000613fe182613fd330612240565b613bf990919063ffffffff16565b90506000600267ffffffffffffffff81118015613ffd57600080fd5b5060405190808252806020026020018201604052801561402c5781602001602082028036833780820191505090505b509050308160008151811061403d57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106140a757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156141aa57808201518184015260208101905061418f565b505050509050019650505050505050600060405180830381600087803b1580156141d357600080fd5b505af11580156141e7573d6000803e3d6000fd5b5050505060006142008247613bf990919063ffffffff16565b9050600061422c61421b600289613d5190919063ffffffff16565b601254613bf990919063ffffffff16565b90506000614268600261425a8461424c8c88613ccb90919063ffffffff16565b613d5190919063ffffffff16565b613d5190919063ffffffff16565b905060006142938361428560105487613ccb90919063ffffffff16565b613d5190919063ffffffff16565b905060006142be846142b060115488613ccb90919063ffffffff16565b613d5190919063ffffffff16565b9050601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561432a57600080fd5b505af19350505050801561433c575060015b61434557614346565b5b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051806000019050600060405180830381858888f193505050503d80600081146143cd576040519150601f19603f3d011682016040523d82523d6000602084013e6143d2565b606091505b505090506000905060008a111561456257601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b1580156144cf57600080fd5b505af11580156144e3573d6000803e3d6000fd5b50505050506040513d60608110156144fa57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b604051808381526020018281526020019250505060405180910390a15b50505050505050505050506000602160006101000a81548160ff021916908315150217905550565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061460d6013546145ff60125486613ccb90919063ffffffff16565b613d5190919063ffffffff16565b905061466181600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c4390919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a361471c8184613bf990919063ffffffff16565b91505092915050565b600080831182906147d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561479657808201518184015260208101905061477b565b50505050905090810190601f1680156147c35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816147dd57fe5b04905080915050939250505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220636f6f6c646f776e206265747765656e2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682ea264697066735822122020452cd766ed6bc7160627e8240bc0d68b64f168925489912ddbe1f7dc78739064736f6c63430007060033608060405273c21223249ca28397b4b6541dffaecc539bff0c59600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735c7f8a570d578ed84e63fdfa7b1ee72deae1ae23600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610a8c600d5569021e19e0c9bab2400000600e553480156100e157600080fd5b506040516119d33803806119d38339818101604052602081101561010457600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156101645773145677fc4d9b8f19b5d56d1820c48e0443049a30610166565b805b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506117dd806101f66000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed1461033b578063f0fc6bca14610366578063ffb2c4791461037d578063ffd49c84146103b8576100dd565b8063ce7c2ac214610293578063d0e30db014610306578063e2d2e21914610310576100dd565b80632d48e896116100bb5780632d48e896146101cd5780633a98ef39146102125780634fab0ae81461023d578063997664d714610268576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610168575b600080fd5b3480156100ee57600080fd5b506100f76103e3565b6040518082815260200191505060405180910390f35b34801561011957600080fd5b506101666004803603604081101561013057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103e9565b005b34801561017457600080fd5b506101b76004803603602081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106a8565b6040518082815260200191505060405180910390f35b3480156101d957600080fd5b50610210600480360360408110156101f057600080fd5b8101908080359060200190929190803590602001909291905050506107c2565b005b34801561021e57600080fd5b5061022761082c565b6040518082815260200191505060405180910390f35b34801561024957600080fd5b50610252610832565b6040518082815260200191505060405180910390f35b34801561027457600080fd5b5061027d610838565b6040518082815260200191505060405180910390f35b34801561029f57600080fd5b506102e2600480360360208110156102b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b60405180848152602001838152602001828152602001935050505060405180910390f35b61030e610868565b005b34801561031c57600080fd5b50610325610ce3565b6040518082815260200191505060405180910390f35b34801561034757600080fd5b50610350610ce9565b6040518082815260200191505060405180910390f35b34801561037257600080fd5b5061037b610cef565b005b34801561038957600080fd5b506103b6600480360360208110156103a057600080fd5b8101908080359060200190929190505050610cfa565b005b3480156103c457600080fd5b506103cd610e74565b6040518082815260200191505060405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461044157600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104965761049582610e7a565b5b6000811180156104e857506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104fb576104f682611140565b61055d565b60008114801561054d57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561055c5761055b826111ef565b5b5b6105c6816105b8600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546008546113c890919063ffffffff16565b61141290919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061065e600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106fd57600090506107bd565b600061074a600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116107a5576000925050506107bd565b6107b881836113c890919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461081a57600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c057600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561094b57600080fd5b505afa15801561095f573d6000803e3d6000fd5b505050506040513d602081101561097557600080fd5b810190808051906020019092919050505090506000600267ffffffffffffffff811180156109a257600080fd5b506040519080825280602002602001820160405280156109d15781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110610a0457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610a6e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610b66578082015181840152602081019050610b4b565b50505050905001955050505050506000604051808303818588803b158015610b8d57600080fd5b505af1158015610ba1573d6000803e3d6000fd5b50505050506000610c7e83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c3557600080fd5b505afa158015610c49573d6000803e3d6000fd5b505050506040513d6020811015610c5f57600080fd5b81019080805190602001909291905050506113c890919063ffffffff16565b9050610c958160095461141290919063ffffffff16565b600981905550610cd8610cc7600854610cb984600c546114cc90919063ffffffff16565b61155290919063ffffffff16565b600b5461141290919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b610cf833610e7a565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d5257600080fd5b600060048054905090506000811415610d6b5750610e71565b6000805a905060005b8483108015610d8257508381105b15610e6c5783600f5410610d99576000600f819055505b610ddb6004600f5481548110610dab57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661159c565b15610e2357610e226004600f5481548110610df257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e7a565b5b610e48610e395a846113c890919063ffffffff16565b8461141290919063ffffffff16565b92505a9150600f600081548092919060010191905055508080600101915050610d74565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610eca5761113d565b6000610ed5826106a8565b9050600081111561113b57610ef581600a5461141290919063ffffffff16565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f8e57600080fd5b505af1158015610fa2573d6000803e3d6000fd5b505050506040513d6020811015610fb857600080fd5b81019080805190602001909291905050505042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061106381600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461141290919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506110f4600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046001600480549050038154811061120457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061127b57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600060046001600480549050038154811061131c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600480548061139057fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061140a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611600565b905092915050565b600080828401905083811015611490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006114c5600c546114b7600b54856114cc90919063ffffffff16565b61155290919063ffffffff16565b9050919050565b6000808314156114df576000905061154c565b60008284029050828482816114f057fe5b0414611547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117876021913960400191505060405180910390fd5b809150505b92915050565b600061159483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116c0565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011080156115f95750600e546115f7836106a8565b115b9050919050565b60008383111582906116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611672578082015181840152602081019050611657565b50505050905090810190601f16801561169f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808311829061176c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611731578082015181840152602081019050611716565b50505050905090810190601f16801561175e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161177857fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212203798b2fe2ab7efbf1c25baff5ef6856aa772d49276f4708e6479bbfb3319b28264736f6c63430007060033

Deployed Bytecode

0x6080604052600436106102975760003560e01c8063722b62ad1161015a578063ca33e64c116100c1578063f2fde38b1161007a578063f2fde38b14610fe4578063f708a64f14611035578063f84ba65d14611092578063f887ea40146110ef578063fe9fbb8014611130578063ffb54a99146111975761029e565b8063ca33e64c14610df6578063d51ed1c814610e37578063dd62ed3e14610e86578063df20fd4914610f0b578063e96fada214610f52578063f0b37c0414610f935761029e565b80639d1944f5116101135780639d1944f514610c1c578063a4b45c0014610c57578063a8aa1b3114610cc8578063a9059cbb14610d09578063b6a5d7de14610d7a578063bf56b37114610dcb5761029e565b8063722b62ad14610a8c57806378109e5414610aba5780637d1db4a514610ae557806382bf293c14610b10578063893d20e814610b4b57806395d89b4114610b8c5761029e565b80632d48e896116101fe5780635c85974f116101b75780635c85974f146108dc578063617fe0ed14610917578063658d4b7f146109445780636ddd1713146109a15780636fcba377146109ce57806370a0823114610a275761029e565b80632d48e896146106f45780632d594567146107395780632f54bf6e14610783578063313ce567146107ea57806350db71fb14610818578063571ac8b0146108755761029e565b806318160ddd1161025057806318160ddd146105625780631da1db5e1461058d5780631df4ccfc146105c8578063201e7991146105f357806323b872dd146106385780632b112e49146106c95761029e565b8063025ff12f146102a35780630445b6671461039e57806306fdde03146103c9578063095ea7b3146104595780630d295980146104ca5780631161ae39146105075761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b5061039c600480360360608110156102c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561030357600080fd5b82018360208201111561031557600080fd5b8035906020019184602083028401116401000000008311171561033757600080fd5b90919293919293908035906020019064010000000081111561035857600080fd5b82018360208201111561036a57600080fd5b8035906020019184602083028401116401000000008311171561038c57600080fd5b90919293919293905050506111c4565b005b3480156103aa57600080fd5b506103b36116b0565b6040518082815260200191505060405180910390f35b3480156103d557600080fd5b506103de6116b6565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561041e578082015181840152602081019050610403565b50505050905090810190601f16801561044b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561046557600080fd5b506104b26004803603604081101561047c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116f3565b60405180821515815260200191505060405180910390f35b3480156104d657600080fd5b50610505600480360360208110156104ed57600080fd5b810190808035151590602001909291905050506117e5565b005b34801561051357600080fd5b5061054a6004803603604081101561052a57600080fd5b81019080803590602001909291908035906020019092919050505061187d565b60405180821515815260200191505060405180910390f35b34801561056e57600080fd5b50610577611892565b6040518082815260200191505060405180910390f35b34801561059957600080fd5b506105c6600480360360208110156105b057600080fd5b810190808035906020019092919050505061189c565b005b3480156105d457600080fd5b506105dd611995565b6040518082815260200191505060405180910390f35b3480156105ff57600080fd5b506106366004803603604081101561061657600080fd5b81019080803590602001909291908035906020019092919050505061199b565b005b34801561064457600080fd5b506106b16004803603606081101561065b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a28565b60405180821515815260200191505060405180910390f35b3480156106d557600080fd5b506106de611c28565b6040518082815260200191505060405180910390f35b34801561070057600080fd5b506107376004803603604081101561071757600080fd5b810190808035906020019092919080359060200190929190505050611caa565b005b34801561074557600080fd5b506107816004803603604081101561075c57600080fd5b81019080803515159060200190929190803560ff169060200190929190505050611dbe565b005b34801561078f57600080fd5b506107d2600480360360208110156107a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e72565b60405180821515815260200191505060405180910390f35b3480156107f657600080fd5b506107ff611ecb565b604051808260ff16815260200191505060405180910390f35b34801561082457600080fd5b506108736004803603604081101561083b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611ed4565b005b34801561088157600080fd5b506108c46004803603602081101561089857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611faa565b60405180821515815260200191505060405180910390f35b3480156108e857600080fd5b50610915600480360360208110156108ff57600080fd5b8101908080359060200190929190505050611fdd565b005b34801561092357600080fd5b5061092c612062565b60405180821515815260200191505060405180910390f35b34801561095057600080fd5b5061099f6004803603604081101561096757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612075565b005b3480156109ad57600080fd5b506109b661214b565b60405180821515815260200191505060405180910390f35b3480156109da57600080fd5b50610a25600480360360808110156109f157600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035906020019092919050505061215e565b005b348015610a3357600080fd5b50610a7660048036036020811015610a4a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612240565b6040518082815260200191505060405180910390f35b348015610a9857600080fd5b50610aa1612289565b604051808260ff16815260200191505060405180910390f35b348015610ac657600080fd5b50610acf61229c565b6040518082815260200191505060405180910390f35b348015610af157600080fd5b50610afa6122a2565b6040518082815260200191505060405180910390f35b348015610b1c57600080fd5b50610b4960048036036020811015610b3357600080fd5b81019080803590602001909291905050506122a8565b005b348015610b5757600080fd5b50610b6061233b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b9857600080fd5b50610ba1612364565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610be1578082015181840152602081019050610bc6565b50505050905090810190601f168015610c0e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c2857600080fd5b50610c5560048036036020811015610c3f57600080fd5b81019080803590602001909291905050506123a1565b005b348015610c6357600080fd5b50610cc660048036036040811015610c7a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612435565b005b348015610cd457600080fd5b50610cdd612536565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d1557600080fd5b50610d6260048036036040811015610d2c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061255c565b60405180821515815260200191505060405180910390f35b348015610d8657600080fd5b50610dc960048036036020811015610d9d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612571565b005b348015610dd757600080fd5b50610de0612646565b6040518082815260200191505060405180910390f35b348015610e0257600080fd5b50610e0b61264c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e4357600080fd5b50610e7060048036036020811015610e5a57600080fd5b8101908080359060200190929190505050612672565b6040518082815260200191505060405180910390f35b348015610e9257600080fd5b50610ef560048036036040811015610ea957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126e4565b6040518082815260200191505060405180910390f35b348015610f1757600080fd5b50610f5060048036036040811015610f2e57600080fd5b810190808035151590602001909291908035906020019092919050505061276b565b005b348015610f5e57600080fd5b50610f6761280b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f9f57600080fd5b50610fe260048036036020811015610fb657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612831565b005b348015610ff057600080fd5b506110336004803603602081101561100757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612907565b005b34801561104157600080fd5b506110906004803603604081101561105857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612a69565b005b34801561109e57600080fd5b506110ed600480360360408110156110b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612d74565b005b3480156110fb57600080fd5b50611104612e4a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561113c57600080fd5b5061117f6004803603602081101561115357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e70565b60405180821515815260200191505060405180910390f35b3480156111a357600080fd5b506111ac612ec6565b60405180821515815260200191505060405180910390f35b6111cd33611e72565b61123f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600082829050858590501461129f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806147ec6028913960400191505060405180910390fd5b60005b858590508110156112d1578383828181106112b957fe5b905060200201358201915080806001019150506112a2565b50806112dc87612240565b1015611350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4e6f7420656e6f75676820746f6b656e7320746f2061697264726f700000000081525060200191505060405180910390fd5b60005b85859050811015611568576113a38787878481811061136e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1686868581811061139757fe5b90506020020135612ed9565b50600e60008787848181106113b457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661155b57601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687878481811061146757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16600960008a8a8781811061149457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561153f57600080fd5b505af1925050508015611550575060015b6115595761155a565b5b5b8080600101915050611353565b50600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166116a857601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561168c57600080fd5b505af192505050801561169d575060015b6116a6576116a7565b5b5b505050505050565b60205481565b60606040518060400160405280600981526020017f43726f4e6f6d6963730000000000000000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6117ee33611e72565b611860576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b60008261188983612672565b11905092915050565b6000600654905090565b6118a533611e72565b611917576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000479050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648484028161196457fe5b049081150290604051600060405180830381858888f19350505050158015611990573d6000803e3d6000fd5b505050565b60125481565b6119a433612e70565b611a16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601681905550806017819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611c1457611b93826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ac9092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611c1f84848461316c565b90509392505050565b6000611ca5611c58600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612240565b611c97611c86600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612240565b600654613bf990919063ffffffff16565b613bf990919063ffffffff16565b905090565b611cb333612e70565b611d25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015611da257600080fd5b505af1158015611db6573d6000803e3d6000fd5b505050505050565b611dc733611e72565b611e39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601d60006101000a81548160ff02191690831515021790555080601d60016101000a81548160ff021916908360ff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b611edd33612e70565b611f4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611fd6827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6116f3565b9050919050565b611fe633612e70565b612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b601d60009054906101000a900460ff1681565b61207e33612e70565b6120f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601f60009054906101000a900460ff1681565b61216733612e70565b6121d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b83600f819055508260108190555081601181905550612213826122058587613c4390919063ffffffff16565b613c4390919063ffffffff16565b6012819055508060138190555060046013548161222c57fe5b046012541061223a57600080fd5b50505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601d60019054906101000a900460ff1681565b60085481565b60075481565b6122b133611e72565b612323576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b606481600654028161233157fe5b0460088190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f43524f4e00000000000000000000000000000000000000000000000000000000815250905090565b6123aa33612e70565b61241c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b0811061242b57600080fd5b80601c8190555050565b61243e33612e70565b6124b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061256933848461316c565b905092915050565b61257a33611e72565b6125ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601a5481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006126dd61267f611c28565b6126cf6126c060026126b2601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612240565b613ccb90919063ffffffff16565b85613ccb90919063ffffffff16565b613d5190919063ffffffff16565b9050919050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61277433612e70565b6127e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601f60006101000a81548160ff021916908315150217905550806020819055505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61283a33611e72565b6128ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61291033611e72565b612982576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b612a7233612e70565b612ae4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612b6e5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612b7757600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612c8557601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612c6857600080fd5b505af1158015612c7c573d6000803e3d6000fd5b50505050612d70565b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612d5757600080fd5b505af1158015612d6b573d6000803e3d6000fd5b505050505b5050565b612d7d33612e70565b612def576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601b60009054906101000a900460ff1681565b6000612f64826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ac9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ff982600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c4390919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000838311158290613159576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561311e578082015181840152602081019050613103565b50505050905090810190601f16801561314b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602160009054906101000a900460ff16156131955761318e848484612ed9565b9050613bf2565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132395750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132c157601b60009054906101000a900460ff166132c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f54726164696e67206e6f74206f70656e2079657400000000000000000000000081525060200191505060405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561334757503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156133a15750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156133fb5750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156134555750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156134af5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156135205760006134bf84612240565b9050600854838201111561351e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e81526020018061485a603e913960400191505060405180910390fd5b505b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156135895750601d60009054906101000a900460ff165b80156135df5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136d45742601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061367b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806148146025913960400191505060405180910390fd5b601d60019054906101000a900460ff1660ff164201601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6136de8483613d9b565b6136e6613e6b565b156136f4576136f3613f42565b5b61377d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130ac9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006137cb8561458a565b6137d557826137e0565b6137df85846145e1565b5b905061383481600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c4390919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166139b657601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561399a57600080fd5b505af19250505080156139ab575060015b6139b4576139b5565b5b5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613af557601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613ad957600080fd5b505af1925050508015613aea575060015b613af357613af4565b5b5b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601c546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015613b6c57600080fd5b505af1925050508015613b7d575060015b613b8657613b87565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b6000613c3b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130ac565b905092915050565b600080828401905083811015613cc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415613cde5760009050613d4b565b6000828402905082848281613cef57fe5b0414613d46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806148396021913960400191505060405180910390fd5b809150505b92915050565b6000613d9383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614725565b905092915050565b60075481111580613df55750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613e67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b5050565b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613ed85750602160009054906101000a900460ff16155b8015613ef05750601f60009054906101000a900460ff165b8015613f3d5750602054600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602160006101000a81548160ff0219169083151502179055506000613f6d60165460175461187d565b613f7957600f54613f7c565b60005b90506000613fc26002613fb4601254613fa686613f9830612240565b613ccb90919063ffffffff16565b613d5190919063ffffffff16565b613d5190919063ffffffff16565b90506000613fe182613fd330612240565b613bf990919063ffffffff16565b90506000600267ffffffffffffffff81118015613ffd57600080fd5b5060405190808252806020026020018201604052801561402c5781602001602082028036833780820191505090505b509050308160008151811061403d57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106140a757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156141aa57808201518184015260208101905061418f565b505050509050019650505050505050600060405180830381600087803b1580156141d357600080fd5b505af11580156141e7573d6000803e3d6000fd5b5050505060006142008247613bf990919063ffffffff16565b9050600061422c61421b600289613d5190919063ffffffff16565b601254613bf990919063ffffffff16565b90506000614268600261425a8461424c8c88613ccb90919063ffffffff16565b613d5190919063ffffffff16565b613d5190919063ffffffff16565b905060006142938361428560105487613ccb90919063ffffffff16565b613d5190919063ffffffff16565b905060006142be846142b060115488613ccb90919063ffffffff16565b613d5190919063ffffffff16565b9050601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561432a57600080fd5b505af19350505050801561433c575060015b61434557614346565b5b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051806000019050600060405180830381858888f193505050503d80600081146143cd576040519150601f19603f3d011682016040523d82523d6000602084013e6143d2565b606091505b505090506000905060008a111561456257601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b1580156144cf57600080fd5b505af11580156144e3573d6000803e3d6000fd5b50505050506040513d60608110156144fa57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b604051808381526020018281526020019250505060405180910390a15b50505050505050505050506000602160006101000a81548160ff021916908315150217905550565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061460d6013546145ff60125486613ccb90919063ffffffff16565b613d5190919063ffffffff16565b905061466181600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c4390919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a361471c8184613bf990919063ffffffff16565b91505092915050565b600080831182906147d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561479657808201518184015260208101905061477b565b50505050905090810190601f1680156147c35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816147dd57fe5b04905080915050939250505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220636f6f6c646f776e206265747765656e2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682ea264697066735822122020452cd766ed6bc7160627e8240bc0d68b64f168925489912ddbe1f7dc78739064736f6c63430007060033

Deployed ByteCode Sourcemap

11556:14153:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24852:788;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13352:56;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15012:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15434:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20025:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24667:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14742:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19775:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12652:28;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23816:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15946:364;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24342:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24007:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20166:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3370:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14836:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22847:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15658:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22124:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13156:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22583:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13315:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22985:423;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15182:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13200:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12174:59;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12076:57;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16398:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15098:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14922:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24198:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23416:228;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12939:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15782:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3043:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12967:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12737:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24492:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15293:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23652:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12780:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3213:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3770:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22228:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22711:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12908:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3544:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12999:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24852:788;2759:19;2767:10;2759:7;:19::i;:::-;2751:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24968:12:::1;25021:6;;:13;;25001:9;;:16;;:33;24993:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25091:6;25087:82;25105:9;;:16;;25101:1;:20;25087:82;;;25152:6;;25159:1;25152:9;;;;;;;;;;;;;25145:4;:16;25138:23;;25123:3;;;;;;;25087:82;;;;25204:4;25185:15;25195:4;25185:9;:15::i;:::-;:23;;25177:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;25254:6;25250:249;25268:9;;:16;;25264:1;:20;25250:249;;;25301:43;25316:4;25321:9;;25331:1;25321:12;;;;;;;;;;;;;;;25334:6;;25341:1;25334:9;;;;;;;;;;;;;25301:14;:43::i;:::-;;25359:16;:30;25376:9;;25386:1;25376:12;;;;;;;;;;;;;;;25359:30;;;;;;;;;;;;;;;;;;;;;;;;;25355:137;;25410:11;;;;;;;;;;;:20;;;25431:9;;25441:1;25431:12;;;;;;;;;;;;;;;25445:9;:23;25455:9;;25465:1;25455:12;;;;;;;;;;;;;;;25445:23;;;;;;;;;;;;;;;;25410:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;25406:75;;;;;;25355:137;25286:3;;;;;;;25250:249;;;;25536:16;:22;25553:4;25536:22;;;;;;;;;;;;;;;;;;;;;;;;;25532:105;;25575:11;;;;;;;;;;;:20;;;25596:4;25602:9;:15;25612:4;25602:15;;;;;;;;;;;;;;;;25575:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;25571:59;;;;;;25532:105;2791:1;24852:788:::0;;;;;:::o;13352:56::-;;;;:::o;15012:80::-;15060:13;15084:5;;;;;;;;;;;;;;;;;15077:12;;15012:80;:::o;15434:216::-;15509:4;15561:6;15526:11;:23;15538:10;15526:23;;;;;;;;;;;;;;;:32;15550:7;15526:32;;;;;;;;;;;;;;;:41;;;;15604:7;15583:37;;15592:10;15583:37;;;15613:6;15583:37;;;;;;;;;;;;;;;;;;15638:4;15631:11;;15434:216;;;;:::o;20025:94::-;2759:19;2767:10;2759:7;:19::i;:::-;2751:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20104:7:::1;20090:11;;:21;;;;;;;;;;;;;;;;;;20025:94:::0;:::o;24667:150::-;24747:4;24803:6;24771:29;24791:8;24771:19;:29::i;:::-;:38;24764:45;;24667:150;;;;:::o;14742:88::-;14797:7;14815:12;;14808:19;;14742:88;:::o;19775:217::-;2759:19;2767:10;2759:7;:19::i;:::-;2751:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19858:17:::1;19878:21;19858:41;;19918:20;;;;;;;;;;;19910:38;;:74;19980:3;19961:16;19949:9;:28;:34;;;;;;19910:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;2791:1;19775:217:::0;:::o;12652:28::-;;;;:::o;23816:183::-;2928:24;2941:10;2928:12;:24::i;:::-;2920:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23932:7:::1;23914:15;:25;;;;23979:12;23950:26;:41;;;;23816:183:::0;;:::o;15946:364::-;16046:4;16109:2;16066:11;:19;16078:6;16066:19;;;;;;;;;;;;;;;:31;16086:10;16066:31;;;;;;;;;;;;;;;;:46;16063:180;;16162:69;16198:6;16162:69;;;;;;;;;;;;;;;;;:11;:19;16174:6;16162:19;;;;;;;;;;;;;;;:31;16182:10;16162:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;16128:11;:19;16140:6;16128:19;;;;;;;;;;;;;;;:31;16148:10;16128:31;;;;;;;;;;;;;;;:103;;;;16063:180;16262:40;16276:6;16284:9;16295:6;16262:13;:40::i;:::-;16255:47;;15946:364;;;;;:::o;24342:142::-;24395:7;24422:54;24460:15;24470:4;;;;;;;;;;;24460:9;:15::i;:::-;24422:33;24439:15;24449:4;;;;;;;;;;;24439:9;:15::i;:::-;24422:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;24415:61;;24342:142;:::o;24007:183::-;2928:24;2941:10;2928:12;:24::i;:::-;2920:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24117:11:::1;;;;;;;;;;;:35;;;24153:10;24165:16;24117:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24007:183:::0;;:::o;20166:164::-;2759:19;2767:10;2759:7;:19::i;:::-;2751:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20271:7:::1;20250:18;;:28;;;;;;;;;;;;;;;;;;20313:9;20289:21;;:33;;;;;;;;;;;;;;;;;;20166:164:::0;;:::o;3370:103::-;3425:4;3460:5;;;;;;;;;;;3449:16;;:7;:16;;;3442:23;;3370:103;;;:::o;14836:80::-;14888:5;12007:1;14897:16;;14836:80;:::o;22847:130::-;2928:24;2941:10;2928:12;:24::i;:::-;2920:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22963:6:::1;22936:16;:24;22953:6;22936:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;22847:130:::0;;:::o;15658:116::-;15713:4;15737:29;15745:7;15762:2;15737:7;:29::i;:::-;15730:36;;15658:116;;;:::o;22124:96::-;2928:24;2941:10;2928:12;:24::i;:::-;2920:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22206:6:::1;22191:12;:21;;;;22124:96:::0;:::o;13156:37::-;;;;;;;;;;;;;:::o;22583:120::-;2928:24;2941:10;2928:12;:24::i;:::-;2920:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22689:6:::1;22667:11;:19;22679:6;22667:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22583:120:::0;;:::o;13315:30::-;;;;;;;;;;;;;:::o;22985:423::-;2928:24;2941:10;2928:12;:24::i;:::-;2920:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23143:13:::1;23128:12;:28;;;;23183:14;23167:13;:30;;;;23223:13;23208:12;:28;;;;23258:52;23296:13;23258:33;23276:14;23258:13;:17;;:33;;;;:::i;:::-;:37;;:52;;;;:::i;:::-;23247:8;:63;;;;23338:15;23321:14;:32;;;;23398:1;23383:14;;:16;;;;;;23372:8;;:27;23364:36;;;::::0;::::1;;22985:423:::0;;;;:::o;15182:105::-;15248:7;15266:9;:18;15276:7;15266:18;;;;;;;;;;;;;;;;15259:25;;15182:105;;;:::o;13200:38::-;;;;;;;;;;;;;:::o;12174:59::-;;;;:::o;12076:57::-;;;;:::o;16398:149::-;2759:19;2767:10;2759:7;:19::i;:::-;2751:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16536:3:::1;16517:14;16502:12;;:29;16501:38;;;;;;16483:15;:56;;;;16398:149:::0;:::o;15098:78::-;15150:7;15168:5;;;;;;;;;;;15161:12;;15098:78;:::o;14922:84::-;14972:13;14996:7;;;;;;;;;;;;;;;;;14989:14;;14922:84;:::o;24198:136::-;2928:24;2941:10;2928:12;:24::i;:::-;2920:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24288:6:::1;24282:3;:12;24274:21;;;::::0;::::1;;24323:3;24306:14;:20;;;;24198:136:::0;:::o;23416:228::-;2928:24;2941:10;2928:12;:24::i;:::-;2920:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23559:22:::1;23535:21;;:46;;;;;;;;;;;;;;;;;;23615:21;23592:20;;:44;;;;;;;;;;;;;;;;;;23416:228:::0;;:::o;12939:19::-;;;;;;;;;;;;;:::o;15782:156::-;15862:4;15886:44;15900:10;15912:9;15923:6;15886:13;:44::i;:::-;15879:51;;15782:156;;;;:::o;3043:94::-;2759:19;2767:10;2759:7;:19::i;:::-;2751:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3125:4:::1;3103:14:::0;:19:::1;3118:3;3103:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3043:94:::0;:::o;12967:25::-;;;;:::o;12737:36::-;;;;;;;;;;;;;:::o;24492:167::-;24560:7;24587:64;24628:22;:20;:22::i;:::-;24587:36;24600:22;24620:1;24600:15;24610:4;;;;;;;;;;;24600:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;24587:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;24580:71;;24492:167;;;:::o;15293:133::-;15377:7;15395:11;:19;15407:6;15395:19;;;;;;;;;;;;;;;:28;15415:7;15395:28;;;;;;;;;;;;;;;;15388:35;;15293:133;;;;:::o;23652:156::-;2928:24;2941:10;2928:12;:24::i;:::-;2920:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23758:8:::1;23744:11;;:22;;;;;;;;;;;;;;;;;;23793:7;23777:13;:23;;;;23652:156:::0;;:::o;12780:35::-;;;;;;;;;;;;;:::o;3213:97::-;2759:19;2767:10;2759:7;:19::i;:::-;2751:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3297:5:::1;3275:14;:19;3290:3;3275:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3213:97:::0;:::o;3770:173::-;2759:19;2767:10;2759:7;:19::i;:::-;2751:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3854:3:::1;3846:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3890:4;3868:14:::0;:19:::1;3883:3;3868:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3910:25;3931:3;3910:25;;;;;;;;;;;;;;;;;;;;3770:173:::0;:::o;22228:347::-;2928:24;2941:10;2928:12;:24::i;:::-;2920:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22343:4:::1;22325:23;;:6;:23;;;;:41;;;;;22362:4;;;;;;;;;;;22352:14;;:6;:14;;;;22325:41;22317:50;;;::::0;::::1;;22405:6;22378:16;:24;22395:6;22378:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;22425:6;22422:146;;;22447:11;;;;;;;;;;;:20;;;22468:6;22476:1;22447:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22422:146;;;22509:11;;;;;;;;;;;:20;;;22530:6;22538:9;:17;22548:6;22538:17;;;;;;;;;;;;;;;;22509:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22422:146;22228:347:::0;;:::o;22711:128::-;2928:24;2941:10;2928:12;:24::i;:::-;2920:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22825:6:::1;22799:15;:23;22815:6;22799:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;22711:128:::0;;:::o;12908:24::-;;;;;;;;;;;;;:::o;3544:107::-;3600:4;3624:14;:19;3639:3;3624:19;;;;;;;;;;;;;;;;;;;;;;;;;3617:26;;3544:107;;;:::o;12999:31::-;;;;;;;;;;;;;:::o;18595:330::-;18688:4;18725:53;18747:6;18725:53;;;;;;;;;;;;;;;;;:9;:17;18735:6;18725:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;18705:9;:17;18715:6;18705:17;;;;;;;;;;;;;;;:73;;;;18812:32;18837:6;18812:9;:20;18822:9;18812:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;18789:9;:20;18799:9;18789:20;;;;;;;;;;;;;;;:55;;;;18877:9;18860:35;;18869:6;18860:35;;;18888:6;18860:35;;;;;;;;;;;;;;;;;;18913:4;18906:11;;18595:330;;;;;:::o;429:192::-;515:7;548:1;543;:6;;551:12;535:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;575:9;591:1;587;:5;575:17;;612:1;605:8;;;429:192;;;;;:::o;16555:2032::-;16647:4;16667:6;;;;;;;;;;;16664:63;;;16683:41;16698:6;16706:9;16717:6;16683:14;:41::i;:::-;16676:48;;;;16664:63;16743:14;:22;16758:6;16743:22;;;;;;;;;;;;;;;;;;;;;;;;;16742:23;:53;;;;;16770:14;:25;16785:9;16770:25;;;;;;;;;;;;;;;;;;;;;;;;;16769:26;16742:53;16739:127;;;16819:11;;;;;;;;;;;16811:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16739:127;16911:14;:22;16926:6;16911:22;;;;;;;;;;;;;;;;;;;;;;;;;16910:23;:53;;;;;16958:4;16937:26;;:9;:26;;;;16910:53;:84;;;;;16989:4;;;;;;;;;;;16968:26;;:9;:26;;;;16910:84;:105;;;;;17011:4;;;;;;;;;;;16998:17;;:9;:17;;;;16910:105;:142;;;;;17032:20;;;;;;;;;;;17019:33;;:9;:33;;;;16910:142;:180;;;;;17069:21;;;;;;;;;;;17056:34;;:9;:34;;;;16910:180;16906:372;;;17106:18;17127:20;17137:9;17127;:20::i;:::-;17106:41;;17195:15;;17184:6;17171:10;:19;17170:40;;17162:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16906:372;;17396:4;;;;;;;;;;;17386:14;;:6;:14;;;:49;;;;;17417:18;;;;;;;;;;;17386:49;:94;;;;;17453:16;:27;17470:9;17453:27;;;;;;;;;;;;;;;;;;;;;;;;;17452:28;17386:94;17382:299;;;17532:15;17505:13;:24;17519:9;17505:24;;;;;;;;;;;;;;;;:42;17497:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17648:21;;;;;;;;;;;17630:39;;:15;:39;17603:13;:24;17617:9;17603:24;;;;;;;;;;;;;;;:66;;;;17382:299;17736:28;17749:6;17757;17736:12;:28::i;:::-;17821:16;:14;:16::i;:::-;17818:35;;;17840:10;:8;:10::i;:::-;17818:35;17912:53;17934:6;17912:53;;;;;;;;;;;;;;;;;:9;:17;17922:6;17912:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;17892:9;:17;17902:6;17892:17;;;;;;;;;;;;;;;:73;;;;17978:22;18003:21;18017:6;18003:13;:21::i;:::-;:56;;18053:6;18003:56;;;18027:23;18035:6;18043;18027:7;:23::i;:::-;18003:56;17978:81;;18093:40;18118:14;18093:9;:20;18103:9;18093:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;18070:9;:20;18080:9;18070:20;;;;;;;;;;;;;;;:63;;;;18179:16;:24;18196:6;18179:24;;;;;;;;;;;;;;;;;;;;;;;;;18175:119;;18224:11;;;;;;;;;;;:20;;;18245:6;18253:9;:17;18263:6;18253:17;;;;;;;;;;;;;;;;18224:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18220:63;;;;;;18175:119;18310:16;:27;18327:9;18310:27;;;;;;;;;;;;;;;;;;;;;;;;;18306:128;;18358:11;;;;;;;;;;;:20;;;18379:9;18390;:20;18400:9;18390:20;;;;;;;;;;;;;;;;18358:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18354:69;;;;;;18306:128;18450:11;;;;;;;;;;;:19;;;18470:14;;18450:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18446:51;;;;;;18531:9;18514:43;;18523:6;18514:43;;;18542:14;18514:43;;;;;;;;;;;;;;;;;;18575:4;18568:11;;;16555:2032;;;;;;:::o;287:136::-;345:7;372:43;376:1;379;372:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;365:50;;287:136;;;;:::o;100:181::-;158:7;178:9;194:1;190;:5;178:17;;219:1;214;:6;;206:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;272:1;265:8;;;100:181;;;;:::o;627:250::-;685:7;714:1;709;:6;705:47;;;739:1;732:8;;;;705:47;764:9;780:1;776;:5;764:17;;809:1;804;800;:5;;;;;;:10;792:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;868:1;861:8;;;627:250;;;;;:::o;883:132::-;941:7;968:39;972:1;975;968:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;961:46;;883:132;;;;:::o;18933:166::-;19030:12;;19020:6;:22;;:49;;;;19046:15;:23;19062:6;19046:23;;;;;;;;;;;;;;;;;;;;;;;;;19020:49;19012:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18933:166;;:::o;19570:197::-;19619:4;19657;;;;;;;;;;;19643:18;;:10;:18;;;;:38;;;;;19675:6;;;;;;;;;;;19674:7;19643:38;:62;;;;;19694:11;;;;;;;;;;;19643:62;:116;;;;;19746:13;;19718:9;:24;19736:4;19718:24;;;;;;;;;;;;;;;;:41;;19643:116;19636:123;;19570:197;:::o;20342:1772::-;13483:4;13474:6;;:13;;;;;;;;;;;;;;;;;;20391:27:::1;20421:60;20437:15;;20454:26;;20421:15;:60::i;:::-;:79;;20488:12;;20421:79;;;20484:1;20421:79;20391:109;;20511:23;20537:70;20605:1;20537:63;20591:8;;20537:49;20566:19;20537:24;20555:4;20537:9;:24::i;:::-;:28;;:49;;;;:::i;:::-;:53;;:63;;;;:::i;:::-;:67;;:70;;;;:::i;:::-;20511:96;;20618:20;20641:45;20670:15;20641:24;20659:4;20641:9;:24::i;:::-;:28;;:45;;;;:::i;:::-;20618:68;;20699:21;20737:1;20723:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20699:40;;20768:4;20750;20755:1;20750:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;20794:4;;;;;;;;;;;20784;20789:1;20784:7;;;;;;;;;;;;;:14;;;;;;;;;::::0;::::1;20811:21;20835;20811:45;;20869:6;;;;;;;;;;;:57;;;20941:12;20968:1;20984:4;21011;21031:15;20869:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21070:17;21090:40;21116:13;21090:21;:25;;:40;;;;:::i;:::-;21070:60;;21143:19;21165:40;21178:26;21202:1;21178:19;:23;;:26;;;;:::i;:::-;21165:8;;:12;;:40;;;;:::i;:::-;21143:62;;21218:26;21247:58;21303:1;21247:51;21286:11;21247:34;21261:19;21247:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;21218:87;;21316:27;21346:45;21379:11;21346:28;21360:13;;21346:9;:13;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;21316:75;;21402:26;21431:44;21463:11;21431:27;21445:12;;21431:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;21402:73;;21492:11;;;;;;;;;;;:19;;;21519;21492:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;21488:65;;;;;;21564:15;21592:20;;;;;;;;;;;21584:34;;21626:18;21651:5;21584:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21563:98;;;21727:5;21714:18;;21766:1;21748:15;:19;21745:362;;;21783:6;;;;;;;;;;;:22;;;21813:18;21859:4;21883:15;21917:1;21937::::0;21957:21:::1;;;;;;;;;;;21997:15;21783:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22047:48;22059:18;22079:15;22047:48;;;;;;;;;;;;;;;;;;;;;;;;21745:362;13489:1;;;;;;;;;;;13501:5:::0;13492:6;;:14;;;;;;;;;;;;;;;;;;20342:1772::o;19107:114::-;19169:4;19194:11;:19;19206:6;19194:19;;;;;;;;;;;;;;;;;;;;;;;;;19193:20;19186:27;;19107:114;;;:::o;19229:333::-;19296:7;19316:17;19336:40;19361:14;;19336:20;19347:8;;19336:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;19316:60;;19416:39;19445:9;19416;:24;19434:4;19416:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;19389:9;:24;19407:4;19389:24;;;;;;;;;;;;;;;:66;;;;19496:4;19471:42;;19480:6;19471:42;;;19503:9;19471:42;;;;;;;;;;;;;;;;;;19533:21;19544:9;19533:6;:10;;:21;;;;:::i;:::-;19526:28;;;19229:333;;;;:::o;1021:345::-;1107:7;1206:1;1202;:5;1209:12;1194:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1233:9;1249:1;1245;:5;;;;;;1233:17;;1357:1;1350:8;;;1021:345;;;;;:::o

Swarm Source

ipfs://3798b2fe2ab7efbf1c25baff5ef6856aa772d49276f4708e6479bbfb3319b282
Loading