Contract 0x9c0c8156b268a4432191a282bdf4287019526cce 1

 

Contract Overview

The Crypt Space: CRYPT Token
Balance:
403 wei

BNB Value:
Less Than $0.01 (@ $455.07/BNB)

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x0fcd7dce53d883e74e896bdddd289c90b303db81261c434286f11304d5a66cf7Approve121578492021-10-28 7:29:3315 mins ago0x37a08679e592ef795eeec97a22df89abe655b162 IN  The Crypt Space: CRYPT Token0 BNB0.000224135
0xcf06fe5823b3a91f21f4e2932e3ed1c7f0c99005b8673f6f2e5e2ec2d5cdaf7bApprove121564282021-10-28 6:17:241 hr 28 mins ago0x37a08679e592ef795eeec97a22df89abe655b162 IN  The Crypt Space: CRYPT Token0 BNB0.000225215
0x816edb6133a2533d5c155e88e8ed7431a2ba0dcaafa5a67576065a0647a9820bApprove121483832021-10-27 23:34:388 hrs 10 mins ago0xa9dc5201287b276bbd2b6ccb0350bbd22121eb37 IN  The Crypt Space: CRYPT Token0 BNB0.000224135
0x05edb926b5d6eb34ce43e93cb947f36030aeb50f2c595795495c9e9ea8695e39Approve121460262021-10-27 21:36:4610 hrs 8 mins ago0xa61bde19cfadd8df82c7f7206fdbf41c7c85822f IN  The Crypt Space: CRYPT Token0 BNB0.000225275
0x2b284e8d05fe8e9d541f732f660dd48a02d2b9f97b07c0385fba98ad9f5bf590Approve121427962021-10-27 18:55:0412 hrs 50 mins ago0x92672d23311f20b73c31d2a5110aa49c6796226e IN  The Crypt Space: CRYPT Token0 BNB0.00027033
0x0e5088a779c6deb672aa052fda187a999536ed952a999c8bbe87a4e4004ac032Transfer From121405152021-10-27 17:00:5214 hrs 44 mins agoWhiteBIT IN  The Crypt Space: CRYPT Token0 BNB0.001091145
0xe02a189d9d663fb427e5e2c9328bd815d7ef4eea4f293c344a74b150c16dd2a8Approve121404932021-10-27 16:59:4614 hrs 45 mins ago0x5a48f48073e404419485e46f39aa9f573389df86 IN  The Crypt Space: CRYPT Token0 BNB0.000672225
0xeb59462dcf57301958b575fdd97a112cfb35d38129b460db1937d16ccd2e4510Transfer121404512021-10-27 16:57:4014 hrs 47 mins ago0xae615add29f76764b8134249e771d62ca0587d2f IN  The Crypt Space: CRYPT Token0 BNB0.00485363
0x40a53d7b66e839735314823f3b437080708bcb0739ebcd108b617873a39044dfApprove121397842021-10-27 16:24:1915 hrs 21 mins ago0x0e970e5eade4c9420c12ccccf38dea98e647c59b IN  The Crypt Space: CRYPT Token0 BNB0.000225275
0x5d49931eb0178fb21222232083e36c11b7f93ceaba1381e75aee9b1a632141a2Approve121396662021-10-27 16:18:2515 hrs 27 mins ago0xbd399247509ede97d25f7451ed989017638a22b7 IN  The Crypt Space: CRYPT Token0 BNB0.000315385
0x6ae8f1dad3ab8e6a8f96667017fe15db2faf481ade0f9705e8dd9b6b662823b6Approve121394432021-10-27 16:07:1615 hrs 38 mins ago0xbb7966b46324d9bc6a37524196240f614ca38453 IN  The Crypt Space: CRYPT Token0 BNB0.000225275
0xaa42926d4653bc731e56e261d3e8b708ee17fd804d444fae68b727ec3f57bfc1Transfer From121390362021-10-27 15:46:5515 hrs 58 mins agoWhiteBIT IN  The Crypt Space: CRYPT Token0 BNB0.001090965
0x38930946ecf5cbb74856f0e957c3ba86379be68fc6c6289b86fb18401b714680Approve121390162021-10-27 15:45:5515 hrs 59 mins ago0xf0a335bc176a7150fa6f366d4d9d1f38a21d7618 IN  The Crypt Space: CRYPT Token0 BNB0.000672225
0x174e74cdddc04516396ee260ebd7df0ab41d517f9f6044ade0f035ae7cc21c94Transfer121389712021-10-27 15:43:4016 hrs 1 min ago0xae615add29f76764b8134249e771d62ca0587d2f IN  The Crypt Space: CRYPT Token0 BNB0.005364625
0xe673f30c3cba03f9b28bd74346cd0912da2b924c26aa7f2e9955330f9d6ef6dbApprove121279652021-10-27 6:10:021 day 1 hr ago0xf039612535a16fc5445b916c9c54639a2c8dcd69 IN  The Crypt Space: CRYPT Token0 BNB0.000225275
0x435258809f87b05463712df6386af49804e7ab8c42cfc6687688f445f2d8bc53Approve121263112021-10-27 4:47:021 day 2 hrs ago0xae49cc75cc6653af34b79e693c6559d58c12027c IN  The Crypt Space: CRYPT Token0 BNB0.000225275
0x961ab2cc897ac4425fcdc9ad3f28b1a07ad69f13685551e21c6ca6fdebfd9ad0Approve121253422021-10-27 3:57:521 day 3 hrs ago0x5dce61b7ec265a0636cefc094b1811837f341356 IN  The Crypt Space: CRYPT Token0 BNB0.000225275
0x897145e50e6452205efa3ca2e7946cd908d53e4a131bc91faed1bdaca352aaa2Approve121244172021-10-27 3:11:361 day 4 hrs ago0xecf8f347452170dd43f2003f1571dc6a5e4f4bad IN  The Crypt Space: CRYPT Token0 BNB0.000225275
0x6fbdf4c569d68c5d443b0c6b68567ffb71ebdeb2bf0d6602efb35432fee80cb9Approve121222232021-10-27 1:21:531 day 6 hrs ago0x85c3d25bb569fe6915ce128e1ee5cdcd8b0d9947 IN  The Crypt Space: CRYPT Token0 BNB0.000224135
0x2dad1bd2eabca2d55f11cd45907bb777b33450a0be2b0e60c0f4350381cb00b6Approve121160552021-10-26 20:09:091 day 11 hrs ago0xcbdae43037d860787076fdd49deb77ecd7cf2eec IN  The Crypt Space: CRYPT Token0 BNB0.000225275
0x7193e2fcfa217b0d47da7b6b7523e1ce5f575c27180a47d42bbfe9783a2f9f29Approve121142982021-10-26 18:41:151 day 13 hrs ago0xd76ecd450c0d034136776324a8fbe6715591180d IN  The Crypt Space: CRYPT Token0 BNB0.000225275
0x332a05803498612ae53f07ed3c9c1424f95ce283756cb1fc10feacd312e53865Approve121097352021-10-26 14:49:581 day 16 hrs ago0x3b88b06e89dda033ed5eec09b0546bf63e4feac0 IN  The Crypt Space: CRYPT Token0 BNB0.000225275
0x3daa15dcb77c898d628cf47059a730c2b8f45af2b2be34c87445e084ab1738caApprove121042542021-10-26 10:13:111 day 21 hrs ago0x39f55951f3e3bd0e15d5c56ab1e8ecaca2caaad8 IN  The Crypt Space: CRYPT Token0 BNB0.000225275
0xcda5ee612ac3e4d97835410ffbb174fb4387a93c783f19d5e82c7ea9aa53bf49Approve121026542021-10-26 8:53:081 day 22 hrs ago0x3ebd1576ee0a070824a69c2f010bb2bc3187483c IN  The Crypt Space: CRYPT Token0 BNB0.000225275
0x0cad979037a2c997798f3f3b9481ee649c754b2d680be4c675172e8a04199219Approve120980112021-10-26 5:00:002 days 2 hrs ago0x3717eeade96474e003c2ef85c514542ec51ee9c6 IN  The Crypt Space: CRYPT Token0 BNB0.000225275
[ Download CSV Export 

OVERVIEW

The Crypt Space($CRYPT) is creating a safer place through its ecosystem of products. It offers one stop shop for all Crypto and NFT needs and comes with interchangeable rewards for token holders.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xfacf99aed654e7e58bc016901cdf19f70f4c09f4371044fb9a3c43a6f1e3b683121460512021-10-27 21:38:0110 hrs 7 mins ago The Crypt Space: CRYPT Token PancakeSwap: Router v20.012705573856018928 BNB
0xfacf99aed654e7e58bc016901cdf19f70f4c09f4371044fb9a3c43a6f1e3b683121460512021-10-27 21:38:0110 hrs 7 mins ago The Crypt Space: CRYPT Token0x60ce473472145d58a50643a30060de20b592e2130.019058360784028392 BNB
0xfacf99aed654e7e58bc016901cdf19f70f4c09f4371044fb9a3c43a6f1e3b683121460512021-10-27 21:38:0110 hrs 7 mins ago The Crypt Space: CRYPT Token0xe371c837a6bfc06c233419274c34e87163a034ea0.019058360784028392 BNB
0xfacf99aed654e7e58bc016901cdf19f70f4c09f4371044fb9a3c43a6f1e3b683121460512021-10-27 21:38:0110 hrs 7 mins ago The Crypt Space: CRYPT Token 0x4c89ab774cd0bc95afb0d9abc641a2e13f2110460.038116721568056785 BNB
0xfacf99aed654e7e58bc016901cdf19f70f4c09f4371044fb9a3c43a6f1e3b683121460512021-10-27 21:38:0110 hrs 7 mins ago PancakeSwap: Router v2 The Crypt Space: CRYPT Token0.0889390169921325 BNB
0x2134d913ea539174cb8cf084518c25dbc5a15f25b482af5767f3a7742bf4780c121429992021-10-27 19:05:1312 hrs 40 mins ago The Crypt Space: CRYPT Token PancakeSwap: Router v20.012737352759501516 BNB
0x2134d913ea539174cb8cf084518c25dbc5a15f25b482af5767f3a7742bf4780c121429992021-10-27 19:05:1312 hrs 40 mins ago The Crypt Space: CRYPT Token0x60ce473472145d58a50643a30060de20b592e2130.019106029139252274 BNB
0x2134d913ea539174cb8cf084518c25dbc5a15f25b482af5767f3a7742bf4780c121429992021-10-27 19:05:1312 hrs 40 mins ago The Crypt Space: CRYPT Token0xe371c837a6bfc06c233419274c34e87163a034ea0.019106029139252274 BNB
0x2134d913ea539174cb8cf084518c25dbc5a15f25b482af5767f3a7742bf4780c121429992021-10-27 19:05:1312 hrs 40 mins ago The Crypt Space: CRYPT Token 0x4c89ab774cd0bc95afb0d9abc641a2e13f2110460.038212058278504548 BNB
0x2134d913ea539174cb8cf084518c25dbc5a15f25b482af5767f3a7742bf4780c121429992021-10-27 19:05:1312 hrs 40 mins ago PancakeSwap: Router v2 The Crypt Space: CRYPT Token0.089161469316510612 BNB
0xeb59462dcf57301958b575fdd97a112cfb35d38129b460db1937d16ccd2e4510121404512021-10-27 16:57:4014 hrs 47 mins ago The Crypt Space: CRYPT Token PancakeSwap: Router v20.012754616532883006 BNB
0xeb59462dcf57301958b575fdd97a112cfb35d38129b460db1937d16ccd2e4510121404512021-10-27 16:57:4014 hrs 47 mins ago The Crypt Space: CRYPT Token0x60ce473472145d58a50643a30060de20b592e2130.019131924799324509 BNB
0xeb59462dcf57301958b575fdd97a112cfb35d38129b460db1937d16ccd2e4510121404512021-10-27 16:57:4014 hrs 47 mins ago The Crypt Space: CRYPT Token0xe371c837a6bfc06c233419274c34e87163a034ea0.019131924799324509 BNB
0xeb59462dcf57301958b575fdd97a112cfb35d38129b460db1937d16ccd2e4510121404512021-10-27 16:57:4014 hrs 47 mins ago The Crypt Space: CRYPT Token 0x4c89ab774cd0bc95afb0d9abc641a2e13f2110460.038263849598649019 BNB
0xeb59462dcf57301958b575fdd97a112cfb35d38129b460db1937d16ccd2e4510121404512021-10-27 16:57:4014 hrs 47 mins ago PancakeSwap: Router v2 The Crypt Space: CRYPT Token0.089282315730181046 BNB
0xa2f9c2e61ce80d02340781d76d22e07b4bf2ff5f5aae26240a1cf8d81ea65a3b121398002021-10-27 16:25:0715 hrs 20 mins ago The Crypt Space: CRYPT Token PancakeSwap: Router v20.012772012196625825 BNB
0xa2f9c2e61ce80d02340781d76d22e07b4bf2ff5f5aae26240a1cf8d81ea65a3b121398002021-10-27 16:25:0715 hrs 20 mins ago The Crypt Space: CRYPT Token0x60ce473472145d58a50643a30060de20b592e2130.019158018294938738 BNB
0xa2f9c2e61ce80d02340781d76d22e07b4bf2ff5f5aae26240a1cf8d81ea65a3b121398002021-10-27 16:25:0715 hrs 20 mins ago The Crypt Space: CRYPT Token0xe371c837a6bfc06c233419274c34e87163a034ea0.019158018294938738 BNB
0xa2f9c2e61ce80d02340781d76d22e07b4bf2ff5f5aae26240a1cf8d81ea65a3b121398002021-10-27 16:25:0715 hrs 20 mins ago The Crypt Space: CRYPT Token 0x4c89ab774cd0bc95afb0d9abc641a2e13f2110460.038316036589877476 BNB
0xa2f9c2e61ce80d02340781d76d22e07b4bf2ff5f5aae26240a1cf8d81ea65a3b121398002021-10-27 16:25:0715 hrs 20 mins ago PancakeSwap: Router v2 The Crypt Space: CRYPT Token0.089404085376380778 BNB
0x1db9aeea7624ee16d609e492e1f428dabf19ab082561ab06a3d0742bc35ec9f8121397242021-10-27 16:21:1915 hrs 24 mins ago The Crypt Space: CRYPT Token PancakeSwap: Router v20.012795094673079774 BNB
0x1db9aeea7624ee16d609e492e1f428dabf19ab082561ab06a3d0742bc35ec9f8121397242021-10-27 16:21:1915 hrs 24 mins ago The Crypt Space: CRYPT Token0x60ce473472145d58a50643a30060de20b592e2130.019192642009619661 BNB
0x1db9aeea7624ee16d609e492e1f428dabf19ab082561ab06a3d0742bc35ec9f8121397242021-10-27 16:21:1915 hrs 24 mins ago The Crypt Space: CRYPT Token0xe371c837a6bfc06c233419274c34e87163a034ea0.019192642009619661 BNB
0x1db9aeea7624ee16d609e492e1f428dabf19ab082561ab06a3d0742bc35ec9f8121397242021-10-27 16:21:1915 hrs 24 mins ago The Crypt Space: CRYPT Token 0x4c89ab774cd0bc95afb0d9abc641a2e13f2110460.038385284019239322 BNB
0x1db9aeea7624ee16d609e492e1f428dabf19ab082561ab06a3d0742bc35ec9f8121397242021-10-27 16:21:1915 hrs 24 mins ago PancakeSwap: Router v2 The Crypt Space: CRYPT Token0.08956566271155842 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TheCryptSpace

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-08-31
*/

pragma solidity ^0.8.7;
//SPDX-License-Identifier: UNLICENCED


/*
 *  The Crypt Space
 *  Current website: https://www.thecrypt.space/
 *  Future website: https://www.thecryptspace.com/
 *  TG: https://t.me/TheCryptSpace_CommunityChat
*/


/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

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

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

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

interface IpresaleAirdrop {
    function airdropPresale(address recipient, uint256 amount) external;
}

contract TheCryptSpaceDividendDistributor is IDividendDistributor {
    //using SafeMath for uint256;

    address _token;
    mapping(address => bool) adminAccounts;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }
   
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    
    IBEP20 public rewardtoken = IBEP20(WBNB);
    mapping (address => uint256) totaldividendsOfToken;
    IDEXRouter router;

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

    mapping (address => Share) public shares;
    mapping (address => mapping (address => Share)) public rewardshares;

    uint256 public totalShares;
    //uint256 public totalDividends;
    uint256 public totalDistributed;
    //uint256 public dividendsPerShare;
    mapping (address => uint256) public dividendsPerShareRewardToken;
    mapping (address => uint256) public totaldividendsrewardtoken;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 1 hours;
    uint256 public minDistribution = 1 * (10 ** 18);

    uint256 public currentIndex;

    bool initialized = false; // unneccesary as all booleans are initialiased to false;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }
    
    
    

    modifier onlyAdmin() {
        require(adminAccounts[msg.sender]); _;
    }

    constructor (address _router) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E); //Mainnet
            //: IDEXRouter(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3); //Testnet
        adminAccounts[msg.sender] = true;
        rewardtoken = IBEP20(_token);
    }
    

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyAdmin {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }
    
    function setRewardToken(IBEP20 newrewardToken) external onlyAdmin{
        rewardtoken = newrewardToken;
        dividendsPerShareRewardToken[address(newrewardToken)] = 0;
    }
    
    function addAdmin(address adminAddress) public onlyAdmin{
        adminAccounts[adminAddress] = true;
    }
    
    
    function removeAdmin(address adminAddress) public onlyAdmin{
        adminAccounts[adminAddress] = false;
    }
    
    function claimUnsentTokens(IBEP20 tokenAddress, address walletaddress) external onlyAdmin {
        tokenAddress.transfer(walletaddress, tokenAddress.balanceOf(address(this)));
        totaldividendsOfToken[address(rewardtoken)]  = 0;
    }
    
    
    function setInitialShare(address shareholder, uint256 amount) external onlyAdmin {
        addShareholder(shareholder);
        totalShares += amount;
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }
    
    function setShareMultiple(address[] calldata addresses, uint256[] calldata amounts) external onlyAdmin
    {
        require(addresses.length == amounts.length, "must have the same length");
        for (uint i = 0; i < addresses.length; i++){
            setShareInternal(addresses[i], amounts[i]*(10**18));
        }
    }
    
    function setShareInternal(address shareholder, uint256 amount) internal {
        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 -= (shares[shareholder].amount) + (amount);
        shares[shareholder].amount = amount;
        rewardshares[address(rewardtoken)][shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function setShare(address shareholder, uint256 amount) external override onlyAdmin {
        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 -= (shares[shareholder].amount) + (amount);
        shares[shareholder].amount = amount;
        rewardshares[address(rewardtoken)][shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override {
        uint256 balanceBefore = rewardtoken.balanceOf(address(this));

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

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

        uint256 amount = rewardtoken.balanceOf(address(this)) - (balanceBefore);
        
        totaldividendsOfToken[address(rewardtoken)] = totaldividendsOfToken[address(rewardtoken)] + amount;
        
        dividendsPerShareRewardToken[address(rewardtoken)] = dividendsPerShareRewardToken[address(rewardtoken)] + (dividendsPerShareAccuracyFactor * (amount) / (totalShares));
    }

    function process(uint256 gas) external override {
        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 += (gasLeft - (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 += amount;
            
            // do the swap and transfer the token
            if(address(rewardtoken) == WBNB){
                payable(shareholder).transfer(amount);
            }else{
                rewardtoken.transfer(shareholder, amount);
            }
            
            shareholderClaims[shareholder] = block.timestamp;
            rewardshares[address(rewardtoken)][shareholder].totalRealised  += (amount);
            rewardshares[address(rewardtoken)][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 = rewardshares[address(rewardtoken)][shareholder].totalExcluded;

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

        return shareholderTotalDividends- (shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share * dividendsPerShareRewardToken[address(rewardtoken)] / 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 TheCryptSpace is IBEP20, Auth {
    using SafeMath for uint256;

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

    string constant _name = "The Crypt Space";
    string constant _symbol = "CRYPT";
    uint8 constant _decimals = 18;

    uint256 _totalSupply = 1 * 10**15* (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply / 100; // 1%
    uint256 public _maxSellTxAMount = _totalSupply / 100; // 1%
    uint256 public _maxHoldAmount = _totalSupply / 100; // 1%
    

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isDividendExempt;
    mapping (address => bool) isMaxHoldExempt;
    
    mapping (address => bool) botWallets;

    bool botscantrade = false;


/* @dev   
all fees are set wwith 2 decimal places added, please remember this when setting fees.

*/
    uint256 public liquidityFee = 500;
    uint256 public reflectionFee = 600;
    uint256 public marketingFee = 400;
    uint256 public developmentfee = 400;
    uint256 public charityorBurn = 0;
    uint256 public rewardtokenFee = 600;
    uint256 public sellpremium = 800;
    uint256 public totalFee = 1900;
    uint256 public feeDenominator = 10000;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address public devFeeReciever;
    address public presaleAddress;
    address public charityFeeReciever;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;
    mapping (address => bool) public pairs;

    bool public canTrade = false;
    uint256 public launchedAt;


    TheCryptSpaceDividendDistributor public distributor;
    uint256 public distributorGas = 500000;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply /2000; // 0.05%
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor (
    ) Auth(msg.sender) {
        router = IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E); //Mainnet
        //router = IDEXRouter(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3); //Testnet
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        pairs[pair] = true;
        _allowances[address(this)][address(router)] = _totalSupply;
        isMaxHoldExempt[pair] = true;

        distributor = new TheCryptSpaceDividendDistributor(address(router));

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

        isTxLimitExempt[msg.sender] = true;
        isFeeExempt[msg.sender] = true;
        authorizations[msg.sender] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        devFeeReciever = msg.sender;
        owner = msg.sender;
        isMaxHoldExempt[owner] = true;
        _balances[owner] = _totalSupply;
        emit Transfer(address(0), owner, _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 rewardtoken()external view returns(address) {return address(distributor.rewardtoken());}
    function getrewardDistributionTime()external view returns(uint256){return distributor.minPeriod();}
    function getRewardDistributionMinAmount() external view returns(uint256){return distributor.minDistribution();}
    

    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, _totalSupply);
    }

    function setRewardToken(IBEP20 newrewardToken) external authorized{
        distributor.setRewardToken(newrewardToken);
    }
    
    function revertRewardToken() external authorized {
        distributor.setRewardToken(IBEP20(address(this)));
    }
    
    function airdropPresale(address recipient, uint256 amount) external authorized {
        amount = amount * 10**_decimals;
        _balances[msg.sender] = _balances[msg.sender].sub(amount , "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        try distributor.setShare(recipient, _balances[recipient]) {} catch {}
        emit Transfer(msg.sender, recipient, amount);
    }
    
    function airdropPresaleInternal(address recipient, uint256 amount) internal {
        require(_balances[msg.sender] >= amount);
        _balances[msg.sender] -= amount;
        _balances[recipient] += amount;
        try distributor.setInitialShare(recipient, amount) {} catch {}
        emit Transfer(msg.sender, recipient, amount);
    }
    
    function setmaxholdpercentage(uint256 percentage) external authorized {
        require(percentage >= 1); // cant change percentage below 0, so everyone can hold the percentage
        _maxHoldAmount = _totalSupply * percentage / 100; // percentage based on amount
    }
    
    function airdropArray(address[] calldata newholders, uint256[] calldata amounts) external authorized{
        uint256 iterator = 0;
        require(newholders.length == amounts.length, "must be the same length");
        while(iterator < newholders.length){
            airdropPresaleInternal(newholders[iterator], amounts[iterator] * 10**_decimals);
            iterator += 1;
        }
    }

     function setDistributor(TheCryptSpaceDividendDistributor dist) external authorized {
        distributor = dist;
    }
    
    function addBotWallet(address botwallet) external authorized{
        botWallets[botwallet] = true;
    }
    
    function removeBotWallet(address botwallet) external authorized{
        botWallets[botwallet] = false;
    }
    
    function allowtrading()external authorized {
        canTrade = true;
    }
    
    function setSellPremium(uint256 premium)external authorized {
        require(premium >=0 && premium + totalFee <= 4500);
        require(premium <= sellpremium || premium <= 400); // premium can only go down after launch or max 4% above the total buy tax.
        sellpremium = premium;
    }
    
    function addNewPair(address newPair)external authorized{
        pairs[newPair] = true;
        isMaxHoldExempt[newPair] = true;
        isDividendExempt[newPair] = true;
    }
    
    function removePair(address pairToRemove)external authorized{
        pairs[pairToRemove] = false;
        isMaxHoldExempt[pairToRemove] = false;
    }
    
    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(_totalSupply)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {

        if(!canTrade){
            require(sender == owner); // only owner allowed to trade or add liquidity
        }
        if(sender != owner && recipient != owner){
            if(!pairs[recipient] && !isMaxHoldExempt[recipient]){
                require (balanceOf(recipient) + amount <= _maxHoldAmount, "cant hold more than 1% dude, sorry");
            }
        }
        
        if(botWallets[sender] || botWallets[recipient]){
            require(botscantrade, "bots arent allowed to trade");
        }

        if(shouldSwapBack()){ swapBack(); }
        
        checkTxLimit(sender, recipient, amount);
        
        if(!launched() && pairs[recipient]){ require(_balances[sender] > 0); launch(); }
        
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

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

        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, address reciever, uint256 amount) internal view {
        if(sender != owner && reciever != owner){
            require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
        }
    }

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

    function getTotalFee(bool selling) public view returns (uint256) {
        if(selling){
           return totalFee + sellpremium;
        } 
        return totalFee;
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(getTotalFee(pairs[receiver])).div(feeDenominator);
        
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }
    
    // returns any mis-sent tokens to the marketing wallet
    function claimtokensback(IBEP20 tokenAddress) external authorized {
        payable(marketingFeeReceiver).transfer(address(this).balance);
        tokenAddress.transfer(marketingFeeReceiver, tokenAddress.balanceOf(address(this)));
    }


    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.timestamp;
    }

    function setTxLimit(uint256 amount) external authorized {
        require(amount >= _totalSupply / 1000);
        _maxTxAmount = amount;
    }

    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && !pairs[holder]);
        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 setFees(uint256 _liquidityFee,  uint256 _reflectionFee, uint256 _marketingFee, uint256 _devFee,uint256 _charityFee,uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        developmentfee = _devFee;
        charityorBurn = _charityFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(developmentfee).add(charityorBurn);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/4); // cant be over 25% of total.
    }
    
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2); // leave some tokens for liquidity addition
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify); // swap everything bar the liquidity tokens. we need to add a pair

        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);
        if(reflectionFee > 0){
            uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
            try distributor.deposit{value: amountBNBReflection}() {} catch {}
        }
        
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);
        uint256 amountBNBDev = amountBNB.mul(developmentfee).div(totalBNBFee);

        
        payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        payable(devFeeReciever).call{value: amountBNBDev, gas: 30000}("");
        
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address devWallet) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReciever = devWallet;
    }
    
    function setCharityWallet(address charityWallet)external authorized{
        charityFeeReciever = charityWallet;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }
    
     function shouldSwapBack() internal view returns (bool) {
        return !pairs[msg.sender]
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

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

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        // minperiod is sent in in seconds, _mindistribution is sent in as a number * 10**18, i.e wei value.
        require(_minPeriod >= 60 && _minPeriod <= 1 days, "can not set the period to any thing less than an 60 seconds or more than 7 days");
        require(_minDistribution <= 2 * 10 ** 9 && _minDistribution > 0, "can not set the distribution to anything more than 2 bnb and it must be greater than 0");
        
        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));
    }


    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);
    event BuybackMultiplierActive(uint256 duration);
    
}

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":"uint256","name":"duration","type":"uint256"}],"name":"BuybackMultiplierActive","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":"_maxHoldAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxSellTxAMount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"botwallet","type":"address"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPair","type":"address"}],"name":"addNewPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"newholders","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"airdropPresale","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":[],"name":"allowtrading","outputs":[],"stateMutability":"nonpayable","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":"canTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityFeeReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityorBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IBEP20","name":"tokenAddress","type":"address"}],"name":"claimtokensback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFeeReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract TheCryptSpaceDividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardDistributionMinAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getrewardDistributionTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","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":[{"internalType":"address","name":"","type":"address"}],"name":"pairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"botwallet","type":"address"}],"name":"removeBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pairToRemove","type":"address"}],"name":"removePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardtoken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardtokenFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellpremium","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"charityWallet","type":"address"}],"name":"setCharityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TheCryptSpaceDividendDistributor","name":"dist","type":"address"}],"name":"setDistributor","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"},{"internalType":"address","name":"devWallet","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":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_charityFee","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":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IBEP20","name":"newrewardToken","type":"address"}],"name":"setRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"premium","type":"uint256"}],"name":"setSellPremium","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":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"setmaxholdpercentage","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":[{"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"}]

