PSA: Scheduled Server Maintenance & Upgrades [2nd-December-2021 6:00 AM UTC] - Estimated duration: 3 hours.

Contract 0x26165a5a3dd21fa528becf3ff7f114d00a517344 1

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xfbe65adee5dbad1b58c2bc9fecbb3c40a6aa1c71c0c5b9dc51532b639c7260adApprove131225182021-12-02 5:35:331 hr 22 mins ago0x4700308cb8011fc6883193eeeb371da8311ba32a IN  META: META Token0 BNB0.000221985
0xad52000e9aa5062cb7a9e74ef4f73885fc3caf6a4652573332f9cc81b93e4320Approve131224302021-12-02 5:31:081 hr 26 mins ago0x18d3ae767ee8f6ad54257d7a060499ad014beb0b IN  META: META Token0 BNB0.000221985
0xdb5cb9667510629660e6a5859861b85fd3a1f0ea94e6c53700e715e8980043aaApprove131222542021-12-02 5:22:201 hr 35 mins ago0x36aa91b82ecfd95e3f3317903cf5b210bf3a4a83 IN  META: META Token0 BNB0.000310779
0x391cc757adb40b580c074ed652e1bd302248a260364b00bb8da682f0d6fdbd09Approve131221752021-12-02 5:18:221 hr 39 mins ago0xf51f7a188bbee854872d918854cd01f80de71987 IN  META: META Token0 BNB0.000221985
0xd1fb40772545cc6c48045551a953e506b4f7655ee2356d6ed5ba728cc5f1cfd2Transfer131220512021-12-02 5:11:591 hr 46 mins ago0x7be1c8ea54e544e972439d69c92cff7c603bff20 IN  META: META Token0 BNB0.002985795
0xff71b711ffc54243f534f638d20b92da854c65b78664e7640e7b5dd23fb61323Approve131215862021-12-02 4:48:242 hrs 9 mins ago0x0c8c431ec8e7e7e5da110f968307f04c710377a6 IN  META: META Token0 BNB0.000221985
0x57aac0207dae8a558055343795d21f704ab8e39db5143af4f70bf4e1c366dbfcApprove131215252021-12-02 4:45:192 hrs 12 mins ago0xa8c099d33598408c7721d17806a2ff42b1c55b29 IN  META: META Token0 BNB0.000221985
0xdda699acb09e7627ee77efa64d47282cd6da6d42a3484050f4842a84eed9196aApprove131208762021-12-02 4:11:162 hrs 46 mins ago0x5925f95d938677f471431ee3aeab69b7ea572627 IN  META: META Token0 BNB0.000072535
0xc9b9f6b66e496bf4f0142348e52cf3ec1387d1238c1a2ca3babcb86606c05eb6Approve131207872021-12-02 4:06:242 hrs 51 mins ago0x5925f95d938677f471431ee3aeab69b7ea572627 IN  META: META Token0 BNB0.000125985
0x1cc31ad9f2bf84da586d4203cb1238d85195a59d91df94a0dfa5e7eaf66b540aApprove131207392021-12-02 4:03:592 hrs 54 mins ago0x5925f95d938677f471431ee3aeab69b7ea572627 IN  META: META Token0 BNB0.000221985
0x08c751e3f263e27b44583c93738e6bcf3d8711cda5ce5a75afc39da5fa878062Approve131206972021-12-02 4:01:532 hrs 56 mins ago0x1bb187bfc2001a422e3d3421bd443db31341f87c IN  META: META Token0 BNB0.000221985
0x85dab26bb69c4c67c24e59ee0a1b9a9aa905fbfa0613e7379a684f03641e991fApprove131206672021-12-02 4:00:062 hrs 57 mins ago0x9d3b4fafe30a28c295836842dc021651ef371089 IN  META: META Token0 BNB0.000221985
0x5cd0d8c9fd416ecafe30bfedd453fc616fe5f47f3403a49fc6c52e7d62441417Approve131203732021-12-02 3:44:003 hrs 14 mins ago0x3cfa71d03691756c2fd23b5847e3fd8ae4e30116 IN  META: META Token0 BNB0.000221985
0x3397407763ba5d3bb12e60bed508814507fcfbcdbf9ee694d1e47bec556b11c9Approve131203662021-12-02 3:43:383 hrs 14 mins ago0xf0aa4cf8cc822334e96ac5b8d4b9f0e1cc319e3d IN  META: META Token0 BNB0.000221985
0x53b279d768685ad57b96a7a9a10577e4cc58d232e7ab9e1a0362cd417e75da82Approve131202622021-12-02 3:37:433 hrs 20 mins ago0x739c215b8da5ced312ac866c5c7e832bd0d4dae2 IN  META: META Token0 BNB0.000221985
0x134ef8915bb1b333956e3a515de012891b49c4f98d38fd612f07d9e4ea545029Approve131202212021-12-02 3:35:143 hrs 22 mins ago0xbb21aafc3e15cbf3db813b48c9508df543696bab IN  META: META Token0 BNB0.000221985
0x1435cae0f9032c323b6d4535ce85d92b6e44a9dc372e34b2567b89a1b2269a4aApprove131192952021-12-02 2:40:214 hrs 17 mins ago0x699493ce6800aef9070d4f2e8ca952978cfabc09 IN  META: META Token0 BNB0.000221985
0x9a2f233bfbc0bb86fae2d044c8de331835ececf0883b550337c7ee4b399ef25fApprove131189632021-12-02 2:20:064 hrs 37 mins ago0x97a20576e632d3501561d398cfed756724f643bb IN  META: META Token0 BNB0.000221985
0xe4c038814a8b2d86a2ba7498c27ef2cb6e6a8e202be7cd360b8a9fab384ab9f7Approve131189432021-12-02 2:18:484 hrs 39 mins ago0xc0e03ac2ea112689d04b71de20881b917d10aaee IN  META: META Token0 BNB0.000221985
0x2cc3abf5a1b0b9b06ccbc0fb6925b69b1a361902b2b648ac2fc14d74ef09b2eaTransfer131185892021-12-02 2:00:054 hrs 57 mins ago0x8313b5d80d48bf1681cd79f4500f327e41975294 IN  META: META Token0 BNB0.002843865
0x0c694558526d10a0d072fe2d29213a6f1c8382a37fb95b2727d2fc30debfbf8bApprove131181852021-12-02 1:37:545 hrs 20 mins ago0xf21cbd252869d5cf6dd100ac50885c67ed18b429 IN  META: META Token0 BNB0.000310779
0xcd19a803c1d2019524a8453cb2d7aea44d289b47b679036c4acc5dbe4cedf844Approve131180922021-12-02 1:32:425 hrs 25 mins ago0x3294f5b90adfca758d5888ff0f71a83a808cb46a IN  META: META Token0 BNB0.000221985
0xfee1bfc12ff9e48a01b9b4e93e47635ee3aafd6eafbc235b93389b2e598f80f8Approve131179472021-12-02 1:25:015 hrs 33 mins ago0xbda3eaa0dfad2cceea8d2ddde20e03b8b0081afb IN  META: META Token0 BNB0.000221985
0xd24e6c5c9a874635a08d5b941c1149db2a26548d4bf03ad333a7388197e0a393Transfer131170412021-12-02 0:36:366 hrs 21 mins ago0x80766b60aae81fe97340c332316e80e31257472d IN  META: META Token0 BNB0.002102155
0x4fae18982182059390eb3edc0951e875c3a0a7f27c723faef87151376651f7c0Approve131168362021-12-02 0:24:346 hrs 33 mins ago0xdb7845228e9dec68b168ad73c7ab195823e129ff IN  META: META Token0 BNB0.000266382
[ Download CSV Export 

OVERVIEW

META is a community meme and rewards token. All holders of META are automatically rewarded SHIB. Hold META, and watch your SHIB grow passively.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x26c0b9bd5be75a6c8c738586aefcbbc9bf072a728ebff660b297a57be0a2f109131132422021-12-01 21:23:119 hrs 34 mins ago PancakeSwap: Router v2 META: META Token0.02435637324952853 BNB
0x26c0b9bd5be75a6c8c738586aefcbbc9bf072a728ebff660b297a57be0a2f109131132422021-12-01 21:23:119 hrs 34 mins ago META: META Token PancakeSwap: Router v20.899607594889130713 BNB
0x26c0b9bd5be75a6c8c738586aefcbbc9bf072a728ebff660b297a57be0a2f109131132422021-12-01 21:23:119 hrs 34 mins ago META: META Token 0x9c5cc6560fb4d728043b50ef1e0ed627e86e489f8.99607594889130713 BNB
0x26c0b9bd5be75a6c8c738586aefcbbc9bf072a728ebff660b297a57be0a2f109131132422021-12-01 21:23:119 hrs 34 mins ago PancakeSwap: Router v2 META: META Token9.81796506961583955 BNB
0xdce831f5eea954b6ac62e093b9986264b300d45f4ed896c5ea1894fe2adead3d131033122021-12-01 12:31:0918 hrs 26 mins ago PancakeSwap: Router v2 META: META Token0.057718474164598292 BNB
0xdce831f5eea954b6ac62e093b9986264b300d45f4ed896c5ea1894fe2adead3d131033122021-12-01 12:31:0918 hrs 26 mins ago META: META Token PancakeSwap: Router v20.831897060088858571 BNB
0xdce831f5eea954b6ac62e093b9986264b300d45f4ed896c5ea1894fe2adead3d131033122021-12-01 12:31:0918 hrs 26 mins ago META: META Token 0x9c5cc6560fb4d728043b50ef1e0ed627e86e489f8.318970600888585714 BNB
0xdce831f5eea954b6ac62e093b9986264b300d45f4ed896c5ea1894fe2adead3d131033122021-12-01 12:31:0918 hrs 26 mins ago PancakeSwap: Router v2 META: META Token8.674446404228416212 BNB
0xac6c770cbb6124f6d0925a81eca9005446eb9f0241ba2083199ea3691300a009130947162021-12-01 4:27:221 day 2 hrs ago PancakeSwap: Router v2 META: META Token0.012048025116765386 BNB
0xac6c770cbb6124f6d0925a81eca9005446eb9f0241ba2083199ea3691300a009130947162021-12-01 4:27:221 day 2 hrs ago META: META Token PancakeSwap: Router v20.66838312366386231 BNB
0xac6c770cbb6124f6d0925a81eca9005446eb9f0241ba2083199ea3691300a009130947162021-12-01 4:27:221 day 2 hrs ago META: META Token 0x9c5cc6560fb4d728043b50ef1e0ed627e86e489f6.683831236638623103 BNB
0xac6c770cbb6124f6d0925a81eca9005446eb9f0241ba2083199ea3691300a009130947162021-12-01 4:27:221 day 2 hrs ago PancakeSwap: Router v2 META: META Token7.33706848044285037 BNB
0x57ce0f282e5ef005c31b8ccaee628edccee7bbcf36f24a64263607b6813ba8bc130870342021-11-30 21:44:131 day 9 hrs ago PancakeSwap: Router v2 META: META Token0.015145879859635043 BNB
0x57ce0f282e5ef005c31b8ccaee628edccee7bbcf36f24a64263607b6813ba8bc130870342021-11-30 21:44:131 day 9 hrs ago META: META Token PancakeSwap: Router v20.686005069321322491 BNB
0x57ce0f282e5ef005c31b8ccaee628edccee7bbcf36f24a64263607b6813ba8bc130870342021-11-30 21:44:131 day 9 hrs ago META: META Token 0x9c5cc6560fb4d728043b50ef1e0ed627e86e489f6.860050693213224919 BNB
0x57ce0f282e5ef005c31b8ccaee628edccee7bbcf36f24a64263607b6813ba8bc130870342021-11-30 21:44:131 day 9 hrs ago PancakeSwap: Router v2 META: META Token7.51127155587511278 BNB
0xc747fa518bc2e257a10630c9b68a3f11b1d77752147133d469bf03eb5114d9d5130830932021-11-30 18:24:561 day 12 hrs ago PancakeSwap: Router v2 META: META Token0.034784206659434631 BNB
0xc747fa518bc2e257a10630c9b68a3f11b1d77752147133d469bf03eb5114d9d5130830932021-11-30 18:24:561 day 12 hrs ago META: META Token PancakeSwap: Router v21.1188478903739845 BNB
0xc747fa518bc2e257a10630c9b68a3f11b1d77752147133d469bf03eb5114d9d5130830932021-11-30 18:24:561 day 12 hrs ago META: META Token 0x9c5cc6560fb4d728043b50ef1e0ed627e86e489f11.188478903739845 BNB
0xc747fa518bc2e257a10630c9b68a3f11b1d77752147133d469bf03eb5114d9d5130830932021-11-30 18:24:561 day 12 hrs ago PancakeSwap: Router v2 META: META Token12.294677753696357185 BNB
0x23dc526e0d7766ff262aabaee3412823c444a6326bb0da11e0d2e29943518b36130801642021-11-30 15:50:381 day 15 hrs ago PancakeSwap: Router v2 META: META Token0.012649040417472314 BNB
0x23dc526e0d7766ff262aabaee3412823c444a6326bb0da11e0d2e29943518b36130801642021-11-30 15:50:381 day 15 hrs ago META: META Token PancakeSwap: Router v20.69286829325411877 BNB
0x23dc526e0d7766ff262aabaee3412823c444a6326bb0da11e0d2e29943518b36130801642021-11-30 15:50:381 day 15 hrs ago META: META Token 0x9c5cc6560fb4d728043b50ef1e0ed627e86e489f6.928682932541187707 BNB
0x23dc526e0d7766ff262aabaee3412823c444a6326bb0da11e0d2e29943518b36130801642021-11-30 15:50:381 day 15 hrs ago PancakeSwap: Router v2 META: META Token7.607547047746547774 BNB
0xdebdde926bafbf2deaba6315b0187e9505408da8b32b7ab427612228d7d8a688130801142021-11-30 15:47:571 day 15 hrs ago PancakeSwap: Router v2 META: META Token0.012581533779286712 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
META

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-10-29
*/

/**
 *Submitted for verification at BscScan.com on 2021-10-28
*/

//SPDX-License-Identifier: MIT
/**
META FACBEBOOK
 */
pragma solidity ^0.7.4;

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) { return 0; }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

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

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

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

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

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

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

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

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

