Contract 0xab15b23618076854b305736eb1e764c513cec54f 2

 

Contract Overview

Balance:
0.000393020099955797 BNB

BNB Value:
$0.15 (@ $382.78/BNB)

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x301618ab4f565d5ae0d5ad8e6af9286e95a75e016ae340ea5e145dd617698d35Withdraw144041702022-01-16 2:50:4910 days 2 hrs ago0x1ee45cbe9fbc58495522fdae48fdd74ac51f5a57 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.000990295
0x2356443ff7de07736faf64d93caece4d8bd3c85fa3055c0431c9318ed193f4c6Withdraw143890712022-01-15 14:11:5310 days 14 hrs ago0xd888c06e416f104cc2cf8415f1e8bc1dc0aa61b0 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.00056791
0xfc29366579e382efed60deae3498e0fc535cec3600e434662f0c259be4697e4eWithdraw143886372022-01-15 13:49:5210 days 15 hrs ago0x61b6299b25f6fe88ab79b0a1c7babaa452357fed IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.00054873
0x97a9a8ca01a19c33a967565fb8461c337915f1ed76067580bb0ce8b52e99e1adInvest143886322022-01-15 13:49:3710 days 15 hrs ago0x61b6299b25f6fe88ab79b0a1c7babaa452357fed IN  0xab15b23618076854b305736eb1e764c513cec54f0.01 BNB0.000641735
0xe52a48c3a2b8adfac244d8d203fe9b2d922656394ca404c9af85dce26691a77bWithdraw143883072022-01-15 13:33:2010 days 15 hrs ago0xb4f95aff3e3d7efa09a5b3188eb043ab1e6c0fa3 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.00053524
0x0441b10777a172f77289b3bdc5a7b70f10026377c80bc44c05c8bebd234dc608Invest143883052022-01-15 13:33:1410 days 15 hrs ago0xd888c06e416f104cc2cf8415f1e8bc1dc0aa61b0 IN  0xab15b23618076854b305736eb1e764c513cec54f0.5 BNB0.000737795
0x1a029be48b5602f8a66517df11f66b05077b87a5e3f0970850512023dccb465bWithdraw143875522022-01-15 12:55:2910 days 16 hrs ago0xd888c06e416f104cc2cf8415f1e8bc1dc0aa61b0 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.000455265
0xd96c1137be59d2f3c92140b6cbc046ffa89537c8730b3e62803118d5b9650de9Invest143841992022-01-15 10:07:1410 days 18 hrs ago0xd888c06e416f104cc2cf8415f1e8bc1dc0aa61b0 IN  0xab15b23618076854b305736eb1e764c513cec54f0.01 BNB0.000737795
0xa4bcb0137c8b2434fe71a6071904dc007ac6167933c021163be9a48e60181363Withdraw143701402022-01-14 22:24:0011 days 6 hrs ago0xd888c06e416f104cc2cf8415f1e8bc1dc0aa61b0 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.00034262
0x5afea477541f7e6ad1bcf28a7519e44fc3e4762b8e9c1ddce172d908697467f7Withdraw143695922022-01-14 21:56:3611 days 7 hrs ago0x340c0e84fe9347db971f5a8a1db91d151b4a1907 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.00053524
0x6e6328b398628dfde66377772fd68ebb6062c49aa36dcbfd234a1335fe9ac8a1Invest143695892022-01-14 21:56:2711 days 7 hrs ago0xd888c06e416f104cc2cf8415f1e8bc1dc0aa61b0 IN  0xab15b23618076854b305736eb1e764c513cec54f0.1 BNB0.00098127
0xcec50b7b9f6c38c0a0665cba163513553ca3ba57e115d9fdf703fa0a2258988bWithdraw143079602022-01-12 18:29:3813 days 10 hrs ago0x649cc18f46804c380079ec24c0bcd3a7137aacf0 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.000370675
0xf46e5002c780046c25aceda6add71b0a717e8e47518230e8c08c8031b0fe57cbWithdraw141979282022-01-08 22:37:0117 days 6 hrs ago0x1ee45cbe9fbc58495522fdae48fdd74ac51f5a57 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.000990295
0x99f1d261234a6c46e4cb51f2d59cb10af5a4a441116d2bb2c925f806de26472fWithdraw141837352022-01-08 10:46:1117 days 18 hrs ago0x1ee45cbe9fbc58495522fdae48fdd74ac51f5a57 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.000894215
0x4f645cac7dd7c3284ed96271bf05a57030e528cbc0687d01659d7b3dd085d9daWithdraw141803262022-01-08 7:55:2217 days 21 hrs ago0x1ee45cbe9fbc58495522fdae48fdd74ac51f5a57 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.000894215
0x697bd500d59b35a9cbb1e5edf4ab5bd9b6060d400f48e274c4c2814fc72f0826Withdraw141803202022-01-08 7:55:0417 days 21 hrs ago0x1ee45cbe9fbc58495522fdae48fdd74ac51f5a57 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.000894215
0x51ce5dda149829f1c0430c7aba53ccad7f870bfee1fbbb07c0f64e5741c1334dWithdraw141031452022-01-05 15:27:5120 days 13 hrs ago0x1ee45cbe9fbc58495522fdae48fdd74ac51f5a57 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.000894215
0x034ab1a86f15191d12991e56fca91579c0742a923f866cae699eb7478fac0635Withdraw140514382022-01-03 20:16:2722 days 8 hrs ago0x649cc18f46804c380079ec24c0bcd3a7137aacf0 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.000370675
0xd958f4a99600fcca00583f72a7e6048a168667139f8a55c0abbd381585850262Withdraw139805332022-01-01 9:03:5824 days 19 hrs ago0xdd5c700ce34b1c3f58bacf757a5fe35b486d04c6 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.000266155
0xcb8aaed0e21217a93b6709c4918eec60c9e27aea79770d1001d4d7906fe03a6bWithdraw139712692022-01-01 1:20:4625 days 3 hrs ago0xdd5c700ce34b1c3f58bacf757a5fe35b486d04c6 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.000266155
0x5223ce156b420ad7cd823516a1bdc1f0b13bea5966046c21e24e140884492d83Withdraw139708512022-01-01 0:59:5225 days 4 hrs ago0xdd5c700ce34b1c3f58bacf757a5fe35b486d04c6 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.000266155
0xa53ccc37a691a34be90b121cb33a753102af4f1634fbb0aa72968ee10b6a5d00Invest139557302021-12-31 12:22:1225 days 16 hrs ago0x1ee45cbe9fbc58495522fdae48fdd74ac51f5a57 IN  0xab15b23618076854b305736eb1e764c513cec54f0.01 BNB0.000641735
0xa41c6e53c8c597e41c59043854ec09dc3642ad909ce82f14f5bb3a29052e9fe7Withdraw139556392021-12-31 12:17:3925 days 16 hrs ago0x1ee45cbe9fbc58495522fdae48fdd74ac51f5a57 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.00071616
0x0d3006e10bd360988d83ec3968a97568b52fb0c88bed07c8598c91c711cf1bdfWithdraw138557602021-12-28 0:58:4329 days 4 hrs ago0x1ee45cbe9fbc58495522fdae48fdd74ac51f5a57 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.00071616
0x4c13f0bf9f9cdf7230fab03f42c1ce5a4b827a88663733f24d8d2a2772c25640Withdraw138556842021-12-28 0:54:5529 days 4 hrs ago0x1ee45cbe9fbc58495522fdae48fdd74ac51f5a57 IN  0xab15b23618076854b305736eb1e764c513cec54f0 BNB0.00071616
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x301618ab4f565d5ae0d5ad8e6af9286e95a75e016ae340ea5e145dd617698d35144041702022-01-16 2:50:4910 days 2 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0x1ee45cbe9fbc58495522fdae48fdd74ac51f5a570.099550925069444442 BNB
0x2356443ff7de07736faf64d93caece4d8bd3c85fa3055c0431c9318ed193f4c6143890712022-01-15 14:11:5310 days 14 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0xd888c06e416f104cc2cf8415f1e8bc1dc0aa61b00.001131002083333332 BNB
0xfc29366579e382efed60deae3498e0fc535cec3600e434662f0c259be4697e4e143886372022-01-15 13:49:5210 days 15 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0x61b6299b25f6fe88ab79b0a1c7babaa452357fed0.124292382754629629 BNB
0x97a9a8ca01a19c33a967565fb8461c337915f1ed76067580bb0ce8b52e99e1ad143886322022-01-15 13:49:3710 days 15 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0xeb62a517686c5f7c34f5683d3864ab925ff08cb80.0004 BNB
0x97a9a8ca01a19c33a967565fb8461c337915f1ed76067580bb0ce8b52e99e1ad143886322022-01-15 13:49:3710 days 15 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0xeb62a517686c5f7c34f5683d3864ab925ff08cb80.0004 BNB
0x97a9a8ca01a19c33a967565fb8461c337915f1ed76067580bb0ce8b52e99e1ad143886322022-01-15 13:49:3710 days 15 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0xeb62a517686c5f7c34f5683d3864ab925ff08cb80.0008 BNB
0xe52a48c3a2b8adfac244d8d203fe9b2d922656394ca404c9af85dce26691a77b143883072022-01-15 13:33:2010 days 15 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0xb4f95aff3e3d7efa09a5b3188eb043ab1e6c0fa30.387184958333333333 BNB
0x0441b10777a172f77289b3bdc5a7b70f10026377c80bc44c05c8bebd234dc608143883052022-01-15 13:33:1410 days 15 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0xeb62a517686c5f7c34f5683d3864ab925ff08cb80.02 BNB
0x0441b10777a172f77289b3bdc5a7b70f10026377c80bc44c05c8bebd234dc608143883052022-01-15 13:33:1410 days 15 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0xeb62a517686c5f7c34f5683d3864ab925ff08cb80.02 BNB
0x0441b10777a172f77289b3bdc5a7b70f10026377c80bc44c05c8bebd234dc608143883052022-01-15 13:33:1410 days 15 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0xeb62a517686c5f7c34f5683d3864ab925ff08cb80.04 BNB
0x1a029be48b5602f8a66517df11f66b05077b87a5e3f0970850512023dccb465b143875522022-01-15 12:55:2910 days 16 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0xd888c06e416f104cc2cf8415f1e8bc1dc0aa61b00.00231751099537037 BNB
0xd96c1137be59d2f3c92140b6cbc046ffa89537c8730b3e62803118d5b9650de9143841992022-01-15 10:07:1410 days 18 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0xeb62a517686c5f7c34f5683d3864ab925ff08cb80.0004 BNB
0xd96c1137be59d2f3c92140b6cbc046ffa89537c8730b3e62803118d5b9650de9143841992022-01-15 10:07:1410 days 18 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0xeb62a517686c5f7c34f5683d3864ab925ff08cb80.0004 BNB
0xd96c1137be59d2f3c92140b6cbc046ffa89537c8730b3e62803118d5b9650de9143841992022-01-15 10:07:1410 days 18 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0xeb62a517686c5f7c34f5683d3864ab925ff08cb80.0008 BNB
0xa4bcb0137c8b2434fe71a6071904dc007ac6167933c021163be9a48e60181363143701402022-01-14 22:24:0011 days 6 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0xd888c06e416f104cc2cf8415f1e8bc1dc0aa61b00.000070788194444444 BNB
0x5afea477541f7e6ad1bcf28a7519e44fc3e4762b8e9c1ddce172d908697467f7143695922022-01-14 21:56:3611 days 7 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0x340c0e84fe9347db971f5a8a1db91d151b4a19070.012492189236111111 BNB
0x6e6328b398628dfde66377772fd68ebb6062c49aa36dcbfd234a1335fe9ac8a1143695892022-01-14 21:56:2711 days 7 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0xeb62a517686c5f7c34f5683d3864ab925ff08cb80.004 BNB
0x6e6328b398628dfde66377772fd68ebb6062c49aa36dcbfd234a1335fe9ac8a1143695892022-01-14 21:56:2711 days 7 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0xeb62a517686c5f7c34f5683d3864ab925ff08cb80.004 BNB
0x6e6328b398628dfde66377772fd68ebb6062c49aa36dcbfd234a1335fe9ac8a1143695892022-01-14 21:56:2711 days 7 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0xeb62a517686c5f7c34f5683d3864ab925ff08cb80.008 BNB
0xcec50b7b9f6c38c0a0665cba163513553ca3ba57e115d9fdf703fa0a2258988b143079602022-01-12 18:29:3813 days 10 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0x649cc18f46804c380079ec24c0bcd3a7137aacf00.006935363506944443 BNB
0xf46e5002c780046c25aceda6add71b0a717e8e47518230e8c08c8031b0fe57cb141979282022-01-08 22:37:0117 days 6 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0x1ee45cbe9fbc58495522fdae48fdd74ac51f5a570.089138186319444442 BNB
0x99f1d261234a6c46e4cb51f2d59cb10af5a4a441116d2bb2c925f806de26472f141837352022-01-08 10:46:1117 days 18 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0x1ee45cbe9fbc58495522fdae48fdd74ac51f5a570.088417892540509258 BNB
0x4f645cac7dd7c3284ed96271bf05a57030e528cbc0687d01659d7b3dd085d9da141803262022-01-08 7:55:2217 days 21 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0x1ee45cbe9fbc58495522fdae48fdd74ac51f5a570.087828515729166666 BNB
0x697bd500d59b35a9cbb1e5edf4ab5bd9b6060d400f48e274c4c2814fc72f0826141803202022-01-08 7:55:0417 days 21 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0x1ee45cbe9fbc58495522fdae48fdd74ac51f5a570.087827480624999999 BNB
0x51ce5dda149829f1c0430c7aba53ccad7f870bfee1fbbb07c0f64e5741c1334d141031452022-01-05 15:27:5120 days 13 hrs ago 0xab15b23618076854b305736eb1e764c513cec54f0x1ee45cbe9fbc58495522fdae48fdd74ac51f5a570.074484240341435183 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BankOfBNB

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at BscScan.com on 2021-03-04
*/