608060405273bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620000ee919062000cee565b66038d7ea4c6800062000102919062000e2b565b600555606460055462000116919062000c5b565b60065560646005546200012a919062000c5b565b60075560646005546200013e919062000c5b565b6008556000601060006101000a81548160ff0219169083151502179055506101f4601155610258601255610190601355610190601455600060155561025860165561032060175561076c6018556127106019556014601f5560646020556000602460006101000a81548160ff0219169083151502179055506207a1206027556001602860006101000a81548160ff0219169083151502179055506107d0600554620001ea919062000c5b565b602955348015620001fa57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550507310ed43c718714eb63d5aa57b78b54704e256024e602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035257600080fd5b505afa15801562000367573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038d919062000ba0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620003eb92919062000c11565b602060405180830381600087803b1580156200040657600080fd5b505af11580156200041b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000441919062000ba0565b602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160236000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600e6000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200064b9062000b7b565b62000657919062000bf4565b604051809103906000f08015801562000674573d6000803e3d6000fd5b50602660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d6000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60055460405162000b6d919062000c3e565b60405180910390a362000f61565b612f378062006eab83390190565b60008151905062000b9a8162000f47565b92915050565b60006020828403121562000bb95762000bb862000f35565b5b600062000bc98482850162000b89565b91505092915050565b62000bdd8162000e8c565b82525050565b62000bee8162000ec0565b82525050565b600060208201905062000c0b600083018462000bd2565b92915050565b600060408201905062000c28600083018562000bd2565b62000c37602083018462000bd2565b9392505050565b600060208201905062000c55600083018462000be3565b92915050565b600062000c688262000ec0565b915062000c758362000ec0565b92508262000c885762000c8762000f06565b5b828204905092915050565b6000808291508390505b600185111562000ce55780860481111562000cbd5762000cbc62000ed7565b5b600185161562000ccd5780820291505b808102905062000cdd8562000f3a565b945062000c9d565b94509492505050565b600062000cfb8262000ec0565b915062000d088362000eca565b925062000d377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d3f565b905092915050565b60008262000d51576001905062000e24565b8162000d61576000905062000e24565b816001811462000d7a576002811462000d855762000dbb565b600191505062000e24565b60ff84111562000d9a5762000d9962000ed7565b5b8360020a91508482111562000db45762000db362000ed7565b5b5062000e24565b5060208310610133831016604e8410600b841016171562000df55782820a90508381111562000def5762000dee62000ed7565b5b62000e24565b62000e04848484600162000c93565b9250905081840481111562000e1e5762000e1d62000ed7565b5b81810290505b9392505050565b600062000e388262000ec0565b915062000e458362000ec0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e815762000e8062000ed7565b5b828202905092915050565b600062000e998262000ea0565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000f528162000e8c565b811462000f5e57600080fd5b50565b615f3a8062000f716000396000f3fe6080604052600436106104145760003560e01c80638aee81271161021e578063d06c219711610123578063f1f3bca3116100ab578063f887ea401161007a578063f887ea4014610f6c578063fd2e637f14610f97578063fe33b30214610fc2578063fe5dee4f14610fff578063fe9fbb801461102a5761041b565b8063f1f3bca314610eb4578063f2fde38b14610ef1578063f708a64f14610f1a578063f84ba65d14610f435761041b565b8063d7c01032116100f2578063d7c0103214610dd1578063dd62ed3e14610dfa578063df20fd4914610e37578063e96fada214610e60578063f0b37c0414610e8b5761041b565b8063d06c219714610d29578063d36d75c714610d54578063d4a3883f14610d7f578063d6917a7c14610da85761041b565b8063a9059cbb116101a6578063bd0d22b411610175578063bd0d22b414610c66578063bf56b37114610c91578063bfe1092814610cbc578063c2f103a214610ce7578063ca33e64c14610cfe5761041b565b8063a9059cbb14610bae578063af6c9c1d14610beb578063b375e7a214610c14578063b6a5d7de14610c3d5761041b565b806398118cb4116101ed57806398118cb414610aef5780639d1944f514610b1a578063a41d40e114610b43578063a633423114610b6c578063a8aa1b3114610b835761041b565b80638aee812714610a455780638b03c9df14610a6e57806391289ee214610a9957806395d89b4114610ac45761041b565b806330563bd7116103245780636ddd1713116102ac57806375619ab51161027b57806375619ab5146109725780637d1db4a51461099b57806383ad7994146109c657806386f6c3c1146109f1578063893d20e814610a1a5761041b565b80636ddd1713146108b65780636dff132e146108e157806370a082311461090c578063715b1c3b146109495761041b565b80635c85974f116102f35780635c85974f146107e557806360e719621461080e578063658d4b7f1461083957806366bb5dd3146108625780636b67c4df1461088b5761041b565b806330563bd714610729578063313ce567146107525780633c0c9c581461077d578063571ac8b0146107a85761041b565b80631fc9efa1116103a75780632b112e49116103765780632b112e49146106425780632d48e8961461066d5780632f05205c146106965780632f54bf6e146106c15780632f9bc981146106fe5761041b565b80631fc9efa114610588578063201e7991146105b357806323b872dd146105dc5780632a360631146106195761041b565b8063122fe685116103e3578063122fe685146104dc578063180b0d7e1461050757806318160ddd146105325780631df4ccfc1461055d5761041b565b80630305caff146104205780630445b6671461044957806306fdde0314610474578063095ea7b31461049f5761041b565b3661041b57005b600080fd5b34801561042c57600080fd5b5061044760048036038101906104429190614bbd565b611067565b005b34801561045557600080fd5b5061045e61110a565b60405161046b919061562b565b60405180910390f35b34801561048057600080fd5b50610489611110565b60405161049691906154c9565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190614d3d565b61114d565b6040516104d3919061545d565b60405180910390f35b3480156104e857600080fd5b506104f161123f565b6040516104fe9190615374565b60405180910390f35b34801561051357600080fd5b5061051c611265565b604051610529919061562b565b60405180910390f35b34801561053e57600080fd5b5061054761126b565b604051610554919061562b565b60405180910390f35b34801561056957600080fd5b50610572611275565b60405161057f919061562b565b60405180910390f35b34801561059457600080fd5b5061059d61127b565b6040516105aa919061562b565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190614f79565b611281565b005b3480156105e857600080fd5b5061060360048036038101906105fe9190614caa565b6112db565b604051610610919061545d565b60405180910390f35b34801561062557600080fd5b50610640600480360381019061063b9190614bbd565b6114bd565b005b34801561064e57600080fd5b50610657611560565b604051610664919061562b565b60405180910390f35b34801561067957600080fd5b50610694600480360381019061068f9190614f79565b6115e2565b005b3480156106a257600080fd5b506106ab611763565b6040516106b8919061545d565b60405180910390f35b3480156106cd57600080fd5b506106e860048036038101906106e39190614bbd565b611776565b6040516106f5919061545d565b60405180910390f35b34801561070a57600080fd5b506107136117cf565b6040516107209190615374565b60405180910390f35b34801561073557600080fd5b50610750600480360381019061074b9190614bbd565b6117f5565b005b34801561075e57600080fd5b50610767611881565b60405161077491906156c9565b60405180910390f35b34801561078957600080fd5b5061079261188a565b60405161079f919061562b565b60405180910390f35b3480156107b457600080fd5b506107cf60048036038101906107ca9190614bbd565b611931565b6040516107dc919061545d565b60405180910390f35b3480156107f157600080fd5b5061080c60048036038101906108079190614f1f565b611946565b005b34801561081a57600080fd5b506108236119b4565b604051610830919061562b565b60405180910390f35b34801561084557600080fd5b50610860600480360381019061085b9190614cfd565b6119ba565b005b34801561086e57600080fd5b5061088960048036038101906108849190614e98565b611a5d565b005b34801561089757600080fd5b506108a0611c49565b6040516108ad919061562b565b60405180910390f35b3480156108c257600080fd5b506108cb611c4f565b6040516108d8919061545d565b60405180910390f35b3480156108ed57600080fd5b506108f6611c62565b6040516109039190615374565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e9190614bbd565b611d09565b604051610940919061562b565b60405180910390f35b34801561095557600080fd5b50610970600480360381019061096b9190614f1f565b611d52565b005b34801561097e57600080fd5b5061099960048036038101906109949190614ef2565b611dcb565b005b3480156109a757600080fd5b506109b0611e57565b6040516109bd919061562b565b60405180910390f35b3480156109d257600080fd5b506109db611e5d565b6040516109e8919061562b565b60405180910390f35b3480156109fd57600080fd5b50610a186004803603810190610a13919061500c565b611e63565b005b348015610a2657600080fd5b50610a2f611f4c565b604051610a3c9190615374565b60405180910390f35b348015610a5157600080fd5b50610a6c6004803603810190610a679190614e98565b611f75565b005b348015610a7a57600080fd5b50610a8361204d565b604051610a90919061562b565b60405180910390f35b348015610aa557600080fd5b50610aae612053565b604051610abb9190615374565b60405180910390f35b348015610ad057600080fd5b50610ad9612079565b604051610ae691906154c9565b60405180910390f35b348015610afb57600080fd5b50610b046120b6565b604051610b11919061562b565b60405180910390f35b348015610b2657600080fd5b50610b416004803603810190610b3c9190614f1f565b6120bc565b005b348015610b4f57600080fd5b50610b6a6004803603810190610b659190614bbd565b61211d565b005b348015610b7857600080fd5b50610b81612270565b005b348015610b8f57600080fd5b50610b986122d5565b604051610ba59190615374565b60405180910390f35b348015610bba57600080fd5b50610bd56004803603810190610bd09190614d3d565b6122fb565b604051610be2919061545d565b60405180910390f35b348015610bf757600080fd5b50610c126004803603810190610c0d9190614bbd565b612310565b005b348015610c2057600080fd5b50610c3b6004803603810190610c369190614f1f565b61240b565b005b348015610c4957600080fd5b50610c646004803603810190610c5f9190614bbd565b6124a2565b005b348015610c7257600080fd5b50610c7b612544565b604051610c88919061562b565b60405180910390f35b348015610c9d57600080fd5b50610ca661254a565b604051610cb3919061562b565b60405180910390f35b348015610cc857600080fd5b50610cd1612550565b604051610cde91906154ae565b60405180910390f35b348015610cf357600080fd5b50610cfc612576565b005b348015610d0a57600080fd5b50610d1361264d565b604051610d209190615374565b60405180910390f35b348015610d3557600080fd5b50610d3e612673565b604051610d4b919061562b565b60405180910390f35b348015610d6057600080fd5b50610d6961271a565b604051610d76919061562b565b60405180910390f35b348015610d8b57600080fd5b50610da66004803603810190610da19190614d7d565b612720565b005b348015610db457600080fd5b50610dcf6004803603810190610dca9190614d3d565b61283b565b005b348015610ddd57600080fd5b50610df86004803603810190610df39190614c57565b612b39565b005b348015610e0657600080fd5b50610e216004803603810190610e1c9190614c17565b612c49565b604051610e2e919061562b565b60405180910390f35b348015610e4357600080fd5b50610e5e6004803603810190610e599190614e58565b612cd0565b005b348015610e6c57600080fd5b50610e75612d3d565b604051610e829190615374565b60405180910390f35b348015610e9757600080fd5b50610eb26004803603810190610ead9190614bbd565b612d63565b005b348015610ec057600080fd5b50610edb6004803603810190610ed69190614dfe565b612e06565b604051610ee8919061562b565b60405180910390f35b348015610efd57600080fd5b50610f186004803603810190610f139190614bea565b612e30565b005b348015610f2657600080fd5b50610f416004803603810190610f3c9190614cfd565b612f49565b005b348015610f4f57600080fd5b50610f6a6004803603810190610f659190614cfd565b6131e5565b005b348015610f7857600080fd5b50610f81613288565b604051610f8e9190615493565b60405180910390f35b348015610fa357600080fd5b50610fac6132ae565b604051610fb9919061562b565b60405180910390f35b348015610fce57600080fd5b50610fe96004803603810190610fe49190614bbd565b6132b4565b604051610ff6919061545d565b60405180910390f35b34801561100b57600080fd5b506110146132d4565b604051611021919061562b565b60405180910390f35b34801561103657600080fd5b50611051600480360381019061104c9190614bbd565b6132da565b60405161105e919061545d565b60405180910390f35b611070336132da565b6110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a69061560b565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60295481565b60606040518060400160405280600f81526020017f5468652043727970742053706163650000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161122d919061562b565b60405180910390a36001905092915050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b6000600554905090565b60185481565b60085481565b61128a336132da565b6112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c09061560b565b60405180910390fd5b81601f81905550806020819055505050565b6000600554600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146114a957611428826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133309092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6114b4848484613394565b90509392505050565b6114c6336132da565b611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc9061560b565b60405180910390fd5b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006115dd611590600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611d09565b6115cf6115be600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611d09565b600554613c4f90919063ffffffff16565b613c4f90919063ffffffff16565b905090565b6115eb336132da565b61162a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116219061560b565b60405180910390fd5b603c821015801561163e5750620151808211155b61167d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611674906155eb565b60405180910390fd5b637735940081111580156116915750600081115b6116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c79061554b565b60405180910390fd5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b815260040161172d9291906156a0565b600060405180830381600087803b15801561174757600080fd5b505af115801561175b573d6000803e3d6000fd5b505050505050565b602460009054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117fe336132da565b61183d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118349061560b565b60405180910390fd5b80601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b6000602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffd49c846040518163ffffffff1660e01b815260040160206040518083038186803b1580156118f457600080fd5b505afa158015611908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192c9190614f4c565b905090565b600061193f8260055461114d565b9050919050565b61194f336132da565b61198e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119859061560b565b60405180910390fd5b6103e860055461199e919061579a565b8110156119aa57600080fd5b8060068190555050565b60275481565b6119c3336132da565b611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f99061560b565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611a66336132da565b611aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9c9061560b565b60405180910390fd5b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611b0d573d6000803e3d6000fd5b508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b869190615374565b60206040518083038186803b158015611b9e57600080fd5b505afa158015611bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd69190614f4c565b6040518363ffffffff1660e01b8152600401611bf39291906153d3565b602060405180830381600087803b158015611c0d57600080fd5b505af1158015611c21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c459190614e2b565b5050565b60135481565b602860009054906101000a900460ff1681565b6000602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636dff132e6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ccc57600080fd5b505afa158015611ce0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d049190614ec5565b905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611d5b336132da565b611d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d919061560b565b60405180910390fd5b6001811015611da857600080fd5b606481600554611db8919061593c565b611dc2919061579a565b60088190555050565b611dd4336132da565b611e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0a9061560b565b60405180910390fd5b80602660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60065481565b60125481565b611e6c336132da565b611eab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea29061560b565b60405180910390fd5b8560118190555084601281905550836013819055508260148190555081601581905550611f1b601554611f0d601454611eff88611ef18b8d613c9990919063ffffffff16565b613c9990919063ffffffff16565b613c9990919063ffffffff16565b613c9990919063ffffffff16565b601881905550806019819055506004601954611f37919061579a565b60185410611f4457600080fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f7e336132da565b611fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb49061560b565b60405180910390fd5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638aee8127826040518263ffffffff1660e01b81526004016120189190615478565b600060405180830381600087803b15801561203257600080fd5b505af1158015612046573d6000803e3d6000fd5b5050505050565b60155481565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600581526020017f4352595054000000000000000000000000000000000000000000000000000000815250905090565b60115481565b6120c5336132da565b612104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fb9061560b565b60405180910390fd5b620b71b0811061211357600080fd5b8060278190555050565b612126336132da565b612165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215c9061560b565b60405180910390fd5b6001602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612279336132da565b6122b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122af9061560b565b60405180910390fd5b6001602460006101000a81548160ff021916908315150217905550565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612308338484613394565b905092915050565b612319336132da565b612358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234f9061560b565b60405180910390fd5b6000602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612414336132da565b612453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244a9061560b565b60405180910390fd5b600081101580156124735750611194601854826124709190615744565b11155b61247c57600080fd5b6017548111158061248f57506101908111155b61249857600080fd5b8060178190555050565b6124ab33611776565b6124ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e1906155cb565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60175481565b60255481565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61257f336132da565b6125be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b59061560b565b60405180910390fd5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638aee8127306040518263ffffffff1660e01b81526004016126199190615478565b600060405180830381600087803b15801561263357600080fd5b505af1158015612647573d6000803e3d6000fd5b50505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fab0ae86040518163ffffffff1660e01b815260040160206040518083038186803b1580156126dd57600080fd5b505afa1580156126f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127159190614f4c565b905090565b60145481565b612729336132da565b612768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275f9061560b565b60405180910390fd5b60008282905085859050146127b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a99061550b565b60405180910390fd5b5b84849050811015612834576128208585838181106127d4576127d3615b64565b5b90506020020160208101906127e99190614bbd565b6012600a6127f7919061581e565b85858581811061280a57612809615b64565b5b9050602002013561281b919061593c565b613cf7565b60018161282d9190615744565b90506127b3565b5050505050565b612844336132da565b612883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287a9061560b565b60405180910390fd5b6012600a612891919061581e565b8161289c919061593c565b9050612927816040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133309092919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129bc81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c9990919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612a9b9291906153d3565b600060405180830381600087803b158015612ab557600080fd5b505af1925050508015612ac6575060015b612acf57612ad0565b5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b2d919061562b565b60405180910390a35050565b612b42336132da565b612b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b789061560b565b60405180910390fd5b82601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612cd9336132da565b612d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0f9061560b565b60405180910390fd5b81602860006101000a81548160ff021916908315150217905550806029819055505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612d6c33611776565b612dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da2906155cb565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008115612e2557601754601854612e1e9190615744565b9050612e2b565b60185490505b919050565b612e3933611776565b612e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6f906155cb565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051612f3e919061538f565b60405180910390a150565b612f52336132da565b612f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f889061560b565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156130175750602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61302057600080fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561311257602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016130db9291906153aa565b600060405180830381600087803b1580156130f557600080fd5b505af1158015613109573d6000803e3d6000fd5b505050506131e1565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016131ae9291906153d3565b600060405180830381600087803b1580156131c857600080fd5b505af11580156131dc573d6000803e3d6000fd5b505050505b5050565b6131ee336132da565b61322d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132249061560b565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b60236020528060005260406000206000915054906101000a900460ff1681565b60165481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000838311158290613378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336f91906154c9565b60405180910390fd5b50600083856133879190615996565b9050809150509392505050565b6000602460009054906101000a900460ff166134035760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461340257600080fd5b5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156134ab575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156135b357602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135545750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135b2576008548261356685611d09565b6135709190615744565b11156135b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a89061558b565b60405180910390fd5b5b5b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806136545750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136a957601060009054906101000a900460ff166136a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369f9061556b565b60405180910390fd5b5b6136b1613eea565b156136bf576136be613fbd565b5b6136ca8484846145dc565b6136d2614728565b1580156137285750602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613782576000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161377957600080fd5b613781614735565b5b61380b826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133309092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006138598561473e565b613863578261386f565b61386e858585614795565b5b90506138c381600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c9990919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a2957602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016139f39291906153d3565b600060405180830381600087803b158015613a0d57600080fd5b505af1925050508015613a1e575060015b613a2757613a28565b5b5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613b4c57602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613b169291906153d3565b600060405180830381600087803b158015613b3057600080fd5b505af1925050508015613b41575060015b613b4a57613b4b565b5b5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796027546040518263ffffffff1660e01b8152600401613ba9919061562b565b600060405180830381600087803b158015613bc357600080fd5b505af1925050508015613bd4575060015b613bdd57613bde565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c3b919061562b565b60405180910390a360019150509392505050565b6000613c9183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613330565b905092915050565b6000808284613ca89190615744565b905083811015613ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ce49061552b565b60405180910390fd5b8091505092915050565b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613d4357600080fd5b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d929190615996565b9250508190555080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613de89190615744565b92505081905550602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df1545da83836040518363ffffffff1660e01b8152600401613e4c9291906153d3565b600060405180830381600087803b158015613e6657600080fd5b505af1925050508015613e77575060015b613e8057613e81565b5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ede919061562b565b60405180910390a35050565b6000602360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613f535750602a60009054906101000a900460ff16155b8015613f6b5750602860009054906101000a900460ff165b8015613fb85750602954600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602a60006101000a81548160ff02191690831515021790555060006011549050600061401d600261400f6018546140018660295461492c90919063ffffffff16565b6149a790919063ffffffff16565b6149a790919063ffffffff16565b9050600061403682602954613c4f90919063ffffffff16565b90506000600267ffffffffffffffff81111561405557614054615b93565b5b6040519080825280602002602001820160405280156140835781602001602082028036833780820191505090505b509050308160008151811061409b5761409a615b64565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061410c5761410b615b64565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016141af959493929190615646565b600060405180830381600087803b1580156141c957600080fd5b505af11580156141dd573d6000803e3d6000fd5b5050505060006141f68247613c4f90919063ffffffff16565b905060006142226142116002896149a790919063ffffffff16565b601854613c4f90919063ffffffff16565b9050600061425e6002614250846142428c8861492c90919063ffffffff16565b6149a790919063ffffffff16565b6149a790919063ffffffff16565b90506000601254111561431e576000614294836142866012548761492c90919063ffffffff16565b6149a790919063ffffffff16565b9050602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561430057600080fd5b505af193505050508015614312575060015b61431b5761431c565b5b505b6000614347836143396013548761492c90919063ffffffff16565b6149a790919063ffffffff16565b90506000614372846143646014548861492c90919063ffffffff16565b6149a790919063ffffffff16565b9050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516143be9061535f565b600060405180830381858888f193505050503d80600081146143fc576040519150601f19603f3d011682016040523d82523d6000602084013e614401565b606091505b505050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816175309060405161444e9061535f565b600060405180830381858888f193505050503d806000811461448c576040519150601f19603f3d011682016040523d82523d6000602084013e614491565b606091505b50505060008911156145b557602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401614526969594939291906153fc565b6060604051808303818588803b15801561453f57600080fd5b505af1158015614553573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145789190614fb9565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a6040516145ac9291906156a0565b60405180910390a15b505050505050505050506000602a60006101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015614684575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561472357600654811115806146e35750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b614722576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614719906154eb565b60405180910390fd5b5b505050565b6000806025541415905090565b42602581905550565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806148136019546148056147f6602360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e06565b8661492c90919063ffffffff16565b6149a790919063ffffffff16565b905061486781600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c9990919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051614907919061562b565b60405180910390a36149228184613c4f90919063ffffffff16565b9150509392505050565b60008083141561493f57600090506149a1565b6000828461494d919061593c565b905082848261495c919061579a565b1461499c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614993906155ab565b60405180910390fd5b809150505b92915050565b60006149e983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506149f1565b905092915050565b60008083118290614a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614a2f91906154c9565b60405180910390fd5b5060008385614a47919061579a565b9050809150509392505050565b600081359050614a6381615e7a565b92915050565b600081359050614a7881615e91565b92915050565b60008083601f840112614a9457614a93615bc7565b5b8235905067ffffffffffffffff811115614ab157614ab0615bc2565b5b602083019150836020820283011115614acd57614acc615bcc565b5b9250929050565b60008083601f840112614aea57614ae9615bc7565b5b8235905067ffffffffffffffff811115614b0757614b06615bc2565b5b602083019150836020820283011115614b2357614b22615bcc565b5b9250929050565b600081359050614b3981615ea8565b92915050565b600081519050614b4e81615ea8565b92915050565b600081359050614b6381615ebf565b92915050565b600081519050614b7881615ebf565b92915050565b600081359050614b8d81615ed6565b92915050565b600081359050614ba281615eed565b92915050565b600081519050614bb781615eed565b92915050565b600060208284031215614bd357614bd2615bd6565b5b6000614be184828501614a54565b91505092915050565b600060208284031215614c0057614bff615bd6565b5b6000614c0e84828501614a69565b91505092915050565b60008060408385031215614c2e57614c2d615bd6565b5b6000614c3c85828601614a54565b9250506020614c4d85828601614a54565b9150509250929050565b600080600060608486031215614c7057614c6f615bd6565b5b6000614c7e86828701614a54565b9350506020614c8f86828701614a54565b9250506040614ca086828701614a54565b9150509250925092565b600080600060608486031215614cc357614cc2615bd6565b5b6000614cd186828701614a54565b9350506020614ce286828701614a54565b9250506040614cf386828701614b93565b9150509250925092565b60008060408385031215614d1457614d13615bd6565b5b6000614d2285828601614a54565b9250506020614d3385828601614b2a565b9150509250929050565b60008060408385031215614d5457614d53615bd6565b5b6000614d6285828601614a54565b9250506020614d7385828601614b93565b9150509250929050565b60008060008060408587031215614d9757614d96615bd6565b5b600085013567ffffffffffffffff811115614db557614db4615bd1565b5b614dc187828801614a7e565b9450945050602085013567ffffffffffffffff811115614de457614de3615bd1565b5b614df087828801614ad4565b925092505092959194509250565b600060208284031215614e1457614e13615bd6565b5b6000614e2284828501614b2a565b91505092915050565b600060208284031215614e4157614e40615bd6565b5b6000614e4f84828501614b3f565b91505092915050565b60008060408385031215614e6f57614e6e615bd6565b5b6000614e7d85828601614b2a565b9250506020614e8e85828601614b93565b9150509250929050565b600060208284031215614eae57614ead615bd6565b5b6000614ebc84828501614b54565b91505092915050565b600060208284031215614edb57614eda615bd6565b5b6000614ee984828501614b69565b91505092915050565b600060208284031215614f0857614f07615bd6565b5b6000614f1684828501614b7e565b91505092915050565b600060208284031215614f3557614f34615bd6565b5b6000614f4384828501614b93565b91505092915050565b600060208284031215614f6257614f61615bd6565b5b6000614f7084828501614ba8565b91505092915050565b60008060408385031215614f9057614f8f615bd6565b5b6000614f9e85828601614b93565b9250506020614faf85828601614b93565b9150509250929050565b600080600060608486031215614fd257614fd1615bd6565b5b6000614fe086828701614ba8565b9350506020614ff186828701614ba8565b925050604061500286828701614ba8565b9150509250925092565b60008060008060008060c0878903121561502957615028615bd6565b5b600061503789828a01614b93565b965050602061504889828a01614b93565b955050604061505989828a01614b93565b945050606061506a89828a01614b93565b935050608061507b89828a01614b93565b92505060a061508c89828a01614b93565b9150509295509295509295565b60006150a583836150c0565b60208301905092915050565b6150ba81615a55565b82525050565b6150c9816159ca565b82525050565b6150d8816159ca565b82525050565b60006150e9826156f4565b6150f38185615717565b93506150fe836156e4565b8060005b8381101561512f5781516151168882615099565b97506151218361570a565b925050600181019050615102565b5085935050505092915050565b615145816159ee565b82525050565b61515481615a67565b82525050565b61516381615a79565b82525050565b61517281615a8b565b82525050565b61518181615a9d565b82525050565b6000615192826156ff565b61519c8185615733565b93506151ac818560208601615ad3565b6151b581615bdb565b840191505092915050565b60006151cd601183615733565b91506151d882615bf9565b602082019050919050565b60006151f0601783615733565b91506151fb82615c22565b602082019050919050565b6000615213601b83615733565b915061521e82615c4b565b602082019050919050565b6000615236605683615733565b915061524182615c74565b606082019050919050565b6000615259601b83615733565b915061526482615ce9565b602082019050919050565b600061527c602283615733565b915061528782615d12565b604082019050919050565b600061529f602183615733565b91506152aa82615d61565b604082019050919050565b60006152c2600683615733565b91506152cd82615db0565b602082019050919050565b60006152e5600083615728565b91506152f082615dd9565b600082019050919050565b6000615308604f83615733565b915061531382615ddc565b606082019050919050565b600061532b600b83615733565b915061533682615e51565b602082019050919050565b61534a81615a3e565b82525050565b61535981615a48565b82525050565b600061536a826152d8565b9150819050919050565b600060208201905061538960008301846150cf565b92915050565b60006020820190506153a460008301846150b1565b92915050565b60006040820190506153bf60008301856150cf565b6153cc6020830184615178565b9392505050565b60006040820190506153e860008301856150cf565b6153f56020830184615341565b9392505050565b600060c08201905061541160008301896150cf565b61541e6020830188615341565b61542b6040830187615178565b6154386060830186615178565b61544560808301856150cf565b61545260a0830184615341565b979650505050505050565b6000602082019050615472600083018461513c565b92915050565b600060208201905061548d600083018461514b565b92915050565b60006020820190506154a8600083018461515a565b92915050565b60006020820190506154c36000830184615169565b92915050565b600060208201905081810360008301526154e38184615187565b905092915050565b60006020820190508181036000830152615504816151c0565b9050919050565b60006020820190508181036000830152615524816151e3565b9050919050565b6000602082019050818103600083015261554481615206565b9050919050565b6000602082019050818103600083015261556481615229565b9050919050565b600060208201905081810360008301526155848161524c565b9050919050565b600060208201905081810360008301526155a48161526f565b9050919050565b600060208201905081810360008301526155c481615292565b9050919050565b600060208201905081810360008301526155e4816152b5565b9050919050565b60006020820190508181036000830152615604816152fb565b9050919050565b600060208201905081810360008301526156248161531e565b9050919050565b60006020820190506156406000830184615341565b92915050565b600060a08201905061565b6000830188615341565b6156686020830187615178565b818103604083015261567a81866150de565b905061568960608301856150cf565b6156966080830184615341565b9695505050505050565b60006040820190506156b56000830185615341565b6156c26020830184615341565b9392505050565b60006020820190506156de6000830184615350565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061574f82615a3e565b915061575a83615a3e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561578f5761578e615b06565b5b828201905092915050565b60006157a582615a3e565b91506157b083615a3e565b9250826157c0576157bf615b35565b5b828204905092915050565b6000808291508390505b6001851115615815578086048111156157f1576157f0615b06565b5b60018516156158005780820291505b808102905061580e85615bec565b94506157d5565b94509492505050565b600061582982615a3e565b915061583483615a48565b92506158617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484615869565b905092915050565b6000826158795760019050615935565b816158875760009050615935565b816001811461589d57600281146158a7576158d6565b6001915050615935565b60ff8411156158b9576158b8615b06565b5b8360020a9150848211156158d0576158cf615b06565b5b50615935565b5060208310610133831016604e8410600b841016171561590b5782820a90508381111561590657615905615b06565b5b615935565b61591884848460016157cb565b9250905081840481111561592f5761592e615b06565b5b81810290505b9392505050565b600061594782615a3e565b915061595283615a3e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561598b5761598a615b06565b5b828202905092915050565b60006159a182615a3e565b91506159ac83615a3e565b9250828210156159bf576159be615b06565b5b828203905092915050565b60006159d582615a1e565b9050919050565b60006159e782615a1e565b9050919050565b60008115159050919050565b6000615a05826159ca565b9050919050565b6000615a17826159ca565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000615a6082615aaf565b9050919050565b6000615a7282615aaf565b9050919050565b6000615a8482615aaf565b9050919050565b6000615a9682615aaf565b9050919050565b6000615aa882615a3e565b9050919050565b6000615aba82615ac1565b9050919050565b6000615acc82615a1e565b9050919050565b60005b83811015615af1578082015181840152602081019050615ad6565b83811115615b00576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f6d757374206265207468652073616d65206c656e677468000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f63616e206e6f74207365742074686520646973747269627574696f6e20746f2060008201527f616e797468696e67206d6f7265207468616e203220626e6220616e642069742060208201527f6d7573742062652067726561746572207468616e203000000000000000000000604082015250565b7f626f7473206172656e7420616c6c6f77656420746f2074726164650000000000600082015250565b7f63616e7420686f6c64206d6f7265207468616e20312520647564652c20736f7260008201527f7279000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f63616e206e6f74207365742074686520706572696f6420746f20616e7920746860008201527f696e67206c657373207468616e20616e203630207365636f6e6473206f72206d60208201527f6f7265207468616e203720646179730000000000000000000000000000000000604082015250565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b615e83816159ca565b8114615e8e57600080fd5b50565b615e9a816159dc565b8114615ea557600080fd5b50565b615eb1816159ee565b8114615ebc57600080fd5b50565b615ec8816159fa565b8114615ed357600080fd5b50565b615edf81615a0c565b8114615eea57600080fd5b50565b615ef681615a3e565b8114615f0157600080fd5b5056fea2646970667358221220635fc2bae05a48cfc6574f4b860360b98259ce901667502d67ce5280ca86b21a64736f6c63430008070033608060405273bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600f55610e10601055670de0b6b3a76400006011556000601360006101000a81548160ff0219169083151502179055503480156200010957600080fd5b5060405162002f3738038062002f3783398181016040528101906200012f919062000298565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000180577310ed43c718714eb63d5aa57b78b54704e256024e62000182565b805b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200031d565b600081519050620002928162000303565b92915050565b600060208284031215620002b157620002b0620002fe565b5b6000620002c18482850162000281565b91505092915050565b6000620002d782620002de565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200030e81620002ca565b81146200031a57600080fd5b50565b612c0a806200032d6000396000f3fe60806040526004361061014b5760003560e01c806371c5221b116100b6578063df1545da1161006f578063df1545da14610499578063e4393dd6146104c2578063efca2eed146104eb578063f0fc6bca14610516578063ffb2c4791461052d578063ffd49c84146105565761014b565b806371c5221b1461036e5780638aee8127146103ab578063ab377daa146103d4578063c2dc874214610411578063ce7c2ac214610450578063d0e30db01461048f5761014b565b80632dbf4895116101085780632dbf48951461025e5780633a98ef391461028757806341f4271e146102b25780634fab0ae8146102ef5780636dff132e1461031a57806370480275146103455761014b565b806311ce023d1461015057806314b6ca961461017b5780631785f53c146101a457806326987b60146101cd57806328fd3198146101f85780632d48e89614610235575b600080fd5b34801561015c57600080fd5b50610165610581565b60405161017291906127af565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d919061240b565b610587565b005b3480156101b057600080fd5b506101cb60048036038101906101c6919061239e565b61089a565b005b3480156101d957600080fd5b506101e261094b565b6040516101ef91906127af565b60405180910390f35b34801561020457600080fd5b5061021f600480360381019061021a919061239e565b610951565b60405161022c91906127af565b60405180910390f35b34801561024157600080fd5b5061025c600480360381019061025791906125c0565b610ac3565b005b34801561026a57600080fd5b506102856004803603810190610280919061244b565b610b2b565b005b34801561029357600080fd5b5061029c610c4e565b6040516102a991906127af565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d4919061239e565b610c54565b6040516102e691906127af565b60405180910390f35b3480156102fb57600080fd5b50610304610c6c565b60405161031191906127af565b60405180910390f35b34801561032657600080fd5b5061032f610c72565b60405161033c9190612728565b60405180910390f35b34801561035157600080fd5b5061036c6004803603810190610367919061239e565b610c98565b005b34801561037a57600080fd5b506103956004803603810190610390919061239e565b610d48565b6040516103a291906127af565b60405180910390f35b3480156103b757600080fd5b506103d260048036038101906103cd91906124f9565b610d60565b005b3480156103e057600080fd5b506103fb60048036038101906103f69190612566565b610e3f565b60405161040891906126e4565b60405180910390f35b34801561041d57600080fd5b50610438600480360381019061043391906123cb565b610e7e565b604051610447939291906127ca565b60405180910390f35b34801561045c57600080fd5b506104776004803603810190610472919061239e565b610eb5565b604051610486939291906127ca565b60405180910390f35b610497610edf565b005b3480156104a557600080fd5b506104c060048036038101906104bb919061240b565b6113d0565b005b3480156104ce57600080fd5b506104e960048036038101906104e49190612526565b611524565b005b3480156104f757600080fd5b506105006116fb565b60405161050d91906127af565b60405180910390f35b34801561052257600080fd5b5061052b611701565b005b34801561053957600080fd5b50610554600480360381019061054f9190612566565b61170c565b005b34801561056257600080fd5b5061056b61183a565b60405161057891906127af565b60405180910390f35b600f5481565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166105dd57600080fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156106325761063182611840565b5b60008111801561068457506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156106975761069282611c26565b6106f9565b6000811480156106e957506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156106f8576106f782611cd5565b5b5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610747919061284b565b600b6000828254610758919061292c565b9250508190555080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506107f1600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611edc565b600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166108f057600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60125481565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156109a65760009050610abe565b60006109f3600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611edc565b90506000600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050808211610aad57600092505050610abe565b8082610ab9919061292c565b925050505b919050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b1957600080fd5b81601081905550806011819055505050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b8157600080fd5b818190508484905014610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc09061278f565b60405180910390fd5b60005b84849050811015610c4757610c34858583818110610bed57610bec612ad8565b5b9050602002016020810190610c02919061239e565b670de0b6b3a7640000858585818110610c1e57610c1d612ad8565b5b90506020020135610c2f91906128d2565b611f5f565b8080610c3f90612a02565b915050610bcc565b5050505050565b600b5481565b600d6020528060005260406000206000915090505481565b60115481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610cee57600080fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915090505481565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610db657600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60068181548110610e4f57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154905083565b60096020528060005260406000206000915090508060000154908060010154908060020154905083565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f3c91906126e4565b60206040518083038186803b158015610f5457600080fd5b505afa158015610f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8c9190612593565b90506000600267ffffffffffffffff811115610fab57610faa612b07565b5b604051908082528060200260200182016040528015610fd95781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160008151811061101357611012612ad8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061108457611083612ad8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b81526004016111219493929190612743565b6000604051808303818588803b15801561113a57600080fd5b505af115801561114e573d6000803e3d6000fd5b5050505050600082600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111b191906126e4565b60206040518083038186803b1580156111c957600080fd5b505afa1580156111dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112019190612593565b61120b919061292c565b90508060046000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461127a919061284b565b60046000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b5481600f546112f091906128d2565b6112fa91906128a1565b600d6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611366919061284b565b600d6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661142657600080fd5b61142f82611c26565b80600b6000828254611441919061284b565b9250508190555080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506114da600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611edc565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661157a57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115d091906126e4565b60206040518083038186803b1580156115e857600080fd5b505afa1580156115fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116209190612593565b6040518363ffffffff1660e01b815260040161163d9291906126ff565b602060405180830381600087803b15801561165757600080fd5b505af115801561166b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168f91906124cc565b50600060046000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600c5481565b61170a33611840565b565b6000600680549050905060008114156117255750611837565b6000805a905060005b848310801561173c57508381105b156118325783601254106117535760006012819055505b61179c60066012548154811061176c5761176b612ad8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661221c565b156117eb576117ea6006601254815481106117ba576117b9612ad8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611840565b5b5a826117f7919061292c565b83611802919061284b565b92505a91506012600081548092919061181a90612a02565b9190505550808061182a90612a02565b91505061172e565b505050505b50565b60105481565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561189057611c23565b600061189b82610951565b90506000811115611c215780600c60008282546118b8919061284b565b92505081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611983578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561197d573d6000803e3d6000fd5b50611a34565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016119e09291906126ff565b602060405180830381600087803b1580156119fa57600080fd5b505af1158015611a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3291906124cc565b505b42600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002016000828254611b29919061284b565b92505081905550611b7b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611edc565b600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600680549050600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60066001600680549050611ce9919061292c565b81548110611cfa57611cf9612ad8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166006600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110611d7857611d77612ad8565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546007600060066001600680549050611e18919061292c565b81548110611e2957611e28612ad8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506006805480611ea457611ea3612aa9565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000600f54600d6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611f4e91906128d2565b611f5891906128a1565b9050919050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541115611fb457611fb382611840565b5b60008111801561200657506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156120195761201482611c26565b61207b565b60008114801561206b57506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561207a5761207982611cd5565b5b5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546120c9919061284b565b600b60008282546120da919061292c565b9250508190555080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550612173600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611edc565b600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600042601054600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461226c919061284b565b108015612282575060115461228083610951565b115b9050919050565b60008135905061229881612b78565b92915050565b60008083601f8401126122b4576122b3612b3b565b5b8235905067ffffffffffffffff8111156122d1576122d0612b36565b5b6020830191508360208202830111156122ed576122ec612b40565b5b9250929050565b60008083601f84011261230a57612309612b3b565b5b8235905067ffffffffffffffff81111561232757612326612b36565b5b60208301915083602082028301111561234357612342612b40565b5b9250929050565b60008151905061235981612b8f565b92915050565b60008135905061236e81612ba6565b92915050565b60008135905061238381612bbd565b92915050565b60008151905061239881612bbd565b92915050565b6000602082840312156123b4576123b3612b4a565b5b60006123c284828501612289565b91505092915050565b600080604083850312156123e2576123e1612b4a565b5b60006123f085828601612289565b925050602061240185828601612289565b9150509250929050565b6000806040838503121561242257612421612b4a565b5b600061243085828601612289565b925050602061244185828601612374565b9150509250929050565b6000806000806040858703121561246557612464612b4a565b5b600085013567ffffffffffffffff81111561248357612482612b45565b5b61248f8782880161229e565b9450945050602085013567ffffffffffffffff8111156124b2576124b1612b45565b5b6124be878288016122f4565b925092505092959194509250565b6000602082840312156124e2576124e1612b4a565b5b60006124f08482850161234a565b91505092915050565b60006020828403121561250f5761250e612b4a565b5b600061251d8482850161235f565b91505092915050565b6000806040838503121561253d5761253c612b4a565b5b600061254b8582860161235f565b925050602061255c85828601612289565b9150509250929050565b60006020828403121561257c5761257b612b4a565b5b600061258a84828501612374565b91505092915050565b6000602082840312156125a9576125a8612b4a565b5b60006125b784828501612389565b91505092915050565b600080604083850312156125d7576125d6612b4a565b5b60006125e585828601612374565b92505060206125f685828601612374565b9150509250929050565b600061260c8383612618565b60208301905092915050565b61262181612960565b82525050565b61263081612960565b82525050565b600061264182612811565b61264b8185612829565b935061265683612801565b8060005b8381101561268757815161266e8882612600565b97506126798361281c565b92505060018101905061265a565b5085935050505092915050565b61269d816129ba565b82525050565b6126ac816129cc565b82525050565b60006126bf60198361283a565b91506126ca82612b4f565b602082019050919050565b6126de816129b0565b82525050565b60006020820190506126f96000830184612627565b92915050565b60006040820190506127146000830185612627565b61272160208301846126d5565b9392505050565b600060208201905061273d6000830184612694565b92915050565b600060808201905061275860008301876126a3565b818103602083015261276a8186612636565b90506127796040830185612627565b61278660608301846126d5565b95945050505050565b600060208201905081810360008301526127a8816126b2565b9050919050565b60006020820190506127c460008301846126d5565b92915050565b60006060820190506127df60008301866126d5565b6127ec60208301856126d5565b6127f960408301846126d5565b949350505050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612856826129b0565b9150612861836129b0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561289657612895612a4b565b5b828201905092915050565b60006128ac826129b0565b91506128b7836129b0565b9250826128c7576128c6612a7a565b5b828204905092915050565b60006128dd826129b0565b91506128e8836129b0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561292157612920612a4b565b5b828202905092915050565b6000612937826129b0565b9150612942836129b0565b92508282101561295557612954612a4b565b5b828203905092915050565b600061296b82612990565b9050919050565b60008115159050919050565b600061298982612960565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006129c5826129de565b9050919050565b60006129d7826129b0565b9050919050565b60006129e9826129f0565b9050919050565b60006129fb82612990565b9050919050565b6000612a0d826129b0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612a4057612a3f612a4b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b7f6d7573742068617665207468652073616d65206c656e67746800000000000000600082015250565b612b8181612960565b8114612b8c57600080fd5b50565b612b9881612972565b8114612ba357600080fd5b50565b612baf8161297e565b8114612bba57600080fd5b50565b612bc6816129b0565b8114612bd157600080fd5b5056fea264697066735822122009c528787882bcabfaa498edfb489584ba45873fd12b2b47f86ceaac8fe55ba964736f6c63430008070033

