Contract 0x71776B524E85CE0FD7FE7de3AA2E11893eB46D33

 

Contract Overview

Balance:
0.002759811528506305 BNB

BNB Value:
$1.07 (@ $386.31/BNB)

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x765f579071c1180d0b3c3db92660049320b5e9fb58dd6a15b252b06e7cf7332bTrading Status114559922021-10-03 17:13:32117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.000141705
0x46b76a3d8afca0f23aa97f4396ad90cc182d188b3f78533630dda4b8a83c87c4Set Fees114559322021-10-03 17:10:32117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.00018683
0xf4facf9bfce53a0753251acb0d675cfd8e66a725c0893121662d615648e85531Set Fees114559172021-10-03 17:09:47117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.00018683
0xe23ae6ab2203231b4c9141775c166aceaad046b47e4910d70cbc8e9490c8527bApprove114558992021-10-03 17:08:53117 days 9 hrs ago0x5e9f4c7724647cce194a668cb8f7d326a36fe9c7 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.000222095
0x984bf8ad474a3c859cf1626ce99163e8a599361cce74b8348b0196310fe0ce6dSet Fees114558932021-10-03 17:08:35117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.00018683
0xa0f441de002e8833c802368161a2fd8d2068e2d81e2440429e59393af2cb7d17Set Fees114558752021-10-03 17:07:41117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.00018683
0x598b4a87422c980201f6c5f262a15cb9e44d370b4946cbe96bacd54c76d18bdfTrading Status114558722021-10-03 17:07:32117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.000141765
0x5ac2cf4fa3cf5c6b2a2fea6dbd28415e262826740bf3f05a515202613e79c1e4Trading Status114558682021-10-03 17:07:20117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.000141705
0x5ebb80cf5bdf2e668e358caa300a5feb55c9811cfd0d8b4b6508fd93b221dc04Approve114558532021-10-03 17:06:35117 days 9 hrs ago0xc722f6e0475912bc1974151e29e8a2abce2b6b99 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.000222095
0xd2abf0dbe0b6ad80ad6ca6d9bd85498ff6222e97fc60f67880c44ebd1b5efe33Set Fees114558522021-10-03 17:06:32117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.00022883
0x02c015649b319cbdf79c4174da49a423feb966e49de4a87b6ecc938ee01cfc9eSet Fees114557992021-10-03 17:03:53117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.00022883
0x6a2516028ca0b71cc8a7e0846d558717b9d7ddca0a64b8d5a6cccf170e55a071Set Fees114557772021-10-03 17:02:47117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.00018683
0x460f81b61310de2d99a5a3b3cb82d13aa6c0206874d4c286f0daf50d3655ae6fSet Fees114557532021-10-03 17:01:35117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.00018683
0x1883717c067f712e15e3420451e943889f416ee1d0cbf5cccdd4cc2b2be0499fApprove114557462021-10-03 17:01:14117 days 9 hrs ago0xd9bd0d253bcf11f80d1a010ac9910a03323daf07 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.000666285
0xce44f72486a6085e2d0c831e3fe6c99201b66bde9d09d29d46cdc039a2f7ce33Approve114557462021-10-03 17:01:14117 days 9 hrs ago0x5ccb8483e4c78992d73e0977a6f0e06d4e3456b5 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.000666285
0x08a93c3e76402c4174fa7329bdf1f5241081c91c68b1b31da9e7e5f4b969e816Set Fees114557332021-10-03 17:00:35117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.00018683
0xec3a72c05e641161b3796992c8d6054f4b1f48ee938203744a0896df492cf943Approve114557052021-10-03 16:59:11117 days 9 hrs ago0xd04a5a55ee2d2a292bbfc695de6183ce0cdea2fd IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.000222095
0xaf7a5c090a5ae2aada5d15345fa1d71a2cd10720fabe33ed206382d0477ffbceApprove114557022021-10-03 16:59:02117 days 9 hrs ago0x5e3773713f0a20806168d633652b905ee7253f83 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.000222099441
0x75b412d7856d790bd58622df48037b0504fc3967b5f7083de0d1a2b067a1f245Approve114556922021-10-03 16:58:32117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.000222095
0x75dc61e77efe274262c01acf47d5774dffa267e6f89081821c5540e4460d37e4Set Fees114556892021-10-03 16:58:23117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.00022883
0x42fbd8466efd3e0522b550d06b4b4f7b658503e61660e6dc72e06cc53d278813Trading Status114556812021-10-03 16:57:59117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.000120765
0x457aaa5c5980341f64bd70eb9e564fe77405805db48be6bc9adf9fa73b81d103Set Tx Limit114556782021-10-03 16:57:50117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.0001378
0x2dc1fb5e266c2aecfaf284f60db7960518d6e4c37390bb8d3fd6d5f2b2639977Set Max Wallet P...114556782021-10-03 16:57:50117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.00014152
0x630efdb5f37f7485581bb07f80b46e303c92206bcab9ae6aac45266b028daae9Cooldown Enabled114556772021-10-03 16:57:47117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.00015083
0xc13a11d6abe03268cdbcabcd76ff0c3af2d5093e73a41232a2c293f533ee037cTransfer114556582021-10-03 16:56:50117 days 9 hrs ago0x31ed4ee1329e13f41d6ad4abc9b6c909428521d9 IN  0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330 BNB0.000957905
[ Download CSV Export 
Latest 13 internal transactions
Parent Txn Hash Block From To Value
0x3ade1a70df39ff782e80e137c4d373af50385fb64f384bc04b898dfdd80298f0114559222021-10-03 17:10:02117 days 9 hrs ago 0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330x31ed4ee1329e13f41d6ad4abc9b6c909428521d90.010135720439145848 BNB
0x3ade1a70df39ff782e80e137c4d373af50385fb64f384bc04b898dfdd80298f0114559222021-10-03 17:10:02117 days 9 hrs ago 0x71776b524e85ce0fd7fe7de3aa2e11893eb46d33 0x5c087610ee9c40d14f047437932c3f2eabf0850a0.000337857347971528 BNB
0x3ade1a70df39ff782e80e137c4d373af50385fb64f384bc04b898dfdd80298f0114559222021-10-03 17:10:02117 days 9 hrs ago PancakeSwap: Router v2 0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330.010811435135088905 BNB
0x9ab1ae821193b232494e4d4f731cb315f55ed39925d71ef17707c1b555c758f0114558612021-10-03 17:06:59117 days 9 hrs ago 0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330x31ed4ee1329e13f41d6ad4abc9b6c909428521d90.00913597117339883 BNB
0x9ab1ae821193b232494e4d4f731cb315f55ed39925d71ef17707c1b555c758f0114558612021-10-03 17:06:59117 days 9 hrs ago 0x71776b524e85ce0fd7fe7de3aa2e11893eb46d33 0x5c087610ee9c40d14f047437932c3f2eabf0850a0.000830542833945348 BNB
0x9ab1ae821193b232494e4d4f731cb315f55ed39925d71ef17707c1b555c758f0114558612021-10-03 17:06:59117 days 9 hrs ago PancakeSwap: Router v2 0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330.010797056841289527 BNB
0xbd3dcdb374a379dee0ec4ce23bf74c2f68e96a469019fcc69d7295c22cb5cf90114557462021-10-03 17:01:14117 days 9 hrs ago 0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330x31ed4ee1329e13f41d6ad4abc9b6c909428521d90.010047797306304576 BNB
0xbd3dcdb374a379dee0ec4ce23bf74c2f68e96a469019fcc69d7295c22cb5cf90114557462021-10-03 17:01:14117 days 9 hrs ago 0x71776b524e85ce0fd7fe7de3aa2e11893eb46d33 0x5c087610ee9c40d14f047437932c3f2eabf0850a0.000772907485100352 BNB
0xbd3dcdb374a379dee0ec4ce23bf74c2f68e96a469019fcc69d7295c22cb5cf90114557462021-10-03 17:01:14117 days 9 hrs ago PancakeSwap: Router v2 0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330.011593612276505281 BNB
0x69810971e365c43ece4cb69201d2a9a37bd0b1dbc1952f8adafbb97221a274ae114557462021-10-03 17:01:14117 days 9 hrs ago 0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330x31ed4ee1329e13f41d6ad4abc9b6c909428521d90.010640550199357949 BNB
0x69810971e365c43ece4cb69201d2a9a37bd0b1dbc1952f8adafbb97221a274ae114557462021-10-03 17:01:14117 days 9 hrs ago 0x71776b524e85ce0fd7fe7de3aa2e11893eb46d33 0x5c087610ee9c40d14f047437932c3f2eabf0850a0.000818503861489073 BNB
0x69810971e365c43ece4cb69201d2a9a37bd0b1dbc1952f8adafbb97221a274ae114557462021-10-03 17:01:14117 days 9 hrs ago PancakeSwap: Router v2 0x71776b524e85ce0fd7fe7de3aa2e11893eb46d330.012277557922336096 BNB
0xd772b566c1a05c5347b47e7ddd4c988c7755b38a299935b6fc47daa53a6a69ec111405842021-09-22 16:05:31128 days 10 hrs ago 0x71776b524e85ce0fd7fe7de3aa2e11893eb46d33  Contract Creation0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CatEthereum

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 BscScan.com on 2021-09-22
*/

/**
🔥 Buy & Sell Tax: 10% 
💰 5% $ETH Redistribution
💰 2% Marketing  
💴 3% Liquidity

catETHEREUM
Best Ethereum Reward Token
Pioneering change in the Binance Smart Chain with Transparency, Integrity and Trust.

Our website: https://cateth.org
Our telegram group: https://t.me/catethereum
*/


//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 BETH = IBEP20(0x2170Ed0880ac9A755fd29B2688956BD959F933F8);
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    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 = 30 * 60;
    uint256 public minDistribution = 1 * (10 ** 12);

    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(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        _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 = BETH.balanceOf(address(this));

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

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

        uint256 amount = BETH.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);
            BETH.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 CatEthereum is IBEP20, Auth {
    using SafeMath for uint256;

    address BETH = 0x2170Ed0880ac9A755fd29B2688956BD959F933F8;
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "CatEthereum";
    string constant _symbol = "catETH";
    uint8 constant _decimals = 2;

    uint256 _totalSupply = 2 * 10**11 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply * 4 / 100;

    //max wallet holding of 4% 
    uint256 public _maxWalletToken = ( _totalSupply * 4 ) / 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    = 3;
    uint256 reflectionFee   = 5;
    uint256 marketingFee    = 2;
    uint256 public totalFee = 10;
    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 = 45;
    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(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        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;

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

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

        // NICE!
        autoLiquidityReceiver = msg.sender;
        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 1min between two 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 = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.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);
    }

    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 in wallet for 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"}]

6080604052732170ed0880ac9a755fd29b2688956bd959f933f8600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260ff16600a0a642e90edd000026006556064600460065402816200015557fe5b046007556064600460065402816200016957fe5b046008556003600f5560056010556002601155600a6012556064601355601460165560646017556000601b60006101000a81548160ff0219169083151502179055506207a120601c556001601d60006101000a81548160ff021916908315150217905550602d601d60016101000a81548160ff021916908360ff1602179055506001601f60006101000a81548160ff021916908315150217905550612710600a60065402816200021557fe5b046020553480156200022657600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550507310ed43c718714eb63d5aa57b78b54704e256024e601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037e57600080fd5b505afa15801562000393573d6000803e3d6000fd5b505050506040513d6020811015620003aa57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200046457600080fd5b505af115801562000479573d6000803e3d6000fd5b505050506040513d60208110156200049057600080fd5b8101908080519060200190929190505050601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620005d59062000aaf565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000612573d6000803e3d6000fd5b50601b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a362000abd565b6119ce806200538e83390190565b6148c18062000acd6000396000f3fe6080604052600436106102975760003560e01c8063722b62ad1161015a578063ca33e64c116100c1578063f2fde38b1161007a578063f2fde38b14610fe4578063f708a64f14611035578063f84ba65d14611092578063f887ea40146110ef578063fe9fbb8014611130578063ffb54a99146111975761029e565b8063ca33e64c14610df6578063d51ed1c814610e37578063dd62ed3e14610e86578063df20fd4914610f0b578063e96fada214610f52578063f0b37c0414610f935761029e565b80639d1944f5116101135780639d1944f514610c1c578063a4b45c0014610c57578063a8aa1b3114610cc8578063a9059cbb14610d09578063b6a5d7de14610d7a578063bf56b37114610dcb5761029e565b8063722b62ad14610a8c57806378109e5414610aba5780637d1db4a514610ae557806382bf293c14610b10578063893d20e814610b4b57806395d89b4114610b8c5761029e565b80632d48e896116101fe5780635c85974f116101b75780635c85974f146108dc578063617fe0ed14610917578063658d4b7f146109445780636ddd1713146109a15780636fcba377146109ce57806370a0823114610a275761029e565b80632d48e896146106f45780632d594567146107395780632f54bf6e14610783578063313ce567146107ea57806350db71fb14610818578063571ac8b0146108755761029e565b806318160ddd1161025057806318160ddd146105625780631da1db5e1461058d5780631df4ccfc146105c8578063201e7991146105f357806323b872dd146106385780632b112e49146106c95761029e565b8063025ff12f146102a35780630445b6671461039e57806306fdde03146103c9578063095ea7b3146104595780630d295980146104ca5780631161ae39146105075761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b5061039c600480360360608110156102c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561030357600080fd5b82018360208201111561031557600080fd5b8035906020019184602083028401116401000000008311171561033757600080fd5b90919293919293908035906020019064010000000081111561035857600080fd5b82018360208201111561036a57600080fd5b8035906020019184602083028401116401000000008311171561038c57600080fd5b90919293919293905050506111c4565b005b3480156103aa57600080fd5b506103b3611693565b6040518082815260200191505060405180910390f35b3480156103d557600080fd5b506103de611699565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561041e578082015181840152602081019050610403565b50505050905090810190601f16801561044b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561046557600080fd5b506104b26004803603604081101561047c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116d6565b60405180821515815260200191505060405180910390f35b3480156104d657600080fd5b50610505600480360360208110156104ed57600080fd5b810190808035151590602001909291905050506117c8565b005b34801561051357600080fd5b5061054a6004803603604081101561052a57600080fd5b810190808035906020019092919080359060200190929190505050611860565b60405180821515815260200191505060405180910390f35b34801561056e57600080fd5b50610577611875565b6040518082815260200191505060405180910390f35b34801561059957600080fd5b506105c6600480360360208110156105b057600080fd5b810190808035906020019092919050505061187f565b005b3480156105d457600080fd5b506105dd611978565b6040518082815260200191505060405180910390f35b3480156105ff57600080fd5b506106366004803603604081101561061657600080fd5b81019080803590602001909291908035906020019092919050505061197e565b005b34801561064457600080fd5b506106b16004803603606081101561065b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a0b565b60405180821515815260200191505060405180910390f35b3480156106d557600080fd5b506106de611c0b565b6040518082815260200191505060405180910390f35b34801561070057600080fd5b506107376004803603604081101561071757600080fd5b810190808035906020019092919080359060200190929190505050611c8d565b005b34801561074557600080fd5b506107816004803603604081101561075c57600080fd5b81019080803515159060200190929190803560ff169060200190929190505050611da1565b005b34801561078f57600080fd5b506107d2600480360360208110156107a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e55565b60405180821515815260200191505060405180910390f35b3480156107f657600080fd5b506107ff611eae565b604051808260ff16815260200191505060405180910390f35b34801561082457600080fd5b506108736004803603604081101561083b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611eb7565b005b34801561088157600080fd5b506108c46004803603602081101561089857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f8d565b60405180821515815260200191505060405180910390f35b3480156108e857600080fd5b50610915600480360360208110156108ff57600080fd5b8101908080359060200190929190505050611fc0565b005b34801561092357600080fd5b5061092c612045565b60405180821515815260200191505060405180910390f35b34801561095057600080fd5b5061099f6004803603604081101561096757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612058565b005b3480156109ad57600080fd5b506109b661212e565b60405180821515815260200191505060405180910390f35b3480156109da57600080fd5b50610a25600480360360808110156109f157600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190505050612141565b005b348015610a3357600080fd5b50610a7660048036036020811015610a4a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612219565b6040518082815260200191505060405180910390f35b348015610a9857600080fd5b50610aa1612262565b604051808260ff16815260200191505060405180910390f35b348015610ac657600080fd5b50610acf612275565b6040518082815260200191505060405180910390f35b348015610af157600080fd5b50610afa61227b565b6040518082815260200191505060405180910390f35b348015610b1c57600080fd5b50610b4960048036036020811015610b3357600080fd5b8101908080359060200190929190505050612281565b005b348015610b5757600080fd5b50610b60612314565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b9857600080fd5b50610ba161233d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610be1578082015181840152602081019050610bc6565b50505050905090810190601f168015610c0e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c2857600080fd5b50610c5560048036036020811015610c3f57600080fd5b810190808035906020019092919050505061237a565b005b348015610c6357600080fd5b50610cc660048036036040811015610c7a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061240e565b005b348015610cd457600080fd5b50610cdd61250f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d1557600080fd5b50610d6260048036036040811015610d2c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612535565b60405180821515815260200191505060405180910390f35b348015610d8657600080fd5b50610dc960048036036020811015610d9d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061254a565b005b348015610dd757600080fd5b50610de061261f565b6040518082815260200191505060405180910390f35b348015610e0257600080fd5b50610e0b612625565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e4357600080fd5b50610e7060048036036020811015610e5a57600080fd5b810190808035906020019092919050505061264b565b6040518082815260200191505060405180910390f35b348015610e9257600080fd5b50610ef560048036036040811015610ea957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126bd565b6040518082815260200191505060405180910390f35b348015610f1757600080fd5b50610f5060048036036040811015610f2e57600080fd5b8101908080351515906020019092919080359060200190929190505050612744565b005b348015610f5e57600080fd5b50610f676127e4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f9f57600080fd5b50610fe260048036036020811015610fb657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061280a565b005b348015610ff057600080fd5b506110336004803603602081101561100757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128e0565b005b34801561104157600080fd5b506110906004803603604081101561105857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612a42565b005b34801561109e57600080fd5b506110ed600480360360408110156110b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612d4d565b005b3480156110fb57600080fd5b50611104612e23565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561113c57600080fd5b5061117f6004803603602081101561115357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e49565b60405180821515815260200191505060405180910390f35b3480156111a357600080fd5b506111ac612e9f565b60405180821515815260200191505060405180910390f35b6111cd33611e55565b61123f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600082829050858590501461129f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806147b96028913960400191505060405180910390fd5b60005b858590508110156112d1578383828181106112b957fe5b905060200201358201915080806001019150506112a2565b50806112dc87612219565b1015611333576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806148066027913960400191505060405180910390fd5b60005b8585905081101561154b576113868787878481811061135157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1686868581811061137a57fe5b90506020020135612eb2565b50600e600087878481811061139757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661153e57601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687878481811061144a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16600960008a8a8781811061147757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561152257600080fd5b505af1925050508015611533575060015b61153c5761153d565b5b5b8080600101915050611336565b50600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661168b57601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561166f57600080fd5b505af1925050508015611680575060015b6116895761168a565b5b5b505050505050565b60205481565b60606040518060400160405280600b81526020017f436174457468657265756d000000000000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6117d133611e55565b611843576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b60008261186c8361264b565b11905092915050565b6000600654905090565b61188833611e55565b6118fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000479050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60648484028161194757fe5b049081150290604051600060405180830381858888f19350505050158015611973573d6000803e3d6000fd5b505050565b60125481565b61198733612e49565b6119f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601681905550806017819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611bf757611b76826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130859092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611c02848484613145565b90509392505050565b6000611c88611c3b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612219565b611c7a611c69600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612219565b600654613bd290919063ffffffff16565b613bd290919063ffffffff16565b905090565b611c9633612e49565b611d08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015611d8557600080fd5b505af1158015611d99573d6000803e3d6000fd5b505050505050565b611daa33611e55565b611e1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601d60006101000a81548160ff02191690831515021790555080601d60016101000a81548160ff021916908360ff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006002905090565b611ec033612e49565b611f32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611fb9827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6116d6565b9050919050565b611fc933612e49565b61203b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b601d60009054906101000a900460ff1681565b61206133612e49565b6120d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601f60009054906101000a900460ff1681565b61214a33612e49565b6121bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b83600f8190555082601081905550816011819055506121f6826121e88587613c1c90919063ffffffff16565b613c1c90919063ffffffff16565b601281905550806013819055506013546012541061221357600080fd5b50505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601d60019054906101000a900460ff1681565b60085481565b60075481565b61228a33611e55565b6122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b606481600654028161230a57fe5b0460088190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f6361744554480000000000000000000000000000000000000000000000000000815250905090565b61238333612e49565b6123f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b0811061240457600080fd5b80601c8190555050565b61241733612e49565b612489576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612542338484613145565b905092915050565b61255333611e55565b6125c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601a5481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006126b6612658611c0b565b6126a8612699600261268b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612219565b613ca490919063ffffffff16565b85613ca490919063ffffffff16565b613d2a90919063ffffffff16565b9050919050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61274d33612e49565b6127bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601f60006101000a81548160ff021916908315150217905550806020819055505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61281333611e55565b612885576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6128e933611e55565b61295b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b612a4b33612e49565b612abd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612b475750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612b5057600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612c5e57601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612c4157600080fd5b505af1158015612c55573d6000803e3d6000fd5b50505050612d49565b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612d3057600080fd5b505af1158015612d44573d6000803e3d6000fd5b505050505b5050565b612d5633612e49565b612dc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601b60009054906101000a900460ff1681565b6000612f3d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130859092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fd282600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c1c90919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000838311158290613132576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156130f75780820151818401526020810190506130dc565b50505050905090810190601f1680156131245780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602160009054906101000a900460ff161561316e57613167848484612eb2565b9050613bcb565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132125750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561329a57601b60009054906101000a900460ff16613299576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f54726164696e67206e6f74206f70656e2079657400000000000000000000000081525060200191505060405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561332057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561337a5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156133d45750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561342e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156134885750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156134f957600061349884612219565b905060085483820111156134f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e81526020018061484e603e913960400191505060405180910390fd5b505b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156135625750601d60009054906101000a900460ff165b80156135b85750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136ad5742601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613654576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806147e16025913960400191505060405180910390fd5b601d60019054906101000a900460ff1660ff164201601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6136b78483613d74565b6136bf613e44565b156136cd576136cc613f1b565b5b613756826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130859092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006137a485614557565b6137ae57826137b9565b6137b885846145ae565b5b905061380d81600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c1c90919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661398f57601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561397357600080fd5b505af1925050508015613984575060015b61398d5761398e565b5b5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613ace57601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613ab257600080fd5b505af1925050508015613ac3575060015b613acc57613acd565b5b5b601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601c546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015613b4557600080fd5b505af1925050508015613b56575060015b613b5f57613b60565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b6000613c1483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613085565b905092915050565b600080828401905083811015613c9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415613cb75760009050613d24565b6000828402905082848281613cc857fe5b0414613d1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061482d6021913960400191505060405180910390fd5b809150505b92915050565b6000613d6c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506146f2565b905092915050565b60075481111580613dce5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613e40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b5050565b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613eb15750602160009054906101000a900460ff16155b8015613ec95750601f60009054906101000a900460ff165b8015613f165750602054600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602160006101000a81548160ff0219169083151502179055506000613f46601654601754611860565b613f5257600f54613f55565b60005b90506000613f956002613f87601254613f7986602054613ca490919063ffffffff16565b613d2a90919063ffffffff16565b613d2a90919063ffffffff16565b90506000613fae82602054613bd290919063ffffffff16565b90506000600267ffffffffffffffff81118015613fca57600080fd5b50604051908082528060200260200182016040528015613ff95781602001602082028036833780820191505090505b509050308160008151811061400a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061407457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561417757808201518184015260208101905061415c565b505050509050019650505050505050600060405180830381600087803b1580156141a057600080fd5b505af11580156141b4573d6000803e3d6000fd5b5050505060006141cd8247613bd290919063ffffffff16565b905060006141f96141e8600289613d2a90919063ffffffff16565b601254613bd290919063ffffffff16565b905060006142356002614227846142198c88613ca490919063ffffffff16565b613d2a90919063ffffffff16565b613d2a90919063ffffffff16565b905060006142608361425260105487613ca490919063ffffffff16565b613d2a90919063ffffffff16565b9050600061428b8461427d60115488613ca490919063ffffffff16565b613d2a90919063ffffffff16565b9050601b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156142f757600080fd5b505af193505050508015614309575060015b61431257614313565b5b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051806000019050600060405180830381858888f193505050503d806000811461439a576040519150601f19603f3d011682016040523d82523d6000602084013e61439f565b606091505b505090506000905060008a111561452f57601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561449c57600080fd5b505af11580156144b0573d6000803e3d6000fd5b50505050506040513d60608110156144c757600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b604051808381526020018281526020019250505060405180910390a15b50505050505050505050506000602160006101000a81548160ff021916908315150217905550565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806145da6013546145cc60125486613ca490919063ffffffff16565b613d2a90919063ffffffff16565b905061462e81600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c1c90919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36146e98184613bd290919063ffffffff16565b91505092915050565b6000808311829061479e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614763578082015181840152602081019050614748565b50505050905090810190601f1680156147905780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816147aa57fe5b04905080915050939250505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220316d696e206265747765656e2074776f20627579734e6f7420656e6f75676820746f6b656e7320696e2077616c6c657420666f722061697264726f70536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682ea26469706673582212202ca9dccb50ad73af4bca331ea3ff35ed6cb417020b5dc82c0f6acfbc249d28de64736f6c634300070600336080604052732170ed0880ac9a755fd29b2688956bd959f933f8600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610708600d5564e8d4a51000600e553480156100dc57600080fd5b506040516119ce3803806119ce833981810160405260208110156100ff57600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561015f577310ed43c718714eb63d5aa57b78b54704e256024e610161565b805b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506117dd806101f16000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed1461033b578063f0fc6bca14610366578063ffb2c4791461037d578063ffd49c84146103b8576100dd565b8063ce7c2ac214610293578063d0e30db014610306578063e2d2e21914610310576100dd565b80632d48e896116100bb5780632d48e896146101cd5780633a98ef39146102125780634fab0ae81461023d578063997664d714610268576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610168575b600080fd5b3480156100ee57600080fd5b506100f76103e3565b6040518082815260200191505060405180910390f35b34801561011957600080fd5b506101666004803603604081101561013057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103e9565b005b34801561017457600080fd5b506101b76004803603602081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106a8565b6040518082815260200191505060405180910390f35b3480156101d957600080fd5b50610210600480360360408110156101f057600080fd5b8101908080359060200190929190803590602001909291905050506107c2565b005b34801561021e57600080fd5b5061022761082c565b6040518082815260200191505060405180910390f35b34801561024957600080fd5b50610252610832565b6040518082815260200191505060405180910390f35b34801561027457600080fd5b5061027d610838565b6040518082815260200191505060405180910390f35b34801561029f57600080fd5b506102e2600480360360208110156102b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b60405180848152602001838152602001828152602001935050505060405180910390f35b61030e610868565b005b34801561031c57600080fd5b50610325610ce3565b6040518082815260200191505060405180910390f35b34801561034757600080fd5b50610350610ce9565b6040518082815260200191505060405180910390f35b34801561037257600080fd5b5061037b610cef565b005b34801561038957600080fd5b506103b6600480360360208110156103a057600080fd5b8101908080359060200190929190505050610cfa565b005b3480156103c457600080fd5b506103cd610e74565b6040518082815260200191505060405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461044157600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104965761049582610e7a565b5b6000811180156104e857506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104fb576104f682611140565b61055d565b60008114801561054d57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561055c5761055b826111ef565b5b5b6105c6816105b8600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546008546113c890919063ffffffff16565b61141290919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061065e600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106fd57600090506107bd565b600061074a600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116107a5576000925050506107bd565b6107b881836113c890919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461081a57600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c057600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561094b57600080fd5b505afa15801561095f573d6000803e3d6000fd5b505050506040513d602081101561097557600080fd5b810190808051906020019092919050505090506000600267ffffffffffffffff811180156109a257600080fd5b506040519080825280602002602001820160405280156109d15781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110610a0457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610a6e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610b66578082015181840152602081019050610b4b565b50505050905001955050505050506000604051808303818588803b158015610b8d57600080fd5b505af1158015610ba1573d6000803e3d6000fd5b50505050506000610c7e83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c3557600080fd5b505afa158015610c49573d6000803e3d6000fd5b505050506040513d6020811015610c5f57600080fd5b81019080805190602001909291905050506113c890919063ffffffff16565b9050610c958160095461141290919063ffffffff16565b600981905550610cd8610cc7600854610cb984600c546114cc90919063ffffffff16565b61155290919063ffffffff16565b600b5461141290919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b610cf833610e7a565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d5257600080fd5b600060048054905090506000811415610d6b5750610e71565b6000805a905060005b8483108015610d8257508381105b15610e6c5783600f5410610d99576000600f819055505b610ddb6004600f5481548110610dab57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661159c565b15610e2357610e226004600f5481548110610df257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e7a565b5b610e48610e395a846113c890919063ffffffff16565b8461141290919063ffffffff16565b92505a9150600f600081548092919060010191905055508080600101915050610d74565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610eca5761113d565b6000610ed5826106a8565b9050600081111561113b57610ef581600a5461141290919063ffffffff16565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f8e57600080fd5b505af1158015610fa2573d6000803e3d6000fd5b505050506040513d6020811015610fb857600080fd5b81019080805190602001909291905050505042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061106381600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461141290919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506110f4600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461149a565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046001600480549050038154811061120457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061127b57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600060046001600480549050038154811061131c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600480548061139057fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061140a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611600565b905092915050565b600080828401905083811015611490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006114c5600c546114b7600b54856114cc90919063ffffffff16565b61155290919063ffffffff16565b9050919050565b6000808314156114df576000905061154c565b60008284029050828482816114f057fe5b0414611547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117876021913960400191505060405180910390fd5b809150505b92915050565b600061159483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116c0565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011080156115f95750600e546115f7836106a8565b115b9050919050565b60008383111582906116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611672578082015181840152602081019050611657565b50505050905090810190601f16801561169f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808311829061176c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611731578082015181840152602081019050611716565b50505050905090810190601f16801561175e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161177857fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220d4a00a5397eebe02b6fcd5a8a91b7ec9dca2f2eb2a9130417a7063a84344f74f64736f6c63430007060033

Deployed ByteCode Sourcemap

11860:13917:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24908:800;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13625:56;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15051:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15473:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20085:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24723:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14781:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19835:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12950:28;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23868:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15985:364;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24398:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24059:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20226:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3676:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14875:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22901:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15697:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22178:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13442:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22637:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13588:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23039:421;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15221:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13486:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12473:59;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12379:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16437:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15137:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14961:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24250:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23468:228;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13225:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15821:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3349:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13253:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13023:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24548:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15332:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23704:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13066:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3519:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4076:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22282:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22765:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13194:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3850:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13285:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24908:800;3065:19;3073:10;3065:7;:19::i;:::-;3057:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25024:12:::1;25077:6;;:13;;25057:9;;:16;;:33;25049:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25147:6;25143:82;25161:9;;:16;;25157:1;:20;25143:82;;;25208:6;;25215:1;25208:9;;;;;;;;;;;;;25201:4;:16;25194:23;;25179:3;;;;;;;25143:82;;;;25260:4;25241:15;25251:4;25241:9;:15::i;:::-;:23;;25233:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25321:6;25317:250;25335:9;;:16;;25331:1;:20;25317:250;;;25368:43;25383:4;25388:9;;25398:1;25388:12;;;;;;;;;;;;;;;25401:6;;25408:1;25401:9;;;;;;;;;;;;;25368:14;:43::i;:::-;;25426:16;:30;25443:9;;25453:1;25443:12;;;;;;;;;;;;;;;25426:30;;;;;;;;;;;;;;;;;;;;;;;;;25422:138;;25477:11;;;;;;;;;;;:20;;;25498:9;;25508:1;25498:12;;;;;;;;;;;;;;;25512:9;:23;25522:9;;25532:1;25522:12;;;;;;;;;;;;;;;25512:23;;;;;;;;;;;;;;;;25477:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;25473:75;;;;;;25422:138;25353:3;;;;;;;25317:250;;;;25604:16;:22;25621:4;25604:22;;;;;;;;;;;;;;;;;;;;;;;;;25600:105;;25643:11;;;;;;;;;;;:20;;;25664:4;25670:9;:15;25680:4;25670:15;;;;;;;;;;;;;;;;25643:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;25639:59;;;;;;25600:105;3097:1;24908:800:::0;;;;;:::o;13625:56::-;;;;:::o;15051:80::-;15099:13;15123:5;;;;;;;;;;;;;;;;;15116:12;;15051:80;:::o;15473:216::-;15548:4;15600:6;15565:11;:23;15577:10;15565:23;;;;;;;;;;;;;;;:32;15589:7;15565:32;;;;;;;;;;;;;;;:41;;;;15643:7;15622:37;;15631:10;15622:37;;;15652:6;15622:37;;;;;;;;;;;;;;;;;;15677:4;15670:11;;15473:216;;;;:::o;20085:94::-;3065:19;3073:10;3065:7;:19::i;:::-;3057:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20164:7:::1;20150:11;;:21;;;;;;;;;;;;;;;;;;20085:94:::0;:::o;24723:150::-;24803:4;24859:6;24827:29;24847:8;24827:19;:29::i;:::-;:38;24820:45;;24723:150;;;;:::o;14781:88::-;14836:7;14854:12;;14847:19;;14781:88;:::o;19835:217::-;3065:19;3073:10;3065:7;:19::i;:::-;3057:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19918:17:::1;19938:21;19918:41;;19978:20;;;;;;;;;;;19970:38;;:74;20040:3;20021:16;20009:9;:28;:34;;;;;;19970:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;3097:1;19835:217:::0;:::o;12950:28::-;;;;:::o;23868:183::-;3234:24;3247:10;3234:12;:24::i;:::-;3226:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23984:7:::1;23966:15;:25;;;;24031:12;24002:26;:41;;;;23868:183:::0;;:::o;15985:364::-;16085:4;16148:2;16105:11;:19;16117:6;16105:19;;;;;;;;;;;;;;;:31;16125:10;16105:31;;;;;;;;;;;;;;;;:46;16102:180;;16201:69;16237:6;16201:69;;;;;;;;;;;;;;;;;:11;:19;16213:6;16201:19;;;;;;;;;;;;;;;:31;16221:10;16201:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;16167:11;:19;16179:6;16167:19;;;;;;;;;;;;;;;:31;16187:10;16167:31;;;;;;;;;;;;;;;:103;;;;16102:180;16301:40;16315:6;16323:9;16334:6;16301:13;:40::i;:::-;16294:47;;15985:364;;;;;:::o;24398:142::-;24451:7;24478:54;24516:15;24526:4;;;;;;;;;;;24516:9;:15::i;:::-;24478:33;24495:15;24505:4;;;;;;;;;;;24495:9;:15::i;:::-;24478:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;24471:61;;24398:142;:::o;24059:183::-;3234:24;3247:10;3234:12;:24::i;:::-;3226:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24169:11:::1;;;;;;;;;;;:35;;;24205:10;24217:16;24169:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24059:183:::0;;:::o;20226:164::-;3065:19;3073:10;3065:7;:19::i;:::-;3057:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20331:7:::1;20310:18;;:28;;;;;;;;;;;;;;;;;;20373:9;20349:21;;:33;;;;;;;;;;;;;;;;;;20226:164:::0;;:::o;3676:103::-;3731:4;3766:5;;;;;;;;;;;3755:16;;:7;:16;;;3748:23;;3676:103;;;:::o;14875:80::-;14927:5;12309:1;14936:16;;14875:80;:::o;22901:130::-;3234:24;3247:10;3234:12;:24::i;:::-;3226:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23017:6:::1;22990:16;:24;23007:6;22990:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;22901:130:::0;;:::o;15697:116::-;15752:4;15776:29;15784:7;15801:2;15776:7;:29::i;:::-;15769:36;;15697:116;;;:::o;22178:96::-;3234:24;3247:10;3234:12;:24::i;:::-;3226:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22260:6:::1;22245:12;:21;;;;22178:96:::0;:::o;13442:37::-;;;;;;;;;;;;;:::o;22637:120::-;3234:24;3247:10;3234:12;:24::i;:::-;3226:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22743:6:::1;22721:11;:19;22733:6;22721:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22637:120:::0;;:::o;13588:30::-;;;;;;;;;;;;;:::o;23039:421::-;3234:24;3247:10;3234:12;:24::i;:::-;3226:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23197:13:::1;23182:12;:28;;;;23237:14;23221:13;:30;;;;23277:13;23262:12;:28;;;;23312:52;23350:13;23312:33;23330:14;23312:13;:17;;:33;;;;:::i;:::-;:37;;:52;;;;:::i;:::-;23301:8;:63;;;;23392:15;23375:14;:32;;;;23437:14;;23426:8;;:25;23418:34;;;::::0;::::1;;23039:421:::0;;;;:::o;15221:105::-;15287:7;15305:9;:18;15315:7;15305:18;;;;;;;;;;;;;;;;15298:25;;15221:105;;;:::o;13486:39::-;;;;;;;;;;;;;:::o;12473:59::-;;;;:::o;12379:52::-;;;;:::o;16437:149::-;3065:19;3073:10;3065:7;:19::i;:::-;3057:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16575:3:::1;16556:14;16541:12;;:29;16540:38;;;;;;16522:15;:56;;;;16437:149:::0;:::o;15137:78::-;15189:7;15207:5;;;;;;;;;;;15200:12;;15137:78;:::o;14961:84::-;15011:13;15035:7;;;;;;;;;;;;;;;;;15028:14;;14961:84;:::o;24250:136::-;3234:24;3247:10;3234:12;:24::i;:::-;3226:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24340:6:::1;24334:3;:12;24326:21;;;::::0;::::1;;24375:3;24358:14;:20;;;;24250:136:::0;:::o;23468:228::-;3234:24;3247:10;3234:12;:24::i;:::-;3226:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23611:22:::1;23587:21;;:46;;;;;;;;;;;;;;;;;;23667:21;23644:20;;:44;;;;;;;;;;;;;;;;;;23468:228:::0;;:::o;13225:19::-;;;;;;;;;;;;;:::o;15821:156::-;15901:4;15925:44;15939:10;15951:9;15962:6;15925:13;:44::i;:::-;15918:51;;15821:156;;;;:::o;3349:94::-;3065:19;3073:10;3065:7;:19::i;:::-;3057:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3431:4:::1;3409:14:::0;:19:::1;3424:3;3409:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3349:94:::0;:::o;13253:25::-;;;;:::o;13023:36::-;;;;;;;;;;;;;:::o;24548:167::-;24616:7;24643:64;24684:22;:20;:22::i;:::-;24643:36;24656:22;24676:1;24656:15;24666:4;;;;;;;;;;;24656:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;24643:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;24636:71;;24548:167;;;:::o;15332:133::-;15416:7;15434:11;:19;15446:6;15434:19;;;;;;;;;;;;;;;:28;15454:7;15434:28;;;;;;;;;;;;;;;;15427:35;;15332:133;;;;:::o;23704:156::-;3234:24;3247:10;3234:12;:24::i;:::-;3226:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23810:8:::1;23796:11;;:22;;;;;;;;;;;;;;;;;;23845:7;23829:13;:23;;;;23704:156:::0;;:::o;13066:35::-;;;;;;;;;;;;;:::o;3519:97::-;3065:19;3073:10;3065:7;:19::i;:::-;3057:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3603:5:::1;3581:14;:19;3596:3;3581:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3519:97:::0;:::o;4076:173::-;3065:19;3073:10;3065:7;:19::i;:::-;3057:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4160:3:::1;4152:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4196:4;4174:14:::0;:19:::1;4189:3;4174:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;4216:25;4237:3;4216:25;;;;;;;;;;;;;;;;;;;;4076:173:::0;:::o;22282:347::-;3234:24;3247:10;3234:12;:24::i;:::-;3226:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22397:4:::1;22379:23;;:6;:23;;;;:41;;;;;22416:4;;;;;;;;;;;22406:14;;:6;:14;;;;22379:41;22371:50;;;::::0;::::1;;22459:6;22432:16;:24;22449:6;22432:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;22479:6;22476:146;;;22501:11;;;;;;;;;;;:20;;;22522:6;22530:1;22501:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22476:146;;;22563:11;;;;;;;;;;;:20;;;22584:6;22592:9;:17;22602:6;22592:17;;;;;;;;;;;;;;;;22563:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22476:146;22282:347:::0;;:::o;22765:128::-;3234:24;3247:10;3234:12;:24::i;:::-;3226:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22879:6:::1;22853:15;:23;22869:6;22853:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;22765:128:::0;;:::o;13194:24::-;;;;;;;;;;;;;:::o;3850:107::-;3906:4;3930:14;:19;3945:3;3930:19;;;;;;;;;;;;;;;;;;;;;;;;;3923:26;;3850:107;;;:::o;13285:31::-;;;;;;;;;;;;;:::o;18655:330::-;18748:4;18785:53;18807:6;18785:53;;;;;;;;;;;;;;;;;:9;:17;18795:6;18785:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;18765:9;:17;18775:6;18765:17;;;;;;;;;;;;;;;:73;;;;18872:32;18897:6;18872:9;:20;18882:9;18872:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;18849:9;:20;18859:9;18849:20;;;;;;;;;;;;;;;:55;;;;18937:9;18920:35;;18929:6;18920:35;;;18948:6;18920:35;;;;;;;;;;;;;;;;;;18973:4;18966:11;;18655:330;;;;;:::o;735:192::-;821:7;854:1;849;:6;;857:12;841:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;881:9;897:1;893;:5;881:17;;918:1;911:8;;;735:192;;;;;:::o;16594:2049::-;16686:4;16706:6;;;;;;;;;;;16703:63;;;16722:41;16737:6;16745:9;16756:6;16722:14;:41::i;:::-;16715:48;;;;16703:63;16782:14;:22;16797:6;16782:22;;;;;;;;;;;;;;;;;;;;;;;;;16781:23;:53;;;;;16809:14;:25;16824:9;16809:25;;;;;;;;;;;;;;;;;;;;;;;;;16808:26;16781:53;16778:127;;;16858:11;;;;;;;;;;;16850:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16778:127;16950:14;:22;16965:6;16950:22;;;;;;;;;;;;;;;;;;;;;;;;;16949:23;:53;;;;;16997:4;16976:26;;:9;:26;;;;16949:53;:84;;;;;17028:4;;;;;;;;;;;17007:26;;:9;:26;;;;16949:84;:105;;;;;17050:4;;;;;;;;;;;17037:17;;:9;:17;;;;16949:105;:142;;;;;17071:20;;;;;;;;;;;17058:33;;:9;:33;;;;16949:142;:180;;;;;17108:21;;;;;;;;;;;17095:34;;:9;:34;;;;16949:180;16945:372;;;17145:18;17166:20;17176:9;17166;:20::i;:::-;17145:41;;17234:15;;17223:6;17210:10;:19;17209:40;;17201:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16945:372;;17451:4;;;;;;;;;;;17441:14;;:6;:14;;;:49;;;;;17472:18;;;;;;;;;;;17441:49;:94;;;;;17508:16;:27;17525:9;17508:27;;;;;;;;;;;;;;;;;;;;;;;;;17507:28;17441:94;17437:299;;;17587:15;17560:13;:24;17574:9;17560:24;;;;;;;;;;;;;;;;:42;17552:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17703:21;;;;;;;;;;;17685:39;;:15;:39;17658:13;:24;17672:9;17658:24;;;;;;;;;;;;;;;:66;;;;17437:299;17791:28;17804:6;17812;17791:12;:28::i;:::-;17876:16;:14;:16::i;:::-;17873:35;;;17895:10;:8;:10::i;:::-;17873:35;17967:53;17989:6;17967:53;;;;;;;;;;;;;;;;;:9;:17;17977:6;17967:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;17947:9;:17;17957:6;17947:17;;;;;;;;;;;;;;;:73;;;;18033:22;18058:21;18072:6;18058:13;:21::i;:::-;:56;;18108:6;18058:56;;;18082:23;18090:6;18098;18082:7;:23::i;:::-;18058:56;18033:81;;18148:40;18173:14;18148:9;:20;18158:9;18148:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;18125:9;:20;18135:9;18125:20;;;;;;;;;;;;;;;:63;;;;18234:16;:24;18251:6;18234:24;;;;;;;;;;;;;;;;;;;;;;;;;18230:119;;18279:11;;;;;;;;;;;:20;;;18300:6;18308:9;:17;18318:6;18308:17;;;;;;;;;;;;;;;;18279:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18275:63;;;;;;18230:119;18365:16;:27;18382:9;18365:27;;;;;;;;;;;;;;;;;;;;;;;;;18361:129;;18413:11;;;;;;;;;;;:20;;;18434:9;18445;:20;18455:9;18445:20;;;;;;;;;;;;;;;;18413:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18409:69;;;;;;18361:129;18506:11;;;;;;;;;;;:19;;;18526:14;;18506:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18502:51;;;;;;18587:9;18570:43;;18579:6;18570:43;;;18598:14;18570:43;;;;;;;;;;;;;;;;;;18631:4;18624:11;;;16594:2049;;;;;;:::o;593:136::-;651:7;678:43;682:1;685;678:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;671:50;;593:136;;;;:::o;406:181::-;464:7;484:9;500:1;496;:5;484:17;;525:1;520;:6;;512:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;578:1;571:8;;;406:181;;;;:::o;933:250::-;991:7;1020:1;1015;:6;1011:47;;;1045:1;1038:8;;;;1011:47;1070:9;1086:1;1082;:5;1070:17;;1115:1;1110;1106;:5;;;;;;:10;1098:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1174:1;1167:8;;;933:250;;;;;:::o;1189:132::-;1247:7;1274:39;1278:1;1281;1274:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1267:46;;1189:132;;;;:::o;18993:166::-;19090:12;;19080:6;:22;;:49;;;;19106:15;:23;19122:6;19106:23;;;;;;;;;;;;;;;;;;;;;;;;;19080:49;19072:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18993:166;;:::o;19630:197::-;19679:4;19717;;;;;;;;;;;19703:18;;:10;:18;;;;:38;;;;;19735:6;;;;;;;;;;;19734:7;19703:38;:62;;;;;19754:11;;;;;;;;;;;19703:62;:116;;;;;19806:13;;19778:9;:24;19796:4;19778:24;;;;;;;;;;;;;;;;:41;;19703:116;19696:123;;19630:197;:::o;20402:1766::-;13756:4;13747:6;;:13;;;;;;;;;;;;;;;;;;20451:27:::1;20481:60;20497:15;;20514:26;;20481:15;:60::i;:::-;:79;;20548:12;;20481:79;;;20544:1;20481:79;20451:109;;20571:23;20597:59;20654:1;20597:52;20640:8;;20597:38;20615:19;20597:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;20571:85;;20667:20;20690:34;20708:15;20690:13;;:17;;:34;;;;:::i;:::-;20667:57;;20737:21;20775:1;20761:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20737:40;;20806:4;20788;20793:1;20788:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;20832:4;;;;;;;;;;;20822;20827:1;20822:7;;;;;;;;;;;;;:14;;;;;;;;;::::0;::::1;20849:21;20873;20849:45;;20907:6;;;;;;;;;;;:57;;;20979:12;21006:1;21022:4;21049;21069:15;20907:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21108:17;21128:40;21154:13;21128:21;:25;;:40;;;;:::i;:::-;21108:60;;21181:19;21203:40;21216:26;21240:1;21216:19;:23;;:26;;;;:::i;:::-;21203:8;;:12;;:40;;;;:::i;:::-;21181:62;;21264:26;21293:58;21349:1;21293:51;21332:11;21293:34;21307:19;21293:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;21264:87;;21362:27;21392:45;21425:11;21392:28;21406:13;;21392:9;:13;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;21362:75;;21448:26;21477:44;21509:11;21477:27;21491:12;;21477:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;21448:73;;21538:11;;;;;;;;;;;:19;;;21565;21538:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;21534:65;;;;;;21610:15;21638:20;;;;;;;;;;;21630:34;;21672:18;21697:5;21630:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21609:98;;;21781:5;21768:18;;21820:1;21802:15;:19;21799:362;;;21837:6;;;;;;;;;;;:22;;;21867:18;21913:4;21937:15;21971:1;21991::::0;22011:21:::1;;;;;;;;;;;22051:15;21837:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22101:48;22113:18;22133:15;22101:48;;;;;;;;;;;;;;;;;;;;;;;;21799:362;13762:1;;;;;;;;;;;13774:5:::0;13765:6;;:14;;;;;;;;;;;;;;;;;;20402:1766::o;19167:114::-;19229:4;19254:11;:19;19266:6;19254:19;;;;;;;;;;;;;;;;;;;;;;;;;19253:20;19246:27;;19167:114;;;:::o;19289:333::-;19356:7;19376:17;19396:40;19421:14;;19396:20;19407:8;;19396:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;19376:60;;19476:39;19505:9;19476;:24;19494:4;19476:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;19449:9;:24;19467:4;19449:24;;;;;;;;;;;;;;;:66;;;;19556:4;19531:42;;19540:6;19531:42;;;19563:9;19531:42;;;;;;;;;;;;;;;;;;19593:21;19604:9;19593:6;:10;;:21;;;;:::i;:::-;19586:28;;;19289:333;;;;:::o;1327:345::-;1413:7;1512:1;1508;:5;1515:12;1500:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1539:9;1555:1;1551;:5;;;;;;1539:17;;1663:1;1656:8;;;1327:345;;;;;:::o

Swarm Source

ipfs://d4a00a5397eebe02b6fcd5a8a91b7ec9dca2f2eb2a9130417a7063a84344f74f
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.