pragma solidity ^0.5.17;

library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

library Objects {
    struct Investment {
        uint256 planId;
        uint256 investmentDate;
        uint256 investment;
        uint256 lastWithdrawalDate;
        uint256 currentDividends;
        bool isExpired;
    }

    struct Plan {
        uint256 dailyInterest;
        uint256 term; //0 means unlimited
    }

    struct Investor {
        address addr;
        uint256 referrerEarnings;
        uint256 availableReferrerEarnings;
        uint256 referrer;
        uint256 planCount;
        mapping(uint256 => Investment) plans;
        uint256 level1RefCount;
        uint256 level2RefCount;
        uint256 level3RefCount;
    }
}

contract Ownable {
    address public owner;

    event onOwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor() public {
        owner = msg.sender;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param _newOwner The address to transfer ownership to.
     */
    function transferOwnership(address _newOwner) public onlyOwner {
        require(_newOwner != address(0));
        emit onOwnershipTransferred(owner, _newOwner);
        owner = _newOwner;
    }
}

contract BankOfBNB is Ownable {
    using SafeMath for uint256;
    uint256 public constant DEVELOPER_RATE = 40; //per thousand
    uint256 public constant MARKETING_RATE = 40; //per thousand	
    uint256 public constant REFERENCE_RATE = 80;
    uint256 public constant REFERENCE_LEVEL1_RATE = 50;
    uint256 public constant REFERENCE_LEVEL2_RATE = 20;
    uint256 public constant REFERENCE_LEVEL3_RATE = 5;
    uint256 public constant REFERENCE_SELF_RATE = 5;
    uint256 public constant MINIMUM = 1e16; //0.01 BNB minimum investment needed
    uint256 public constant REFERRER_CODE = 6666; //default

    uint256 public latestReferrerCode;
    uint256 private totalInvestments_;

    address payable private developerAccount_;
    address payable private marketingAccount_;
    address payable private referenceAccount_;

    mapping(address => uint256) public address2UID;
    mapping(uint256 => Objects.Investor) public uid2Investor;
    Objects.Plan[] private investmentPlans_;

    event onInvest(address investor, uint256 amount);
    event onGrant(address grantor, address beneficiary, uint256 amount);
    event onWithdraw(address investor, uint256 amount);

    /**
     * @dev Constructor Sets the original roles of the contract
     */

    constructor() public {
        developerAccount_ = msg.sender;
        marketingAccount_ = msg.sender;
        referenceAccount_ = msg.sender;
        _init();
    }

    function() external payable {
        if (msg.value == 0) {
            withdraw();
        } else {
			invest(0, 0); //default to buy plan 0, no referrer
        }
    }

    function checkIn() public {
    }

    function setMarketingAccount(address payable _newMarketingAccount) public onlyOwner {
        require(_newMarketingAccount != address(0));
        marketingAccount_ = _newMarketingAccount;
    }

    function getMarketingAccount() public view onlyOwner returns (address) {
        return marketingAccount_;
    }

    function setDeveloperAccount(address payable _newDeveloperAccount) public onlyOwner {
        require(_newDeveloperAccount != address(0));
        developerAccount_ = _newDeveloperAccount;
    }

    function getDeveloperAccount() public view onlyOwner returns (address) {
        return developerAccount_;
    }

    function setReferenceAccount(address payable _newReferenceAccount) public onlyOwner {
        require(_newReferenceAccount != address(0));
        referenceAccount_ = _newReferenceAccount;
    }

    function getReferenceAccount() public view onlyOwner returns (address) {
        return referenceAccount_;
    }

    function _init() private {
        latestReferrerCode = REFERRER_CODE;
        address2UID[msg.sender] = latestReferrerCode;
        uid2Investor[latestReferrerCode].addr = msg.sender;
        uid2Investor[latestReferrerCode].referrer = 0;
        uid2Investor[latestReferrerCode].planCount = 0;
        investmentPlans_.push(Objects.Plan(37, 0)); //unlimited
        investmentPlans_.push(Objects.Plan(47, 45*60*60*24)); //45 days
        investmentPlans_.push(Objects.Plan(57, 25*60*60*24)); //25 days
        investmentPlans_.push(Objects.Plan(67, 18*60*60*24)); //18 days
    }

    function getCurrentPlans() public view returns (uint256[] memory, uint256[] memory, uint256[] memory) {
        uint256[] memory ids = new uint256[](investmentPlans_.length);
        uint256[] memory interests = new uint256[](investmentPlans_.length);
        uint256[] memory terms = new uint256[](investmentPlans_.length);
        for (uint256 i = 0; i < investmentPlans_.length; i++) {
            Objects.Plan storage plan = investmentPlans_[i];
            ids[i] = i;
            interests[i] = plan.dailyInterest;
            terms[i] = plan.term;
        }
        return
        (
        ids,
        interests,
        terms
        );
    }

    function getTotalInvestments() public onlyOwner view returns (uint256){
        return totalInvestments_;
    }

    function getBalance() public view returns (uint256) {
        return address(this).balance;
    }

    function getUIDByAddress(address _addr) public view returns (uint256) {
        return address2UID[_addr];
    }

    function getInvestorInfoByUID(uint256 _uid) public view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256[] memory, uint256[] memory) {
        if (msg.sender != owner) {
            require(address2UID[msg.sender] == _uid, "only owner or self can check the investor info.");
        }
        Objects.Investor storage investor = uid2Investor[_uid];
        uint256[] memory newDividends = new uint256[](investor.planCount);
        uint256[] memory currentDividends = new  uint256[](investor.planCount);
        for (uint256 i = 0; i < investor.planCount; i++) {
            require(investor.plans[i].investmentDate != 0, "wrong investment date");
            currentDividends[i] = investor.plans[i].currentDividends;
            if (investor.plans[i].isExpired) {
                newDividends[i] = 0;
            } else {
                if (investmentPlans_[investor.plans[i].planId].term > 0) {
                    if (block.timestamp >= investor.plans[i].investmentDate.add(investmentPlans_[investor.plans[i].planId].term)) {
                        newDividends[i] = _calculateDividends(investor.plans[i].investment, investmentPlans_[investor.plans[i].planId].dailyInterest, investor.plans[i].investmentDate.add(investmentPlans_[investor.plans[i].planId].term), investor.plans[i].lastWithdrawalDate);
                    } else {
                        newDividends[i] = _calculateDividends(investor.plans[i].investment, investmentPlans_[investor.plans[i].planId].dailyInterest, block.timestamp, investor.plans[i].lastWithdrawalDate);
                    }
                } else {
                    newDividends[i] = _calculateDividends(investor.plans[i].investment, investmentPlans_[investor.plans[i].planId].dailyInterest, block.timestamp, investor.plans[i].lastWithdrawalDate);
                }
            }
        }
        return
        (
        investor.referrerEarnings,
        investor.availableReferrerEarnings,
        investor.referrer,
        investor.level1RefCount,
        investor.level2RefCount,
        investor.level3RefCount,
        investor.planCount,
        currentDividends,
        newDividends
        );
    }

    function getInvestmentPlanByUID(uint256 _uid) public view returns (uint256[] memory, uint256[] memory, uint256[] memory, uint256[] memory, bool[] memory) {
        if (msg.sender != owner) {
            require(address2UID[msg.sender] == _uid, "only owner or self can check the investment plan info.");
        }
        Objects.Investor storage investor = uid2Investor[_uid];
        uint256[] memory planIds = new  uint256[](investor.planCount);
        uint256[] memory investmentDates = new  uint256[](investor.planCount);
        uint256[] memory investments = new  uint256[](investor.planCount);
        uint256[] memory currentDividends = new  uint256[](investor.planCount);
        bool[] memory isExpireds = new  bool[](investor.planCount);

        for (uint256 i = 0; i < investor.planCount; i++) {
            require(investor.plans[i].investmentDate!=0,"wrong investment date");
            planIds[i] = investor.plans[i].planId;
            currentDividends[i] = investor.plans[i].currentDividends;
            investmentDates[i] = investor.plans[i].investmentDate;
            investments[i] = investor.plans[i].investment;
            if (investor.plans[i].isExpired) {
                isExpireds[i] = true;
            } else {
                isExpireds[i] = false;
                if (investmentPlans_[investor.plans[i].planId].term > 0) {
                    if (block.timestamp >= investor.plans[i].investmentDate.add(investmentPlans_[investor.plans[i].planId].term)) {
                        isExpireds[i] = true;
                    }
                }
            }
        }

        return
        (
        planIds,
        investmentDates,
        investments,
        currentDividends,
        isExpireds
        );
    }

    function _addInvestor(address _addr, uint256 _referrerCode) private returns (uint256) {
        if (_referrerCode >= REFERRER_CODE) {
            //require(uid2Investor[_referrerCode].addr != address(0), "Wrong referrer code");
            if (uid2Investor[_referrerCode].addr == address(0)) {
                _referrerCode = 0;
            }
        } else {
            _referrerCode = 0;
        }
        address addr = _addr;
        latestReferrerCode = latestReferrerCode.add(1);
        address2UID[addr] = latestReferrerCode;
        uid2Investor[latestReferrerCode].addr = addr;
        uid2Investor[latestReferrerCode].referrer = _referrerCode;
        uid2Investor[latestReferrerCode].planCount = 0;
        if (_referrerCode >= REFERRER_CODE) {
            uint256 _ref1 = _referrerCode;
            uint256 _ref2 = uid2Investor[_ref1].referrer;
            uint256 _ref3 = uid2Investor[_ref2].referrer;
            uid2Investor[_ref1].level1RefCount = uid2Investor[_ref1].level1RefCount.add(1);
            if (_ref2 >= REFERRER_CODE) {
                uid2Investor[_ref2].level2RefCount = uid2Investor[_ref2].level2RefCount.add(1);
            }
            if (_ref3 >= REFERRER_CODE) {
                uid2Investor[_ref3].level3RefCount = uid2Investor[_ref3].level3RefCount.add(1);
            }
        }
        return (latestReferrerCode);
    }

    function _invest(address _addr, uint256 _planId, uint256 _referrerCode, uint256 _amount) private returns (bool) {
        require(_planId >= 0 && _planId < investmentPlans_.length, "Wrong investment plan id");
        require(_amount >= MINIMUM, "Less than the minimum amount of deposit requirement");
        uint256 uid = address2UID[_addr];
        if (uid == 0) {
            uid = _addInvestor(_addr, _referrerCode);
            //new user
        } else {//old user
            //do nothing, referrer is permenant
        }
        uint256 planCount = uid2Investor[uid].planCount;
        Objects.Investor storage investor = uid2Investor[uid];
        investor.plans[planCount].planId = _planId;
        investor.plans[planCount].investmentDate = block.timestamp;
        investor.plans[planCount].lastWithdrawalDate = block.timestamp;
        investor.plans[planCount].investment = _amount;
        investor.plans[planCount].currentDividends = 0;
        investor.plans[planCount].isExpired = false;

        investor.planCount = investor.planCount.add(1);

        _calculateReferrerReward(uid, _amount, investor.referrer);

        totalInvestments_ = totalInvestments_.add(_amount);

        uint256 developerPercentage = (_amount.mul(DEVELOPER_RATE)).div(1000);
        developerAccount_.transfer(developerPercentage);
        uint256 marketingPercentage = (_amount.mul(MARKETING_RATE)).div(1000);
        marketingAccount_.transfer(marketingPercentage);
        return true;
    }

    function grant(address addr, uint256 _planId) public payable {
        uint256 grantorUid = address2UID[msg.sender];
        bool isAutoAddReferrer = true;
        uint256 referrerCode = 0;

        if (grantorUid != 0 && isAutoAddReferrer) {
            referrerCode = grantorUid;
        }

        if (_invest(addr,_planId,referrerCode,msg.value)) {
            emit onGrant(msg.sender, addr, msg.value);
        }
    }

    function invest(uint256 _referrerCode, uint256 _planId) public payable {
        if (_invest(msg.sender, _planId, _referrerCode, msg.value)) {
            emit onInvest(msg.sender, msg.value);
        }
    }

    function withdraw() public payable {
        require(msg.value == 0, "withdrawal doesn't allow to transfer hr simultaneously");
        uint256 uid = address2UID[msg.sender];
        require(uid != 0, "Can not withdraw because no any investments");
        uint256 withdrawalAmount = 0;
        for (uint256 i = 0; i < uid2Investor[uid].planCount; i++) {
            if (uid2Investor[uid].plans[i].isExpired) {
                continue;
            }

            Objects.Plan storage plan = investmentPlans_[uid2Investor[uid].plans[i].planId];

            bool isExpired = false;
            uint256 withdrawalDate = block.timestamp;
            if (plan.term > 0) {
                uint256 endTime = uid2Investor[uid].plans[i].investmentDate.add(plan.term);
                if (withdrawalDate >= endTime) {
                    withdrawalDate = endTime;
                    isExpired = true;
                }
            }

            uint256 amount = _calculateDividends(uid2Investor[uid].plans[i].investment , plan.dailyInterest , withdrawalDate , uid2Investor[uid].plans[i].lastWithdrawalDate);

            withdrawalAmount += amount;

            uid2Investor[uid].plans[i].lastWithdrawalDate = withdrawalDate;
            uid2Investor[uid].plans[i].isExpired = isExpired;
            uid2Investor[uid].plans[i].currentDividends += amount;
        }
		
		if (withdrawalAmount>0) {
			msg.sender.transfer(withdrawalAmount);
		}
		

        if (uid2Investor[uid].availableReferrerEarnings>0) {
            msg.sender.transfer(uid2Investor[uid].availableReferrerEarnings);
            uid2Investor[uid].referrerEarnings = uid2Investor[uid].availableReferrerEarnings.add(uid2Investor[uid].referrerEarnings);
            uid2Investor[uid].availableReferrerEarnings = 0;
        }

        emit onWithdraw(msg.sender, withdrawalAmount);
    }

    function _calculateDividends(uint256 _amount, uint256 _dailyInterestRate, uint256 _now, uint256 _start) private pure returns (uint256) {
        return (_amount * _dailyInterestRate / 1000 * (_now - _start)) / (60*60*24);
    }

    function _calculateReferrerReward(uint256 _uid, uint256 _investment, uint256 _referrerCode) private {

        uint256 _allReferrerAmount = (_investment.mul(REFERENCE_RATE)).div(1000);
        if (_referrerCode != 0) {
            uint256 _ref1 = _referrerCode;
            uint256 _ref2 = uid2Investor[_ref1].referrer;
            uint256 _ref3 = uid2Investor[_ref2].referrer;
            uint256 _refAmount = 0;

            if (_ref1 != 0) {
                _refAmount = (_investment.mul(REFERENCE_LEVEL1_RATE)).div(1000);
                _allReferrerAmount = _allReferrerAmount.sub(_refAmount);
                uid2Investor[_ref1].availableReferrerEarnings = _refAmount.add(uid2Investor[_ref1].availableReferrerEarnings);
                _refAmount = (_investment.mul(REFERENCE_SELF_RATE)).div(1000);
                uid2Investor[_uid].availableReferrerEarnings =  _refAmount.add(uid2Investor[_uid].availableReferrerEarnings);
            }

            if (_ref2 != 0) {
                _refAmount = (_investment.mul(REFERENCE_LEVEL2_RATE)).div(1000);
                _allReferrerAmount = _allReferrerAmount.sub(_refAmount);
                uid2Investor[_ref2].availableReferrerEarnings = _refAmount.add(uid2Investor[_ref2].availableReferrerEarnings);
            }

            if (_ref3 != 0) {
                _refAmount = (_investment.mul(REFERENCE_LEVEL3_RATE)).div(1000);
                _allReferrerAmount = _allReferrerAmount.sub(_refAmount);
                uid2Investor[_ref3].availableReferrerEarnings = _refAmount.add(uid2Investor[_ref3].availableReferrerEarnings);
            }
        }

        if (_allReferrerAmount > 0) {
            referenceAccount_.transfer(_allReferrerAmount);
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"grantor","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"onGrant","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"investor","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"onInvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"onOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"investor","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"onWithdraw","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"DEVELOPER_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MARKETING_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"REFERENCE_LEVEL1_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"REFERENCE_LEVEL2_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"REFERENCE_LEVEL3_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"REFERENCE_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"REFERENCE_SELF_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"REFERRER_CODE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"address2UID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"checkIn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentPlans","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getDeveloperAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_uid","type":"uint256"}],"name":"getInvestmentPlanByUID","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bool[]","name":"","type":"bool[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_uid","type":"uint256"}],"name":"getInvestorInfoByUID","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMarketingAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReferenceAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTotalInvestments","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"getUIDByAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"_planId","type":"uint256"}],"name":"grant","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_referrerCode","type":"uint256"},{"internalType":"uint256","name":"_planId","type":"uint256"}],"name":"invest","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"latestReferrerCode","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"_newDeveloperAccount","type":"address"}],"name":"setDeveloperAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"_newMarketingAccount","type":"address"}],"name":"setMarketingAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"_newReferenceAccount","type":"address"}],"name":"setReferenceAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uid2Investor","outputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"referrerEarnings","type":"uint256"},{"internalType":"uint256","name":"availableReferrerEarnings","type":"uint256"},{"internalType":"uint256","name":"referrer","type":"uint256"},{"internalType":"uint256","name":"planCount","type":"uint256"},{"internalType":"uint256","name":"level1RefCount","type":"uint256"},{"internalType":"uint256","name":"level2RefCount","type":"uint256"},{"internalType":"uint256","name":"level3RefCount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":true,"stateMutability":"payable","type":"function"}]