Deployed ByteCode Sourcemap

14870:16841:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21640:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16990:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18534:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19287:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16511:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16344:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18264:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16307:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15456:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30482:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22683:374;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21521:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31440:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30673:611;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16777:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3618:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16475:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29980:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18358:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19057:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19511:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26345:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16906:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26853:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25916:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16105:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16953:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18954:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18704:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20695:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21389:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15330:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16064:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27117:602;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18620:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19636:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16187:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16547:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18444:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16024:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31292:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22161:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21763:77;;;;;;;;;;;;;:::i;:::-;;16704:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22519:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22353:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21852:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3291:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16268:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16812:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16848:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19775:117;;;;;;;;;;;;;:::i;:::-;;16390:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19162:111;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16145:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20980:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19904:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29684:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18815:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30108:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16433:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3461:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25281:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4018:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26498:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26981:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16673:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15391:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16730:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16226:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3792:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21640:111;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;21738:5:::1;21714:10;:21;21725:9;21714:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;21640:111:::0;:::o;16990:49::-;;;;:::o;18534:80::-;18582:13;18606:5;;;;;;;;;;;;;;;;;18599:12;;18534:80;:::o;19287:216::-;19362:4;19414:6;19379:11;:23;19391:10;19379:23;;;;;;;;;;;;;;;:32;19403:7;19379:32;;;;;;;;;;;;;;;:41;;;;19457:7;19436:37;;19445:10;19436:37;;;19466:6;19436:37;;;;;;:::i;:::-;;;;;;;;19491:4;19484:11;;19287:216;;;;:::o;16511:29::-;;;;;;;;;;;;;:::o;16344:37::-;;;;:::o;18264:88::-;18319:7;18337:12;;18330:19;;18264:88;:::o;16307:30::-;;;;:::o;15456:50::-;;;;:::o;30482:183::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;30598:7:::1;30580:15;:25;;;;30645:12;30616:26;:41;;;;30482:183:::0;;:::o;22683:374::-;22783:4;22846:12;;22803:11;:19;22815:6;22803:19;;;;;;;;;;;;;;;:31;22823:10;22803:31;;;;;;;;;;;;;;;;:56;22800:190;;22909:69;22945:6;22909:69;;;;;;;;;;;;;;;;;:11;:19;22921:6;22909:19;;;;;;;;;;;;;;;:31;22929:10;22909:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;22875:11;:19;22887:6;22875:19;;;;;;;;;;;;;;;:31;22895:10;22875:31;;;;;;;;;;;;;;;:103;;;;22800:190;23009:40;23023:6;23031:9;23042:6;23009:13;:40::i;:::-;23002:47;;22683:374;;;;;:::o;21521:107::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;21616:4:::1;21592:10;:21;21603:9;21592:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;21521:107:::0;:::o;31440:142::-;31493:7;31520:54;31558:15;31568:4;;;;;;;;;;;31558:9;:15::i;:::-;31520:33;31537:15;31547:4;;;;;;;;;;;31537:9;:15::i;:::-;31520:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;31513:61;;31440:142;:::o;30673:611::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;30915:2:::1;30901:10;:16;;:40;;;;;30935:6;30921:10;:20;;30901:40;30893:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;31064:11;31044:16;:31;;:55;;;;;31098:1;31079:16;:20;31044:55;31036:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;31211:11;;;;;;;;;;;:35;;;31247:10;31259:16;31211:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30673:611:::0;;:::o;16777:28::-;;;;;;;;;;;;;:::o;3618:103::-;3673:4;3708:5;;;;;;;;;;;3697:16;;:7;:16;;;3690:23;;3618:103;;;:::o;16475:29::-;;;;;;;;;;;;;:::o;29980:120::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;30079:13:::1;30058:18;;:34;;;;;;;;;;;;;;;;;;29980:120:::0;:::o;18358:80::-;18410:5;15260:2;18419:16;;18358:80;:::o;19057:99::-;19115:7;19131:11;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19124:30;;19057:99;:::o;19511:117::-;19566:4;19590:30;19598:7;19607:12;;19590:7;:30::i;:::-;19583:37;;19511:117;;;:::o;26345:145::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26445:4:::1;26430:12;;:19;;;;:::i;:::-;26420:6;:29;;26412:38;;;::::0;::::1;;26476:6;26461:12;:21;;;;26345:145:::0;:::o;16906:38::-;;;;:::o;26853:120::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26959:6:::1;26937:11;:19;26949:6;26937:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;26853:120:::0;;:::o;25916:239::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26001:20:::1;;;;;;;;;;;25993:38;;:61;26032:21;25993:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26065:12;:21;;;26087:20;;;;;;;;;;;26109:12;:22;;;26140:4;26109:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26065:82;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25916:239:::0;:::o;16105:33::-;;;;:::o;16953:30::-;;;;;;;;;;;;;:::o;18954:97::-;18998:7;19023:11;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19008:41;;18954:97;:::o;18704:105::-;18770:7;18788:9;:18;18798:7;18788:18;;;;;;;;;;;;;;;;18781:25;;18704:105;;;:::o;20695:273::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;20798:1:::1;20784:10;:15;;20776:24;;;::::0;::::1;;20927:3;20914:10;20899:12;;:25;;;;:::i;:::-;:31;;;;:::i;:::-;20882:14;:48;;;;20695:273:::0;:::o;21389:120::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;21497:4:::1;21483:11;;:18;;;;;;;;;;;;;;;;;;21389:120:::0;:::o;15330:48::-;;;;:::o;16064:34::-;;;;:::o;27117:602::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27312:13:::1;27297:12;:28;;;;27352:14;27336:13;:30;;;;27392:13;27377:12;:28;;;;27433:7;27416:14;:24;;;;27467:11;27451:13;:27;;;;27500:91;27577:13;;27500:72;27557:14;;27500:52;27538:13;27500:33;27518:14;27500:13;:17;;:33;;;;:::i;:::-;:37;;:52;;;;:::i;:::-;:56;;:72;;;;:::i;:::-;:76;;:91;;;;:::i;:::-;27489:8;:102;;;;27619:15;27602:14;:32;;;;27679:1;27664:14;;:16;;;;:::i;:::-;27653:8;;:27;27645:36;;;::::0;::::1;;27117:602:::0;;;;;;:::o;18620:78::-;18672:7;18690:5;;;;;;;;;;;18683:12;;18620:78;:::o;19636:127::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;19713:11:::1;;;;;;;;;;;:26;;;19740:14;19713:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19636:127:::0;:::o;16187:32::-;;;;:::o;16547:33::-;;;;;;;;;;;;;:::o;18444:84::-;18494:13;18518:7;;;;;;;;;;;;;;;;;18511:14;;18444:84;:::o;16024:33::-;;;;:::o;31292:136::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;31382:6:::1;31376:3;:12;31368:21;;;::::0;::::1;;31417:3;31400:14;:20;;;;31292:136:::0;:::o;22161:180::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22244:4:::1;22227:5;:14;22233:7;22227:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;22286:4;22259:15;:24;22275:7;22259:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;22329:4;22301:16;:25;22318:7;22301:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;22161:180:::0;:::o;21763:77::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;21828:4:::1;21817:8;;:15;;;;;;;;;;;;;;;;;;21763:77::o:0;16704:19::-;;;;;;;;;;;;;:::o;22519:156::-;22599:4;22623:44;22637:10;22649:9;22660:6;22623:13;:44::i;:::-;22616:51;;22519:156;;;;:::o;22353:154::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22446:5:::1;22424;:19;22430:12;22424:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22494:5;22462:15;:29;22478:12;22462:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;22353:154:::0;:::o;21852:297::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;21941:1:::1;21931:7;:11;;:41;;;;;21968:4;21956:8;;21946:7;:18;;;;:::i;:::-;:26;;21931:41;21923:50;;;::::0;::::1;;22003:11;;21992:7;:22;;:40;;;;22029:3;22018:7;:14;;21992:40;21984:49;;;::::0;::::1;;22134:7;22120:11;:21;;;;21852:297:::0;:::o;3291:94::-;3007:19;3015:10;3007:7;:19::i;:::-;2999:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3373:4:::1;3351:14:::0;:19:::1;3366:3;3351:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3291:94:::0;:::o;16268:32::-;;;;:::o;16812:25::-;;;;:::o;16848:51::-;;;;;;;;;;;;;:::o;19775:117::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;19835:11:::1;;;;;;;;;;;:26;;;19877:4;19835:49;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19775:117::o:0;16390:36::-;;;;;;;;;;;;;:::o;19162:111::-;19226:7;19242:11;;;;;;;;;;;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19235:36;;19162:111;:::o;16145:35::-;;;;:::o;20980:400::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;21091:16:::1;21151:7;;:14;;21130:10;;:17;;:35;21122:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21204:169;21221:10;;:17;;21210:8;:28;21204:169;;;21254:79;21277:10;;21288:8;21277:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15260:2;21319;:13;;;;:::i;:::-;21299:7;;21307:8;21299:17;;;;;;;:::i;:::-;;;;;;;;:33;;;;:::i;:::-;21254:22;:79::i;:::-;21360:1;21348:13;;;;;:::i;:::-;;;21204:169;;;21080:300;20980:400:::0;;;;:::o;19904:422::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15260:2:::1;20012;:13;;;;:::i;:::-;20003:6;:22;;;;:::i;:::-;19994:31;;20060:58;20086:6;20060:58;;;;;;;;;;;;;;;;::::0;:9:::1;:21;20070:10;20060:21;;;;;;;;;;;;;;;;:25;;:58;;;;;:::i;:::-;20036:9;:21;20046:10;20036:21;;;;;;;;;;;;;;;:82;;;;20152:32;20177:6;20152:9;:20;20162:9;20152:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20129:9;:20;20139:9;20129:20;;;;;;;;;;;;;;;:55;;;;20199:11;;;;;;;;;;;:20;;;20220:9;20231;:20;20241:9;20231:20;;;;;;;;;;;;;;;;20199:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;20195:69;;;;;;20300:9;20279:39;;20288:10;20279:39;;;20311:6;20279:39;;;;;;:::i;:::-;;;;;;;;19904:422:::0;;:::o;29684:284::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;29846:22:::1;29822:21;;:46;;;;;;;;;;;;;;;;;;29902:21;29879:20;;:44;;;;;;;;;;;;;;;;;;29951:9;29934:14;;:26;;;;;;;;;;;;;;;;;;29684:284:::0;;;:::o;18815:132::-;18899:7;18917:11;:19;18929:6;18917:19;;;;;;;;;;;;;;;:28;18937:7;18917:28;;;;;;;;;;;;;;;;18910:35;;18815:132;;;;:::o;30108:156::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;30214:8:::1;30200:11;;:22;;;;;;;;;;;;;;;;;;30249:7;30233:13;:23;;;;30108:156:::0;;:::o;16433:35::-;;;;;;;;;;;;;:::o;3461:97::-;3007:19;3015:10;3007:7;:19::i;:::-;2999:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3545:5:::1;3523:14;:19;3538:3;3523:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3461:97:::0;:::o;25281:176::-;25337:7;25360;25357:66;;;25400:11;;25389:8;;:22;;;;:::i;:::-;25382:29;;;;25357:66;25441:8;;25434:15;;25281:176;;;;:::o;4018:173::-;3007:19;3015:10;3007:7;:19::i;:::-;2999:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4102:3:::1;4094:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4138:4;4116:14:::0;:19:::1;4131:3;4116:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;4158:25;4179:3;4158:25;;;;;;:::i;:::-;;;;;;;;4018:173:::0;:::o;26498:347::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26613:4:::1;26595:23;;:6;:23;;;;:41;;;;;26623:5;:13;26629:6;26623:13;;;;;;;;;;;;;;;;;;;;;;;;;26622:14;26595:41;26587:50;;;::::0;::::1;;26675:6;26648:16;:24;26665:6;26648:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;26695:6;26692:146;;;26717:11;;;;;;;;;;;:20;;;26738:6;26746:1;26717:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26692:146;;;26779:11;;;;;;;;;;;:20;;;26800:6;26808:9;:17;26818:6;26808:17;;;;;;;;;;;;;;;;26779:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26692:146;26498:347:::0;;:::o;26981:128::-;3176:24;3189:10;3176:12;:24::i;:::-;3168:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27095:6:::1;27069:15;:23;27085:6;27069:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;26981:128:::0;;:::o;16673:24::-;;;;;;;;;;;;;:::o;15391:52::-;;;;:::o;16730:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;16226:35::-;;;;:::o;3792:107::-;3848:4;3872:14;:19;3887:3;3872:19;;;;;;;;;;;;;;;;;;;;;;;;;3865:26;;3792:107;;;:::o;677:192::-;763:7;796:1;791;:6;;799:12;783:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;823:9;839:1;835;:5;;;;:::i;:::-;823:17;;860:1;853:8;;;677:192;;;;;:::o;23065:1486::-;23157:4;23180:8;;;;;;;;;;;23176:112;;23222:5;;;;;;;;;;23212:15;;:6;:15;;;23204:24;;;;;;23176:112;23311:5;;;;;;;;;;23301:15;;:6;:15;;;;:37;;;;;23333:5;;;;;;;;;;23320:18;;:9;:18;;;;23301:37;23298:249;;;23358:5;:16;23364:9;23358:16;;;;;;;;;;;;;;;;;;;;;;;;;23357:17;:48;;;;;23379:15;:26;23395:9;23379:26;;;;;;;;;;;;;;;;;;;;;;;;;23378:27;23357:48;23354:182;;;23467:14;;23457:6;23434:20;23444:9;23434;:20::i;:::-;:29;;;;:::i;:::-;:47;;23425:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;23354:182;23298:249;23570:10;:18;23581:6;23570:18;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;;23592:10;:21;23603:9;23592:21;;;;;;;;;;;;;;;;;;;;;;;;;23570:43;23567:126;;;23637:12;;;;;;;;;;;23629:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;23567:126;23708:16;:14;:16::i;:::-;23705:35;;;23727:10;:8;:10::i;:::-;23705:35;23760:39;23773:6;23781:9;23792:6;23760:12;:39::i;:::-;23824:10;:8;:10::i;:::-;23823:11;:31;;;;;23838:5;:16;23844:9;23838:16;;;;;;;;;;;;;;;;;;;;;;;;;23823:31;23820:80;;;23885:1;23865:9;:17;23875:6;23865:17;;;;;;;;;;;;;;;;:21;23857:30;;;;;;23889:8;:6;:8::i;:::-;23820:80;23940:53;23962:6;23940:53;;;;;;;;;;;;;;;;;:9;:17;23950:6;23940:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23920:9;:17;23930:6;23920:17;;;;;;;;;;;;;;;:73;;;;24006:22;24031:21;24045:6;24031:13;:21::i;:::-;:67;;24092:6;24031:67;;;24055:34;24063:6;24071:9;24082:6;24055:7;:34::i;:::-;24031:67;24006:92;;24132:40;24157:14;24132:9;:20;24142:9;24132:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;24109:9;:20;24119:9;24109:20;;;;;;;;;;;;;;;:63;;;;24189:16;:24;24206:6;24189:24;;;;;;;;;;;;;;;;;;;;;;;;;24185:96;;24220:11;;;;;;;;;;;:20;;;24241:6;24249:9;:17;24259:6;24249:17;;;;;;;;;;;;;;;;24220:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24216:63;;;;;;24185:96;24295:16;:27;24312:9;24295:27;;;;;;;;;;;;;;;;;;;;;;;;;24291:105;;24329:11;;;;;;;;;;;:20;;;24350:9;24361;:20;24371:9;24361:20;;;;;;;;;;;;;;;;24329:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24325:69;;;;;;24291:105;24412:11;;;;;;;;;;;:19;;;24432:14;;24412:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24408:51;;;;;;24493:9;24476:43;;24485:6;24476:43;;;24504:14;24476:43;;;;;;:::i;:::-;;;;;;;;24537:4;24530:11;;;23065:1486;;;;;:::o;535:136::-;593:7;620:43;624:1;627;620:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;613:50;;535:136;;;;:::o;348:181::-;406:7;426:9;442:1;438;:5;;;;:::i;:::-;426:17;;467:1;462;:6;;454:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;520:1;513:8;;;348:181;;;;:::o;20338:345::-;20458:6;20433:9;:21;20443:10;20433:21;;;;;;;;;;;;;;;;:31;;20425:40;;;;;;20501:6;20476:9;:21;20486:10;20476:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;20542:6;20518:9;:20;20528:9;20518:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;20563:11;;;;;;;;;;;:27;;;20591:9;20602:6;20563:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20559:62;;;;;;20657:9;20636:39;;20645:10;20636:39;;;20668:6;20636:39;;;;;;:::i;:::-;;;;;;;;20338:345;;:::o;30277:197::-;30326:4;30351:5;:17;30357:10;30351:17;;;;;;;;;;;;;;;;;;;;;;;;;30350:18;:38;;;;;30382:6;;;;;;;;;;;30381:7;30350:38;:62;;;;;30401:11;;;;;;;;;;;30350:62;:116;;;;;30453:13;;30425:9;:24;30443:4;30425:24;;;;;;;;;;;;;;;;:41;;30350:116;30343:123;;30277:197;:::o;27731:1945::-;17104:4;17095:6;;:13;;;;;;;;;;;;;;;;;;27780:27:::1;27810:12;;27780:42;;27833:23;27859:59;27916:1;27859:52;27902:8;;27859:38;27877:19;27859:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;27833:85;;27973:20;27996:34;28014:15;27996:13;;:17;;:34;;;;:::i;:::-;27973:57;;28110:21;28148:1;28134:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28110:40;;28179:4;28161;28166:1;28161:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;28205:4;;;;;;;;;;;28195;28200:1;28195:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;28222:21;28246;28222:45;;28280:6;;;;;;;;;;;:57;;;28352:12;28379:1;28395:4;28422;28442:15;28280:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28481:17;28501:40;28527:13;28501:21;:25;;:40;;;;:::i;:::-;28481:60;;28554:19;28576:40;28589:26;28613:1;28589:19;:23;;:26;;;;:::i;:::-;28576:8;;:12;;:40;;;;:::i;:::-;28554:62;;28637:26;28666:58;28722:1;28666:51;28705:11;28666:34;28680:19;28666:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;28637:87;;28754:1;28738:13;;:17;28735:202;;;28771:27;28801:45;28834:11;28801:28;28815:13;;28801:9;:13;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;28771:75;;28865:11;;;;;;;;;;;:19;;;28892;28865:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;28861:65;;;;;;28756:181;28735:202;28957:26;28986:44;29018:11;28986:27;29000:12;;28986:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;28957:73;;29041:20;29064:46;29098:11;29064:29;29078:14;;29064:9;:13;;:29;;;;:::i;:::-;:33;;:46;;;;:::i;:::-;29041:69;;29141:20;;;;;;;;;;;29133:34;;29175:18;29200:5;29133:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29229:14;;;;;;;;;;;29221:28;;29257:12;29276:5;29221:65;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29328:1;29310:15;:19;29307:362;;;29345:6;;;;;;;;;;;:22;;;29375:18;29421:4;29445:15;29479:1;29499::::0;29519:21:::1;;;;;;;;;;;29559:15;29345:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29609:48;29621:18;29641:15;29609:48;;;;;;;:::i;:::-;;;;;;;;29307:362;27769:1907;;;;;;;;;;17122:5:::0;17113:6;;:14;;;;;;;;;;;;;;;;;;27731:1945::o;24901:250::-;25011:5;;;;;;;;;;25001:15;;:6;:15;;;;:36;;;;;25032:5;;;;;;;;;;25020:17;;:8;:17;;;;25001:36;24998:146;;;25071:12;;25061:6;:22;;:49;;;;25087:15;:23;25103:6;25087:23;;;;;;;;;;;;;;;;;;;;;;;;;25061:49;25053:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;24998:146;24901:250;;;:::o;26165:90::-;26208:4;26246:1;26232:10;;:15;;26225:22;;26165:90;:::o;26263:74::-;26314:15;26301:10;:28;;;;26263:74::o;25159:114::-;25221:4;25246:11;:19;25258:6;25246:19;;;;;;;;;;;;;;;;;;;;;;;;;25245:20;25238:27;;25159:114;;;:::o;25465:379::-;25550:7;25570:17;25590:60;25635:14;;25590:40;25601:28;25613:5;:15;25619:8;25613:15;;;;;;;;;;;;;;;;;;;;;;;;;25601:11;:28::i;:::-;25590:6;:10;;:40;;;;:::i;:::-;:44;;:60;;;;:::i;:::-;25570:80;;25698:39;25727:9;25698;:24;25716:4;25698:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;25671:9;:24;25689:4;25671:24;;;;;;;;;;;;;;;:66;;;;25778:4;25753:42;;25762:6;25753:42;;;25785:9;25753:42;;;;;;:::i;:::-;;;;;;;;25815:21;25826:9;25815:6;:10;;:21;;;;:::i;:::-;25808:28;;;25465:379;;;;;:::o;875:250::-;933:7;962:1;957;:6;953:47;;;987:1;980:8;;;;953:47;1012:9;1028:1;1024;:5;;;;:::i;:::-;1012:17;;1057:1;1052;1048;:5;;;;:::i;:::-;:10;1040:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1116:1;1109:8;;;875:250;;;;;:::o;1131:132::-;1189:7;1216:39;1220:1;1223;1216:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1209:46;;1131:132;;;;:::o;1269:345::-;1355:7;1454:1;1450;:5;1457:12;1442:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1481:9;1497:1;1493;:5;;;;:::i;:::-;1481:17;;1605:1;1598:8;;;1269:345;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:155::-;206:5;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;152:155;;;;:::o;330:568::-;403:8;413:6;463:3;456:4;448:6;444:17;440:27;430:122;;471:79;;:::i;:::-;430:122;584:6;571:20;561:30;;614:18;606:6;603:30;600:117;;;636:79;;:::i;:::-;600:117;750:4;742:6;738:17;726:29;;804:3;796:4;788:6;784:17;774:8;770:32;767:41;764:128;;;811:79;;:::i;:::-;764:128;330:568;;;;;:::o;921:::-;994:8;1004:6;1054:3;1047:4;1039:6;1035:17;1031:27;1021:122;;1062:79;;:::i;:::-;1021:122;1175:6;1162:20;1152:30;;1205:18;1197:6;1194:30;1191:117;;;1227:79;;:::i;:::-;1191:117;1341:4;1333:6;1329:17;1317:29;;1395:3;1387:4;1379:6;1375:17;1365:8;1361:32;1358:41;1355:128;;;1402:79;;:::i;:::-;1355:128;921:568;;;;;:::o;1495:133::-;1538:5;1576:6;1563:20;1554:29;;1592:30;1616:5;1592:30;:::i;:::-;1495:133;;;;:::o;1634:137::-;1688:5;1719:6;1713:13;1704:22;;1735:30;1759:5;1735:30;:::i;:::-;1634:137;;;;:::o;1777:167::-;1837:5;1875:6;1862:20;1853:29;;1891:47;1932:5;1891:47;:::i;:::-;1777:167;;;;:::o;1950:171::-;2021:5;2052:6;2046:13;2037:22;;2068:47;2109:5;2068:47;:::i;:::-;1950:171;;;;:::o;2127:221::-;2214:5;2252:6;2239:20;2230:29;;2268:74;2336:5;2268:74;:::i;:::-;2127:221;;;;:::o;2354:139::-;2400:5;2438:6;2425:20;2416:29;;2454:33;2481:5;2454:33;:::i;:::-;2354:139;;;;:::o;2499:143::-;2556:5;2587:6;2581:13;2572:22;;2603:33;2630:5;2603:33;:::i;:::-;2499:143;;;;:::o;2648:329::-;2707:6;2756:2;2744:9;2735:7;2731:23;2727:32;2724:119;;;2762:79;;:::i;:::-;2724:119;2882:1;2907:53;2952:7;2943:6;2932:9;2928:22;2907:53;:::i;:::-;2897:63;;2853:117;2648:329;;;;:::o;2983:345::-;3050:6;3099:2;3087:9;3078:7;3074:23;3070:32;3067:119;;;3105:79;;:::i;:::-;3067:119;3225:1;3250:61;3303:7;3294:6;3283:9;3279:22;3250:61;:::i;:::-;3240:71;;3196:125;2983:345;;;;:::o;3334:474::-;3402:6;3410;3459:2;3447:9;3438:7;3434:23;3430:32;3427:119;;;3465:79;;:::i;:::-;3427:119;3585:1;3610:53;3655:7;3646:6;3635:9;3631:22;3610:53;:::i;:::-;3600:63;;3556:117;3712:2;3738:53;3783:7;3774:6;3763:9;3759:22;3738:53;:::i;:::-;3728:63;;3683:118;3334:474;;;;;:::o;3814:619::-;3891:6;3899;3907;3956:2;3944:9;3935:7;3931:23;3927:32;3924:119;;;3962:79;;:::i;:::-;3924:119;4082:1;4107:53;4152:7;4143:6;4132:9;4128:22;4107:53;:::i;:::-;4097:63;;4053:117;4209:2;4235:53;4280:7;4271:6;4260:9;4256:22;4235:53;:::i;:::-;4225:63;;4180:118;4337:2;4363:53;4408:7;4399:6;4388:9;4384:22;4363:53;:::i;:::-;4353:63;;4308:118;3814:619;;;;;:::o;4439:::-;4516:6;4524;4532;4581:2;4569:9;4560:7;4556:23;4552:32;4549:119;;;4587:79;;:::i;:::-;4549:119;4707:1;4732:53;4777:7;4768:6;4757:9;4753:22;4732:53;:::i;:::-;4722:63;;4678:117;4834:2;4860:53;4905:7;4896:6;4885:9;4881:22;4860:53;:::i;:::-;4850:63;;4805:118;4962:2;4988:53;5033:7;5024:6;5013:9;5009:22;4988:53;:::i;:::-;4978:63;;4933:118;4439:619;;;;;:::o;5064:468::-;5129:6;5137;5186:2;5174:9;5165:7;5161:23;5157:32;5154:119;;;5192:79;;:::i;:::-;5154:119;5312:1;5337:53;5382:7;5373:6;5362:9;5358:22;5337:53;:::i;:::-;5327:63;;5283:117;5439:2;5465:50;5507:7;5498:6;5487:9;5483:22;5465:50;:::i;:::-;5455:60;;5410:115;5064:468;;;;;:::o;5538:474::-;5606:6;5614;5663:2;5651:9;5642:7;5638:23;5634:32;5631:119;;;5669:79;;:::i;:::-;5631:119;5789:1;5814:53;5859:7;5850:6;5839:9;5835:22;5814:53;:::i;:::-;5804:63;;5760:117;5916:2;5942:53;5987:7;5978:6;5967:9;5963:22;5942:53;:::i;:::-;5932:63;;5887:118;5538:474;;;;;:::o;6018:934::-;6140:6;6148;6156;6164;6213:2;6201:9;6192:7;6188:23;6184:32;6181:119;;;6219:79;;:::i;:::-;6181:119;6367:1;6356:9;6352:17;6339:31;6397:18;6389:6;6386:30;6383:117;;;6419:79;;:::i;:::-;6383:117;6532:80;6604:7;6595:6;6584:9;6580:22;6532:80;:::i;:::-;6514:98;;;;6310:312;6689:2;6678:9;6674:18;6661:32;6720:18;6712:6;6709:30;6706:117;;;6742:79;;:::i;:::-;6706:117;6855:80;6927:7;6918:6;6907:9;6903:22;6855:80;:::i;:::-;6837:98;;;;6632:313;6018:934;;;;;;;:::o;6958:323::-;7014:6;7063:2;7051:9;7042:7;7038:23;7034:32;7031:119;;;7069:79;;:::i;:::-;7031:119;7189:1;7214:50;7256:7;7247:6;7236:9;7232:22;7214:50;:::i;:::-;7204:60;;7160:114;6958:323;;;;:::o;7287:345::-;7354:6;7403:2;7391:9;7382:7;7378:23;7374:32;7371:119;;;7409:79;;:::i;:::-;7371:119;7529:1;7554:61;7607:7;7598:6;7587:9;7583:22;7554:61;:::i;:::-;7544:71;;7500:125;7287:345;;;;:::o;7638:468::-;7703:6;7711;7760:2;7748:9;7739:7;7735:23;7731:32;7728:119;;;7766:79;;:::i;:::-;7728:119;7886:1;7911:50;7953:7;7944:6;7933:9;7929:22;7911:50;:::i;:::-;7901:60;;7857:114;8010:2;8036:53;8081:7;8072:6;8061:9;8057:22;8036:53;:::i;:::-;8026:63;;7981:118;7638:468;;;;;:::o;8112:357::-;8185:6;8234:2;8222:9;8213:7;8209:23;8205:32;8202:119;;;8240:79;;:::i;:::-;8202:119;8360:1;8385:67;8444:7;8435:6;8424:9;8420:22;8385:67;:::i;:::-;8375:77;;8331:131;8112:357;;;;:::o;8475:379::-;8559:6;8608:2;8596:9;8587:7;8583:23;8579:32;8576:119;;;8614:79;;:::i;:::-;8576:119;8734:1;8759:78;8829:7;8820:6;8809:9;8805:22;8759:78;:::i;:::-;8749:88;;8705:142;8475:379;;;;:::o;8860:411::-;8960:6;9009:2;8997:9;8988:7;8984:23;8980:32;8977:119;;;9015:79;;:::i;:::-;8977:119;9135:1;9160:94;9246:7;9237:6;9226:9;9222:22;9160:94;:::i;:::-;9150:104;;9106:158;8860:411;;;;:::o;9277:329::-;9336:6;9385:2;9373:9;9364:7;9360:23;9356:32;9353:119;;;9391:79;;:::i;:::-;9353:119;9511:1;9536:53;9581:7;9572:6;9561:9;9557:22;9536:53;:::i;:::-;9526:63;;9482:117;9277:329;;;;:::o;9612:351::-;9682:6;9731:2;9719:9;9710:7;9706:23;9702:32;9699:119;;;9737:79;;:::i;:::-;9699:119;9857:1;9882:64;9938:7;9929:6;9918:9;9914:22;9882:64;:::i;:::-;9872:74;;9828:128;9612:351;;;;:::o;9969:474::-;10037:6;10045;10094:2;10082:9;10073:7;10069:23;10065:32;10062:119;;;10100:79;;:::i;:::-;10062:119;10220:1;10245:53;10290:7;10281:6;10270:9;10266:22;10245:53;:::i;:::-;10235:63;;10191:117;10347:2;10373:53;10418:7;10409:6;10398:9;10394:22;10373:53;:::i;:::-;10363:63;;10318:118;9969:474;;;;;:::o;10449:663::-;10537:6;10545;10553;10602:2;10590:9;10581:7;10577:23;10573:32;10570:119;;;10608:79;;:::i;:::-;10570:119;10728:1;10753:64;10809:7;10800:6;10789:9;10785:22;10753:64;:::i;:::-;10743:74;;10699:128;10866:2;10892:64;10948:7;10939:6;10928:9;10924:22;10892:64;:::i;:::-;10882:74;;10837:129;11005:2;11031:64;11087:7;11078:6;11067:9;11063:22;11031:64;:::i;:::-;11021:74;;10976:129;10449:663;;;;;:::o;11118:1057::-;11222:6;11230;11238;11246;11254;11262;11311:3;11299:9;11290:7;11286:23;11282:33;11279:120;;;11318:79;;:::i;:::-;11279:120;11438:1;11463:53;11508:7;11499:6;11488:9;11484:22;11463:53;:::i;:::-;11453:63;;11409:117;11565:2;11591:53;11636:7;11627:6;11616:9;11612:22;11591:53;:::i;:::-;11581:63;;11536:118;11693:2;11719:53;11764:7;11755:6;11744:9;11740:22;11719:53;:::i;:::-;11709:63;;11664:118;11821:2;11847:53;11892:7;11883:6;11872:9;11868:22;11847:53;:::i;:::-;11837:63;;11792:118;11949:3;11976:53;12021:7;12012:6;12001:9;11997:22;11976:53;:::i;:::-;11966:63;;11920:119;12078:3;12105:53;12150:7;12141:6;12130:9;12126:22;12105:53;:::i;:::-;12095:63;;12049:119;11118:1057;;;;;;;;:::o;12181:179::-;12250:10;12271:46;12313:3;12305:6;12271:46;:::i;:::-;12349:4;12344:3;12340:14;12326:28;;12181:179;;;;:::o;12366:147::-;12461:45;12500:5;12461:45;:::i;:::-;12456:3;12449:58;12366:147;;:::o;12519:108::-;12596:24;12614:5;12596:24;:::i;:::-;12591:3;12584:37;12519:108;;:::o;12633:118::-;12720:24;12738:5;12720:24;:::i;:::-;12715:3;12708:37;12633:118;;:::o;12787:732::-;12906:3;12935:54;12983:5;12935:54;:::i;:::-;13005:86;13084:6;13079:3;13005:86;:::i;:::-;12998:93;;13115:56;13165:5;13115:56;:::i;:::-;13194:7;13225:1;13210:284;13235:6;13232:1;13229:13;13210:284;;;13311:6;13305:13;13338:63;13397:3;13382:13;13338:63;:::i;:::-;13331:70;;13424:60;13477:6;13424:60;:::i;:::-;13414:70;;13270:224;13257:1;13254;13250:9;13245:14;;13210:284;;;13214:14;13510:3;13503:10;;12911:608;;;12787:732;;;;:::o;13525:109::-;13606:21;13621:5;13606:21;:::i;:::-;13601:3;13594:34;13525:109;;:::o;13640:159::-;13741:51;13786:5;13741:51;:::i;:::-;13736:3;13729:64;13640:159;;:::o;13805:167::-;13910:55;13959:5;13910:55;:::i;:::-;13905:3;13898:68;13805:167;;:::o;13978:213::-;14106:78;14178:5;14106:78;:::i;:::-;14101:3;14094:91;13978:213;;:::o;14197:147::-;14292:45;14331:5;14292:45;:::i;:::-;14287:3;14280:58;14197:147;;:::o;14350:364::-;14438:3;14466:39;14499:5;14466:39;:::i;:::-;14521:71;14585:6;14580:3;14521:71;:::i;:::-;14514:78;;14601:52;14646:6;14641:3;14634:4;14627:5;14623:16;14601:52;:::i;:::-;14678:29;14700:6;14678:29;:::i;:::-;14673:3;14669:39;14662:46;;14442:272;14350:364;;;;:::o;14720:366::-;14862:3;14883:67;14947:2;14942:3;14883:67;:::i;:::-;14876:74;;14959:93;15048:3;14959:93;:::i;:::-;15077:2;15072:3;15068:12;15061:19;;14720:366;;;:::o;15092:::-;15234:3;15255:67;15319:2;15314:3;15255:67;:::i;:::-;15248:74;;15331:93;15420:3;15331:93;:::i;:::-;15449:2;15444:3;15440:12;15433:19;;15092:366;;;:::o;15464:::-;15606:3;15627:67;15691:2;15686:3;15627:67;:::i;:::-;15620:74;;15703:93;15792:3;15703:93;:::i;:::-;15821:2;15816:3;15812:12;15805:19;;15464:366;;;:::o;15836:::-;15978:3;15999:67;16063:2;16058:3;15999:67;:::i;:::-;15992:74;;16075:93;16164:3;16075:93;:::i;:::-;16193:2;16188:3;16184:12;16177:19;;15836:366;;;:::o;16208:::-;16350:3;16371:67;16435:2;16430:3;16371:67;:::i;:::-;16364:74;;16447:93;16536:3;16447:93;:::i;:::-;16565:2;16560:3;16556:12;16549:19;;16208:366;;;:::o;16580:::-;16722:3;16743:67;16807:2;16802:3;16743:67;:::i;:::-;16736:74;;16819:93;16908:3;16819:93;:::i;:::-;16937:2;16932:3;16928:12;16921:19;;16580:366;;;:::o;16952:::-;17094:3;17115:67;17179:2;17174:3;17115:67;:::i;:::-;17108:74;;17191:93;17280:3;17191:93;:::i;:::-;17309:2;17304:3;17300:12;17293:19;;16952:366;;;:::o;17324:365::-;17466:3;17487:66;17551:1;17546:3;17487:66;:::i;:::-;17480:73;;17562:93;17651:3;17562:93;:::i;:::-;17680:2;17675:3;17671:12;17664:19;;17324:365;;;:::o;17695:398::-;17854:3;17875:83;17956:1;17951:3;17875:83;:::i;:::-;17868:90;;17967:93;18056:3;17967:93;:::i;:::-;18085:1;18080:3;18076:11;18069:18;;17695:398;;;:::o;18099:366::-;18241:3;18262:67;18326:2;18321:3;18262:67;:::i;:::-;18255:74;;18338:93;18427:3;18338:93;:::i;:::-;18456:2;18451:3;18447:12;18440:19;;18099:366;;;:::o;18471:::-;18613:3;18634:67;18698:2;18693:3;18634:67;:::i;:::-;18627:74;;18710:93;18799:3;18710:93;:::i;:::-;18828:2;18823:3;18819:12;18812:19;;18471:366;;;:::o;18843:118::-;18930:24;18948:5;18930:24;:::i;:::-;18925:3;18918:37;18843:118;;:::o;18967:112::-;19050:22;19066:5;19050:22;:::i;:::-;19045:3;19038:35;18967:112;;:::o;19085:379::-;19269:3;19291:147;19434:3;19291:147;:::i;:::-;19284:154;;19455:3;19448:10;;19085:379;;;:::o;19470:222::-;19563:4;19601:2;19590:9;19586:18;19578:26;;19614:71;19682:1;19671:9;19667:17;19658:6;19614:71;:::i;:::-;19470:222;;;;:::o;19698:238::-;19799:4;19837:2;19826:9;19822:18;19814:26;;19850:79;19926:1;19915:9;19911:17;19902:6;19850:79;:::i;:::-;19698:238;;;;:::o;19942:348::-;20071:4;20109:2;20098:9;20094:18;20086:26;;20122:71;20190:1;20179:9;20175:17;20166:6;20122:71;:::i;:::-;20203:80;20279:2;20268:9;20264:18;20255:6;20203:80;:::i;:::-;19942:348;;;;;:::o;20296:332::-;20417:4;20455:2;20444:9;20440:18;20432:26;;20468:71;20536:1;20525:9;20521:17;20512:6;20468:71;:::i;:::-;20549:72;20617:2;20606:9;20602:18;20593:6;20549:72;:::i;:::-;20296:332;;;;;:::o;20634:807::-;20883:4;20921:3;20910:9;20906:19;20898:27;;20935:71;21003:1;20992:9;20988:17;20979:6;20935:71;:::i;:::-;21016:72;21084:2;21073:9;21069:18;21060:6;21016:72;:::i;:::-;21098:80;21174:2;21163:9;21159:18;21150:6;21098:80;:::i;:::-;21188;21264:2;21253:9;21249:18;21240:6;21188:80;:::i;:::-;21278:73;21346:3;21335:9;21331:19;21322:6;21278:73;:::i;:::-;21361;21429:3;21418:9;21414:19;21405:6;21361:73;:::i;:::-;20634:807;;;;;;;;;:::o;21447:210::-;21534:4;21572:2;21561:9;21557:18;21549:26;;21585:65;21647:1;21636:9;21632:17;21623:6;21585:65;:::i;:::-;21447:210;;;;:::o;21663:250::-;21770:4;21808:2;21797:9;21793:18;21785:26;;21821:85;21903:1;21892:9;21888:17;21879:6;21821:85;:::i;:::-;21663:250;;;;:::o;21919:258::-;22030:4;22068:2;22057:9;22053:18;22045:26;;22081:89;22167:1;22156:9;22152:17;22143:6;22081:89;:::i;:::-;21919:258;;;;:::o;22183:304::-;22317:4;22355:2;22344:9;22340:18;22332:26;;22368:112;22477:1;22466:9;22462:17;22453:6;22368:112;:::i;:::-;22183:304;;;;:::o;22493:313::-;22606:4;22644:2;22633:9;22629:18;22621:26;;22693:9;22687:4;22683:20;22679:1;22668:9;22664:17;22657:47;22721:78;22794:4;22785:6;22721:78;:::i;:::-;22713:86;;22493:313;;;;:::o;22812:419::-;22978:4;23016:2;23005:9;23001:18;22993:26;;23065:9;23059:4;23055:20;23051:1;23040:9;23036:17;23029:47;23093:131;23219:4;23093:131;:::i;:::-;23085:139;;22812:419;;;:::o;23237:::-;23403:4;23441:2;23430:9;23426:18;23418:26;;23490:9;23484:4;23480:20;23476:1;23465:9;23461:17;23454:47;23518:131;23644:4;23518:131;:::i;:::-;23510:139;;23237:419;;;:::o;23662:::-;23828:4;23866:2;23855:9;23851:18;23843:26;;23915:9;23909:4;23905:20;23901:1;23890:9;23886:17;23879:47;23943:131;24069:4;23943:131;:::i;:::-;23935:139;;23662:419;;;:::o;24087:::-;24253:4;24291:2;24280:9;24276:18;24268:26;;24340:9;24334:4;24330:20;24326:1;24315:9;24311:17;24304:47;24368:131;24494:4;24368:131;:::i;:::-;24360:139;;24087:419;;;:::o;24512:::-;24678:4;24716:2;24705:9;24701:18;24693:26;;24765:9;24759:4;24755:20;24751:1;24740:9;24736:17;24729:47;24793:131;24919:4;24793:131;:::i;:::-;24785:139;;24512:419;;;:::o;24937:::-;25103:4;25141:2;25130:9;25126:18;25118:26;;25190:9;25184:4;25180:20;25176:1;25165:9;25161:17;25154:47;25218:131;25344:4;25218:131;:::i;:::-;25210:139;;24937:419;;;:::o;25362:::-;25528:4;25566:2;25555:9;25551:18;25543:26;;25615:9;25609:4;25605:20;25601:1;25590:9;25586:17;25579:47;25643:131;25769:4;25643:131;:::i;:::-;25635:139;;25362:419;;;:::o;25787:::-;25953:4;25991:2;25980:9;25976:18;25968:26;;26040:9;26034:4;26030:20;26026:1;26015:9;26011:17;26004:47;26068:131;26194:4;26068:131;:::i;:::-;26060:139;;25787:419;;;:::o;26212:::-;26378:4;26416:2;26405:9;26401:18;26393:26;;26465:9;26459:4;26455:20;26451:1;26440:9;26436:17;26429:47;26493:131;26619:4;26493:131;:::i;:::-;26485:139;;26212:419;;;:::o;26637:::-;26803:4;26841:2;26830:9;26826:18;26818:26;;26890:9;26884:4;26880:20;26876:1;26865:9;26861:17;26854:47;26918:131;27044:4;26918:131;:::i;:::-;26910:139;;26637:419;;;:::o;27062:222::-;27155:4;27193:2;27182:9;27178:18;27170:26;;27206:71;27274:1;27263:9;27259:17;27250:6;27206:71;:::i;:::-;27062:222;;;;:::o;27290:831::-;27553:4;27591:3;27580:9;27576:19;27568:27;;27605:71;27673:1;27662:9;27658:17;27649:6;27605:71;:::i;:::-;27686:80;27762:2;27751:9;27747:18;27738:6;27686:80;:::i;:::-;27813:9;27807:4;27803:20;27798:2;27787:9;27783:18;27776:48;27841:108;27944:4;27935:6;27841:108;:::i;:::-;27833:116;;27959:72;28027:2;28016:9;28012:18;28003:6;27959:72;:::i;:::-;28041:73;28109:3;28098:9;28094:19;28085:6;28041:73;:::i;:::-;27290:831;;;;;;;;:::o;28127:332::-;28248:4;28286:2;28275:9;28271:18;28263:26;;28299:71;28367:1;28356:9;28352:17;28343:6;28299:71;:::i;:::-;28380:72;28448:2;28437:9;28433:18;28424:6;28380:72;:::i;:::-;28127:332;;;;;:::o;28465:214::-;28554:4;28592:2;28581:9;28577:18;28569:26;;28605:67;28669:1;28658:9;28654:17;28645:6;28605:67;:::i;:::-;28465:214;;;;:::o;28766:132::-;28833:4;28856:3;28848:11;;28886:4;28881:3;28877:14;28869:22;;28766:132;;;:::o;28904:114::-;28971:6;29005:5;28999:12;28989:22;;28904:114;;;:::o;29024:99::-;29076:6;29110:5;29104:12;29094:22;;29024:99;;;:::o;29129:113::-;29199:4;29231;29226:3;29222:14;29214:22;;29129:113;;;:::o;29248:184::-;29347:11;29381:6;29376:3;29369:19;29421:4;29416:3;29412:14;29397:29;;29248:184;;;;:::o;29438:147::-;29539:11;29576:3;29561:18;;29438:147;;;;:::o;29591:169::-;29675:11;29709:6;29704:3;29697:19;29749:4;29744:3;29740:14;29725:29;;29591:169;;;;:::o;29766:305::-;29806:3;29825:20;29843:1;29825:20;:::i;:::-;29820:25;;29859:20;29877:1;29859:20;:::i;:::-;29854:25;;30013:1;29945:66;29941:74;29938:1;29935:81;29932:107;;;30019:18;;:::i;:::-;29932:107;30063:1;30060;30056:9;30049:16;;29766:305;;;;:::o;30077:185::-;30117:1;30134:20;30152:1;30134:20;:::i;:::-;30129:25;;30168:20;30186:1;30168:20;:::i;:::-;30163:25;;30207:1;30197:35;;30212:18;;:::i;:::-;30197:35;30254:1;30251;30247:9;30242:14;;30077:185;;;;:::o;30268:848::-;30329:5;30336:4;30360:6;30351:15;;30384:5;30375:14;;30398:712;30419:1;30409:8;30406:15;30398:712;;;30514:4;30509:3;30505:14;30499:4;30496:24;30493:50;;;30523:18;;:::i;:::-;30493:50;30573:1;30563:8;30559:16;30556:451;;;30988:4;30981:5;30977:16;30968:25;;30556:451;31038:4;31032;31028:15;31020:23;;31068:32;31091:8;31068:32;:::i;:::-;31056:44;;30398:712;;;30268:848;;;;;;;:::o;31122:281::-;31180:5;31204:23;31222:4;31204:23;:::i;:::-;31196:31;;31248:25;31264:8;31248:25;:::i;:::-;31236:37;;31292:104;31329:66;31319:8;31313:4;31292:104;:::i;:::-;31283:113;;31122:281;;;;:::o;31409:1073::-;31463:5;31654:8;31644:40;;31675:1;31666:10;;31677:5;;31644:40;31703:4;31693:36;;31720:1;31711:10;;31722:5;;31693:36;31789:4;31837:1;31832:27;;;;31873:1;31868:191;;;;31782:277;;31832:27;31850:1;31841:10;;31852:5;;;31868:191;31913:3;31903:8;31900:17;31897:43;;;31920:18;;:::i;:::-;31897:43;31969:8;31966:1;31962:16;31953:25;;32004:3;31997:5;31994:14;31991:40;;;32011:18;;:::i;:::-;31991:40;32044:5;;;31782:277;;32168:2;32158:8;32155:16;32149:3;32143:4;32140:13;32136:36;32118:2;32108:8;32105:16;32100:2;32094:4;32091:12;32087:35;32071:111;32068:246;;;32224:8;32218:4;32214:19;32205:28;;32259:3;32252:5;32249:14;32246:40;;;32266:18;;:::i;:::-;32246:40;32299:5;;32068:246;32339:42;32377:3;32367:8;32361:4;32358:1;32339:42;:::i;:::-;32324:57;;;;32413:4;32408:3;32404:14;32397:5;32394:25;32391:51;;;32422:18;;:::i;:::-;32391:51;32471:4;32464:5;32460:16;32451:25;;31409:1073;;;;;;:::o;32488:348::-;32528:7;32551:20;32569:1;32551:20;:::i;:::-;32546:25;;32585:20;32603:1;32585:20;:::i;:::-;32580:25;;32773:1;32705:66;32701:74;32698:1;32695:81;32690:1;32683:9;32676:17;32672:105;32669:131;;;32780:18;;:::i;:::-;32669:131;32828:1;32825;32821:9;32810:20;;32488:348;;;;:::o;32842:191::-;32882:4;32902:20;32920:1;32902:20;:::i;:::-;32897:25;;32936:20;32954:1;32936:20;:::i;:::-;32931:25;;32975:1;32972;32969:8;32966:34;;;32980:18;;:::i;:::-;32966:34;33025:1;33022;33018:9;33010:17;;32842:191;;;;:::o;33039:96::-;33076:7;33105:24;33123:5;33105:24;:::i;:::-;33094:35;;33039:96;;;:::o;33141:104::-;33186:7;33215:24;33233:5;33215:24;:::i;:::-;33204:35;;33141:104;;;:::o;33251:90::-;33285:7;33328:5;33321:13;33314:21;33303:32;;33251:90;;;:::o;33347:110::-;33398:7;33427:24;33445:5;33427:24;:::i;:::-;33416:35;;33347:110;;;:::o;33463:137::-;33541:7;33570:24;33588:5;33570:24;:::i;:::-;33559:35;;33463:137;;;:::o;33606:126::-;33643:7;33683:42;33676:5;33672:54;33661:65;;33606:126;;;:::o;33738:77::-;33775:7;33804:5;33793:16;;33738:77;;;:::o;33821:86::-;33856:7;33896:4;33889:5;33885:16;33874:27;;33821:86;;;:::o;33913:134::-;33971:9;34004:37;34035:5;34004:37;:::i;:::-;33991:50;;33913:134;;;:::o;34053:140::-;34117:9;34150:37;34181:5;34150:37;:::i;:::-;34137:50;;34053:140;;;:::o;34199:144::-;34267:9;34300:37;34331:5;34300:37;:::i;:::-;34287:50;;34199:144;;;:::o;34349:167::-;34440:9;34473:37;34504:5;34473:37;:::i;:::-;34460:50;;34349:167;;;:::o;34522:121::-;34580:9;34613:24;34631:5;34613:24;:::i;:::-;34600:37;;34522:121;;;:::o;34649:126::-;34699:9;34732:37;34763:5;34732:37;:::i;:::-;34719:50;;34649:126;;;:::o;34781:113::-;34831:9;34864:24;34882:5;34864:24;:::i;:::-;34851:37;;34781:113;;;:::o;34900:307::-;34968:1;34978:113;34992:6;34989:1;34986:13;34978:113;;;35077:1;35072:3;35068:11;35062:18;35058:1;35053:3;35049:11;35042:39;35014:2;35011:1;35007:10;35002:15;;34978:113;;;35109:6;35106:1;35103:13;35100:101;;;35189:1;35180:6;35175:3;35171:16;35164:27;35100:101;34949:258;34900:307;;;:::o;35213:180::-;35261:77;35258:1;35251:88;35358:4;35355:1;35348:15;35382:4;35379:1;35372:15;35399:180;35447:77;35444:1;35437:88;35544:4;35541:1;35534:15;35568:4;35565:1;35558:15;35585:180;35633:77;35630:1;35623:88;35730:4;35727:1;35720:15;35754:4;35751:1;35744:15;35771:180;35819:77;35816:1;35809:88;35916:4;35913:1;35906:15;35940:4;35937:1;35930:15;35957:117;36066:1;36063;36056:12;36080:117;36189:1;36186;36179:12;36203:117;36312:1;36309;36302:12;36326:117;36435:1;36432;36425:12;36449:117;36558:1;36555;36548:12;36572:102;36613:6;36664:2;36660:7;36655:2;36648:5;36644:14;36640:28;36630:38;;36572:102;;;:::o;36680:::-;36722:8;36769:5;36766:1;36762:13;36741:34;;36680:102;;;:::o;36788:167::-;36928:19;36924:1;36916:6;36912:14;36905:43;36788:167;:::o;36961:173::-;37101:25;37097:1;37089:6;37085:14;37078:49;36961:173;:::o;37140:177::-;37280:29;37276:1;37268:6;37264:14;37257:53;37140:177;:::o;37323:310::-;37463:34;37459:1;37451:6;37447:14;37440:58;37532:34;37527:2;37519:6;37515:15;37508:59;37601:24;37596:2;37588:6;37584:15;37577:49;37323:310;:::o;37639:177::-;37779:29;37775:1;37767:6;37763:14;37756:53;37639:177;:::o;37822:221::-;37962:34;37958:1;37950:6;37946:14;37939:58;38031:4;38026:2;38018:6;38014:15;38007:29;37822:221;:::o;38049:220::-;38189:34;38185:1;38177:6;38173:14;38166:58;38258:3;38253:2;38245:6;38241:15;38234:28;38049:220;:::o;38275:156::-;38415:8;38411:1;38403:6;38399:14;38392:32;38275:156;:::o;38437:114::-;;:::o;38557:303::-;38697:34;38693:1;38685:6;38681:14;38674:58;38766:34;38761:2;38753:6;38749:15;38742:59;38835:17;38830:2;38822:6;38818:15;38811:42;38557:303;:::o;38866:161::-;39006:13;39002:1;38994:6;38990:14;38983:37;38866:161;:::o;39033:122::-;39106:24;39124:5;39106:24;:::i;:::-;39099:5;39096:35;39086:63;;39145:1;39142;39135:12;39086:63;39033:122;:::o;39161:138::-;39242:32;39268:5;39242:32;:::i;:::-;39235:5;39232:43;39222:71;;39289:1;39286;39279:12;39222:71;39161:138;:::o;39305:116::-;39375:21;39390:5;39375:21;:::i;:::-;39368:5;39365:32;39355:60;;39411:1;39408;39401:12;39355:60;39305:116;:::o;39427:150::-;39514:38;39546:5;39514:38;:::i;:::-;39507:5;39504:49;39494:77;;39567:1;39564;39557:12;39494:77;39427:150;:::o;39583:204::-;39697:65;39756:5;39697:65;:::i;:::-;39690:5;39687:76;39677:104;;39777:1;39774;39767:12;39677:104;39583:204;:::o;39793:122::-;39866:24;39884:5;39866:24;:::i;:::-;39859:5;39856:35;39846:63;;39905:1;39902;39895:12;39846:63;39793:122;:::o

Swarm Source

ipfs://09c528787882bcabfaa498edfb489584ba45873fd12b2b47f86ceaac8fe55ba9
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.