contract DividendDistributor is IDividendDistributor {

    using SafeMath for uint256;
    address _token;

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

    IDEXRouter router;
    address routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
    IBEP20 RewardToken = IBEP20(0x2859e4544C4bB03966803b044A93563Bd2D0DD4D); //SHIBA

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

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

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

    uint256 currentIndex;

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

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

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

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

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

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

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

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

    function deposit() external payable override onlyToken {

        uint256 balanceBefore = RewardToken.balanceOf(address(this));

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

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

        uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

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

        if(shareholderCount == 0) { return; }

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

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

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

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

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

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

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            RewardToken.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend() external {

        require(shouldDistribute(msg.sender), "Too soon. Need to wait!");
        distributeDividend(msg.sender);
    }

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

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

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

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

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

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

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

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

contract META is IBEP20, Auth {
    
    using SafeMath for uint256;

    string constant _name = "META";
    string constant _symbol = "META";
    uint8 constant _decimals = 9;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
    address RewardToken = 0x2859e4544C4bB03966803b044A93563Bd2D0DD4D; //SHIBA

    uint256 _totalSupply = 1 * 10**12 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply * 2 / 200;
    uint256 public _walletMax = _totalSupply * 3 / 100;
    
    bool public restrictWhales = true;

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

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

    uint256 public liquidityFee = 2;
    uint256 public rewardsFee = 10;
    uint256 public extraFeeOnSell = 5;

    uint256 public totalFee = 0;
    uint256 public totalFeeIfSelling = 0;

    address public autoLiquidityReceiver;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    bool public tradingOpen = false;

    DividendDistributor public dividendDistributor;
    uint256 distributorGas = 500000;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    uint256 public swapThreshold = _totalSupply * 5 / 4000;
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

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

        dividendDistributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[msg.sender] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;
        
        totalFee = liquidityFee.add(rewardsFee);
        totalFeeIfSelling = totalFee.add(extraFeeOnSell);

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

    receive() external payable { }

    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function getOwner() external view override returns (address) { return owner; }

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

    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

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

    function changeTxLimit(uint256 newLimit) external authorized {
        _maxTxAmount = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external authorized {
        _walletMax  = newLimit;
    }

    function changeRestrictWhales(bool newValue) external authorized {
       restrictWhales = newValue;
    }
    
    function changeIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

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

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

    function changeFees(uint256 newLiqFee, uint256 newRewardFee, uint256 newExtraSellFee) external authorized {
        liquidityFee = newLiqFee;
        rewardsFee = newRewardFee;
        extraFeeOnSell = newExtraSellFee;
        
        totalFee = liquidityFee.add(rewardsFee);
        totalFeeIfSelling = totalFee.add(extraFeeOnSell);
    }

    function changeFeeReceivers(address newLiquidityReceiver) external authorized {
        autoLiquidityReceiver = newLiquidityReceiver;
    }

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

    function changeDistributionCriteria(uint256 newinPeriod, uint256 newMinDistribution) external authorized {
        dividendDistributor.setDistributionCriteria(newinPeriod, newMinDistribution);
    }

    function changeDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

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

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

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

        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");

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

        if(!launched() && recipient == pair) {
            require(_balances[sender] > 0);
            launch();
        }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        if(!isTxLimitExempt[recipient] && restrictWhales)
        {
            require(_balances[recipient].add(amount) <= _walletMax);
        }

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

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

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

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

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

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

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

        return amount.sub(feeAmount);
    }

    function tradingStatus(bool newStatus) public onlyOwner {
        tradingOpen = newStatus;
    }

    function swapBack() internal lockTheSwap {
        
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

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

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

        uint256 amountBNB = address(this).balance;

        uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2));
        
        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(rewardsFee).div(totalBNBFee);

        try dividendDistributor.deposit{value: amountBNBReflection}() {} catch {}
        

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

    event AutoLiquify(uint256 amountBNB, uint256 amountMETA);

}

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":"amountMETA","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[{"internalType":"uint256","name":"newinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"changeDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"changeDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityReceiver","type":"address"}],"name":"changeFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFee","type":"uint256"},{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newExtraSellFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeRestrictWhales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"},{"internalType":"bool","name":"swapByLimitOnly","type":"bool"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extraFeeOnSell","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":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsFee","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":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507310ed43c718714eb63d5aa57b78b54704e256024e600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732859e4544c4bb03966803b044a93563bd2d0dd4d600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960ff16600a0a64e8d4a510000260065560c8600260065402816200015557fe5b046007556064600360065402816200016957fe5b046008556001600960006101000a81548160ff0219169083151502179055506002600f55600a6010556005601155600060125560006013556000601860006101000a81548160ff0219169083151502179055506207a1206019556001601a60016101000a81548160ff0219169083151502179055506000601a60026101000a81548160ff021916908315150217905550610fa0600560065402816200020a57fe5b04601b553480156200021b57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d6020811015620003ad57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200044257600080fd5b505afa15801562000457573d6000803e3d6000fd5b505050506040513d60208110156200046e57600080fd5b8101908080519060200190929190505050306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004ea57600080fd5b505af1158015620004ff573d6000803e3d6000fd5b505050506040513d60208110156200051657600080fd5b8101908080519060200190929190505050601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200065b9062000bfe565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000698573d6000803e3d6000fd5b50601860016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000a97601054600f5462000b7560201b6200266c1790919060201c565b60128190555062000abb60115460125462000b7560201b6200266c1790919060201c565b601381905550600654600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a362000c0c565b60008082840190508381101562000bf4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b611ada80620049c883390190565b613dac8062000c1c6000396000f3fe6080604052600436106102b25760003560e01c8063807c2d9c11610175578063ca33e64c116100dc578063f0b37c0411610095578063f887ea401161006f578063f887ea4014610fe0578063fabe628314611021578063fe9fbb801461107e578063ffb54a99146110e5576102b9565b8063f0b37c0414610eed578063f2fde38b14610f3e578063f796413514610f8f576102b9565b8063ca33e64c14610d57578063ca987b0e14610d98578063d920334e14610dc3578063da00097d14610dfe578063dd62ed3e14610e2b578063e66b1d1e14610eb0576102b9565b8063a8aa1b311161012e578063a8aa1b3114610ba3578063a9059cbb14610be4578063a9f7864b14610c55578063b6a5d7de14610c9a578063bad3ea6a14610ceb578063bf56b37114610d2c576102b9565b8063807c2d9c146109b8578063893d20e8146109e35780638b42507f14610a2457806395d89b4114610a8b57806398118cb414610b1b578063a3a2e89e14610b46576102b9565b80633f4218e01161021957806369cf17d4116101d257806369cf17d41461081657806370a0823114610841578063773fcb5c146108a65780637a319590146109035780637d1db4a5146109525780637db1342c1461097d576102b9565b80633f4218e01461064c5780634355855a146106b357806344de2e4c1461071a578063479f66d8146107475780634a74bb0214610782578063571ac8b0146107af576102b9565b806323b872dd1161026b57806323b872dd1461047d5780632b112e491461050e5780632bb14e1d146105395780632f54bf6e14610564578063313ce567146105cb57806334c70889146105f9576102b9565b80630445b667146102be57806306fdde03146102e9578063095ea7b3146103795780630d295980146103ea57806318160ddd146104275780631df4ccfc14610452576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3611112565b6040518082815260200191505060405180910390f35b3480156102f557600080fd5b506102fe611118565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033e578082015181840152602081019050610323565b50505050905090810190601f16801561036b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561038557600080fd5b506103d26004803603604081101561039c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611155565b60405180821515815260200191505060405180910390f35b3480156103f657600080fd5b506104256004803603602081101561040d57600080fd5b81019080803515159060200190929190505050611247565b005b34801561043357600080fd5b5061043c6112df565b6040518082815260200191505060405180910390f35b34801561045e57600080fd5b506104676112e9565b6040518082815260200191505060405180910390f35b34801561048957600080fd5b506104f6600480360360608110156104a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112ef565b60405180821515815260200191505060405180910390f35b34801561051a57600080fd5b506105236114ef565b6040518082815260200191505060405180910390f35b34801561054557600080fd5b5061054e611571565b6040518082815260200191505060405180910390f35b34801561057057600080fd5b506105b36004803603602081101561058757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611577565b60405180821515815260200191505060405180910390f35b3480156105d757600080fd5b506105e06115d0565b604051808260ff16815260200191505060405180910390f35b34801561060557600080fd5b5061064a6004803603606081101561061c57600080fd5b81019080803515159060200190929190803590602001909291908035151590602001909291905050506115d9565b005b34801561065857600080fd5b5061069b6004803603602081101561066f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611694565b60405180821515815260200191505060405180910390f35b3480156106bf57600080fd5b50610702600480360360208110156106d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116b4565b60405180821515815260200191505060405180910390f35b34801561072657600080fd5b5061072f6116d4565b60405180821515815260200191505060405180910390f35b34801561075357600080fd5b506107806004803603602081101561076a57600080fd5b81019080803590602001909291905050506116e7565b005b34801561078e57600080fd5b5061079761177b565b60405180821515815260200191505060405180910390f35b3480156107bb57600080fd5b506107fe600480360360208110156107d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061178e565b60405180821515815260200191505060405180910390f35b34801561082257600080fd5b5061082b6117c1565b6040518082815260200191505060405180910390f35b34801561084d57600080fd5b506108906004803603602081101561086457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117c7565b6040518082815260200191505060405180910390f35b3480156108b257600080fd5b50610901600480360360408110156108c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611810565b005b34801561090f57600080fd5b506109506004803603606081101561092657600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611b1b565b005b34801561095e57600080fd5b50610967611bea565b6040518082815260200191505060405180910390f35b34801561098957600080fd5b506109b6600480360360208110156109a057600080fd5b8101908080359060200190929190505050611bf0565b005b3480156109c457600080fd5b506109cd611c75565b6040518082815260200191505060405180910390f35b3480156109ef57600080fd5b506109f8611c7b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a3057600080fd5b50610a7360048036036020811015610a4757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ca4565b60405180821515815260200191505060405180910390f35b348015610a9757600080fd5b50610aa0611cc4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ae0578082015181840152602081019050610ac5565b50505050905090810190601f168015610b0d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b2757600080fd5b50610b30611d01565b6040518082815260200191505060405180910390f35b348015610b5257600080fd5b50610ba160048036036040811015610b6957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611d07565b005b348015610baf57600080fd5b50610bb8611ddd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bf057600080fd5b50610c3d60048036036040811015610c0757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e03565b60405180821515815260200191505060405180910390f35b348015610c6157600080fd5b50610c9860048036036040811015610c7857600080fd5b810190808035906020019092919080359060200190929190505050611e18565b005b348015610ca657600080fd5b50610ce960048036036020811015610cbd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f2c565b005b348015610cf757600080fd5b50610d00612001565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d3857600080fd5b50610d41612027565b6040518082815260200191505060405180910390f35b348015610d6357600080fd5b50610d6c61202d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610da457600080fd5b50610dad612053565b6040518082815260200191505060405180910390f35b348015610dcf57600080fd5b50610dfc60048036036020811015610de657600080fd5b8101908080359060200190929190505050612059565b005b348015610e0a57600080fd5b50610e136120de565b60405180821515815260200191505060405180910390f35b348015610e3757600080fd5b50610e9a60048036036040811015610e4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120f1565b6040518082815260200191505060405180910390f35b348015610ebc57600080fd5b50610eeb60048036036020811015610ed357600080fd5b81019080803515159060200190929190505050612178565b005b348015610ef957600080fd5b50610f3c60048036036020811015610f1057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612210565b005b348015610f4a57600080fd5b50610f8d60048036036020811015610f6157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122e6565b005b348015610f9b57600080fd5b50610fde60048036036020811015610fb257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612448565b005b348015610fec57600080fd5b50610ff5612507565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561102d57600080fd5b5061107c6004803603604081101561104457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061252d565b005b34801561108a57600080fd5b506110cd600480360360208110156110a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612603565b60405180821515815260200191505060405180910390f35b3480156110f157600080fd5b506110fa612659565b60405180821515815260200191505060405180910390f35b601b5481565b60606040518060400160405280600481526020017f4d45544100000000000000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b61125033611577565b6112c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601860006101000a81548160ff02191690831515021790555050565b6000600654905090565b60125481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146114db5761145a826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f49092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6114e68484846127b4565b90509392505050565b600061156c61151f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166117c7565b61155e61154d600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166117c7565b6006546131dc90919063ffffffff16565b6131dc90919063ffffffff16565b905090565b60105481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6115e233612603565b611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82601a60016101000a81548160ff02191690831515021790555081601b8190555080601a60026101000a81548160ff021916908315150217905550505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900460ff1681565b6116f033612603565b611762576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b0811061177157600080fd5b8060198190555050565b601a60019054906101000a900460ff1681565b60006117ba827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611155565b9050919050565b60115481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61181933612603565b61188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156119155750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61191e57600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611a2c57601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611a0f57600080fd5b505af1158015611a23573d6000803e3d6000fd5b50505050611b17565b601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611afe57600080fd5b505af1158015611b12573d6000803e3d6000fd5b505050505b5050565b611b2433612603565b611b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82600f819055508160108190555080601181905550611bc2601054600f5461266c90919063ffffffff16565b601281905550611bdf60115460125461266c90919063ffffffff16565b601381905550505050565b60075481565b611bf933612603565b611c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060088190555050565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600481526020017f4d45544100000000000000000000000000000000000000000000000000000000815250905090565b600f5481565b611d1033612603565b611d82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611e103384846127b4565b905092915050565b611e2133612603565b611e93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b505050505050565b611f3533611577565b611fa7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b61206233612603565b6120d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b601a60029054906101000a900460ff1681565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61218133612603565b6121f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b61221933611577565b61228b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6122ef33611577565b612361576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b61245133612603565b6124c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61253633612603565b6125a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601860009054906101000a900460ff1681565b6000808284019050838110156126ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008383111582906127a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561276657808201518184015260208101905061274b565b50505050905090810190601f1680156127935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000601a60009054906101000a900460ff16156127dd576127d6848484613226565b90506131d5565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128815750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561290957601860009054906101000a900460ff16612908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f54726164696e67206e6f74206f70656e2079657400000000000000000000000081525060200191505060405180910390fd5b5b600754821115806129635750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6129d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612a405750601a60009054906101000a900460ff16155b8015612a585750601a60019054906101000a900460ff165b8015612aa55750601b54600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15612ab357612ab26133f9565b5b612abb613a01565b158015612b155750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612b6f576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411612b6657600080fd5b612b6e613a0e565b5b612bf8826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f49092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ca15750600960009054906101000a900460ff165b15612d0757600854612cfb83600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266c90919063ffffffff16565b1115612d0657600080fd5b5b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612dad5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612db75782612dc3565b612dc2858585613a17565b5b9050612e1781600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266c90919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f9957601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612f7d57600080fd5b505af1925050508015612f8e575060015b612f9757612f98565b5b5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130d857601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156130bc57600080fd5b505af19250505080156130cd575060015b6130d6576130d7565b5b5b601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796019546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561314f57600080fd5b505af1925050508015613160575060015b6131695761316a565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b600061321e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126f4565b905092915050565b60006132b1826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f49092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061334682600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266c90919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6001601a60006101000a81548160ff0219169083151502179055506000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000613496600261348860125461347a600f5487613bbf90919063ffffffff16565b613c4590919063ffffffff16565b613c4590919063ffffffff16565b905060006134ad82846131dc90919063ffffffff16565b90506000600267ffffffffffffffff811180156134c957600080fd5b506040519080825280602002602001820160405280156134f85781602001602082028036833780820191505090505b509050308160008151811061350957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156135ab57600080fd5b505afa1580156135bf573d6000803e3d6000fd5b505050506040513d60208110156135d557600080fd5b8101908080519060200190929190505050816001815181106135f357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156136f15780820151818401526020810190506136d6565b505050509050019650505050505050600060405180830381600087803b15801561371a57600080fd5b505af115801561372e573d6000803e3d6000fd5b50505050600047905060006137636137526002600f54613c4590919063ffffffff16565b6012546131dc90919063ffffffff16565b905060006137a1600261379384613785600f5488613bbf90919063ffffffff16565b613c4590919063ffffffff16565b613c4590919063ffffffff16565b905060006137cc836137be60105487613bbf90919063ffffffff16565b613c4590919063ffffffff16565b9050601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561383857600080fd5b505af19350505050801561384a575060015b61385357613854565b5b60008711156139dc57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561394957600080fd5b505af115801561395d573d6000803e3d6000fd5b50505050506040513d606081101561397457600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068288604051808381526020018281526020019250505060405180910390a15b50505050505050506000601a60006101000a81548160ff021916908315150217905550565b6000806017541415905090565b43601781905550565b6000808373ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613a7757601254613a7b565b6013545b90506000613aa56064613a978487613bbf90919063ffffffff16565b613c4590919063ffffffff16565b9050613af981600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266c90919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3613bb481856131dc90919063ffffffff16565b925050509392505050565b600080831415613bd25760009050613c3f565b6000828402905082848281613be357fe5b0414613c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613d566021913960400191505060405180910390fd5b809150505b92915050565b6000613c8783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c8f565b905092915050565b60008083118290613d3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d00578082015181840152602081019050613ce5565b50505050905090810190601f168015613d2d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613d4757fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212201687a3e120e947e28d289ea2a09f81654670c00fd00bbe4ad5b3262c6d076a5164736f6c6343000706003360806040527310ed43c718714eb63d5aa57b78b54704e256024e600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732859e4544c4bb03966803b044a93563bd2d0dd4d600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610708600d55670de0b6b3a7640000600e553480156100df57600080fd5b50604051611ada380380611ada8339818101604052602081101561010257600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561017057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610172565b805b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506118d8806102026000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed1461033b578063f0fc6bca14610366578063ffb2c4791461037d578063ffd49c84146103b8576100dd565b8063ce7c2ac214610293578063d0e30db014610306578063e2d2e21914610310576100dd565b80632d48e896116100bb5780632d48e896146101cd5780633a98ef39146102125780634fab0ae81461023d578063997664d714610268576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610168575b600080fd5b3480156100ee57600080fd5b506100f76103e3565b6040518082815260200191505060405180910390f35b34801561011957600080fd5b506101666004803603604081101561013057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103e9565b005b34801561017457600080fd5b506101b76004803603602081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106a8565b6040518082815260200191505060405180910390f35b3480156101d957600080fd5b50610210600480360360408110156101f057600080fd5b8101908080359060200190929190803590602001909291905050506107c2565b005b34801561021e57600080fd5b5061022761082c565b6040518082815260200191505060405180910390f35b34801561024957600080fd5b50610252610832565b6040518082815260200191505060405180910390f35b34801561027457600080fd5b5061027d610838565b6040518082815260200191505060405180910390f35b34801561029f57600080fd5b506102e2600480360360208110156102b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b60405180848152602001838152602001828152602001935050505060405180910390f35b61030e610868565b005b34801561031c57600080fd5b50610325610d63565b6040518082815260200191505060405180910390f35b34801561034757600080fd5b50610350610d69565b6040518082815260200191505060405180910390f35b34801561037257600080fd5b5061037b610d6f565b005b34801561038957600080fd5b506103b6600480360360208110156103a057600080fd5b8101908080359060200190929190505050610df5565b005b3480156103c457600080fd5b506103cd610f6f565b6040518082815260200191505060405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461044157600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104965761049582610f75565b5b6000811180156104e857506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104fb576104f68261123b565b61055d565b60008114801561054d57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561055c5761055b826112ea565b5b5b6105c6816105b8600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546008546114c390919063ffffffff16565b61150d90919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061065e600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611595565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106fd57600090506107bd565b600061074a600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611595565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116107a5576000925050506107bd565b6107b881836114c390919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461081a57600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c057600080fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561094b57600080fd5b505afa15801561095f573d6000803e3d6000fd5b505050506040513d602081101561097557600080fd5b810190808051906020019092919050505090506000600267ffffffffffffffff811180156109a257600080fd5b506040519080825280602002602001820160405280156109d15781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610a3c57600080fd5b505afa158015610a50573d6000803e3d6000fd5b505050506040513d6020811015610a6657600080fd5b810190808051906020019092919050505081600081518110610a8457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610aee57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610be6578082015181840152602081019050610bcb565b50505050905001955050505050506000604051808303818588803b158015610c0d57600080fd5b505af1158015610c21573d6000803e3d6000fd5b50505050506000610cfe83600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610cb557600080fd5b505afa158015610cc9573d6000803e3d6000fd5b505050506040513d6020811015610cdf57600080fd5b81019080805190602001909291905050506114c390919063ffffffff16565b9050610d158160095461150d90919063ffffffff16565b600981905550610d58610d47600854610d3984600c546115c790919063ffffffff16565b61164d90919063ffffffff16565b600b5461150d90919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b610d7833611697565b610dea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f546f6f20736f6f6e2e204e65656420746f20776169742100000000000000000081525060200191505060405180910390fd5b610df333610f75565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e4d57600080fd5b600060048054905090506000811415610e665750610f6c565b60008060005a90505b8482108015610e7d57508383105b15610f675783600f5410610e94576000600f819055505b610ed66004600f5481548110610ea657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611697565b15610f1e57610f1d6004600f5481548110610eed57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f75565b5b610f43610f345a836114c390919063ffffffff16565b8361150d90919063ffffffff16565b91505a9050600f600081548092919060010191905055508280600101935050610e6f565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610fc557611238565b6000610fd0826106a8565b9050600081111561123657610ff081600a5461150d90919063ffffffff16565b600a81905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561108957600080fd5b505af115801561109d573d6000803e3d6000fd5b505050506040513d60208110156110b357600080fd5b81019080805190602001909291905050505042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061115e81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461150d90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506111ef600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611595565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004600160048054905003815481106112ff57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061137657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600060046001600480549050038154811061141757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600480548061148b57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061150583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116fb565b905092915050565b60008082840190508381101561158b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006115c0600c546115b2600b54856115c790919063ffffffff16565b61164d90919063ffffffff16565b9050919050565b6000808314156115da5760009050611647565b60008284029050828482816115eb57fe5b0414611642576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118826021913960400191505060405180910390fd5b809150505b92915050565b600061168f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117bb565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011080156116f45750600e546116f2836106a8565b115b9050919050565b60008383111582906117a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561176d578082015181840152602081019050611752565b50505050905090810190601f16801561179a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290611867576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561182c578082015181840152602081019050611811565b50505050905090810190601f1680156118595780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161187357fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122017333d8e1f7039a9c2251177d5248a82ff99bfab9a9ea346544a5ba0015414e264736f6c63430007060033

Deployed ByteCode Sourcemap

11344:10798:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12914:54;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14091:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14935:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20588:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14353:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12437:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17770:372;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14533:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12358:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10714:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14267:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16963:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12156:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12262:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11999:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17455:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12813:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15159:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12395:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14683:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16075:376;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16459:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11877:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15571:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11936:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14447:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12207:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14177:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12320:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15805:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12592:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17606:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17247:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10387:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12692:46;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12620:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12516:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12471;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15460:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12860:45;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14794:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15685:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10557:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11114:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16814:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12561:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15936:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10888:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12652:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12914:54;;;;:::o;14091:80::-;14139:13;14163:5;;;;;;;;;;;;;;;;;14156:12;;14091:80;:::o;14935:216::-;15010:4;15062:6;15027:11;:23;15039:10;15027:23;;;;;;;;;;;;;;;:32;15051:7;15027:32;;;;;;;;;;;;;;;:41;;;;15105:7;15084:37;;15093:10;15084:37;;;15114:6;15084:37;;;;;;;;;;;;;;;;;;15139:4;15132:11;;14935:216;;;;:::o;20588:98::-;10103:19;10111:10;10103:7;:19::i;:::-;10095:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20669:9:::1;20655:11;;:23;;;;;;;;;;;;;;;;;;20588:98:::0;:::o;14353:88::-;14408:7;14426:12;;14419:19;;14353:88;:::o;12437:27::-;;;;:::o;17770:372::-;17870:4;17943:2;17900:11;:19;17912:6;17900:19;;;;;;;;;;;;;;;:31;17920:10;17900:31;;;;;;;;;;;;;;;;:46;17897:180;;17996:69;18032:6;17996:69;;;;;;;;;;;;;;;;;:11;:19;18008:6;17996:19;;;;;;;;;;;;;;;:31;18016:10;17996:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;17962:11;:19;17974:6;17962:19;;;;;;;;;;;;;;;:31;17982:10;17962:31;;;;;;;;;;;;;;;:103;;;;17897:180;18094:40;18108:6;18116:9;18127:6;18094:13;:40::i;:::-;18087:47;;17770:372;;;;;:::o;14533:142::-;14586:7;14613:54;14651:15;14661:4;;;;;;;;;;;14651:9;:15::i;:::-;14613:33;14630:15;14640:4;;;;;;;;;;;14630:9;:15::i;:::-;14613:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;14606:61;;14533:142;:::o;12358:30::-;;;;:::o;10714:103::-;10769:4;10804:5;;;;;;;;;;;10793:16;;:7;:16;;;10786:23;;10714:103;;;:::o;14267:80::-;14319:5;11525:1;14328:16;;14267:80;:::o;16963:276::-;10272:24;10285:10;10272:12;:24::i;:::-;10264:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17120:14:::1;17095:21;;:39;;;;;;;;;;;;;;;;;;17161:16;17145:13;:32;;;;17216:15;17188:25;;:43;;;;;;;;;;;;;;;;;;16963:276:::0;;;:::o;12156:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;12262:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;11999:33::-;;;;;;;;;;;;;:::o;17455:139::-;10272:24;10285:10;10272:12;:24::i;:::-;10264:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17548:6:::1;17542:3;:12;17534:21;;;::::0;::::1;;17583:3;17566:14;:20;;;;17455:139:::0;:::o;12813:40::-;;;;;;;;;;;;;:::o;15159:116::-;15214:4;15238:29;15246:7;15263:2;15238:7;:29::i;:::-;15231:36;;15159:116;;;:::o;12395:33::-;;;;:::o;14683:105::-;14749:7;14767:9;:18;14777:7;14767:18;;;;;;;;;;;;;;;;14760:25;;14683:105;;;:::o;16075:376::-;10272:24;10285:10;10272:12;:24::i;:::-;10264:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16193:4:::1;16175:23;;:6;:23;;;;:41;;;;;16212:4;;;;;;;;;;;16202:14;;:6;:14;;;;16175:41;16167:50;;;::::0;::::1;;16255:6;16228:16;:24;16245:6;16228:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16285:6;16282:162;;;16307:19;;;;;;;;;;;:28;;;16336:6;16344:1;16307:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16282:162;;;16377:19;;;;;;;;;;;:28;;;16406:6;16414:9;:17;16424:6;16414:17;;;;;;;;;;;;;;;;16377:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16282:162;16075:376:::0;;:::o;16459:347::-;10272:24;10285:10;10272:12;:24::i;:::-;10264:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16591:9:::1;16576:12;:24;;;;16624:12;16611:10;:25;;;;16664:15;16647:14;:32;;;;16711:28;16728:10;;16711:12;;:16;;:28;;;;:::i;:::-;16700:8;:39;;;;16770:28;16783:14;;16770:8;;:12;;:28;;;;:::i;:::-;16750:17;:48;;;;16459:347:::0;;;:::o;11877:52::-;;;;:::o;15571:106::-;10272:24;10285:10;10272:12;:24::i;:::-;10264:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15661:8:::1;15647:10;:22;;;;15571:106:::0;:::o;11936:50::-;;;;:::o;14447:78::-;14499:7;14517:5;;;;;;;;;;;14510:12;;14447:78;:::o;12207:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;14177:84::-;14227:13;14251:7;;;;;;;;;;;;;;;;;14244:14;;14177:84;:::o;12320:31::-;;;;:::o;15805:123::-;10272:24;10285:10;10272:12;:24::i;:::-;10264:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15914:6:::1;15892:11;:19;15904:6;15892:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15805:123:::0;;:::o;12592:19::-;;;;;;;;;;;;;:::o;17606:156::-;17686:4;17710:44;17724:10;17736:9;17747:6;17710:13;:44::i;:::-;17703:51;;17606:156;;;;:::o;17247:200::-;10272:24;10285:10;10272:12;:24::i;:::-;10264:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17363:19:::1;;;;;;;;;;;:43;;;17407:11;17420:18;17363:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17247:200:::0;;:::o;10387:94::-;10103:19;10111:10;10103:7;:19::i;:::-;10095:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10469:4:::1;10447:14:::0;:19:::1;10462:3;10447:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;10387:94:::0;:::o;12692:46::-;;;;;;;;;;;;;:::o;12620:25::-;;;;:::o;12516:36::-;;;;;;;;;;;;;:::o;12471:::-;;;;:::o;15460:103::-;10272:24;10285:10;10272:12;:24::i;:::-;10264:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15547:8:::1;15532:12;:23;;;;15460:103:::0;:::o;12860:45::-;;;;;;;;;;;;;:::o;14794:133::-;14878:7;14896:11;:19;14908:6;14896:19;;;;;;;;;;;;;;;:28;14916:7;14896:28;;;;;;;;;;;;;;;;14889:35;;14794:133;;;;:::o;15685:108::-;10272:24;10285:10;10272:12;:24::i;:::-;10264:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15777:8:::1;15760:14;;:25;;;;;;;;;;;;;;;;;;15685:108:::0;:::o;10557:97::-;10103:19;10111:10;10103:7;:19::i;:::-;10095:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10641:5:::1;10619:14;:19;10634:3;10619:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;10557:97:::0;:::o;11114:173::-;10103:19;10111:10;10103:7;:19::i;:::-;10095:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11198:3:::1;11190:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;11234:4;11212:14:::0;:19:::1;11227:3;11212:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11254:25;11275:3;11254:25;;;;;;;;;;;;;;;;;;;;11114:173:::0;:::o;16814:141::-;10272:24;10285:10;10272:12;:24::i;:::-;10264:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16927:20:::1;16903:21;;:44;;;;;;;;;;;;;;;;;;16814:141:::0;:::o;12561:24::-;;;;;;;;;;;;;:::o;15936:131::-;10272:24;10285:10;10272:12;:24::i;:::-;10264:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16053:6:::1;16027:15;:23;16043:6;16027:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;15936:131:::0;;:::o;10888:107::-;10944:4;10968:14;:19;10983:3;10968:19;;;;;;;;;;;;;;;;;;;;;;;;;10961:26;;10888:107;;;:::o;12652:31::-;;;;;;;;;;;;;:::o;181:179::-;239:7;259:9;275:1;271;:5;259:17;;300:1;295;:6;;287:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;351:1;344:8;;;181:179;;;;:::o;512:190::-;598:7;631:1;626;:6;;634:12;618:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;658:9;674:1;670;:5;658:17;;693:1;686:8;;;512:190;;;;;:::o;18150:1641::-;18242:4;18272:16;;;;;;;;;;;18269:73;;;18298:41;18313:6;18321:9;18332:6;18298:14;:41::i;:::-;18291:48;;;;18269:73;18358:14;:22;18373:6;18358:22;;;;;;;;;;;;;;;;;;;;;;;;;18357:23;:53;;;;;18385:14;:25;18400:9;18385:25;;;;;;;;;;;;;;;;;;;;;;;;;18384:26;18357:53;18354:128;;;18434:11;;;;;;;;;;;18426:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18354:128;18512:12;;18502:6;:22;;:49;;;;18528:15;:23;18544:6;18528:23;;;;;;;;;;;;;;;;;;;;;;;;;18502:49;18494:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18603:4;;;;;;;;;;;18589:18;;:10;:18;;;;:39;;;;;18612:16;;;;;;;;;;;18611:17;18589:39;:64;;;;;18632:21;;;;;;;;;;;18589:64;:109;;;;;18685:13;;18657:9;:24;18675:4;18657:24;;;;;;;;;;;;;;;;:41;;18589:109;18586:128;;;18701:10;:8;:10::i;:::-;18586:128;18730:10;:8;:10::i;:::-;18729:11;:32;;;;;18757:4;;;;;;;;;;;18744:17;;:9;:17;;;18729:32;18726:117;;;18806:1;18786:9;:17;18796:6;18786:17;;;;;;;;;;;;;;;;:21;18778:30;;;;;;18823:8;:6;:8::i;:::-;18726:117;18902:53;18924:6;18902:53;;;;;;;;;;;;;;;;;:9;:17;18912:6;18902:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;18882:9;:17;18892:6;18882:17;;;;;;;;;;;;;;;:73;;;;18980:15;:26;18996:9;18980:26;;;;;;;;;;;;;;;;;;;;;;;;;18979:27;:45;;;;;19010:14;;;;;;;;;;;18979:45;18976:141;;;19094:10;;19058:32;19083:6;19058:9;:20;19068:9;19058:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:46;;19050:55;;;;;;18976:141;19129:19;19152:11;:19;19164:6;19152:19;;;;;;;;;;;;;;;;;;;;;;;;;19151:20;:47;;;;;19176:11;:22;19188:9;19176:22;;;;;;;;;;;;;;;;;;;;;;;;;19175:23;19151:47;:93;;19238:6;19151:93;;;19201:34;19209:6;19217:9;19228:6;19201:7;:34::i;:::-;19151:93;19129:115;;19278:37;19303:11;19278:9;:20;19288:9;19278:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;19255:9;:20;19265:9;19255:20;;;;;;;;;;;;;;;:60;;;;19361:16;:24;19378:6;19361:24;;;;;;;;;;;;;;;;;;;;;;;;;19357:127;;19406:19;;;;;;;;;;;:28;;;19435:6;19443:9;:17;19453:6;19443:17;;;;;;;;;;;;;;;;19406:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19402:71;;;;;;19357:127;19500:16;:27;19517:9;19500:27;;;;;;;;;;;;;;;;;;;;;;;;;19496:137;;19548:19;;;;;;;;;;;:28;;;19577:9;19588;:20;19598:9;19588:20;;;;;;;;;;;;;;;;19548:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19544:77;;;;;;19496:137;19649:19;;;;;;;;;;;:27;;;19677:14;;19649:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19645:59;;;;;;19738:9;19721:40;;19730:6;19721:40;;;19749:11;19721:40;;;;;;;;;;;;;;;;;;19779:4;19772:11;;;18150:1641;;;;;;:::o;368:136::-;426:7;453:43;457:1;460;453:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;446:50;;368:136;;;;:::o;19803:330::-;19896:4;19933:53;19955:6;19933:53;;;;;;;;;;;;;;;;;:9;:17;19943:6;19933:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19913:9;:17;19923:6;19913:17;;;;;;;;;;;;;;;:73;;;;20020:32;20045:6;20020:9;:20;20030:9;20020:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;19997:9;:20;20007:9;19997:20;;;;;;;;;;;;;;;:55;;;;20085:9;20068:35;;20077:6;20068:35;;;20096:6;20068:35;;;;;;;;;;;;;;;;;;20121:4;20114:11;;19803:330;;;;;:::o;20694:1378::-;13032:4;13013:16;;:23;;;;;;;;;;;;;;;;;;20756::::1;20782:9;:24;20800:4;20782:24;;;;;;;;;;;;;;;;20756:50;;20817:23;20843:54;20895:1;20843:47;20881:8;;20843:33;20863:12;;20843:15;:19;;:33;;;;:::i;:::-;:37;;:47;;;;:::i;:::-;:51;;:54;;;;:::i;:::-;20817:80;;20908:20;20931:36;20951:15;20931;:19;;:36;;;;:::i;:::-;20908:59;;20980:21;21018:1;21004:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20980:40;;21049:4;21031;21036:1;21031:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;21075:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;21065:4;21070:1;21065:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;21101:6;;;;;;;;;;;:57;;;21173:12;21200:1;21216:4;21243;21263:15;21101:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21302:17;21322:21;21302:41;;21356:19;21378:33;21391:19;21408:1;21391:12;;:16;;:19;;;;:::i;:::-;21378:8;;:12;;:33;;;;:::i;:::-;21356:55;;21432:26;21461:51;21510:1;21461:44;21493:11;21461:27;21475:12;;21461:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;21432:80;;21523:27;21553:42;21583:11;21553:25;21567:10;;21553:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;21523:72;;21612:19;;;;;;;;;;;:27;;;21647:19;21612:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;21608:73;;;;;;21724:1;21706:15;:19;21703:362;;;21741:6;;;;;;;;;;;:22;;;21771:18;21817:4;21841:15;21875:1;21895::::0;21915:21:::1;;;;;;;;;;;21955:15;21741:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22005:48;22017:18;22037:15;22005:48;;;;;;;;;;;;;;;;;;;;;;;;21703:362;13047:1;;;;;;;;13078:5:::0;13059:16;;:24;;;;;;;;;;;;;;;;;;20694:1378::o;15283:90::-;15326:4;15364:1;15350:10;;:15;;15343:22;;15283:90;:::o;15381:71::-;15432:12;15419:10;:25;;;;15381:71::o;20141:439::-;20227:7;20257:21;20289:9;20281:17;;:4;;;;;;;;;;;:17;;;:48;;20321:8;;20281:48;;;20301:17;;20281:48;20257:72;;20340:17;20360:34;20390:3;20360:25;20371:13;20360:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;20340:54;;20434:39;20463:9;20434;:24;20452:4;20434:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;20407:9;:24;20425:4;20407:24;;;;;;;;;;;;;;;:66;;;;20514:4;20489:42;;20498:6;20489:42;;;20521:9;20489:42;;;;;;;;;;;;;;;;;;20551:21;20562:9;20551:6;:10;;:21;;;;:::i;:::-;20544:28;;;;20141:439;;;;;:::o;710:224::-;768:7;797:1;792;:6;788:25;;;809:1;802:8;;;;788:25;823:9;839:1;835;:5;823:17;;868:1;863;859;:5;;;;;;:10;851:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;925:1;918:8;;;710:224;;;;;:::o;942:132::-;1000:7;1027:39;1031:1;1034;1027:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1020:46;;942:132;;;;:::o;1082:189::-;1168:7;1200:1;1196;:5;1203:12;1188:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1227:9;1243:1;1239;:5;;;;;;1227:17;;1262:1;1255:8;;;1082:189;;;;;:::o

Swarm Source

ipfs://17333d8e1f7039a9c2251177d5248a82ff99bfab9a9ea346544a5ba0015414e2
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.