608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061012261012760201b60201c565b61037d565b611a0a600181905550600154600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503360076000600154815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760006001548152602001908152602001600020600301819055506000600760006001548152602001908152602001600020600401819055506008604051806040016040528060258152602001600081525090806001815401808255809150509060018203906000526020600020906002020160009091929091909150600082015181600001556020820151816001015550505060086040518060400160405280602f8152602001623b538081525090806001815401808255809150509060018203906000526020600020906002020160009091929091909150600082015181600001556020820151816001015550505060086040518060400160405280603981526020016220f58081525090806001815401808255809150509060018203906000526020600020906002020160009091929091909150600082015181600001556020820151816001015550505060086040518060400160405280604381526020016217bb00815250908060018154018082558091505090600182039060005260206000209060020201600090919290919091506000820151816000015560208201518160010155505050565b61311e806200038d6000396000f3fe6080604052600436106101cd5760003560e01c806389b7e860116100f7578063b3b57c8711610095578063f2fde38b11610064578063f2fde38b14610b35578063f3e7569f14610b86578063f9a026aa14610bd7578063fe4d017f14610c02576101cd565b8063b3b57c87146108cd578063d6a63c9f146109d6578063d87aa64314610a01578063e87de76814610a39576101cd565b80639c484b5c116100d15780639c484b5c146107a0578063a50898cb146107cb578063ab92bff6146107f6578063b2a0df7d146108a2576101cd565b806389b7e860146106cd5780638ac1a1a4146106f85780638da5cb5b14610749576101cd565b80633ccfd60b1161016f5780636370920e1161013e5780636370920e146105a657806375c04d0b146105f45780637e3ee80d1461061f578063838fcc9014610676576101cd565b80633ccfd60b1461037057806347f06cf61461037a5780634b4138201461052a57806350b2a88114610555576101cd565b8063183ff085116101ab578063183ff085146102ac57806325ccbc43146102c357806328e7cef5146102ee5780633533460214610319576101cd565b806312065fe0146101f15780631463ae061461021c5780631616154814610281575b60003414156101e3576101de610c67565b6101ef565b6101ee60008061115a565b5b005b3480156101fd57600080fd5b506102066111db565b6040518082815260200191505060405180910390f35b34801561022857600080fd5b5061026b6004803603602081101561023f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111e3565b6040518082815260200191505060405180910390f35b34801561028d57600080fd5b506102966111fb565b6040518082815260200191505060405180910390f35b3480156102b857600080fd5b506102c1611200565b005b3480156102cf57600080fd5b506102d8611202565b6040518082815260200191505060405180910390f35b3480156102fa57600080fd5b50610303611208565b6040518082815260200191505060405180910390f35b34801561032557600080fd5b5061032e61120d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610378610c67565b005b34801561038657600080fd5b506103b36004803603602081101561039d57600080fd5b8101908080359060200190929190505050611290565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019060200280838360005b838110156104065780820151818401526020810190506103eb565b5050505090500186810385528a818151815260200191508051906020019060200280838360005b8381101561044857808201518184015260208101905061042d565b50505050905001868103845289818151815260200191508051906020019060200280838360005b8381101561048a57808201518184015260208101905061046f565b50505050905001868103835288818151815260200191508051906020019060200280838360005b838110156104cc5780820151818401526020810190506104b1565b50505050905001868103825287818151815260200191508051906020019060200280838360005b8381101561050e5780820151818401526020810190506104f3565b505050509050019a505050505050505050505060405180910390f35b34801561053657600080fd5b5061053f61177d565b6040518082815260200191505060405180910390f35b34801561056157600080fd5b506105a46004803603602081101561057857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611782565b005b6105f2600480360360408110156105bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611859565b005b34801561060057600080fd5b50610609611977565b6040518082815260200191505060405180910390f35b34801561062b57600080fd5b5061063461197d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561068257600080fd5b5061068b611a00565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106d957600080fd5b506106e2611a83565b6040518082815260200191505060405180910390f35b34801561070457600080fd5b506107476004803603602081101561071b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a88565b005b34801561075557600080fd5b5061075e611b5f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107ac57600080fd5b506107b5611b84565b6040518082815260200191505060405180910390f35b3480156107d757600080fd5b506107e0611b8f565b6040518082815260200191505060405180910390f35b34801561080257600080fd5b5061082f6004803603602081101561081957600080fd5b8101908080359060200190929190505050611b94565b604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019850505050505050505060405180910390f35b3480156108ae57600080fd5b506108b7611bfc565b6040518082815260200191505060405180910390f35b3480156108d957600080fd5b50610906600480360360208110156108f057600080fd5b8101908080359060200190929190505050611c01565b604051808a81526020018981526020018881526020018781526020018681526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561097757808201518184015260208101905061095c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156109b957808201518184015260208101905061099e565b505050509050019b50505050505050505050505060405180910390f35b3480156109e257600080fd5b506109eb6121a4565b6040518082815260200191505060405180910390f35b610a3760048036036040811015610a1757600080fd5b81019080803590602001909291908035906020019092919050505061115a565b005b348015610a4557600080fd5b50610a4e6121a9565b60405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610a99578082015181840152602081019050610a7e565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610adb578082015181840152602081019050610ac0565b50505050905001848103825285818151815260200191508051906020019060200280838360005b83811015610b1d578082015181840152602081019050610b02565b50505050905001965050505050505060405180910390f35b348015610b4157600080fd5b50610b8460048036036020811015610b5857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122fd565b005b348015610b9257600080fd5b50610bd560048036036020811015610ba957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061244e565b005b348015610be357600080fd5b50610bec612525565b6040518082815260200191505060405180910390f35b348015610c0e57600080fd5b50610c5160048036036020811015610c2557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612588565b6040518082815260200191505060405180910390f35b60003414610cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612ff16036913960400191505060405180910390fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415610d5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613027602b913960400191505060405180910390fd5b600080905060008090505b6007600084815260200190815260200160002060040154811015610fa75760076000848152602001908152602001600020600501600082815260200190815260200160002060050160009054906101000a900460ff1615610dc957610f9a565b600060086007600086815260200190815260200160002060050160008481526020019081526020016000206000015481548110610e0257fe5b9060005260206000209060020201905060008090506000429050600083600101541115610e7f576000610e6c8460010154600760008a81526020019081526020016000206005016000888152602001908152602001600020600101546125d190919063ffffffff16565b9050808210610e7d57809150600192505b505b6000610ee560076000898152602001908152602001600020600501600087815260200190815260200160002060020154856000015484600760008c815260200190815260200160002060050160008a8152602001908152602001600020600301546125ed565b9050808601955081600760008981526020019081526020016000206005016000878152602001908152602001600020600301819055508260076000898152602001908152602001600020600501600087815260200190815260200160002060050160006101000a81548160ff0219169083151502179055508060076000898152602001908152602001600020600501600087815260200190815260200160002060040160008282540192505081905550505050505b8080600101915050610d69565b506000811115610ff9573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ff7573d6000803e3d6000fd5b505b6000600760008481526020019081526020016000206002015411156110eb573373ffffffffffffffffffffffffffffffffffffffff166108fc60076000858152602001908152602001600020600201549081150290604051600060405180830381858888f19350505050158015611074573d6000803e3d6000fd5b506110b4600760008481526020019081526020016000206001015460076000858152602001908152602001600020600201546125d190919063ffffffff16565b6007600084815260200190815260200160002060010181905550600060076000848152602001908152602001600020600201819055505b7fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc3382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b61116633828434612617565b156111d7577f9a7b89cf778462f98a9b59f99121c720927a5c37ffaaba0346f77326622a8aeb3334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5050565b600047905090565b60066020528060005260406000206000915090505481565b605081565b565b611a0a81565b602881565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461126857600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60608060608060606000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113845785600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611383576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806130816036913960400191505060405180910390fd5b5b6000600760008881526020019081526020016000209050606081600401546040519080825280602002602001820160405280156113d05781602001602082028038833980820191505090505b509050606082600401546040519080825280602002602001820160405280156114085781602001602082028038833980820191505090505b509050606083600401546040519080825280602002602001820160405280156114405781602001602082028038833980820191505090505b509050606084600401546040519080825280602002602001820160405280156114785781602001602082028038833980820191505090505b509050606085600401546040519080825280602002602001820160405280156114b05781602001602082028038833980820191505090505b50905060008090505b866004015481101561175e576000876005016000838152602001908152602001600020600101541415611554576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f77726f6e6720696e766573746d656e742064617465000000000000000000000081525060200191505060405180910390fd5b8660050160008281526020019081526020016000206000015486828151811061157957fe5b602002602001018181525050866005016000828152602001908152602001600020600401548382815181106115aa57fe5b602002602001018181525050866005016000828152602001908152602001600020600101548582815181106115db57fe5b6020026020010181815250508660050160008281526020019081526020016000206002015484828151811061160c57fe5b60200260200101818152505086600501600082815260200190815260200160002060050160009054906101000a900460ff161561166857600182828151811061165157fe5b602002602001019015159081151581525050611751565b600082828151811061167657fe5b6020026020010190151590811515815250506000600888600501600084815260200190815260200160002060000154815481106116af57fe5b906000526020600020906002020160010154111561175057611728600888600501600084815260200190815260200160002060000154815481106116ef57fe5b906000526020600020906002020160010154886005016000848152602001908152602001600020600101546125d190919063ffffffff16565b421061174f57600182828151811061173c57fe5b6020026020010190151590811515815250505b5b5b80806001019150506114b9565b5084848484849a509a509a509a509a5050505050505091939590929450565b601481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117db57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561181557600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600190506000809050600083141580156118b65750815b156118bf578290505b6118cb85858334612617565b15611970577fa42dcf7f76c611f59eb8a21823736f441a5e515b7bb248b11ce834d25d063076338634604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a15b5050505050565b60015481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119d857600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a5b57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b603281565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ae157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b1b57600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b662386f26fc1000081565b600581565b60076020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060060154908060070154908060080154905088565b600581565b60008060008060008060006060806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cfb5789600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613052602f913960400191505060405180910390fd5b5b6000600760008c8152602001908152602001600020905060608160040154604051908082528060200260200182016040528015611d475781602001602082028038833980820191505090505b50905060608260040154604051908082528060200260200182016040528015611d7f5781602001602082028038833980820191505090505b50905060008090505b836004015481101561215c576000846005016000838152602001908152602001600020600101541415611e23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f77726f6e6720696e766573746d656e742064617465000000000000000000000081525060200191505060405180910390fd5b83600501600082815260200190815260200160002060040154828281518110611e4857fe5b60200260200101818152505083600501600082815260200190815260200160002060050160009054906101000a900460ff1615611e9e576000838281518110611e8d57fe5b60200260200101818152505061214f565b600060088560050160008481526020019081526020016000206000015481548110611ec557fe5b90600052602060002090600202016001015411156120c357611f3e60088560050160008481526020019081526020016000206000015481548110611f0557fe5b906000526020600020906002020160010154856005016000848152602001908152602001600020600101546125d190919063ffffffff16565b4210612033576120168460050160008381526020019081526020016000206002015460088660050160008581526020019081526020016000206000015481548110611f8557fe5b906000526020600020906002020160000154611ff860088860050160008781526020019081526020016000206000015481548110611fbf57fe5b906000526020600020906002020160010154886005016000878152602001908152602001600020600101546125d190919063ffffffff16565b876005016000868152602001908152602001600020600301546125ed565b83828151811061202257fe5b6020026020010181815250506120be565b6120a5846005016000838152602001908152602001600020600201546008866005016000858152602001908152602001600020600001548154811061207457fe5b90600052602060002090600202016000015442876005016000868152602001908152602001600020600301546125ed565b8382815181106120b157fe5b6020026020010181815250505b61214e565b612135846005016000838152602001908152602001600020600201546008866005016000858152602001908152602001600020600001548154811061210457fe5b90600052602060002090600202016000015442876005016000868152602001908152602001600020600301546125ed565b83828151811061214157fe5b6020026020010181815250505b5b8080600101915050611d88565b50826001015483600201548460030154856006015486600701548760080154886004015487899b509b509b509b509b509b509b509b509b505050509193959799909294969850565b602881565b6060806060806008805490506040519080825280602002602001820160405280156121e35781602001602082028038833980820191505090505b509050606060088054905060405190808252806020026020018201604052801561221c5781602001602082028038833980820191505090505b50905060606008805490506040519080825280602002602001820160405280156122555781602001602082028038833980820191505090505b50905060008090505b6008805490508110156122eb5760006008828154811061227a57fe5b906000526020600020906002020190508185838151811061229757fe5b60200260200101818152505080600001548483815181106122b457fe5b60200260200101818152505080600101548383815181106122d157fe5b60200260200101818152505050808060010191505061225e565b50828282955095509550505050909192565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461235657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561239057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2e3feca4334579203cd183fe1ced9524940047e5586fe13e8cc5dd1babaf6e8260405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146124a757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124e157600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461258057600080fd5b600254905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000808284019050838110156125e357fe5b8091505092915050565b6000620151808284036103e88688028161260357fe5b04028161260c57fe5b049050949350505050565b600080841015801561262d575060088054905084105b61269f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f57726f6e6720696e766573746d656e7420706c616e206964000000000000000081525060200191505060405180910390fd5b662386f26fc100008210156126ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806130b76033913960400191505060405180910390fd5b6000600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141561275d5761275686856129d8565b905061275e565b5b60006007600083815260200190815260200160002060040154905060006007600084815260200190815260200160002090508681600501600084815260200190815260200160002060000181905550428160050160008481526020019081526020016000206001018190555042816005016000848152602001908152602001600020600301819055508481600501600084815260200190815260200160002060020181905550600081600501600084815260200190815260200160002060040181905550600081600501600084815260200190815260200160002060050160006101000a81548160ff02191690831515021790555061286b600182600401546125d190919063ffffffff16565b816004018190555061288283868360030154612c89565b612897856002546125d190919063ffffffff16565b60028190555060006128c76103e86128b9602889612f8990919063ffffffff16565b612fc090919063ffffffff16565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612931573d6000803e3d6000fd5b50600061295c6103e861294e60288a612f8990919063ffffffff16565b612fc090919063ffffffff16565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156129c6573d6000803e3d6000fd5b50600195505050505050949350505050565b6000611a0a8210612a5857600073ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612a5357600091505b612a5d565b600091505b6000839050612a77600180546125d190919063ffffffff16565b600181905550600154600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060076000600154815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260076000600154815260200190815260200160002060030181905550600060076000600154815260200190815260200160002060040181905550611a0a8310612c7d576000839050600060076000838152602001908152602001600020600301549050600060076000838152602001908152602001600020600301549050612bc3600160076000868152602001908152602001600020600601546125d190919063ffffffff16565b6007600085815260200190815260200160002060060181905550611a0a8210612c2b57612c10600160076000858152602001908152602001600020600701546125d190919063ffffffff16565b60076000848152602001908152602001600020600701819055505b611a0a8110612c7957612c5e600160076000848152602001908152602001600020600801546125d190919063ffffffff16565b60076000838152602001908152602001600020600801819055505b5050505b60015491505092915050565b6000612cb36103e8612ca5605086612f8990919063ffffffff16565b612fc090919063ffffffff16565b905060008214612f10576000829050600060076000838152602001908152602001600020600301549050600060076000838152602001908152602001600020600301549050600080905060008414612df557612d2d6103e8612d1f60328a612f8990919063ffffffff16565b612fc090919063ffffffff16565b9050612d428186612fd990919063ffffffff16565b9450612d6d6007600086815260200190815260200160002060020154826125d190919063ffffffff16565b6007600086815260200190815260200160002060020181905550612daf6103e8612da160058a612f8990919063ffffffff16565b612fc090919063ffffffff16565b9050612dda600760008a815260200190815260200160002060020154826125d190919063ffffffff16565b600760008a8152602001908152602001600020600201819055505b60008314612e8057612e256103e8612e1760148a612f8990919063ffffffff16565b612fc090919063ffffffff16565b9050612e3a8186612fd990919063ffffffff16565b9450612e656007600085815260200190815260200160002060020154826125d190919063ffffffff16565b60076000858152602001908152602001600020600201819055505b60008214612f0b57612eb06103e8612ea260058a612f8990919063ffffffff16565b612fc090919063ffffffff16565b9050612ec58186612fd990919063ffffffff16565b9450612ef06007600084815260200190815260200160002060020154826125d190919063ffffffff16565b60076000848152602001908152602001600020600201819055505b505050505b6000811115612f8357600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f81573d6000803e3d6000fd5b505b50505050565b600080831415612f9c5760009050612fba565b6000828402905082848281612fad57fe5b0414612fb557fe5b809150505b92915050565b600080828481612fcc57fe5b0490508091505092915050565b600082821115612fe557fe5b81830390509291505056fe7769746864726177616c20646f65736e277420616c6c6f7720746f207472616e736665722068722073696d756c74616e656f75736c7943616e206e6f742077697468647261772062656361757365206e6f20616e7920696e766573746d656e74736f6e6c79206f776e6572206f722073656c662063616e20636865636b2074686520696e766573746f7220696e666f2e6f6e6c79206f776e6572206f722073656c662063616e20636865636b2074686520696e766573746d656e7420706c616e20696e666f2e4c657373207468616e20746865206d696e696d756d20616d6f756e74206f66206465706f73697420726571756972656d656e74a265627a7a723158200c69d700b2d68a9109fa825cd21b0845472b971349ff6c0b28d75077dc88c76164736f6c63430005110032

