Contract 0xbBbeCd6ee8D2972B4905634177C56ad73F226276

 

Contract Overview

Balance:
8.34184663857 Ether

EtherValue:
$1,036.47 (@ $124.25/ETH)
TxHash Block Age From To Value [TxFee]
0x52da439980d3c1d6cfed002804e4a31e9d3685d9f99f1131fb16f57eac62668d723076543 mins ago0x835640f908cdcffb09dc16b01cf8cf9aa3010e24  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.000209616
0x7cda600d04b701fc185b9a3b6f5dad125c98af2bf52e0d45710b54ce0e9c5c7b723075846 mins ago0x835640f908cdcffb09dc16b01cf8cf9aa3010e24  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.000268485
0x44e63bf3e440f5718c04227c0b82b23545bd8088974cc1c2b7be9740713d2b5b722873212 hrs 20 mins ago0x0581cf34d90e63fa939dc5a79bf11cd265990e6c  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00013133
0xff03e4b4a451fbed9338d16d26cd44da993c3d163d4f296499435fa83e016854722873012 hrs 21 mins ago0x0581cf34d90e63fa939dc5a79bf11cd265990e6c  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00013133
0x1ba1ef00e4ddb2b52322ade73482644bbfae3499f7d2bddfb6c25e402f52104e722872012 hrs 22 mins ago0x0581cf34d90e63fa939dc5a79bf11cd265990e6c  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.0004213
0x8d0898dacdba3c30f0b53248542d3ec482f4c598e312ebb5c0bc7b85222a8337722761018 hrs 42 mins ago0x644f4a37783cdbccc7f64e1741b2ebd7f1ebff96  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760.15 Ether0.001776525
0x16d66a447e5d402344b57607b70549c403e281cc7768dd37309d0297d037c4ef722759918 hrs 44 mins ago0x644f4a37783cdbccc7f64e1741b2ebd7f1ebff96  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00013133
0x6c6aaef5b1d4e21cb0fa6083324d1d74d8f63399645a73f4a31e57801965cf89722759618 hrs 45 mins ago0x644f4a37783cdbccc7f64e1741b2ebd7f1ebff96  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00013133
0x974d3c2b0dd53b0e6aeb07497264ecbc5a30282ad8bfe424f7a60ff4dab71dfa722759118 hrs 46 mins ago0x644f4a37783cdbccc7f64e1741b2ebd7f1ebff96  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00096882
0x5c3118f0de81d88a0f58e1c866c34324f8b96815394fe357704d0241457e72f2722755519 hrs 1 min ago0x332a97d6df06079ad5e6261e26ef674ab74835ed  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.0000866778
0xeec395716d2ee342de20d00c5950c82325abc9464d914338c1d5a20c52db44a4722755019 hrs 3 mins ago0x332a97d6df06079ad5e6261e26ef674ab74835ed  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.0003807738
0x7dbde60f006e82654016d794fc98dc4863bf253433c370e9f4934c83ced783fa72265011 day 1 hr ago0xa36baee01088db46a0315e30d2705c694045983d  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.000209616
0x522ec5091968c87e9b19aa46924e7df3944b572976714351579683bfd1f3a4ef72264991 day 1 hr ago0xa36baee01088db46a0315e30d2705c694045983d  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.000268485
0x3ab7962bb27a858d1c967544760abdebef899ccc859c794aee7b4c27585ce1d972233261 day 19 hrs ago0x1bdd120e6ade6281dbf66d1b2ae166726af70560  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.0001392098
0x917d98a3b160f7f96b9b7ad4015de9e69430dafa5b1d5aa8d2119de6cb679d4872233241 day 19 hrs ago0x1bdd120e6ade6281dbf66d1b2ae166726af70560  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.0001392098
0x5ee5e430cd368c2d04507aabef7cec77ee1bbf6b5d6d988cbe6ac58d9259c02f72229361 day 21 hrs ago0x1bdd120e6ade6281dbf66d1b2ae166726af70560  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00072693
0x2cef341ad5c95d59c5d8c682998985098c5ada282205fcce5240639255e7062172216242 days 5 hrs ago0xb07ed6ed9292502deac98ed61733df6f6b518b5b  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.0001305018
0xdb0e45cca3f908d3241d4b187e594be9c0ca17aa0f3537f2d30c527f435e72eb72185492 days 22 hrs ago0x0581cf34d90e63fa939dc5a79bf11cd265990e6c  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00013133
0xe55a3864dd497268f59639b47b6caff9db268436ec0747f64fa834e85263cb1772185472 days 22 hrs ago0x0581cf34d90e63fa939dc5a79bf11cd265990e6c  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00013133
0x8e2f2a782f38802b9ad4fd9ffc1fcd21f3badb5fe11635d63418b75522855c7c72185432 days 22 hrs ago0x0581cf34d90e63fa939dc5a79bf11cd265990e6c  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.000446578
0xc5cfdfe893051350530de5976306e9d0c27990e5d2492af75e28571a6537cbde72180423 days 2 hrs ago0x4c5331082ba33e03c0b34020dd4324f28f8f55de  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.000078798
0xac4b699a0f34badc0ba23a1b1c74afc23e15c7e096faa5e549f7a2501d4aba8572180413 days 2 hrs ago0x4c5331082ba33e03c0b34020dd4324f28f8f55de  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.000078606
0x7833c2b7f80523c6eaaa38ef5ebb4262e0e9bfd8b54aa06c056bb32f334a2ceb72180283 days 2 hrs ago0x4c5331082ba33e03c0b34020dd4324f28f8f55de  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00016278
0x3609bf877fcc443063c43b50b957df93418a127bc727473613777a775d516a7572180243 days 2 hrs ago0x4c5331082ba33e03c0b34020dd4324f28f8f55de  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.00025278
0xa20f647b666a7e651d25703d4e032c07b4dde54680f56c07f5892f3d7bdcbdc772158993 days 14 hrs ago0x0732319c53aa6229fb8e719857fb3d6a612122ab  IN   0xbbbecd6ee8d2972b4905634177c56ad73f2262760 Ether0.000157212
[ Download CSV Export 

Latest 25 Internal Transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x52da439980d3c1d6cfed002804e4a31e9d3685d9f99f1131fb16f57eac62668d723076543 mins ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x835640f908cdcffb09dc16b01cf8cf9aa3010e240.0003300264 Ether
0x44e63bf3e440f5718c04227c0b82b23545bd8088974cc1c2b7be9740713d2b5b722873212 hrs 20 mins ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0581cf34d90e63fa939dc5a79bf11cd265990e6c0.00777396474 Ether
0xff03e4b4a451fbed9338d16d26cd44da993c3d163d4f296499435fa83e016854722873012 hrs 21 mins ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0581cf34d90e63fa939dc5a79bf11cd265990e6c0.033848661 Ether
0x8d0898dacdba3c30f0b53248542d3ec482f4c598e312ebb5c0bc7b85222a8337722761018 hrs 42 mins ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760xe222dd2dd012fcac0256b1f3830cc033418b68890.021 Ether
0x8d0898dacdba3c30f0b53248542d3ec482f4c598e312ebb5c0bc7b85222a8337722761018 hrs 42 mins ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0c05ae835f26a8d4a89ae80c7a0e5495e5361ca10.0015 Ether
0x16d66a447e5d402344b57607b70549c403e281cc7768dd37309d0297d037c4ef722759918 hrs 44 mins ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x644f4a37783cdbccc7f64e1741b2ebd7f1ebff960.02198701812 Ether
0x6c6aaef5b1d4e21cb0fa6083324d1d74d8f63399645a73f4a31e57801965cf89722759618 hrs 45 mins ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x644f4a37783cdbccc7f64e1741b2ebd7f1ebff960.0447024336 Ether
0x5c3118f0de81d88a0f58e1c866c34324f8b96815394fe357704d0241457e72f2722755519 hrs 1 min ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x332a97d6df06079ad5e6261e26ef674ab74835ed0.0968764357 Ether
0x7dbde60f006e82654016d794fc98dc4863bf253433c370e9f4934c83ced783fa72265011 day 1 hr ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760xa36baee01088db46a0315e30d2705c694045983d0.02700216 Ether
0x3ab7962bb27a858d1c967544760abdebef899ccc859c794aee7b4c27585ce1d972233261 day 19 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x1bdd120e6ade6281dbf66d1b2ae166726af705600.0100128468 Ether
0x917d98a3b160f7f96b9b7ad4015de9e69430dafa5b1d5aa8d2119de6cb679d4872233241 day 19 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x1bdd120e6ade6281dbf66d1b2ae166726af705600.0119174979 Ether
0xdb0e45cca3f908d3241d4b187e594be9c0ca17aa0f3537f2d30c527f435e72eb72185492 days 22 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0581cf34d90e63fa939dc5a79bf11cd265990e6c0.00827383134 Ether
0xe55a3864dd497268f59639b47b6caff9db268436ec0747f64fa834e85263cb1772185472 days 22 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0581cf34d90e63fa939dc5a79bf11cd265990e6c0.0360249791 Ether
0xc5cfdfe893051350530de5976306e9d0c27990e5d2492af75e28571a6537cbde72180423 days 2 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x4c5331082ba33e03c0b34020dd4324f28f8f55de0.0135857832 Ether
0xac4b699a0f34badc0ba23a1b1c74afc23e15c7e096faa5e549f7a2501d4aba8572180413 days 2 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x4c5331082ba33e03c0b34020dd4324f28f8f55de0.070889004 Ether
0xa20f647b666a7e651d25703d4e032c07b4dde54680f56c07f5892f3d7bdcbdc772158993 days 14 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0732319c53aa6229fb8e719857fb3d6a612122ab0.001595035 Ether
0x946e17ee72100a95132e9dbf14dbbcebdcd1bb23fe324c2f4224487f9dc6568e72158943 days 14 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0732319c53aa6229fb8e719857fb3d6a612122ab0.00324971568 Ether
0xf7c3ebe8288e9175732e3b67c1a666a6feda4563e0822b1b5091c7b5d658c17c72158923 days 14 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0732319c53aa6229fb8e719857fb3d6a612122ab0.0067944888 Ether
0x9720f83806e37450ae47a501ccf0b8125c6c532f648fa0b6e725a1589394211572152153 days 18 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x644f4a37783cdbccc7f64e1741b2ebd7f1ebff960.0472567557 Ether
0xdd6c07a030485d265a39edd30f07862f3c6d8ef268d5d867974e14306d9cde2f72100664 days 23 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x835640f908cdcffb09dc16b01cf8cf9aa3010e240.0001371406 Ether
0x999c4f26e5a029af74165b28c13be5239ba783c0a01d78ebc7a18bfc2aa0ca9a72076145 days 13 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0581cf34d90e63fa939dc5a79bf11cd265990e6c0.01116445306 Ether
0xda34e396f2916f81046379d8b1952128219ae53768e742d42be180854fb53c5d72076135 days 13 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0581cf34d90e63fa939dc5a79bf11cd265990e6c0.0486110482 Ether
0x05a416a1724abe500f57f5be093c994f794655498eb12e1875b482f528a72d8672064875 days 19 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x1ea5d1e83ae0c78283860b7c4bc96864ba8dea950.10103467935 Ether
0xd9b8c9d176fba567a56a2f39d5ac3945a426db046c33b302ae98efa97412bdd772025886 days 18 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760xe222dd2dd012fcac0256b1f3830cc033418b68890.007 Ether
0xd9b8c9d176fba567a56a2f39d5ac3945a426db046c33b302ae98efa97412bdd772025886 days 18 hrs ago0xbbbecd6ee8d2972b4905634177c56ad73f2262760x0c05ae835f26a8d4a89ae80c7a0e5495e5361ca10.0005 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: MyMillions
Compiler Version: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
pragma solidity ^0.4.24;

/*
*__/\\\\____________/\\\\________________/\\\\____________/\\\\________/\\\\\\_____/\\\\\\___________________________________________________
* _\/\\\\\\________/\\\\\\_______________\/\\\\\\________/\\\\\\_______\////\\\____\////\\\___________________________________________________
*  _\/\\\//\\\____/\\\//\\\____/\\\__/\\\_\/\\\//\\\____/\\\//\\\__/\\\____\/\\\_______\/\\\_____/\\\__________________________________________
*   _\/\\\\///\\\/\\\/_\/\\\___\//\\\/\\\__\/\\\\///\\\/\\\/_\/\\\_\///_____\/\\\_______\/\\\____\///______/\\\\\_____/\\/\\\\\\____/\\\\\\\\\\_
*    _\/\\\__\///\\\/___\/\\\____\//\\\\\___\/\\\__\///\\\/___\/\\\__/\\\____\/\\\_______\/\\\_____/\\\___/\\\///\\\__\/\\\////\\\__\/\\\//////__
*     _\/\\\____\///_____\/\\\_____\//\\\____\/\\\____\///_____\/\\\_\/\\\____\/\\\_______\/\\\____\/\\\__/\\\__\//\\\_\/\\\__\//\\\_\/\\\\\\\\\\_
*      _\/\\\_____________\/\\\__/\\_/\\\_____\/\\\_____________\/\\\_\/\\\____\/\\\_______\/\\\____\/\\\_\//\\\__/\\\__\/\\\___\/\\\_\////////\\\_
*       _\/\\\_____________\/\\\_\//\\\\/______\/\\\_____________\/\\\_\/\\\__/\\\\\\\\\__/\\\\\\\\\_\/\\\__\///\\\\\/___\/\\\___\/\\\__/\\\\\\\\\\_
*        _\///______________\///___\////________\///______________\///__\///__\/////////__\/////////__\///_____\/////_____\///____\///__\//////////__
*/

contract Ownable {
    address public owner;
    address public developers = 0x0c05aE835f26a8d4a89Ae80c7A0e5495e5361ca1;
    address public marketers = 0xE222Dd2DD012FCAC0256B1f3830cc033418B6889;
    uint256 public constant developersPercent = 1;
    uint256 public constant marketersPercent = 14;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event DevelopersChanged(address indexed previousDevelopers, address indexed newDevelopers);
    event MarketersChanged(address indexed previousMarketers, address indexed newMarketers);

    function Ownable() public {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    modifier onlyThisOwner(address _owner) {
        require(owner == _owner);
        _;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

    function setDevelopers(address newDevelopers) public onlyOwner {
        require(newDevelopers != address(0));
        emit DevelopersChanged(developers, newDevelopers);
        developers = newDevelopers;
    }

    function setMarketers(address newMarketers) public onlyOwner {
        require(newMarketers != address(0));
        emit MarketersChanged(marketers, newMarketers);
        marketers = newMarketers;
    }

}

library SafeMath {
    function mul(uint256 _a, uint256 _b) internal pure returns(uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (_a == 0) {
            return 0;
        }

        uint256 c = _a * _b;
        require(c / _a == _b);

        return c;
    }

    function div(uint256 _a, uint256 _b) internal pure returns(uint256) {
        require(_b > 0); // Solidity only automatically asserts 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) {
        require(_b <= _a);
        uint256 c = _a - _b;

        return c;
    }

    function add(uint256 _a, uint256 _b) internal pure returns(uint256) {
        uint256 c = _a + _b;
        require(c >= _a);

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns(uint256) {
        require(b != 0);
        return a % b;
    }
}

library Math {
    function max(uint a, uint b) returns (uint) {
        if (a > b) return a;
        else return b;
    }
    function min(uint a, uint b) returns (uint) {
        if (a < b) return a;
        else return b;
    }
}

contract LeaderSystem {
    using SafeMath for uint256;

    event NewLeader(uint256 _indexTable, address _addr, uint256 _index, uint256 _sum);
    event LeadersClear(uint256 _indexTable);

    uint8 public constant leadersCount = 7;
    mapping (uint8 => uint256) public leaderBonuses;

    struct LeadersTable {
        uint256 timestampEnd;              // timestamp of closing table
        uint256 duration;                   // duration compute
        uint256 minSum;                     // min sum of leaders
        address[] leaders;                  // leaders array
        mapping (address => uint256) users; // sum all users
    }

    LeadersTable[] public leaders;

    function setupLeaderSystemModule() internal {
        leaderBonuses[0] = 10;  // 10%
        leaderBonuses[1] = 7;   // 7%
        leaderBonuses[2] = 5;   // 5%
        leaderBonuses[3] = 3;   // 3%
        leaderBonuses[4] = 1;   // 1%
        leaderBonuses[5] = 0;   // 0%
        leaderBonuses[6] = 0;   // 0%

        leaders.push(LeadersTable(now + 86400, 86400, 0, new address[](0)));
        leaders.push(LeadersTable(now + 604800, 604800, 0, new address[](0)));
        leaders.push(LeadersTable(now + 77760000, 77760000, 0, new address[](0)));
        leaders.push(LeadersTable(now + 31536000, 31536000, 0, new address[](0)));
    }

    function _clearLeadersTable(uint256 _indexTable) internal {
        LeadersTable storage _leader = leaders[_indexTable];
        leaders[_indexTable] = LeadersTable(_leader.timestampEnd + _leader.duration, _leader.duration, 0, new address[](0));

        emit LeadersClear(_indexTable);
    }

    function quickSort(LeadersTable storage leader, int left, int right) internal {
        int i = left;
        int j = right;
        if (i == j) return;
        uint pivot = leader.users[leader.leaders[uint(left + (right - left) / 2)]];
        while (i <= j) {
            while (leader.users[leader.leaders[uint(i)]] > pivot) i++;
            while (pivot > leader.users[leader.leaders[uint(j)]]) j--;
            if (i <= j) {
                (leader.leaders[uint(i)], leader.leaders[uint(j)]) = (leader.leaders[uint(j)], leader.leaders[uint(i)]);
                i++;
                j--;
            }
        }
        if (left < j)
            quickSort(leader, left, j);
        if (i < right)
            quickSort(leader, i, right);
    }

    function _updateLeadersTable(uint256 i, address _addr, uint256 _value) internal {
        if (now > leaders[i].timestampEnd) _clearLeadersTable(i);

        LeadersTable storage leader = leaders[i];
        bool isExist = leader.users[_addr] >= leader.minSum;

        uint256 oldSum = leader.users[_addr];
        uint256 newSum = oldSum.add(_value);
        leader.users[_addr] = newSum;

        if (newSum < leader.minSum && leader.leaders.length == leadersCount) return;

        if (!isExist || leader.leaders.length == 0) leader.leaders.push(_addr);

        if (leader.leaders.length > 1) quickSort(leader, 0, int256(leader.leaders.length - 1));
        if (leader.leaders.length > leadersCount) {
            delete leader.leaders[leadersCount - 1];
        }

        leader.minSum = leader.users[leader.leaders[leader.leaders.length - 1]];
    }

    function _updateLeaders(address _addr, uint256 _value) internal {
        for (uint i = 0; i < leaders.length; i++) {
            _updateLeadersTable(i, _addr, _value);
        }
    }

    function getLeadersTableInfo(uint256 _indexTable) public view returns(uint256, uint256, uint256) {
        return (leaders[_indexTable].timestampEnd, leaders[_indexTable].duration, leaders[_indexTable].minSum);
    }

    function getLeaders(uint256 _indexTable) public view returns(address[], uint256[]) {
        LeadersTable storage leader = leaders[_indexTable];
        uint256[] memory balances = new uint256[](leader.leaders.length);

        for (uint i = 0; i < leader.leaders.length; i++) {
            balances[i] = leader.users[leader.leaders[i]];
        }

        return (leader.leaders, balances);
    }

}

contract Factoring {

    enum FactoryType { Wood, Metal, Oil, PreciousMetal }

    mapping (uint8 => uint256) public resourcePrices;

    function setupFactoringModule() internal {
        resourcePrices[uint8(FactoryType.Wood)]         = 0.02315 szabo;
        resourcePrices[uint8(FactoryType.Metal)]        = 0.03646 szabo;
        resourcePrices[uint8(FactoryType.Oil)]          = 0.04244 szabo;
        resourcePrices[uint8(FactoryType.PreciousMetal)]= 0.06655 szabo;
    }

    function getResourcePrice(uint8 _type) public view returns(uint256) {
        return resourcePrices[_type];
    }

}

contract Improvements is Factoring {

    mapping (uint8 => mapping (uint8 => Params)) public levelStack;
    uint8 public constant levelsCount = 7;

    struct Params {
        uint256 price;      // improvements cost
        uint256 ppm;        // products per minute
        uint256 ppmBonus;   // bonus per minute
    }

    function setupImprovementsModule() internal {
        // initial pricess
        levelStack[uint8(FactoryType.Wood)][0]          = Params(0.01 ether, 200, 0);
        levelStack[uint8(FactoryType.Metal)][0]         = Params(0.03 ether, 400, 0);
        levelStack[uint8(FactoryType.Oil)][0]           = Params(0.05 ether, 600, 0);
        levelStack[uint8(FactoryType.PreciousMetal)][0] = Params(0.10 ether, 800, 0);

        // level 1
        levelStack[uint8(FactoryType.Wood)][1]          = Params(0.05 ether, 1200, 120);
        levelStack[uint8(FactoryType.Metal)][1]         = Params(0.09 ether, 1600, 138);
        levelStack[uint8(FactoryType.Oil)][1]           = Params(0.15 ether, 2400, 164);
        levelStack[uint8(FactoryType.PreciousMetal)][1] = Params(0.50 ether, 4800, 418);

        // level 2
        levelStack[uint8(FactoryType.Wood)][2]          = Params(0.12 ether, 3600, 540);
        levelStack[uint8(FactoryType.Metal)][2]         = Params(0.27 ether, 5200, 866);
        levelStack[uint8(FactoryType.Oil)][2]           = Params(0.35 ether, 6600, 1050);
        levelStack[uint8(FactoryType.PreciousMetal)][2] = Params(1.00 ether, 12800, 1670);

        // level 3
        levelStack[uint8(FactoryType.Wood)][3]          = Params(0.30 ether, 9600, 2400);
        levelStack[uint8(FactoryType.Metal)][3]         = Params(0.75 ether, 15200, 3980);
        levelStack[uint8(FactoryType.Oil)][3]           = Params(1.15 ether, 20400, 5099);
        levelStack[uint8(FactoryType.PreciousMetal)][3] = Params(3.50 ether, 40800, 11531);

        // level 4
        levelStack[uint8(FactoryType.Wood)][4]          = Params(0.90 ether, 27600, 9660);
        levelStack[uint8(FactoryType.Metal)][4]         = Params(2.13 ether, 43600, 15568);
        levelStack[uint8(FactoryType.Oil)][4]           = Params(3.00 ether, 56400, 17943);
        levelStack[uint8(FactoryType.PreciousMetal)][4] = Params(7.00 ether, 96800, 31567);

        // level 5
        levelStack[uint8(FactoryType.Wood)][5]          = Params(1.80 ether, 63600, 25440);
        levelStack[uint8(FactoryType.Metal)][5]         = Params(5.31 ether, 114400, 49022);
        levelStack[uint8(FactoryType.Oil)][5]           = Params(7.30 ether, 144000, 55629);
        levelStack[uint8(FactoryType.PreciousMetal)][5] = Params(17.10 ether, 233600, 96492);

        // level 6
        levelStack[uint8(FactoryType.Wood)][6]          = Params(5.40 ether, 171600, 85800);
        levelStack[uint8(FactoryType.Metal)][6]         = Params(13.89 ether, 298400, 158120);
        levelStack[uint8(FactoryType.Oil)][6]           = Params(24.45 ether, 437400, 218674);
        levelStack[uint8(FactoryType.PreciousMetal)][6] = Params(55.50 ether, 677600, 353545);
    }

    function getPrice(FactoryType _type, uint8 _level) public view returns(uint256) {
        return levelStack[uint8(_type)][_level].price;
    }

    function getProductsPerMinute(FactoryType _type, uint8 _level) public view returns(uint256) {
        return levelStack[uint8(_type)][_level].ppm;
    }

    function getBonusPerMinute(FactoryType _type, uint8 _level) public view returns(uint256) {
        return levelStack[uint8(_type)][_level].ppmBonus;
    }
}

contract ReferralsSystem {

    struct ReferralGroup {
        uint256 minSum;
        uint256 maxSum;
        uint16[] percents;
    }

    uint256 public constant minSumReferral = 0.01 ether;
    uint256 public constant referralLevelsGroups = 3;
    uint256 public constant referralLevelsCount = 5;
    ReferralGroup[] public referralGroups;

    function setupReferralsSystemModule() internal {
        ReferralGroup memory refGroupFirsty = ReferralGroup(minSumReferral, 10 ether - 1 wei, new uint16[](referralLevelsCount));
        refGroupFirsty.percents[0] = 300;   // 3%
        refGroupFirsty.percents[1] = 75;    // 0.75%
        refGroupFirsty.percents[2] = 60;    // 0.6%
        refGroupFirsty.percents[3] = 40;    // 0.4%
        refGroupFirsty.percents[4] = 25;    // 0.25%
        referralGroups.push(refGroupFirsty);

        ReferralGroup memory refGroupLoyalty = ReferralGroup(10 ether, 50 ether - 1 wei, new uint16[](referralLevelsCount));
        refGroupLoyalty.percents[0] = 500;  // 5%
        refGroupLoyalty.percents[1] = 200;  // 2%
        refGroupLoyalty.percents[2] = 150;  // 1.5%
        refGroupLoyalty.percents[3] = 100;  // 1%
        refGroupLoyalty.percents[4] = 50;   // 0.5%
        referralGroups.push(refGroupLoyalty);

        ReferralGroup memory refGroupUltraPremium = ReferralGroup(50 ether, 2**256 - 1, new uint16[](referralLevelsCount));
        refGroupUltraPremium.percents[0] = 700; // 7%
        refGroupUltraPremium.percents[1] = 300; // 3%
        refGroupUltraPremium.percents[2] = 250; // 2.5%
        refGroupUltraPremium.percents[3] = 150; // 1.5%
        refGroupUltraPremium.percents[4] = 100; // 1%
        referralGroups.push(refGroupUltraPremium);
    }

    function getReferralPercents(uint256 _sum) public view returns(uint16[]) {
        for (uint i = 0; i < referralLevelsGroups; i++) {
            ReferralGroup memory group = referralGroups[i];
            if (_sum >= group.minSum && _sum <= group.maxSum) return group.percents;
        }
    }

    function getReferralPercentsByIndex(uint256 _index) public view returns(uint16[]) {
        return referralGroups[_index].percents;
    }

}

/// @title Smart-contract of MyMillions ecosystem
/// @author Shagaleev Alexey
contract MyMillions is Ownable, Improvements, ReferralsSystem, LeaderSystem {
    using SafeMath for uint256;

    event CreateUser(uint256 _index, address _address, uint256 _balance);
    event ReferralRegister(uint256 _refferalId, uint256 _userId);
    event ReferrerDistribute(uint256 _userId, uint256 _referrerId, uint256 _sum);
    event Deposit(uint256 _userId, uint256 _value);
    event PaymentProceed(uint256 _userId, uint256 _factoryId, FactoryType _factoryType, uint256 _price);
    event CollectResources(FactoryType _type, uint256 _resources);
    event LevelUp(uint256 _factoryId, uint8 _newLevel, uint256 _userId, uint256 _price);
    event Sell(uint256 _userId, uint8 _type, uint256 _sum);

    bool isSetted = false;
    uint256 public minSumDeposit = 0.01 ether;

    struct User {
        address addr;                                   // user address
        uint256 balance;                                // balance of account
        uint256 totalPay;                               // sum of all input pay
        uint256 referrersReceived;                      // total deposit from referrals
        uint256[] resources;                            // collected resources
        uint256[] referrersByLevel;                     // referrers user ids
        mapping (uint8 => uint256[]) referralsByLevel;  // all referrals user ids
    }

    User[] public users;
    mapping (address => uint256) public addressToUser;
    uint256 public totalUsers = 0;
    uint256 public totalDeposit = 0;

    struct Factory {
        FactoryType ftype;      // factory type
        uint8 level;            // factory level
        uint256 collected_at;   // timestamp updated
    }

    Factory[] public factories;
    mapping (uint256 => uint256) public factoryToUser;
    mapping (uint256 => uint256[]) public userToFactories;

    modifier onlyExistingUser() {
        require(addressToUser[msg.sender] != 0);
        _;
    }
    modifier onlyNotExistingUser() {
        require(addressToUser[msg.sender] == 0);
        _;
    }

    constructor() public payable {
        users.push(User(0x0, 0, 0, 0, new uint256[](4), new uint256[](referralLevelsCount)));  // for find by addressToUser map
    }

    function setup() public onlyOwner {
        require(isSetted == false);
        isSetted = true;

        setupFactoringModule();
        setupImprovementsModule();
        setupReferralsSystemModule();
        setupLeaderSystemModule();
    }

    // @dev register for only new users with min pay
    /// @return id of new user
    function register() public payable onlyNotExistingUser returns(uint256) {
        require(addressToUser[msg.sender] == 0);

        uint256 index = users.push(User(msg.sender, msg.value, 0, 0, new uint256[](4), new uint256[](referralLevelsCount))) - 1;
        addressToUser[msg.sender] = index;
        totalUsers++;

        emit CreateUser(index, msg.sender, msg.value);
        return index;
    }


    /// @notice just registry by referral link
    /// @param _refId the ID of the user who gets the affiliate fee
    /// @return id of new user
    function registerWithRefID(uint256 _refId) public payable onlyNotExistingUser returns(uint256) {
        require(_refId < users.length);

        uint256 index = register();
        _updateReferrals(index, _refId);

        emit ReferralRegister(_refId, index);
        return index;
    }

    /// @notice update referrersByLevel and referralsByLevel of new user
    /// @param _newUserId the ID of the new user
    /// @param _refUserId the ID of the user who gets the affiliate fee
    function _updateReferrals(uint256 _newUserId, uint256 _refUserId) private {
        if (_newUserId == _refUserId) return;
        users[_newUserId].referrersByLevel[0] = _refUserId;

        for (uint i = 1; i < referralLevelsCount; i++) {
            uint256 _refId = users[_refUserId].referrersByLevel[i - 1];
            users[_newUserId].referrersByLevel[i] = _refId;
            users[_refId].referralsByLevel[uint8(i)].push(_newUserId);
        }

        users[_refUserId].referralsByLevel[0].push(_newUserId);
    }

    /// @notice distribute value of tx to referrers of user
    /// @param _userId the ID of the user who gets the affiliate fee
    /// @param _sum value of ethereum for distribute to referrers of user
    function _distributeReferrers(uint256 _userId, uint256 _sum) private {
        uint256[] memory referrers = users[_userId].referrersByLevel;

        for (uint i = 0; i < referralLevelsCount; i++) {
            uint256 referrerId = referrers[i];

            if (referrers[i] == 0) break;
            if (users[referrerId].totalPay < minSumReferral) continue;

            uint16[] memory percents = getReferralPercents(users[referrerId].totalPay);
            uint256 value = _sum * percents[i] / 10000;
            users[referrerId].balance = users[referrerId].balance.add(value);
            users[referrerId].referrersReceived = users[referrerId].referrersReceived.add(value);

            emit ReferrerDistribute(_userId, referrerId, value);
        }
    }

    /// @notice deposit ethereum for user
    /// @return balance value of user
    function deposit() public payable onlyExistingUser returns(uint256) {
        require(msg.value > minSumDeposit, "Deposit does not enough");
        uint256 userId = addressToUser[msg.sender];
        users[userId].balance = users[userId].balance.add(msg.value);
        totalDeposit += msg.value;

        // distribute
        _distributeInvestment(msg.value);
        _updateLeaders(msg.sender, msg.value);

        emit Deposit(userId, msg.value);
        return users[userId].balance;
    }

    /// @notice getter for balance of user
    /// @return balance value of user
    function balanceOf() public view returns (uint256) {
        return users[addressToUser[msg.sender]].balance;
    }

    /// @notice getter for resources of user
    /// @return resources value of user
    function resoucesOf() public view returns (uint256[]) {
        return users[addressToUser[msg.sender]].resources;
    }

    /// @notice getter for referrers of user
    /// @return array of referrers id
    function referrersOf() public view returns (uint256[]) {
        return users[addressToUser[msg.sender]].referrersByLevel;
    }

    /// @notice getter for referrals of user by level
    /// @param _level level of referrals user needed
    /// @return array of referrals id
    function referralsOf(uint8 _level) public view returns (uint256[]) {
        return users[addressToUser[msg.sender]].referralsByLevel[uint8(_level)];
    }

    /// @notice getter for extended information of user
    /// @param _userId id of user needed
    /// @return address of user
    /// @return balance of user
    /// @return totalPay of user
    /// @return array of resources user
    /// @return array of referrers id user
    function userInfo(uint256 _userId) public view returns(address, uint256, uint256, uint256, uint256[], uint256[]) {
        User memory user = users[_userId];
        return (user.addr, user.balance, user.totalPay, user.referrersReceived, user.resources, user.referrersByLevel);
    }

    /// @notice mechanics of buying any factory
    /// @param _type type of factory needed
    /// @return id of new factory
    function buyFactory(FactoryType _type) public payable onlyExistingUser returns (uint256) {
        uint256 userId = addressToUser[msg.sender];

        // if user not registered
        if (addressToUser[msg.sender] == 0)
            userId = register();

        return _paymentProceed(userId, Factory(_type, 0, now));
    }

    /// @notice get factories of user
    /// @param _user_id id of user
    /// @return array of id factory
    function getFactories(uint256 _user_id) public view returns (uint256[]) {
        return userToFactories[_user_id];
    }

    /// @notice buy wood factory
    /// @dev wrapper over buyFactory for FactoryType.Wood
    /// @return id of new factory
    function buyWoodFactory() public payable returns (uint256) {
        return buyFactory(FactoryType.Wood);
    }

    /// @notice buy wood factory
    /// @dev wrapper over buyFactory for FactoryType.Metal
    /// @return id of new factory
    function buyMetalFactory() public payable returns (uint256) {
        return buyFactory(FactoryType.Metal);
    }

    /// @notice buy wood factory
    /// @dev wrapper over buyFactory for FactoryType.Oil
    /// @return id of new factory
    function buyOilFactory() public payable returns (uint256) {
        return buyFactory(FactoryType.Oil);
    }

    /// @notice buy wood factory
    /// @dev wrapper over buyFactory for FactoryType.PreciousMetal
    /// @return id of new factory
    function buyPreciousMetal() public payable returns (uint256) {
        return buyFactory(FactoryType.PreciousMetal);
    }

    /// @notice distribute investment when user buy anything
    /// @param _value value of investment
    function _distributeInvestment(uint256 _value) private {
        developers.transfer(msg.value * developersPercent / 100);
        marketers.transfer(msg.value * marketersPercent / 100);
    }

    /// @notice function of proceed payment
    /// @dev for only buy new factory
    /// @return id of new factory
    function _paymentProceed(uint256 _userId, Factory _factory) private returns(uint256) {
        User storage user = users[_userId];

        require(_checkPayment(user, _factory.ftype, _factory.level));

        uint256 price = getPrice(_factory.ftype, 0);
        user.balance = user.balance.add(msg.value);
        user.balance = user.balance.sub(price);
        user.totalPay = user.totalPay.add(price);
        totalDeposit += msg.value;

        uint256 index = factories.push(_factory) - 1;
        factoryToUser[index] = _userId;
        userToFactories[_userId].push(index);

        // distribute
        _distributeInvestment(msg.value);
        _distributeReferrers(_userId, price);
        _updateLeaders(msg.sender, msg.value);

        emit PaymentProceed(_userId, index, _factory.ftype, price);
        return index;
    }

    /// @notice check available investment
    /// @return true if user does enough balance for investment
    function _checkPayment(User _user, FactoryType _type, uint8 _level) private view returns(bool) {
        uint256 totalBalance = _user.balance.add(msg.value);

        if (totalBalance < getPrice(_type, _level)) return false;

        return true;
    }

    /// @notice level up for factory
    /// @param _factoryId id of factory
    function levelUp(uint256 _factoryId) public payable onlyExistingUser {
        Factory storage factory = factories[_factoryId];
        uint256 price = getPrice(factory.ftype, factory.level + 1);

        uint256 userId = addressToUser[msg.sender];
        User storage user = users[userId];

        require(_checkPayment(user, factory.ftype, factory.level + 1));

        // payment
        user.balance = user.balance.add(msg.value);
        user.balance = user.balance.sub(price);
        user.totalPay = user.totalPay.add(price);
        totalDeposit += msg.value;

        _distributeInvestment(msg.value);
        _distributeReferrers(userId, price);

        // collect
        _collectResource(factory, user);
        factory.level++;

        _updateLeaders(msg.sender, msg.value);

        emit LevelUp(_factoryId, factory.level, userId, price);
    }

    /// @notice sell resources of user with type
    /// @param _type type of resources
    /// @return sum of sell
    function sellResources(uint8 _type) public onlyExistingUser returns(uint256) {
        uint256 userId = addressToUser[msg.sender];
        uint256 sum = Math.min(users[userId].resources[_type] * getResourcePrice(_type), address(this).balance);
        users[userId].resources[_type] = 0;

        msg.sender.transfer(sum);

        emit Sell(userId, _type, sum);
        return sum;
    }

    /// @notice function for compute worktime factory
    /// @param _collected_at timestamp of start
    /// @return duration minutes
    function worktimeAtDate(uint256 _collected_at) public view returns(uint256) {
        return (now - _collected_at) / 60;
    }

    /// @notice function for compute duration work factory
    /// @param _factoryId id of factory
    /// @return timestamp of duration
    function worktime(uint256 _factoryId) public view returns(uint256) {
        return worktimeAtDate(factories[_factoryId].collected_at);
    }

    /// @notice function for compute resource factory at time
    /// @param _type type of factory
    /// @param _level level of factory
    /// @param _collected_at timestamp for collect
    /// @return count of resources
    function _resourcesAtTime(FactoryType _type, uint8 _level, uint256 _collected_at) public view returns(uint256) {
        return worktimeAtDate(_collected_at) * (getProductsPerMinute(_type, _level) + getBonusPerMinute(_type, _level)) / 100;
    }

    /// @notice function for compute resource factory at time
    /// @dev wrapper over _resourcesAtTime
    /// @param _factoryId id of factory
    /// @return count of resources
    function resourcesAtTime(uint256 _factoryId) public view returns(uint256) {
        Factory storage factory = factories[_factoryId];
        return _resourcesAtTime(factory.ftype, factory.level, factory.collected_at);
    }

    /// @notice function for collect resource
    /// @param _factory factory object
    /// @param _user user object
    /// @return count of resources
    function _collectResource(Factory storage _factory, User storage _user) internal returns(uint256) {
        uint256 resources = _resourcesAtTime(_factory.ftype, _factory.level, _factory.collected_at);
        _user.resources[uint8(_factory.ftype)] = _user.resources[uint8(_factory.ftype)].add(resources);
        _factory.collected_at = now;

        emit CollectResources(_factory.ftype, resources);
        return resources;
    }

    /// @notice function for collect all resources from all factories
    /// @dev wrapper over _collectResource
    function collectResources() public onlyExistingUser {
        uint256 index = addressToUser[msg.sender];
        User storage user = users[index];
        uint256[] storage factoriesIds = userToFactories[addressToUser[msg.sender]];

        for (uint256 i = 0; i < factoriesIds.length; i++) {
            _collectResource(factories[factoriesIds[i]], user);
        }
    }

}

Contract ABI
[{"constant":true,"inputs":[{"name":"","type":"uint8"}],"name":"leaderBonuses","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_factoryId","type":"uint256"}],"name":"levelUp","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"marketersPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"register","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_collected_at","type":"uint256"}],"name":"worktimeAtDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buyOilFactory","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"developers","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"users","outputs":[{"name":"addr","type":"address"},{"name":"balance","type":"uint256"},{"name":"totalPay","type":"uint256"},{"name":"referrersReceived","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"resoucesOf","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newMarketers","type":"address"}],"name":"setMarketers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"developersPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"collectResources","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_indexTable","type":"uint256"}],"name":"getLeadersTableInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"factoryToUser","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"marketers","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_type","type":"uint8"}],"name":"getResourcePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_indexTable","type":"uint256"}],"name":"getLeaders","outputs":[{"name":"","type":"address[]"},{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_userId","type":"uint256"}],"name":"userInfo","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256[]"},{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"getReferralPercentsByIndex","outputs":[{"name":"","type":"uint16[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_user_id","type":"uint256"}],"name":"getFactories","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minSumReferral","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buyWoodFactory","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_type","type":"uint8"},{"name":"_level","type":"uint8"}],"name":"getPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"factories","outputs":[{"name":"ftype","type":"uint8"},{"name":"level","type":"uint8"},{"name":"collected_at","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_type","type":"uint8"},{"name":"_level","type":"uint8"}],"name":"getBonusPerMinute","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_type","type":"uint8"},{"name":"_level","type":"uint8"},{"name":"_collected_at","type":"uint256"}],"name":"_resourcesAtTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"levelsCount","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newDevelopers","type":"address"}],"name":"setDevelopers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_sum","type":"uint256"}],"name":"getReferralPercents","outputs":[{"name":"","type":"uint16[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"leadersCount","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_refId","type":"uint256"}],"name":"registerWithRefID","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"referralGroups","outputs":[{"name":"minSum","type":"uint256"},{"name":"maxSum","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referrersOf","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_type","type":"uint8"},{"name":"_level","type":"uint8"}],"name":"getProductsPerMinute","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buyMetalFactory","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"leaders","outputs":[{"name":"timestampEnd","type":"uint256"},{"name":"duration","type":"uint256"},{"name":"minSum","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_type","type":"uint8"}],"name":"sellResources","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"setup","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalUsers","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_factoryId","type":"uint256"}],"name":"worktime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint8"}],"name":"resourcePrices","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referralLevelsGroups","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint8"},{"name":"","type":"uint8"}],"name":"levelStack","outputs":[{"name":"price","type":"uint256"},{"name":"ppm","type":"uint256"},{"name":"ppmBonus","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_level","type":"uint8"}],"name":"referralsOf","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_type","type":"uint8"}],"name":"buyFactory","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"buyPreciousMetal","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"addressToUser","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalDeposit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minSumDeposit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_factoryId","type":"uint256"}],"name":"resourcesAtTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referralLevelsCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"userToFactories","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":true,"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_index","type":"uint256"},{"indexed":false,"name":"_address","type":"address"},{"indexed":false,"name":"_balance","type":"uint256"}],"name":"CreateUser","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_refferalId","type":"uint256"},{"indexed":false,"name":"_userId","type":"uint256"}],"name":"ReferralRegister","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_userId","type":"uint256"},{"indexed":false,"name":"_referrerId","type":"uint256"},{"indexed":false,"name":"_sum","type":"uint256"}],"name":"ReferrerDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_userId","type":"uint256"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_userId","type":"uint256"},{"indexed":false,"name":"_factoryId","type":"uint256"},{"indexed":false,"name":"_factoryType","type":"uint8"},{"indexed":false,"name":"_price","type":"uint256"}],"name":"PaymentProceed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_type","type":"uint8"},{"indexed":false,"name":"_resources","type":"uint256"}],"name":"CollectResources","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_factoryId","type":"uint256"},{"indexed":false,"name":"_newLevel","type":"uint8"},{"indexed":false,"name":"_userId","type":"uint256"},{"indexed":false,"name":"_price","type":"uint256"}],"name":"LevelUp","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_userId","type":"uint256"},{"indexed":false,"name":"_type","type":"uint8"},{"indexed":false,"name":"_sum","type":"uint256"}],"name":"Sell","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_indexTable","type":"uint256"},{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"_index","type":"uint256"},{"indexed":false,"name":"_sum","type":"uint256"}],"name":"NewLeader","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_indexTable","type":"uint256"}],"name":"LeadersClear","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousDevelopers","type":"address"},{"indexed":true,"name":"newDevelopers","type":"address"}],"name":"DevelopersChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousMarketers","type":"address"},{"indexed":true,"name":"newMarketers","type":"address"}],"name":"MarketersChanged","type":"event"}]