Deployed ByteCode Sourcemap

2416:15805:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3935:1;3922:9;:14;3918:130;;;3953:10;:8;:10::i;:::-;3918:130;;;3987:12;3994:1;3997;3987:6;:12::i;:::-;3918:130;2416:15805;6482:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6482:99:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3264:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3264:46:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3264:46:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2617:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2617:43:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4063:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4063:34:0;;;:::i;:::-;;2973:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2973:44:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2551:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2551:43:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4964:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4964:114:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14329:1888;;;:::i;:::-;;8939:1788;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8939:1788:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8939:1788:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8939:1788:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8939:1788:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8939:1788:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8939:1788:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8939:1788:0;;;;;;;;;;;;;;;;;;;;;;;;;2724:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2724:50:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4105:197;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4105:197:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4105:197:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;13666:435;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13666:435:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3036:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3036:33:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4637:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4637:114:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4310;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4310:114:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2667:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2667:50:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4759:197;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4759:197:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4759:197:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;1551:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1551:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2891:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2891:38:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2781:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2781:49:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3317:56;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3317:56:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3317:56:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2837:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2837:47:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6711:2220;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6711:2220:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6711:2220:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6711:2220:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6711:2220:0;;;;;;;;;;;;;;;;;;;;;;;;;;2486:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2486:43:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14109:212;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14109:212:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5685:668;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5685:668:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5685:668:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5685:668:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5685:668:0;;;;;;;;;;;;;;;;;;;;;2211:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2211:198:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2211:198:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;4432:197;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4432:197:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4432:197:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;6361:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6361:113:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6589:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6589:114:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6589:114:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14329:1888;14396:1;14383:9;:14;14375:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14467:11;14481;:23;14493:10;14481:23;;;;;;;;;;;;;;;;14467:37;;14530:1;14523:3;:8;;14515:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14590:24;14617:1;14590:28;;14634:9;14646:1;14634:13;;14629:1087;14653:12;:17;14666:3;14653:17;;;;;;;;;;;:27;;;14649:1;:31;14629:1087;;;14706:12;:17;14719:3;14706:17;;;;;;;;;;;:23;;:26;14730:1;14706:26;;;;;;;;;;;:36;;;;;;;;;;;;14702:85;;;14763:8;;14702:85;14803:25;14831:16;14848:12;:17;14861:3;14848:17;;;;;;;;;;;:23;;:26;14872:1;14848:26;;;;;;;;;;;:33;;;14831:51;;;;;;;;;;;;;;;;;;14803:79;;14899:14;14916:5;14899:22;;14936;14961:15;14936:40;;15007:1;14995:4;:9;;;:13;14991:283;;;15029:15;15047:56;15093:4;:9;;;15047:12;:17;15060:3;15047:17;;;;;;;;;;;:23;;:26;15071:1;15047:26;;;;;;;;;;;:41;;;:45;;:56;;;;:::i;:::-;15029:74;;15144:7;15126:14;:25;15122:137;;15193:7;15176:24;;15235:4;15223:16;;15122:137;14991:283;;15290:14;15307:144;15327:12;:17;15340:3;15327:17;;;;;;;;;;;:23;;:26;15351:1;15327:26;;;;;;;;;;;:37;;;15367:4;:18;;;15388:14;15405:12;:17;15418:3;15405:17;;;;;;;;;;;:23;;:26;15429:1;15405:26;;;;;;;;;;;:45;;;15307:19;:144::i;:::-;15290:161;;15488:6;15468:26;;;;15559:14;15511:12;:17;15524:3;15511:17;;;;;;;;;;;:23;;:26;15535:1;15511:26;;;;;;;;;;;:45;;:62;;;;15627:9;15588:12;:17;15601:3;15588:17;;;;;;;;;;;:23;;:26;15612:1;15588:26;;;;;;;;;;;:36;;;:48;;;;;;;;;;;;;;;;;;15698:6;15651:12;:17;15664:3;15651:17;;;;;;;;;;;:23;;:26;15675:1;15651:26;;;;;;;;;;;:43;;;:53;;;;;;;;;;;14629:1087;;;;;14682:3;;;;;;;14629:1087;;;;15745:1;15728:16;:18;15724:73;;;15754:10;:19;;:37;15774:16;15754:37;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15754:37:0;15724:73;15861:1;15817:12;:17;15830:3;15817:17;;;;;;;;;;;:43;;;:45;15813:339;;;15879:10;:19;;:64;15899:12;:17;15912:3;15899:17;;;;;;;;;;;:43;;;15879:64;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15879:64:0;15995:83;16043:12;:17;16056:3;16043:17;;;;;;;;;;;:34;;;15995:12;:17;16008:3;15995:17;;;;;;;;;;;:43;;;:47;;:83;;;;:::i;:::-;15958:12;:17;15971:3;15958:17;;;;;;;;;;;:34;;:120;;;;16139:1;16093:12;:17;16106:3;16093:17;;;;;;;;;;;:43;;:47;;;;15813:339;16169:40;16180:10;16192:16;16169:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;14329:1888;;:::o;14109:212::-;14195:54;14203:10;14215:7;14224:13;14239:9;14195:7;:54::i;:::-;14191:123;;;14271:31;14280:10;14292:9;14271:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;14191:123;14109:212;;:::o;6482:99::-;6525:7;6552:21;6545:28;;6482:99;:::o;3264:46::-;;;;;;;;;;;;;;;;;:::o;2617:43::-;2658:2;2617:43;:::o;4063:34::-;:::o;2973:44::-;3013:4;2973:44;:::o;2551:43::-;2592:2;2551:43;:::o;4964:114::-;5026:7;2007:5;;;;;;;;;;;1993:19;;:10;:19;;;1985:28;;;;;;5053:17;;;;;;;;;;;5046:24;;4964:114;:::o;8939:1788::-;9006:16;9024;9042;9060;9078:13;9122:5;;;;;;;;;;;9108:19;;:10;:19;;;9104:150;;9179:4;9152:11;:23;9164:10;9152:23;;;;;;;;;;;;;;;;:31;9144:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9104:150;9264:33;9300:12;:18;9313:4;9300:18;;;;;;;;;;;9264:54;;9329:24;9371:8;:18;;;9356:34;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;9356:34:0;;;;9329:61;;9401:32;9451:8;:18;;;9436:34;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;9436:34:0;;;;9401:69;;9481:28;9527:8;:18;;;9512:34;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;9512:34:0;;;;9481:65;;9557:33;9608:8;:18;;;9593:34;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;9593:34:0;;;;9557:70;;9638:24;9677:8;:18;;;9665:31;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;9665:31:0;;;;9638:58;;9714:9;9726:1;9714:13;;9709:857;9733:8;:18;;;9729:1;:22;9709:857;;;9815:1;9781:8;:14;;:17;9796:1;9781:17;;;;;;;;;;;:32;;;:35;;9773:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9869:8;:14;;:17;9884:1;9869:17;;;;;;;;;;;:24;;;9856:7;9864:1;9856:10;;;;;;;;;;;;;:37;;;;;9930:8;:14;;:17;9945:1;9930:17;;;;;;;;;;;:34;;;9908:16;9925:1;9908:19;;;;;;;;;;;;;:56;;;;;10000:8;:14;;:17;10015:1;10000:17;;;;;;;;;;;:32;;;9979:15;9995:1;9979:18;;;;;;;;;;;;;:53;;;;;10064:8;:14;;:17;10079:1;10064:17;;;;;;;;;;;:28;;;10047:11;10059:1;10047:14;;;;;;;;;;;;;:45;;;;;10111:8;:14;;:17;10126:1;10111:17;;;;;;;;;;;:27;;;;;;;;;;;;10107:448;;;10175:4;10159:10;10170:1;10159:13;;;;;;;;;;;;;:20;;;;;;;;;;;10107:448;;;10236:5;10220:10;10231:1;10220:13;;;;;;;;;;;;;:21;;;;;;;;;;;10314:1;10264:16;10281:8;:14;;:17;10296:1;10281:17;;;;;;;;;;;:24;;;10264:42;;;;;;;;;;;;;;;;;;:47;;;:51;10260:280;;;10363:85;10400:16;10417:8;:14;;:17;10432:1;10417:17;;;;;;;;;;;:24;;;10400:42;;;;;;;;;;;;;;;;;;:47;;;10363:8;:14;;:17;10378:1;10363:17;;;;;;;;;;;:32;;;:36;;:85;;;;:::i;:::-;10344:15;:104;10340:181;;10493:4;10477:10;10488:1;10477:13;;;;;;;;;;;;;:20;;;;;;;;;;;10340:181;10260:280;10107:448;9753:3;;;;;;;9709:857;;;;10605:7;10623:15;10649:11;10671:16;10698:10;10578:141;;;;;;;;;;;;;;;;8939:1788;;;;;;;:::o;2724:50::-;2772:2;2724:50;:::o;4105:197::-;2007:5;;;;;;;;;;;1993:19;;:10;:19;;;1985:28;;;;;;4240:1;4208:34;;:20;:34;;;;4200:43;;;;;;4274:20;4254:17;;:40;;;;;;;;;;;;;;;;;;4105:197;:::o;13666:435::-;13738:18;13759:11;:23;13771:10;13759:23;;;;;;;;;;;;;;;;13738:44;;13793:22;13818:4;13793:29;;13833:20;13856:1;13833:24;;13888:1;13874:10;:15;;:36;;;;;13893:17;13874:36;13870:94;;;13942:10;13927:25;;13870:94;13980:44;13988:4;13993:7;14001:12;14014:9;13980:7;:44::i;:::-;13976:118;;;14046:36;14054:10;14066:4;14072:9;14046:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13976:118;13666:435;;;;;:::o;3036:33::-;;;;:::o;4637:114::-;4699:7;2007:5;;;;;;;;;;;1993:19;;:10;:19;;;1985:28;;;;;;4726:17;;;;;;;;;;;4719:24;;4637:114;:::o;4310:::-;4372:7;2007:5;;;;;;;;;;;1993:19;;:10;:19;;;1985:28;;;;;;4399:17;;;;;;;;;;;4392:24;;4310:114;:::o;2667:50::-;2715:2;2667:50;:::o;4759:197::-;2007:5;;;;;;;;;;;1993:19;;:10;:19;;;1985:28;;;;;;4894:1;4862:34;;:20;:34;;;;4854:43;;;;;;4928:20;4908:17;;:40;;;;;;;;;;;;;;;;;;4759:197;:::o;1551:20::-;;;;;;;;;;;;;:::o;2891:38::-;2925:4;2891:38;:::o;2781:49::-;2829:1;2781:49;:::o;3317:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2837:47::-;2883:1;2837:47;:::o;6711:2220::-;6776:7;6785;6794;6803;6812;6821;6830;6839:16;6857;6904:5;;;;;;;;;;;6890:19;;:10;:19;;;6886:143;;6961:4;6934:11;:23;6946:10;6934:23;;;;;;;;;;;;;;;;:31;6926:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6886:143;7039:33;7075:12;:18;7088:4;7075:18;;;;;;;;;;;7039:54;;7104:29;7150:8;:18;;;7136:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;7136:33:0;;;;7104:65;;7180:33;7231:8;:18;;;7216:34;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;7216:34:0;;;;7180:70;;7266:9;7278:1;7266:13;;7261:1335;7285:8;:18;;;7281:1;:22;7261:1335;;;7369:1;7333:8;:14;;:17;7348:1;7333:17;;;;;;;;;;;:32;;;:37;;7325:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7433:8;:14;;:17;7448:1;7433:17;;;;;;;;;;;:34;;;7411:16;7428:1;7411:19;;;;;;;;;;;;;:56;;;;;7486:8;:14;;:17;7501:1;7486:17;;;;;;;;;;;:27;;;;;;;;;;;;7482:1103;;;7552:1;7534:12;7547:1;7534:15;;;;;;;;;;;;;:19;;;;;7482:1103;;;7648:1;7598:16;7615:8;:14;;:17;7630:1;7615:17;;;;;;;;;;;:24;;;7598:42;;;;;;;;;;;;;;;;;;:47;;;:51;7594:976;;;7697:85;7734:16;7751:8;:14;;:17;7766:1;7751:17;;;;;;;;;;;:24;;;7734:42;;;;;;;;;;;;;;;;;;:47;;;7697:8;:14;;:17;7712:1;7697:17;;;;;;;;;;;:32;;;:36;;:85;;;;:::i;:::-;7678:15;:104;7674:648;;7829:232;7849:8;:14;;:17;7864:1;7849:17;;;;;;;;;;;:28;;;7879:16;7896:8;:14;;:17;7911:1;7896:17;;;;;;;;;;;:24;;;7879:42;;;;;;;;;;;;;;;;;;:56;;;7937:85;7974:16;7991:8;:14;;:17;8006:1;7991:17;;;;;;;;;;;:24;;;7974:42;;;;;;;;;;;;;;;;;;:47;;;7937:8;:14;;:17;7952:1;7937:17;;;;;;;;;;;:32;;;:36;;:85;;;;:::i;:::-;8024:8;:14;;:17;8039:1;8024:17;;;;;;;;;;;:36;;;7829:19;:232::i;:::-;7811:12;7824:1;7811:15;;;;;;;;;;;;;:250;;;;;7674:648;;;8136:162;8156:8;:14;;:17;8171:1;8156:17;;;;;;;;;;;:28;;;8186:16;8203:8;:14;;:17;8218:1;8203:17;;;;;;;;;;;:24;;;8186:42;;;;;;;;;;;;;;;;;;:56;;;8244:15;8261:8;:14;;:17;8276:1;8261:17;;;;;;;;;;;:36;;;8136:19;:162::i;:::-;8118:12;8131:1;8118:15;;;;;;;;;;;;;:180;;;;;7674:648;7594:976;;;8388:162;8408:8;:14;;:17;8423:1;8408:17;;;;;;;;;;;:28;;;8438:16;8455:8;:14;;:17;8470:1;8455:17;;;;;;;;;;;:24;;;8438:42;;;;;;;;;;;;;;;;;;:56;;;8496:15;8513:8;:14;;:17;8528:1;8513:17;;;;;;;;;;;:36;;;8388:19;:162::i;:::-;8370:12;8383:1;8370:15;;;;;;;;;;;;;:180;;;;;7594:976;7482:1103;7305:3;;;;;;;7261:1335;;;;8633:8;:25;;;8669:8;:34;;;8714:8;:17;;;8742:8;:23;;;8776:8;:23;;;8810:8;:23;;;8844:8;:18;;;8873:16;8900:12;8606:317;;;;;;;;;;;;;;;;;;;;;6711:2220;;;;;;;;;;;:::o;2486:43::-;2527:2;2486:43;:::o;5685:668::-;5733:16;5751;5769;5798:20;5835:16;:23;;;;5821:38;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5821:38:0;;;;5798:61;;5870:26;5913:16;:23;;;;5899:38;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5899:38:0;;;;5870:67;;5948:22;5987:16;:23;;;;5973:38;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5973:38:0;;;;5948:63;;6027:9;6039:1;6027:13;;6022:236;6046:16;:23;;;;6042:1;:27;6022:236;;;6091:25;6119:16;6136:1;6119:19;;;;;;;;;;;;;;;;;;6091:47;;6162:1;6153:3;6157:1;6153:6;;;;;;;;;;;;;:10;;;;;6193:4;:18;;;6178:9;6188:1;6178:12;;;;;;;;;;;;;:33;;;;;6237:4;:9;;;6226:5;6232:1;6226:8;;;;;;;;;;;;;:20;;;;;6022:236;6071:3;;;;;;;6022:236;;;;6295:3;6309:9;6329:5;6268:77;;;;;;;;;5685:668;;;:::o;2211:198::-;2007:5;;;;;;;;;;;1993:19;;:10;:19;;;1985:28;;;;;;2314:1;2293:23;;:9;:23;;;;2285:32;;;;;;2363:9;2333:40;;2356:5;;;;;;;;;;;2333:40;;;;;;;;;;;;2392:9;2384:5;;:17;;;;;;;;;;;;;;;;;;2211:198;:::o;4432:197::-;2007:5;;;;;;;;;;;1993:19;;:10;:19;;;1985:28;;;;;;4567:1;4535:34;;:20;:34;;;;4527:43;;;;;;4601:20;4581:17;;:40;;;;;;;;;;;;;;;;;;4432:197;:::o;6361:113::-;6423:7;2007:5;;;;;;;;;;;1993:19;;:10;:19;;;1985:28;;;;;;6449:17;;6442:24;;6361:113;:::o;6589:114::-;6650:7;6677:11;:18;6689:5;6677:18;;;;;;;;;;;;;;;;6670:25;;6589:114;;;:::o;695:147::-;753:7;773:9;789:1;785;:5;773:17;;813:1;808;:6;;801:14;;;;833:1;826:8;;;695:147;;;;:::o;16225:229::-;16351:7;16437:8;16425:6;16418:4;:13;16410:4;16389:18;16379:7;:28;:35;;;;;;:53;16378:68;;;;;;16371:75;;16225:229;;;;;;:::o;12136:1522::-;12242:4;12278:1;12267:7;:12;;:49;;;;;12293:16;:23;;;;12283:7;:33;12267:49;12259:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2925:4;12364:7;:18;;12356:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12449:11;12463;:18;12475:5;12463:18;;;;;;;;;;;;;;;;12449:32;;12503:1;12496:3;:8;12492:182;;;12527:34;12540:5;12547:13;12527:12;:34::i;:::-;12521:40;;12492:182;;;;12684:17;12704:12;:17;12717:3;12704:17;;;;;;;;;;;:27;;;12684:47;;12742:33;12778:12;:17;12791:3;12778:17;;;;;;;;;;;12742:53;;12841:7;12806:8;:14;;:25;12821:9;12806:25;;;;;;;;;;;:32;;:42;;;;12902:15;12859:8;:14;;:25;12874:9;12859:25;;;;;;;;;;;:40;;:58;;;;12975:15;12928:8;:14;;:25;12943:9;12928:25;;;;;;;;;;;:44;;:62;;;;13040:7;13001:8;:14;;:25;13016:9;13001:25;;;;;;;;;;;:36;;:46;;;;13103:1;13058:8;:14;;:25;13073:9;13058:25;;;;;;;;;;;:42;;:46;;;;13153:5;13115:8;:14;;:25;13130:9;13115:25;;;;;;;;;;;:35;;;:43;;;;;;;;;;;;;;;;;;13192:25;13215:1;13192:8;:18;;;:22;;:25;;;;:::i;:::-;13171:8;:18;;:46;;;;13230:57;13255:3;13260:7;13269:8;:17;;;13230:24;:57::i;:::-;13320:30;13342:7;13320:17;;:21;;:30;;;;:::i;:::-;13300:17;:50;;;;13363:27;13393:39;13427:4;13394:27;2527:2;13394:7;:11;;:27;;;;:::i;:::-;13393:33;;:39;;;;:::i;:::-;13363:69;;13443:17;;;;;;;;;;;:26;;:47;13470:19;13443:47;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13443:47:0;13501:27;13531:39;13565:4;13532:27;2592:2;13532:7;:11;;:27;;;;:::i;:::-;13531:33;;:39;;;;:::i;:::-;13501:69;;13581:17;;;;;;;;;;;:26;;:47;13608:19;13581:47;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13581:47:0;13646:4;13639:11;;;;;;;12136:1522;;;;;;:::o;10735:1393::-;10812:7;3013:4;10836:13;:30;10832:311;;11026:1;10982:46;;:12;:27;10995:13;10982:27;;;;;;;;;;;:32;;;;;;;;;;;;:46;;;10978:104;;;11065:1;11049:17;;10978:104;10832:311;;;11130:1;11114:17;;10832:311;11153:12;11168:5;11153:20;;11205:25;11228:1;11205:18;;:22;;:25;;;;:::i;:::-;11184:18;:46;;;;11261:18;;11241:11;:17;11253:4;11241:17;;;;;;;;;;;;;;;:38;;;;11330:4;11290:12;:32;11303:18;;11290:32;;;;;;;;;;;:37;;;:44;;;;;;;;;;;;;;;;;;11389:13;11345:12;:32;11358:18;;11345:32;;;;;;;;;;;:41;;:57;;;;11458:1;11413:12;:32;11426:18;;11413:32;;;;;;;;;;;:42;;:46;;;;3013:4;11474:13;:30;11470:613;;11521:13;11537;11521:29;;11565:13;11581:12;:19;11594:5;11581:19;;;;;;;;;;;:28;;;11565:44;;11624:13;11640:12;:19;11653:5;11640:19;;;;;;;;;;;:28;;;11624:44;;11720:41;11759:1;11720:12;:19;11733:5;11720:19;;;;;;;;;;;:34;;;:38;;:41;;;;:::i;:::-;11683:12;:19;11696:5;11683:19;;;;;;;;;;;:34;;:78;;;;3013:4;11780:5;:22;11776:141;;11860:41;11899:1;11860:12;:19;11873:5;11860:19;;;;;;;;;;;:34;;;:38;;:41;;;;:::i;:::-;11823:12;:19;11836:5;11823:19;;;;;;;;;;;:34;;:78;;;;11776:141;3013:4;11935:5;:22;11931:141;;12015:41;12054:1;12015:12;:19;12028:5;12015:19;;;;;;;;;;;:34;;;:38;;:41;;;;:::i;:::-;11978:12;:19;11991:5;11978:19;;;;;;;;;;;:34;;:78;;;;11931:141;11470:613;;;;12101:18;;12093:27;;;10735:1393;;;;:::o;16462:1754::-;16575:26;16604:43;16642:4;16605:31;2658:2;16605:11;:15;;:31;;;;:::i;:::-;16604:37;;:43;;;;:::i;:::-;16575:72;;16679:1;16662:13;:18;16658:1438;;16697:13;16713;16697:29;;16741:13;16757:12;:19;16770:5;16757:19;;;;;;;;;;;:28;;;16741:44;;16800:13;16816:12;:19;16829:5;16816:19;;;;;;;;;;;:28;;;16800:44;;16859:18;16880:1;16859:22;;16911:1;16902:5;:10;16898:523;;16946:50;16991:4;16947:38;2715:2;16947:11;:15;;:38;;;;:::i;:::-;16946:44;;:50;;;;:::i;:::-;16933:63;;17036:34;17059:10;17036:18;:22;;:34;;;;:::i;:::-;17015:55;;17137:61;17152:12;:19;17165:5;17152:19;;;;;;;;;;;:45;;;17137:10;:14;;:61;;;;:::i;:::-;17089:12;:19;17102:5;17089:19;;;;;;;;;;;:45;;:109;;;;17230:48;17273:4;17231:36;2883:1;17231:11;:15;;:36;;;;:::i;:::-;17230:42;;:48;;;;:::i;:::-;17217:61;;17345:60;17360:12;:18;17373:4;17360:18;;;;;;;;;;;:44;;;17345:10;:14;;:60;;;;:::i;:::-;17297:12;:18;17310:4;17297:18;;;;;;;;;;;:44;;:108;;;;16898:523;17450:1;17441:5;:10;17437:316;;17485:50;17530:4;17486:38;2772:2;17486:11;:15;;:38;;;;:::i;:::-;17485:44;;:50;;;;:::i;:::-;17472:63;;17575:34;17598:10;17575:18;:22;;:34;;;;:::i;:::-;17554:55;;17676:61;17691:12;:19;17704:5;17691:19;;;;;;;;;;;:45;;;17676:10;:14;;:61;;;;:::i;:::-;17628:12;:19;17641:5;17628:19;;;;;;;;;;;:45;;:109;;;;17437:316;17782:1;17773:5;:10;17769:316;;17817:50;17862:4;17818:38;2829:1;17818:11;:15;;:38;;;;:::i;:::-;17817:44;;:50;;;;:::i;:::-;17804:63;;17907:34;17930:10;17907:18;:22;;:34;;;;:::i;:::-;17886:55;;18008:61;18023:12;:19;18036:5;18023:19;;;;;;;;;;;:45;;;18008:10;:14;;:61;;;;:::i;:::-;17960:12;:19;17973:5;17960:19;;;;;;;;;;;:45;;:109;;;;17769:316;16658:1438;;;;;18133:1;18112:18;:22;18108:101;;;18151:17;;;;;;;;;;;:26;;:46;18178:18;18151:46;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18151:46:0;18108:101;16462:1754;;;;:::o;52:208::-;110:7;139:1;134;:6;130:47;;;164:1;157:8;;;;130:47;187:9;203:1;199;:5;187:17;;231:1;226;222;:5;;;;;;:10;215:18;;;;251:1;244:8;;;52:208;;;;;:::o;268:288::-;326:7;425:9;441:1;437;:5;;;;;;425:17;;547:1;540:8;;;268:288;;;;:::o;564:123::-;622:7;654:1;649;:6;;642:14;;;;678:1;674;:5;667:12;;564:123;;;;:::o

Swarm Source

bzzr://0c69d700b2d68a9109fa825cd21b0845472b971349ff6c0b28d75077dc88c761
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.