Contract Creation Code
60018054600160a060020a0319908116730c05ae835f26a8d4a89ae80c7a0e5495e5361ca11790915560028054821673e222dd2dd012fcac0256b1f3830cc033418b68891790556008805460ff19169055662386f26fc100006009556000600c819055600d819055805490911633178155608081815260a082905260c082905260e09190915260046101408181526101e0604052600a929161010091906101608480388339505050815260408051600580825260c08201909252602092830192909190820160a080388339505050905281546001808201808555600094855260209485902084516007909402018054600160a060020a031916600160a060020a039094169390931783558385015191830191909155604083015160028301556060830151600383015560808301518051919462000145926004850192909101906200016d565b5060a08201518051620001639160058401916020909101906200016d565b50505050620001dd565b828054828255906000526020600020908101928215620001ab579160200282015b82811115620001ab5782518255916020019190600101906200018e565b50620001b9929150620001bd565b5090565b620001da91905b80821115620001b95760008155600101620001c4565b90565b61499380620001ed6000396000f30060806040526004361061029d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302ceb8b381146102a25780630ce90ec2146102cf5780630f3fc087146102dc5780631aa3a008146102f15780631cdb86a3146102f9578063208d5e9f146103115780632bc31ca414610319578063365b98b21461034a5780633887dae91461039257806339347d52146103f75780633a033915146104185780633bbfe1411461042d5780633eb1137e146104425780633fc282ef1461047857806342583c02146104905780634bd51822146104a55780634db2a711146104c057806351d70bc4146105715780635875455e146106505780635a2587f4146106685780635b9280f6146106805780635ee6e3a21461069557806360e5ef3a1461069d578063672383c4146106be57806368ec45121461070e578063715b3ec91461072f578063722713f71461075357806383c6a62b146107685780638ab476bf146107935780638da5cb5b146107b457806391ddb16d146107c9578063930efb711461076857806393d1c8ad146107e157806397ff49e7146107ec578063994678ea1461081d5780639a08b33814610832578063a16e8b2014610853578063a36e65771461085b578063af6a1a9a14610873578063ba0bba401461088e578063bff1f9e1146108a3578063c4e26656146108b8578063d0e30db0146108d0578063d9fe8286146108d8578063da0aedb1146108f3578063e1fc887e14610908578063e5d7bd4f14610929578063e8364cde14610944578063eae84a3014610952578063edf538861461095a578063f2fde38b1461097b578063f6153ccd1461099c578063f6d90974146109b1578063f7ad68ed146109c6578063f93745f0146109de578063fc412987146109f3575b600080fd5b3480156102ae57600080fd5b506102bd60ff60043516610a0e565b60408051918252519081900360200190f35b6102da600435610a20565b005b3480156102e857600080fd5b506102bd610cb2565b6102bd610cb7565b34801561030557600080fd5b506102bd600435610e5e565b6102bd610e69565b34801561032557600080fd5b5061032e610e7b565b60408051600160a060020a039092168252519081900360200190f35b34801561035657600080fd5b50610362600435610e8a565b60408051600160a060020a0390951685526020850193909352838301919091526060830152519081900360800190f35b34801561039e57600080fd5b506103a7610ecc565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103e35781810151838201526020016103cb565b505050509050019250505060405180910390f35b34801561040357600080fd5b506102da600160a060020a0360043516610f51565b34801561042457600080fd5b506102bd610fd9565b34801561043957600080fd5b506102da610fde565b34801561044e57600080fd5b5061045a6004356110a5565b60408051938452602084019290925282820152519081900360600190f35b34801561048457600080fd5b506102bd60043561111a565b34801561049c57600080fd5b5061032e61112c565b3480156104b157600080fd5b506102bd60ff6004351661113b565b3480156104cc57600080fd5b506104d8600435611150565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561051c578181015183820152602001610504565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561055b578181015183820152602001610543565b5050505090500194505050505060405180910390f35b34801561057d57600080fd5b50610589600435611286565b6040518087600160a060020a0316600160a060020a031681526020018681526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156105f75781810151838201526020016105df565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561063657818101518382015260200161061e565b505050509050019850505050505050505060405180910390f35b34801561065c57600080fd5b506103a76004356113cd565b34801561067457600080fd5b506103a760043561146d565b34801561068c57600080fd5b506102bd6114ce565b6102bd6114d9565b3480156106a957600080fd5b506102bd60ff600435811690602435166114e5565b3480156106ca57600080fd5b506106d6600435611523565b604051808460038111156106e657fe5b60ff1681526020018360ff1660ff168152602001828152602001935050505060405180910390f35b34801561071a57600080fd5b506102bd60ff6004358116906024351661155d565b34801561073b57600080fd5b506102bd60ff6004358116906024351660443561159e565b34801561075f57600080fd5b506102bd6115d3565b34801561077457600080fd5b5061077d611609565b6040805160ff9092168252519081900360200190f35b34801561079f57600080fd5b506102da600160a060020a036004351661160e565b3480156107c057600080fd5b5061032e611696565b3480156107d557600080fd5b506103a76004356116a5565b6102bd6004356117b8565b3480156107f857600080fd5b50610804600435611837565b6040805192835260208301919091528051918290030190f35b34801561082957600080fd5b506103a7611863565b34801561083e57600080fd5b506102bd60ff600435811690602435166118e6565b6102bd611927565b34801561086757600080fd5b5061045a600435611933565b34801561087f57600080fd5b506102bd60ff60043516611964565b34801561089a57600080fd5b506102da611b39565b3480156108af57600080fd5b506102bd611b8f565b3480156108c457600080fd5b506102bd600435611b95565b6102bd611bc6565b3480156108e457600080fd5b506102bd60ff60043516611d38565b3480156108ff57600080fd5b506102bd611d4a565b34801561091457600080fd5b5061045a60ff60043581169060243516611d4f565b34801561093557600080fd5b506103a760ff60043516611d7b565b6102bd60ff60043516611e0b565b6102bd611e83565b34801561096657600080fd5b506102bd600160a060020a0360043516611e8f565b34801561098757600080fd5b506102da600160a060020a0360043516611ea1565b3480156109a857600080fd5b506102bd611f28565b3480156109bd57600080fd5b506102bd611f2e565b3480156109d257600080fd5b506102bd600435611f34565b3480156109ea57600080fd5b506102bd611f76565b3480156109ff57600080fd5b506102bd600435602435611f7b565b60066020526000908152604090205481565b336000908152600b60205260408120548190819081901515610a4157600080fd5b600e805486908110610a4f57fe5b600091825260209091206002909102018054909450610a7c9060ff808216916101009004166001016114e5565b336000908152600b6020526040902054600a80549295509093509083908110610aa157fe5b60009182526020918290206040805160c08101825260079093029091018054600160a060020a0316835260018101548385015260028101548383015260038101546060840152600481018054835181870281018701909452808452919550610bb59486936080860193909291830182828015610b3c57602002820191906000526020600020905b815481526020019060010190808311610b28575b5050505050815260200160058201805480602002602001604051908101604052809291908181526020018280548015610b9457602002820191906000526020600020905b815481526020019060010190808311610b80575b505050919092525050865460ff808216925061010090910416600101611fab565b1515610bc057600080fd5b6001810154610bd5903463ffffffff611fee16565b60018201819055610bec908463ffffffff61200016565b60018201556002810154610c06908463ffffffff611fee16565b6002820155600d805434908101909155610c1f90612017565b610c298284612097565b610c3384826122cc565b50835460ff61010080830482166001019091160261ff0019909116178455610c5b33346123c6565b83546040805187815261010090920460ff16602083015281810184905260608201859052517fc2947d4d847973e25404afd7931f9ffeb6d01890ee4578d3c65041c4276bb667916080908290030190a15050505050565b600e81565b336000908152600b6020526040812054819015610cd357600080fd5b336000908152600b602052604090205415610ced57600080fd5b6040805160c081018252338152346020820152600081830181905260608201528151600480825260a08201909352600192600a92916080830191816020016020820280388339505050815260408051600580825260c08201909252602092830192909190820160a080388339505050905281546001808201808555600094855260209485902084516007909402018054600160a060020a031916600160a060020a0390941693909317835583850151918301919091556040830151600283015560608301516003830155608083015180519194610dd29260048501929091019061475b565b5060a08201518051610dee91600584019160209091019061475b565b5050336000818152600b60209081526040918290209590940394859055600c805460010190558051858152938401919091523483820152519293507f4f936a96f51e2c2ffe18b6b6f1e4387c6bf1cddeb935d58cab653eb22ead430a9291829003606001919050a18091505b5090565b603c42919091030490565b6000610e756002611e0b565b90505b90565b600154600160a060020a031681565b600a805482908110610e9857fe5b60009182526020909120600790910201805460018201546002830154600390930154600160a060020a039092169350919084565b336000908152600b6020526040902054600a8054606092908110610eec57fe5b9060005260206000209060070201600401805480602002602001604051908101604052809291908181526020018280548015610f4757602002820191906000526020600020905b815481526020019060010190808311610f33575b5050505050905090565b600054600160a060020a03163314610f6857600080fd5b600160a060020a0381161515610f7d57600080fd5b600254604051600160a060020a038084169216907f5650bc3484c51d95070941164495fa61356f571133f65393510e90fa461118fc90600090a360028054600160a060020a031916600160a060020a0392909216919091179055565b600181565b336000908152600b60205260408120548190819081901515610fff57600080fd5b336000908152600b6020526040902054600a8054919550908590811061102157fe5b60009182526020808320338452600b8252604080852054855260109092529083206007909202019450925090505b815481101561109f57611096600e838381548110151561106b57fe5b906000526020600020015481548110151561108257fe5b9060005260206000209060020201846122cc565b5060010161104f565b50505050565b60008060006007848154811015156110b957fe5b9060005260206000209060050201600001546007858154811015156110da57fe5b9060005260206000209060050201600101546007868154811015156110fb57fe5b9060005260206000209060050201600201549250925092509193909250565b600f6020526000908152604090205481565b600254600160a060020a031681565b60ff1660009081526003602052604090205490565b60608060006060600060078681548110151561116857fe5b9060005260206000209060050201925082600301805490506040519080825280602002602001820160405280156111a9578160200160208202803883390190505b509150600090505b60038301548110156112195782600401600084600301838154811015156111d457fe5b6000918252602080832090910154600160a060020a03168352820192909252604001902054825183908390811061120757fe5b602090810290910101526001016111b1565b82600301828180548060200260200160405190810160405280929190818152602001828054801561127357602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611255575b5050505050915094509450505050915091565b6000806000806060806112976147a2565b600a8054899081106112a557fe5b60009182526020918290206040805160c08101825260079093029091018054600160a060020a03168352600181015483850152600281015483830152600381015460608401526004810180548351818702810187019094528084529394919360808601939283018282801561133957602002820191906000526020600020905b815481526020019060010190808311611325575b505050505081526020016005820180548060200260200160405190810160405280929190818152602001828054801561139157602002820191906000526020600020905b81548152602001906001019080831161137d575b5050509190925250508151602083015160408401516060850151608086015160a090960151939e929d50909b5099509297509550909350505050565b60606005828154811015156113de57fe5b906000526020600020906003020160020180548060200260200160405190810160405280929190818152602001828054801561146157602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116114285790505b50505050509050919050565b60008181526010602090815260409182902080548351818402810184019094528084526060939283018282801561146157602002820191906000526020600020905b8154815260200190600101908083116114af5750505050509050919050565b662386f26fc1000081565b6000610e756000611e0b565b6000600460008460038111156114f757fe5b60ff90811682526020808301939093526040918201600090812091861681529252902054905092915050565b600e80548290811061153157fe5b60009182526020909120600290910201805460019091015460ff80831693506101009092049091169083565b60006004600084600381111561156f57fe5b60ff90811682526020808301939093526040918201600090812091861681529252902060020154905092915050565b600060646115ac858561155d565b6115b686866118e6565b016115c084610e5e565b028115156115ca57fe5b04949350505050565b336000908152600b6020526040812054600a805490919081106115f257fe5b906000526020600020906007020160010154905090565b600781565b600054600160a060020a0316331461162557600080fd5b600160a060020a038116151561163a57600080fd5b600154604051600160a060020a038084169216907f7d28dbfe9b3b0a2416f60ca7bc6f6cd19d476b00cec731d9c37ac02a09613d7390600090a360018054600160a060020a031916600160a060020a0392909216919091179055565b600054600160a060020a031681565b606060006116b16147e2565b600091505b60038210156117b15760058054839081106116cd57fe5b90600052602060002090600302016060604051908101604052908160008201548152602001600182015481526020016002820180548060200260200160405190810160405280929190818152602001828054801561177257602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116117395790505b505050505081525050905080600001518410158015611795575080602001518411155b156117a657806040015192506117b1565b6001909101906116b6565b5050919050565b336000908152600b60205260408120548190156117d457600080fd5b600a5483106117e257600080fd5b6117ea610cb7565b90506117f681846123eb565b604080518481526020810183905281517fb900dc1fba63117f0809180dec6da68c5bc269d0d8338586b2d57235a0671c13929181900390910190a192915050565b600580548290811061184557fe5b60009182526020909120600390910201805460019091015490915082565b336000908152600b6020526040902054600a805460609290811061188357fe5b9060005260206000209060070201600501805480602002602001604051908101604052809291908181526020018280548015610f475760200282019190600052602060002090815481526020019060010190808311610f33575050505050905090565b6000600460008460038111156118f857fe5b60ff90811682526020808301939093526040918201600090812091861681529252902060010154905092915050565b6000610e756001611e0b565b600780548290811061194157fe5b600091825260209091206005909102018054600182015460029092015490925083565b336000908152600b602052604081205481908190151561198357600080fd5b336000908152600b60205260409020549150739a103a76447a747194ec6439de5e2e6eac597db1637ae2b5c76119b88661113b565b600a8054869081106119c657fe5b90600052602060002090600702016004018760ff168154811015156119e757fe5b90600052602060002001540230600160a060020a0316316040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b158015611a5557600080fd5b505af4158015611a69573d6000803e3d6000fd5b505050506040513d6020811015611a7f57600080fd5b5051600a805491925060009184908110611a9557fe5b90600052602060002090600702016004018560ff16815481101515611ab657fe5b6000918252602082200191909155604051339183156108fc02918491818181858888f19350505050158015611aef573d6000803e3d6000fd5b506040805183815260ff8616602082015280820183905290517fdef385fd9bc4ede5eab81b236ae5ae807f524e23733877f374ab4c709179a2d99181900360600190a19392505050565b600054600160a060020a03163314611b5057600080fd5b60085460ff1615611b6057600080fd5b6008805460ff19166001179055611b7561254b565b611b7d6125f7565b611b856136bc565b611b8d613bed565b565b600c5481565b6000611bc0600e83815481101515611ba957fe5b906000526020600020906002020160010154610e5e565b92915050565b336000908152600b602052604081205481901515611be357600080fd5b6009543411611c5357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4465706f73697420646f6573206e6f7420656e6f756768000000000000000000604482015290519081900360640190fd5b50336000908152600b6020526040902054600a8054611c9891349184908110611c7857fe5b906000526020600020906007020160010154611fee90919063ffffffff16565b600a805483908110611ca657fe5b6000918252602090912060016007909202010155600d805434908101909155611cce90612017565b611cd833346123c6565b6040805182815234602082015281517fa3af609bf46297028ce551832669030f9effef2b02606d02cbbcc40fe6b47c55929181900390910190a1600a805482908110611d2057fe5b90600052602060002090600702016001015491505090565b60036020526000908152604090205481565b600381565b600460209081526000928352604080842090915290825290208054600182015460029092015490919083565b336000908152600b6020526040902054600a8054606092908110611d9b57fe5b6000918252602080832060ff8616845260066007909302019190910181526040918290208054835181840281018401909452808452909183018282801561146157602002820191906000526020600020908154815260200190600101908083116114af5750505050509050919050565b336000908152600b602052604081205481901515611e2857600080fd5b50336000908152600b6020526040902054801515611e4b57611e48610cb7565b90505b611e7c81606060405190810160405280866003811115611e6757fe5b81526000602082015242604090910152613fea565b9392505050565b6000610e756003611e0b565b600b6020526000908152604090205481565b600054600160a060020a03163314611eb857600080fd5b600160a060020a0381161515611ecd57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b600d5481565b60095481565b600080600e83815481101515611f4657fe5b6000918252602090912060029091020180546001820154919250611e7c9160ff808316926101009004169061159e565b600581565b601060205281600052604060002081815481101515611f9657fe5b90600052602060002001600091509150505481565b600080611fc5348660200151611fee90919063ffffffff16565b9050611fd184846114e5565b811015611fe15760009150611fe6565b600191505b509392505050565b600082820183811015611e7c57600080fd5b6000808383111561201057600080fd5b5050900390565b600154604051600160a060020a03909116906064340480156108fc02916000818181858888f19350505050158015612053573d6000803e3d6000fd5b50600254604051600160a060020a03909116906064600e34020480156108fc02916000818181858888f19350505050158015612093573d6000803e3d6000fd5b5050565b606060008060606000600a878154811015156120af57fe5b906000526020600020906007020160050180548060200260200160405190810160405280929190818152602001828054801561210a57602002820191906000526020600020905b8154815260200190600101908083116120f6575b50505050509450600093505b60058410156122c357848481518110151561212d57fe5b906020019060200201519250848481518110151561214757fe5b906020019060200201516000141561215e576122c3565b662386f26fc10000600a8481548110151561217557fe5b9060005260206000209060070201600201541015612192576122b8565b6121bb600a848154811015156121a457fe5b9060005260206000209060070201600201546116a5565b915061271082858151811015156121ce57fe5b9060200190602002015161ffff1687028115156121e757fe5b0490506121fd81600a85815481101515611c7857fe5b600a80548590811061220b57fe5b90600052602060002090600702016001018190555061225381600a8581548110151561223357fe5b906000526020600020906007020160030154611fee90919063ffffffff16565b600a80548590811061226157fe5b60009182526020918290206003600790920201019190915560408051898152918201859052818101839052517f211f658fbe3faa22f0ca8b56ad45888186f5bd0737b447cea43e6a0894b330109181900360600190a15b600190930192612116565b50505050505050565b8154600183015460009182916122ef9160ff80821692610100909204169061159e565b8454909150612335908290600486019060ff16600381111561230d57fe5b60ff1681548110151561231c57fe5b9060005260206000200154611fee90919063ffffffff16565b8454600485019060ff16600381111561234a57fe5b60ff1681548110151561235957fe5b60009182526020909120015542600185015583546040517f5dc5b82e66c5dcc43c01835de9ee74f6380209b673fbdd18668826fc898c66b19160ff16908390808360038111156123a557fe5b60ff1681526020018281526020019250505060405180910390a19392505050565b60005b6007548110156123e6576123de8184846142b0565b6001016123c9565b505050565b600080828414156123fb5761109f565b82600a8581548110151561240b57fe5b9060005260206000209060070201600501600081548110151561242a57fe5b600091825260209091200155600191505b600582101561250757600a80548490811061245257fe5b90600052602060002090600702016005016001830381548110151561247357fe5b9060005260206000200154905080600a8581548110151561249057fe5b9060005260206000209060070201600501838154811015156124ae57fe5b600091825260209091200155600a8054829081106124c857fe5b6000918252602080832060ff8616845260066007909302019190910181526040822080546001818101835591845291909220018590559091019061243b565b600a80548490811061251557fe5b60009182526020808320838052600660079093020191909101815260408220805460018101825590835291200184905550505050565b60036020819052640563d8f7807f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff5564087d2f73007fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c556409e19f02007fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d55600052640f7eb069807fcbc4e5fb02c3d1de23a9f1e014b4d2ee5aeaea9505df5e855c9210bf472495af55565b6040805160608082018352662386f26fc10000825260c8602080840191825260008486018181528180527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec80845295517f396a5abb6bca56e91bb5dd6bbc43dc9c37f3b8d5af727f8b42952b318eb483f75592517f396a5abb6bca56e91bb5dd6bbc43dc9c37f3b8d5af727f8b42952b318eb483f85591517f396a5abb6bca56e91bb5dd6bbc43dc9c37f3b8d5af727f8b42952b318eb483f95584518084018652666a94d74f43000081526101908183019081528187018481528480527fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0580855292517fa854ba23287a95c22b66b66e4f07bb2441b3fd4ecec9d0720a55aaffc00a6db45590517fa854ba23287a95c22b66b66e4f07bb2441b3fd4ecec9d0720a55aaffc00a6db555517fa854ba23287a95c22b66b66e4f07bb2441b3fd4ecec9d0720a55aaffc00a6db6558551808501875266b1a2bc2ec500008082526102588285019081528289018681528680527f91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a780875293517f23a8b3930d40243c6050962392c5f42a8d68219c31a95256ad251969f8898d7d5590517f23a8b3930d40243c6050962392c5f42a8d68219c31a95256ad251969f8898d7e55517f23a8b3930d40243c6050962392c5f42a8d68219c31a95256ad251969f8898d7f558751808701895267016345785d8a00008152610320818601908152818a018781528780527f2e174c10e159ea99b867ce3205125c24a42d128804e4070ed6fcc8cc98166aa080885292517f28b425f61cad6d11aeb5a0203d47cee5c848ac803463a42255b3f6bb79a2e3a25590517f28b425f61cad6d11aeb5a0203d47cee5c848ac803463a42255b3f6bb79a2e3a355517f28b425f61cad6d11aeb5a0203d47cee5c848ac803463a42255b3f6bb79a2e3a45588518088018a529182526104b08286019081526078838b0190815260018089528a885293517f560c5c35d362ebe12852e61b5bb1957021175ee6b552ac19e7c3fb4e272bed3f5590517f560c5c35d362ebe12852e61b5bb1957021175ee6b552ac19e7c3fb4e272bed4055517f560c5c35d362ebe12852e61b5bb1957021175ee6b552ac19e7c3fb4e272bed415588518088018a5267013fbe85edc900008152610640818701908152608a828c0190815284895286885291517f91a929c9ec5705e488608361b51aeeb184fe55eb85793f3a420f51243ca22a3755517f91a929c9ec5705e488608361b51aeeb184fe55eb85793f3a420f51243ca22a3855517f91a929c9ec5705e488608361b51aeeb184fe55eb85793f3a420f51243ca22a395588518088018a52670214e8348c4f0000815261096081870181815260a4838d01908152858a5286895292517f6763387ad2d066a53cf4a1abdf70cd5bddab334e579a9ba59bf3a7a53cda81ca55517f6763387ad2d066a53cf4a1abdf70cd5bddab334e579a9ba59bf3a7a53cda81cb5590517f6763387ad2d066a53cf4a1abdf70cd5bddab334e579a9ba59bf3a7a53cda81cc5589518089018b526706f05b59d3b2000081526112c08188019081526101a2828d0190815294895283885290517ee28636aab960e5ab7bae6afd10a8cb24d3e08dacfd8c3a510db09eb714d13655517ee28636aab960e5ab7bae6afd10a8cb24d3e08dacfd8c3a510db09eb714d1375591517ee28636aab960e5ab7bae6afd10a8cb24d3e08dacfd8c3a510db09eb714d1385588518088018a526701aa535d3d0c00008152610e1081870190815261021c828c019081526002808a528b895292517ff2dfd1aed85f0715c432d0e56b8d7d53fa1dec4c25ed607e31f579ced79688cc5590517ff2dfd1aed85f0715c432d0e56b8d7d53fa1dec4c25ed607e31f579ced79688cd55517ff2dfd1aed85f0715c432d0e56b8d7d53fa1dec4c25ed607e31f579ced79688ce5589518089018b526703bf3b91c95b00008152611450818801908152610362828d01908152838a5287895291517f3ee599b7498e5f58c0cf496e6a67fe2810c85ff58f1b3809c5e04df57a6aac5d55517f3ee599b7498e5f58c0cf496e6a67fe2810c85ff58f1b3809c5e04df57a6aac5e55517f3ee599b7498e5f58c0cf496e6a67fe2810c85ff58f1b3809c5e04df57a6aac5f5589518089018b526704db73254763000081526119c881880190815261041a828d01908152838a5286895291517f88fd72165bcd3228b2975728293d34e1dc5b10f8d02106c2da453d97ba88259e55517f88fd72165bcd3228b2975728293d34e1dc5b10f8d02106c2da453d97ba88259f55517f88fd72165bcd3228b2975728293d34e1dc5b10f8d02106c2da453d97ba8825a05589518089018b52670de0b6b3a76400008152613200818801908152610686828d0190815292895283885290517f4e35876bfafde0e405c900e55a6f475631cef9a6ee8a84dcc5b7c2d3f34cc97a55517f4e35876bfafde0e405c900e55a6f475631cef9a6ee8a84dcc5b7c2d3f34cc97b55517f4e35876bfafde0e405c900e55a6f475631cef9a6ee8a84dcc5b7c2d3f34cc97c5588518088018a52670429d069189e00008152612580818701908152818b0193845260038089528a885291517fee69c65cdda9eb329ced9262963bb8486a7a0b875d65ea6fea5d6082f29d26d855517fee69c65cdda9eb329ced9262963bb8486a7a0b875d65ea6fea5d6082f29d26d95591517fee69c65cdda9eb329ced9262963bb8486a7a0b875d65ea6fea5d6082f29d26da5588518088018a52670a688906bd8b00008152613b60818701908152610f8c828c0190815284895286885291517f3b6e0960102b35c1db694ba6b177dcaa59c66c9ba0851b01eccff0beab17143255517f3b6e0960102b35c1db694ba6b177dcaa59c66c9ba0851b01eccff0beab17143355517f3b6e0960102b35c1db694ba6b177dcaa59c66c9ba0851b01eccff0beab1714345588518088018a52670ff59ee833b300008152614fb08187019081526113eb828c0190815284895285885291517f4d16478f263168393d7809adc880ac5e7305b6a7c70b135338e83054c1d8c63755517f4d16478f263168393d7809adc880ac5e7305b6a7c70b135338e83054c1d8c63855517f4d16478f263168393d7809adc880ac5e7305b6a7c70b135338e83054c1d8c6395588518088018a526730927f74c9de00008152619f60818701908152612d0b828c0190815293885282875290517fe27dfb2d9260308d6dd9fcd4a2ce73f304364e51dea6458da55186c791359aa255517fe27dfb2d9260308d6dd9fcd4a2ce73f304364e51dea6458da55186c791359aa35590517fe27dfb2d9260308d6dd9fcd4a2ce73f304364e51dea6458da55186c791359aa45587518087018952670c7d713b49da00008152616bd08186019081526125bc828b0190815260048089528a885292517fea5996a30a7b5148ea8ae9f9e6414dcb8e95eb69c5913e5c0893149dc7d6a4905590517fea5996a30a7b5148ea8ae9f9e6414dcb8e95eb69c5913e5c0893149dc7d6a49155517fea5996a30a7b5148ea8ae9f9e6414dcb8e95eb69c5913e5c0893149dc7d6a4925588518088018a52671d8f47b6fb950000815261aa50818701908152613cd0828c0190815283895286885291517f27f67f2fb764f60cab74e53493d0a4d2d76b9f5a8551fc5dbd83c8063cc2760455517f27f67f2fb764f60cab74e53493d0a4d2d76b9f5a8551fc5dbd83c8063cc2760555517f27f67f2fb764f60cab74e53493d0a4d2d76b9f5a8551fc5dbd83c8063cc276065588518088018a526729a2241af62c0000815261dc50818701908152614617828c0190815283895285885291517f2a5eb5e5cd4ef8c3653d1b20d8459ccc86f59b3b41d82ddfe5d439a689ff42e555517f2a5eb5e5cd4ef8c3653d1b20d8459ccc86f59b3b41d82ddfe5d439a689ff42e655517f2a5eb5e5cd4ef8c3653d1b20d8459ccc86f59b3b41d82ddfe5d439a689ff42e75588518088018a52676124fee993bc0000815262017a20818701908152617b4f828c0190815292885283875290517f0154c2e4713e919f56e9a62c2d9f91cf6332973d766728b279d479f2fa836f9955517f0154c2e4713e919f56e9a62c2d9f91cf6332973d766728b279d479f2fa836f9a55517f0154c2e4713e919f56e9a62c2d9f91cf6332973d766728b279d479f2fa836f9b55875180870189526718fae27693b40000815261f870818601908152616360828b0190815260058089528a885292517ffa0d179563c9e5c14edf3a8a9102984589c0ea3b3d3d699748ce2e8c4c0ab70f5590517ffa0d179563c9e5c14edf3a8a9102984589c0ea3b3d3d699748ce2e8c4c0ab71055517ffa0d179563c9e5c14edf3a8a9102984589c0ea3b3d3d699748ce2e8c4c0ab7115588518088018a526749b0e8ddcd53000081526201bee081870190815261bf7e828c0190815283895286885291517f9417635565144f98cdc337db16e3960dc472d5f2cec7490e80b187b96956e23955517f9417635565144f98cdc337db16e3960dc472d5f2cec7490e80b187b96956e23a55517f9417635565144f98cdc337db16e3960dc472d5f2cec7490e80b187b96956e23b5588518088018a5267654ecf52ac5a000081526202328081870190815261d94d828c0190815283895285885291517f822090a11f07b1fa8f4320e2328b04cac3376f13313b9fb19d7716aa7bfddae855517f822090a11f07b1fa8f4320e2328b04cac3376f13313b9fb19d7716aa7bfddae955517f822090a11f07b1fa8f4320e2328b04cac3376f13313b9fb19d7716aa7bfddaea5588518088018a5267ed4f67667b2e0000815262039080818701908152620178ec828c0190815292885283875290517fec281f185d823a12129c16fc96d4e0a64e04204d9f68fa9ab19c2164a51ab2f955517fec281f185d823a12129c16fc96d4e0a64e04204d9f68fa9ab19c2164a51ab2fa55517fec281f185d823a12129c16fc96d4e0a64e04204d9f68fa9ab19c2164a51ab2fb5587518087018952674af0a763bb1c0000815262029e5081860190815262014f28828b01908152600680895299875291517f69c676e78995e2cf5a57e312863efb1383e3f192643840df5fe092d155b1f58855517f69c676e78995e2cf5a57e312863efb1383e3f192643840df5fe092d155b1f58955517f69c676e78995e2cf5a57e312863efb1383e3f192643840df5fe092d155b1f58a558751808701895267c0c331685a2d0000815262048da0818601908152620269a8828b0190815289885294865290517f26468128a980f5566a780c2d32523aa1b434f4b4a83c4fc96fb3566c9511fa3855517f26468128a980f5566a780c2d32523aa1b434f4b4a83c4fc96fb3566c9511fa395591517f26468128a980f5566a780c2d32523aa1b434f4b4a83c4fc96fb3566c9511fa3a55865180860188526801534fd975564d000081526206ac9881850190815262035632828a0190815288875292855290517fdbc5932080e89e7fd4fa1f3bd1a06885b4fc4cf0601680e710c65b4987eb6be955517fdbc5932080e89e7fd4fa1f3bd1a06885b4fc4cf0601680e710c65b4987eb6bea55517fdbc5932080e89e7fd4fa1f3bd1a06885b4fc4cf0601680e710c65b4987eb6beb5585519384018652680302379bf2ca2e00008452620a56e0848301908152620565099685019687529490925252517f8be65cea2bf2db3461a657d06735eb4fe94f065782dde430adec36d1993ad2e955517f8be65cea2bf2db3461a657d06735eb4fe94f065782dde430adec36d1993ad2ea55517f8be65cea2bf2db3461a657d06735eb4fe94f065782dde430adec36d1993ad2eb55565b6136c46147e2565b6136cc6147e2565b6136d46147e2565b60408051606081018252662386f26fc100008152678ac7230489e7ffff60208201528151600580825260c082018452919283019181602001602082028038833950505090526040810151805191945061012c91600090811061373257fe5b61ffff90921660209283029091019091015260408301518051604b9190600190811061375a57fe5b61ffff90921660209283029091019091015260408301518051603c9190600290811061378257fe5b61ffff909216602092830290910190910152604083015180516028919060039081106137aa57fe5b61ffff909216602092830290910190910152604083015180516019919060049081106137d257fe5b61ffff90921660209283029091018201526005805460018101808355600092909252855160039091027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08101918255868401517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db18201556040870151805193948894613884937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db2019290910190614804565b505060408051606081018252678ac7230489e8000081526802b5e3af16b187ffff60208201528151600580825260c08201845291945091840192508160200160208202803883395050509052604081015180519193506101f49160009081106138e957fe5b61ffff9092166020928302909101909101526040820151805160c89190600190811061391157fe5b61ffff9092166020928302909101909101526040820151805160969190600290811061393957fe5b61ffff9092166020928302909101909101526040820151805160649190600390811061396157fe5b61ffff9092166020928302909101909101526040820151805160329190600490811061398957fe5b61ffff90921660209283029091018201526005805460018101808355600092909252845160039091027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08101918255858401517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db18201556040860151805193948794613a3b937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db2019290910190614804565b5050604080516060810182526802b5e3af16b1880000815260001960208201528151600580825260c08201845291945091840192508160200160208202803883395050509052604081015180519192506102bc916000908110613a9a57fe5b61ffff9092166020928302909101909101526040810151805161012c91906001908110613ac357fe5b61ffff9092166020928302909101909101526040810151805160fa91906002908110613aeb57fe5b61ffff90921660209283029091019091015260408101518051609691906003908110613b1357fe5b61ffff90921660209283029091019091015260408101518051606491906004908110613b3b57fe5b61ffff90921660209283029091018201526005805460018101808355600092909252835160039091027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08101918255848401517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db182015560408501518051939486946122c3937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db2019290910190614804565b60066020908152600a7f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85560077f3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a3181905560057f8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace2981905560037f75f96ab15d697e93042dc45b5c896c4b27e89bb6eaf39475c5c371cb2513f7d25560017fc5069e24aaadb2addc3e52e868fcf3f4f8acf5a87e24300992fd4540c2a87eed81905560007fbfd358e93f18da3ed276c3afdbdba00b8f0b6008a03476a6a86bd6320ee6938b8190557f697b2bd7bb2984c4e0dc14c79c987d37818484a62958b9c45a0e8b962f20650f819055604080516080810182526201518042810182528188019081528183018481528351858152808a019094526060830193845287549586018089559790945281517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68895909602948501958655517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68985015591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a84015551805194959194613de5937fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b019291909101906148a9565b5050505060076080604051908101604052804262093a8001815260200162093a808152602001600081526020016000604051908082528060200260200182016040528015613e3d578160200160208202803883390190505b5090528154600181810180855560009485526020948590208451600590940201928355848401519183019190915560408301516002830155606083015180519194613e90926003850192909101906148a9565b505050506007608060405190810160405280426304a286000181526020016304a286008152602001600081526020016000604051908082528060200260200182016040528015613eea578160200160208202803883390190505b5090528154600181810180855560009485526020948590208451600590940201928355848401519183019190915560408301516002830155606083015180519194613f3d926003850192909101906148a9565b505050506007608060405190810160405280426301e133800181526020016301e133808152602001600081526020016000604051908082528060200260200182016040528015613f97578160200160208202803883390190505b509052815460018181018085556000948552602094859020845160059094020192835584840151918301919091556040830151600283015560608301518051919461109f926003850192909101906148a9565b600080600080600a86815481101515613fff57fe5b60009182526020918290206040805160c08101825260079093029091018054600160a060020a031683526001810154838501526002810154838301526003810154606084015260048101805483518187028101870190945280845291975061410a948893608086019390929183018282801561409a57602002820191906000526020600020905b815481526020019060010190808311614086575b50505050508152602001600582018054806020026020016040519081016040528092919081815260200182805480156140f257602002820191906000526020600020905b8154815260200190600101908083116140de575b50505050508152505086600001518760200151611fab565b151561411557600080fd5b84516141229060006114e5565b600184015490925061413a903463ffffffff611fee16565b60018401819055614151908363ffffffff61200016565b6001840155600283015461416b908363ffffffff611fee16565b600280850191909155600d805434019055600e805460018181018084556000939093528851919093027fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd018054899290829060ff1916868360038111156141ce57fe5b0217905550602082810151825460ff9091166101000261ff0019909116178255604092830151600192830155939092036000818152600f85528281208b90558a81526010855291822080549384018155825292902001819055905061423234612017565b61423c8683612097565b61424633346123c6565b7f8f59dce00c1ab7202394532f1ca472fd1968974b94e346f4bb01270676cbe89686828760000151856040518085815260200184815260200183600381111561428b57fe5b60ff16815260200182815260200194505050505060405180910390a195945050505050565b6000806000806007878154811015156142c557fe5b9060005260206000209060050201600001544211156142e7576142e78761446f565b60078054889081106142f557fe5b60009182526020808320600260059093020191820154600160a060020a038a16845260048301909152604090922054909550908110159350915061433f828663ffffffff611fee16565b600160a060020a03871660009081526004860160205260409020819055600285015490915081108015614376575060038401546007145b15614380576122c3565b82158061438f57506003840154155b156143c55760038401805460018101825560009182526020909120018054600160a060020a031916600160a060020a0388161790555b6003840154600110156143e8576143e8846000600187600301805490500361455a565b60038401546007101561442057600384018054600690811061440657fe5b60009182526020909120018054600160a060020a03191690555b6003840180546004860191600091600019810190811061443c57fe5b6000918252602080832090910154600160a060020a03168352820192909252604001902054600285015550505050505050565b600060078281548110151561448057fe5b6000918252602080832060408051608081018252600594909402909101600181015481548101855284840152838201859052815194855291840190526060820192909252600780549293509091849081106144d757fe5b9060005260206000209060050201600082015181600001556020820151816001015560408201518160020155606082015181600301908051906020019061451f9291906148a9565b50506040805184815290517f7cce3b409f5d6aca017a29bcb7332d4626c08cc76a25438953274f45723716c692509081900360200190a15050565b818160008183141561456b57614753565b60048601600060038801600288880305880181548110151561458957fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205490505b81831361472d575b8086600401600088600301868154811015156145d157fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020541115614607576001909201916145b9565b856004016000876003018481548110151561461e57fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020548111156146565760001990910190614607565b818313614728576003860180548390811061466d57fe5b600091825260209091200154600387018054600160a060020a03909216918590811061469557fe5b600091825260209091200154600388018054600160a060020a0390921691869081106146bd57fe5b90600052602060002001600089600301868154811015156146da57fe5b60009182526020909120018054600160a060020a03948516600160a060020a031990911617905581549383166101009190910a90810292021990921617905560019290920191600019909101905b6145b1565b818512156147405761474086868461455a565b838312156147535761475386848661455a565b505050505050565b828054828255906000526020600020908101928215614796579160200282015b8281111561479657825182559160200191906001019061477b565b50610e5a92915061490a565b60c0604051908101604052806000600160a060020a0316815260200160008152602001600081526020016000815260200160608152602001606081525090565b6060604051908101604052806000815260200160008152602001606081525090565b82805482825590600052602060002090600f0160109004810192821561489d5791602002820160005b8382111561486d57835183826101000a81548161ffff021916908361ffff160217905550926020019260020160208160010104928301926001030261482d565b801561489b5782816101000a81549061ffff021916905560020160208160010104928301926001030261486d565b505b50610e5a929150614924565b8280548282559060005260206000209081019282156148fe579160200282015b828111156148fe5782518254600160a060020a031916600160a060020a039091161782556020909201916001909101906148c9565b50610e5a929150614943565b610e7891905b80821115610e5a5760008155600101614910565b610e7891905b80821115610e5a57805461ffff1916815560010161492a565b610e7891905b80821115610e5a578054600160a060020a03191681556001016149495600a165627a7a7230582001b84be694a48107af3fc4e24ca99f2f35387aa892b94a6ddf2e95544a564d990029


   Library Used
Math : 0x9a103a76447a747194ec6439de5e2e6eac597db1

   Swarm Source:
bzzr://01b84be694a48107af3fc4e24ca99f2f35387aa892b94a6ddf2e95544a564d99
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.