Sponsored:   INLOCK - Put Your BTC, Get Your Cash! Crypto Backed Loans, 3.2M Raised Already. Join NOW!
Contract Overview | FairDAPP
Balance: 61.870132906796553572 Ether
Ether Value: $13,119.56 (@ $212.05/ETH)
Transactions: 9691 txns
Token Tracker: Infinity (Inf)
 Latest 25 txns From a total of 9691 Transactions
(+8 PendingTxns)

TxHash Age From To Value [TxFee]
0xd6a3af410ff7364f6b6f99b1506cf8bf0c4c6110e566e9ce5607b82fd50f2d55(pending)0xd13b6b5f5edc411d510b14b9cdfdebf8c0d42ba5  IN  0xfef5497bc53a69875e02ae5b14eeff668f09a7290.001 Ether(Pending)
0x03427333cc3831af34b7649befd64f03d8b859d713354b2e5d8f42f3a7cee806(pending)0xa048e7b8c500dada205e388e56966a965daeba38  IN  0xfef5497bc53a69875e02ae5b14eeff668f09a7290 Ether(Pending)
0x1cf387d9f4b3d380544574163dd5d9f7d7aded44a5a459f4c6d41c9f7910dffb(pending)0x7d89f648168d2083c0e8b7eba9e88a42b06bb28f  IN  0xfef5497bc53a69875e02ae5b14eeff668f09a7290 Ether(Pending)
0xff78c8109a1e9d23c119e898058fc57fae4f304def0291b4172d13b697f0adfb(pending)0x9769a6dd076c6adc5d3a43847969fcba3e8126c3  IN  0xfef5497bc53a69875e02ae5b14eeff668f09a7295.7 Ether(Pending)
0x105f6c89b42121e0ae6de1beefdf66de27618268d0cb0706d1c573d3cb2414b6(pending)0x0acde893f6fa74e04b0b953f60cffa11e07bdd2d  IN  0xfef5497bc53a69875e02ae5b14eeff668f09a7290.21 Ether(Pending)
0x6a7da3b0c3b25a6aa098895c4e559bb34ba5f32385cce7ae77c32380450229d0(pending)0x9e4467c1839514ba0e2240ef81a89e40984f6f50  IN  0xfef5497bc53a69875e02ae5b14eeff668f09a7290 Ether(Pending)
0x4d995d9d416f73da723e53b9735f6a4670b1b15ec25368d5b9440f84d05d3a86(pending)0xb3c29457836c0a250e8b6e5aa54a46ae9255fcbc  IN  0xfef5497bc53a69875e02ae5b14eeff668f09a7290 Ether(Pending)
0xddfa7135efaf12ff076d5454e79ed5bc2e7db3129390f81339b09a2db21fefff(pending)0xc82d88971c1cc94c1e0821add449a4655c98e2ba  IN  0xfef5497bc53a69875e02ae5b14eeff668f09a7290.001 Ether(Pending)
0x58027f04ed401f0aa12b7009f5e5770009afd0dceba31752b82b0c4b441b947e2 mins ago0x9a1954d7b6a8d636e3e2bda09ecfe1589adb0962  IN   FairDAPP0.0002 Ether0.00104192361
0x2dacafc919443ae765b03b2d36148e016179e9590b863e71db56085fda0dbede9 mins ago0x673fcccde30b78954112fffa6e1ce37f8132bf30  IN   FairDAPP0.0002 Ether0.0014884623
0xd6daabdb2c07911043d9357532585ee29d131fe1a33014b2494b9ccbe46dca9916 mins ago0x83d0e527737fc6de09944752ad474e005a3d867c  IN   FairDAPP0.0002 Ether0.0014884623
0x4f5d01e0019ed4b6dd3e495c4b25fe5a027dc4adb9eb5657fefb7c22e3a780d922 mins ago0x75a291a147a429181318393f463968e487e844ef  IN   FairDAPP0.0007 Ether0.0016029594
0xecc222ef39fa856c35b72c71eda3fdd020ee97aa6e810c62e4a6993addf310a129 mins ago0x0138f53d024711794f11683730c3794be8f2ce40  IN   FairDAPP0.0001 Ether0.0017174565
0xa9ffd2e16961bec36e9607a760852136dca3b119f45c7210926909947df5072131 mins ago0xe793cdd15aedefe3b8ae875d8103cf433b43c228  IN   FairDAPP0 Ether0.0003721795
0x6c3aaf1fb17e2b3ddcb2aebde0216b4e320a0ea50db5cd69573826b98d5b53b91 hr 49 mins ago0x09e2cd28ae8e912b90fbf4ccb934932f7668018b  IN   FairDAPP0.0006 Ether0.002289942
0x85781e22f70b6a51d2ca76c43e7feb9e64013e643552e796b839ff5d8aaa08f62 hrs 3 mins ago0xaeb439631141d94d9c7e10c719fad4a80dbeadd9  IN   FairDAPP0.0006 Ether0.000890533
0x7cfb6317087e9358c15e3e7235325c8b898c3c38d005d94979279d52a76e43ca2 hrs 51 mins ago0x91181cbba85d2481cae88aa310e9c7f2fac783d1  IN   FairDAPP0.0006 Ether0.0029769246
0x829c919889c77f0f13b840079602e0dc54c3b4938e633fdc2dd087c6941320572 hrs 58 mins ago0x8b625faad1e3dad266c4e33020d1be0277018b6c  IN   FairDAPP0.1 Ether0.00065442
0x17c771c9c917c10f03d56ac1ccc6b545be5ec9d81c1a5d20e807746c501ad6ce3 hrs 2 mins ago0x8b625faad1e3dad266c4e33020d1be0277018b6c  IN   FairDAPP0.1 Ether0.000479908
0xfb73ccb63e529555a8d91ec96cdc938f6114c0d322b73a098fbb3ac62a567a713 hrs 4 mins ago0x70dcb2d22737685407217bde34b870943ee1a08e  IN   FairDAPP0.0002 Ether0.0029769246
0x573206b52ebb5212d8ed82759262e0c847d2c8609138dd7464810f561412ce8a3 hrs 6 mins ago0x8b625faad1e3dad266c4e33020d1be0277018b6c  IN   FairDAPP0.2 Ether0.00129477
0x0527406921d05a26c87498cd23c6bd47184f00269d2d52f244fb90ca109fb61a3 hrs 12 mins ago0x8b625faad1e3dad266c4e33020d1be0277018b6c  IN   FairDAPP0.2 Ether0.000945156
0x8a588804e82a642ce7b9f600ac4a68ef990debc0c224bfbb45ac2977274841f13 hrs 13 mins ago0x8ca47715be8ac08af165a628ab8111bb3fef38f1  IN   FairDAPP0 Ether0.000469763
0x0ae71207344d9f1cdaffa41dd034b8cf2a532223e17b4be957be56fcb3ea16f33 hrs 14 mins ago0x22f14cb872871a37b1d981b342b865f8a31fbaf9  IN   FairDAPP0 Ether0.000402962
0x076fb0342d968dee4b50a3ef3c9753384fbf8edc64e5d638b95d477a0e7ca7803 hrs 23 mins ago0x8b625faad1e3dad266c4e33020d1be0277018b6c  IN   FairDAPP0.3 Ether0.00078763
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click Here To View More View All
ParentTxHash Block Age From To Value
0x58027f04ed401f0aa12b7009f5e5770009afd0dceba31752b82b0c4b441b947e63625162 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.000004 Ether
0x2dacafc919443ae765b03b2d36148e016179e9590b863e71db56085fda0dbede63624889 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.000004 Ether
0xd6daabdb2c07911043d9357532585ee29d131fe1a33014b2494b9ccbe46dca99636245716 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.000004 Ether
0x4f5d01e0019ed4b6dd3e495c4b25fe5a027dc4adb9eb5657fefb7c22e3a780d9636243122 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.000014 Ether
0xecc222ef39fa856c35b72c71eda3fdd020ee97aa6e810c62e4a6993addf310a1636240129 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.000002 Ether
0xa9ffd2e16961bec36e9607a760852136dca3b119f45c7210926909947df50721636239231 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xe793cdd15aedefe3b8ae875d8103cf433b43c2280.009389225025629859 Ether
0x6c3aaf1fb17e2b3ddcb2aebde0216b4e320a0ea50db5cd69573826b98d5b53b963620611 hr 49 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.000012 Ether
0x85781e22f70b6a51d2ca76c43e7feb9e64013e643552e796b839ff5d8aaa08f663620062 hrs 3 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.000012 Ether
0x7cfb6317087e9358c15e3e7235325c8b898c3c38d005d94979279d52a76e43ca63617852 hrs 51 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.000012 Ether
0x829c919889c77f0f13b840079602e0dc54c3b4938e633fdc2dd087c69413205763617572 hrs 58 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290x8b625faad1e3dad266c4e33020d1be0277018b6c0.1 Ether
0x17c771c9c917c10f03d56ac1ccc6b545be5ec9d81c1a5d20e807746c501ad6ce63617503 hrs 2 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290x8b625faad1e3dad266c4e33020d1be0277018b6c0.1 Ether
0xfb73ccb63e529555a8d91ec96cdc938f6114c0d322b73a098fbb3ac62a567a7163617403 hrs 4 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.000004 Ether
0x573206b52ebb5212d8ed82759262e0c847d2c8609138dd7464810f561412ce8a63617313 hrs 6 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.0021051 Ether
0x573206b52ebb5212d8ed82759262e0c847d2c8609138dd7464810f561412ce8a63617313 hrs 6 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290x8b625faad1e3dad266c4e33020d1be0277018b6c0.094745 Ether
0x0527406921d05a26c87498cd23c6bd47184f00269d2d52f244fb90ca109fb61a63617013 hrs 12 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.004 Ether
0x8a588804e82a642ce7b9f600ac4a68ef990debc0c224bfbb45ac2977274841f163616983 hrs 13 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290x8ca47715be8ac08af165a628ab8111bb3fef38f10.110167883331149366 Ether
0x0ae71207344d9f1cdaffa41dd034b8cf2a532223e17b4be957be56fcb3ea16f363616963 hrs 14 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290x22f14cb872871a37b1d981b342b865f8a31fbaf90.329782883331149366 Ether
0x076fb0342d968dee4b50a3ef3c9753384fbf8edc64e5d638b95d477a0e7ca78063616703 hrs 23 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.006 Ether
0x777f23e9c682ea3237ebe21a23a9cc044f5ff4f148081dc31f72c9f4e4e37e6163616603 hrs 26 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.0012 Ether
0xe6280a82db5d64c144ea19722ca9a042544f265269c4caa124ead4497e30d5b963616593 hrs 26 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.002 Ether
0x9f2402df0a71af04a33fc115bd88fa949e72385dde2d9499b9132de6db2ce8f763616303 hrs 35 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.0016 Ether
0x517263708af73bdf2514a04248843ed357629ab43f6887784a70469042ebabcb63615743 hrs 51 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.00001 Ether
0x8b567d7b1f13b08ab68c4c2737e53aab30ef79bc6ba67a01861cee89ea9ef18963615443 hrs 58 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.000008 Ether
0x66e2746384885143ccb21793b13e03f889ed2255a0551ede3e23a3fdab1f9b6163612974 hrs 59 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.000012 Ether
0x8809fcee529fa91276587a84642fdfb15772a19dd65c3a3a9b87f2a3f9e0e41663612805 hrs 2 mins ago0xfef5497bc53a69875e02ae5b14eeff668f09a7290xbc817a495f0114755da5305c5aa84fc5ca7ebabd0.000008 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Infinity
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.24;

/**
 *
 *
 *  http://fairdapp.com     http://fairdapp.com     http://fairdapp.com
 *   
 *                       _______     _       ______  _______ ______ ______  
 *                      (_______)   (_)     (______)(_______|_____ (_____ \ 
 *                       _____ _____ _  ____ _     _ _______ _____) )____) )
 *                      |  ___|____ | |/ ___) |   | |  ___  |  ____/  ____/ 
 *                      | |   / ___ | | |   | |__/ /| |   | | |    | |      
 *                      |_|   \_____|_|_|   |_____/ |_|   |_|_|    |_|      
 *                                                                    
 *                               _         ___ _       _             
 *                              | |       / __|_)     (_)  _         
 *                              | |____ _| |__ _ ____  _ _| |_ _   _ 
 *                              | |  _ (_   __) |  _ \| (_   _) | | |
 *                              | | | | || |  | | | | | | | |_| |_| |
 *                              |_|_| |_||_|  |_|_| |_|_|  \__)\__  |
 *                                                            (____/                                                                  
 *   
 *  Warning:
 *     
 *  FairDAPP – Infinity is a system designed to explore human behavior
 *  using infinite loops of token redistribution through open source 
 *  smart contract codes and pre-defined rules.
 *   
 *  This system is for internal use only and all could be lost
 *  by sending anything to this contract address.
 *   
 *  -The contract has an activation switch to activate the system.
 *  -No one can change anything once the contract has been deployed.
 *   
 *  -Built in Antiwhale for initial stages for a fairer system.
 *
**/


contract Infinity {
    using SafeMath for uint256;
    
    /*------------------------------
                CONFIGURABLES
     ------------------------------*/
    string public name = "Infinity";    // Contract name
    string public symbol = "Inf";
    
    uint256 public initAmount;          // Initial stage target
    uint256 public amountProportion;    // Stage target growth rate %
    uint256 public dividend;            // Input to Dividend %
    uint256 public jackpot;             // Input to Jackpot %
    uint256 public jackpotProportion;   // Jackpot payout %
    uint256 public scientists;          // Donation Fee % to scientists
    uint256 public promotionRatio;      // Promotion %
    uint256 public duration;            // Duration per stage
    bool public activated = false;
    
    address public developerAddr;
    
    /*------------------------------
                DATASETS
     ------------------------------*/
    uint256 public rId;   // Current round id number
    uint256 public sId;   // Current stage id number
    
    mapping (uint256 => Indatasets.Round) public round; // (rId => data) round data by round id
    mapping (uint256 => mapping (uint256 => Indatasets.Stage)) public stage;    // (rId => sId => data) stage data by round id & stage id
    mapping (address => Indatasets.Player) public player;   // (address => data) player data
    mapping (uint256 => mapping (address => uint256)) public playerRoundAmount; // (rId => address => playerRoundAmount) round data by round id
    mapping (uint256 => mapping (address => uint256)) public playerRoundSid; 
    mapping (uint256 => mapping (address => uint256)) public playerRoundwithdrawAmountFlag; 
    mapping (uint256 => mapping (uint256 => mapping (address => uint256))) public playerStageAmount;    // (rId => sId => address => playerStageAmount) round data by round id & stage id
    mapping (uint256 => mapping (uint256 => mapping (address => uint256))) public playerStageAccAmount;  
    
    //Antiwhale setting, max 5% of stage target for the first 10 stages per address
    uint256[] amountLimit = [0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50];

    /*------------------------------
                PUBLIC FUNCTIONS
    ------------------------------*/
    
    constructor()
        public
    {
        developerAddr = msg.sender;
    }
    
    /*------------------------------
                MODIFIERS
     ------------------------------*/
     
    modifier isActivated() {
        require(activated == true, "its not ready yet.  check ?eta in discord"); 
        _;
    }
    
    modifier senderVerify() {
        require (msg.sender == tx.origin);
        _;
    }
    
    modifier stageVerify(uint256 _rId, uint256 _sId, uint256 _amount) {
        require(stage[_rId][_sId].amount.add(_amount) <= stage[_rId][_sId].targetAmount);
        _;
    }
    
    /**
     * Don't toy or spam the contract.
     * The scientists will take anything below 0.0001 ETH sent to the contract.
     * Thank you for your donation.
     */
    modifier amountVerify() {
        if(msg.value < 100000000000000){
            developerAddr.transfer(msg.value);
        }else{
            require(msg.value >= 100000000000000);
            _;
        }
    }
    
    modifier playerVerify() {
        require(player[msg.sender].active == true);
        _;
    }
    
    /**
     * Activation of contract with settings
     */
    function activate()
        public
    {
        require(msg.sender == developerAddr);
        require(activated == false, "Infinity already activated");
        
        activated = true;
        initAmount = 10000000000000000000;
        amountProportion = 10;
        dividend = 70;
        jackpot = 28;  
        jackpotProportion = 70;  
        scientists = 2;
        promotionRatio = 10;
        duration = 86400;
        rId = 1;
        sId = 1;
        
        round[rId].start = now;
        initStage(rId, sId);
    
    }
    
    /**
     * Fallback function to handle ethereum that was send straight to the contract
     * Unfortunately we cannot use a referral address this way.
     */
    function()
        isActivated()
        senderVerify()
        amountVerify()
        payable
        public
    {
        buyAnalysis(0x0);
    }

    /**
     * Standard buy function.
     */
    function buy(address _recommendAddr)
        isActivated()
        senderVerify()
        amountVerify()
        public
        payable
        returns(uint256)
    {
        buyAnalysis(_recommendAddr);
    }
    
    /**
     * Withdraw function.
     * Withdraw 50 stages at once on current settings.
     * May require to request withdraw more than once to withdraw everything.
     */
    function withdraw()
        isActivated()
        senderVerify()
        playerVerify()
        public
    {
        uint256 _rId = rId;
        uint256 _sId = sId;
        uint256 _amount;
        uint256 _playerWithdrawAmountFlag;
        
        (_amount, player[msg.sender].withdrawRid, player[msg.sender].withdrawSid, _playerWithdrawAmountFlag) = getPlayerDividendByStage(_rId, _sId, msg.sender);

        if(_playerWithdrawAmountFlag > 0)
            playerRoundwithdrawAmountFlag[player[msg.sender].withdrawRid][msg.sender] = _playerWithdrawAmountFlag;
        
        if(player[msg.sender].promotionAmount > 0 ){
            _amount = _amount.add(player[msg.sender].promotionAmount);
            player[msg.sender].promotionAmount = 0;
        }    
        msg.sender.transfer(_amount);
    }

    
    /**
     * Core logic to analyse buy behaviour. 
     */
    function buyAnalysis(address _recommendAddr)
        private
    {
        uint256 _rId = rId;
        uint256 _sId = sId;
        uint256 _amount = msg.value;
        uint256 _promotionRatio = promotionRatio;
        
        if(now > stage[_rId][_sId].end && stage[_rId][_sId].targetAmount > stage[_rId][_sId].amount){
            
            endRound(_rId, _sId);
            
            _rId = rId;
            _sId = sId;
            round[_rId].start = now;
            initStage(_rId, _sId);
            
            _amount = limitAmount(_rId, _sId);
            buyRoundDataRecord(_rId, _amount);
            _promotionRatio = promotionDataRecord(_recommendAddr, _amount);
            buyStageDataRecord(_rId, _sId, _promotionRatio, _amount);
            buyPlayerDataRecord(_rId, _sId, _amount);
            
        }else if(now <= stage[_rId][_sId].end){
            
            _amount = limitAmount(_rId, _sId);
            buyRoundDataRecord(_rId, _amount);
            _promotionRatio = promotionDataRecord(_recommendAddr, _amount);
            
            if(stage[_rId][_sId].amount.add(_amount) >= stage[_rId][_sId].targetAmount){
                
                uint256 differenceAmount = (stage[_rId][_sId].targetAmount).sub(stage[_rId][_sId].amount);
                buyStageDataRecord(_rId, _sId, _promotionRatio, differenceAmount);
                buyPlayerDataRecord(_rId, _sId, differenceAmount);
                
                endStage(_rId, _sId);

                _sId = sId;
                initStage(_rId, _sId);
                round[_rId].endSid = _sId;
                buyStageDataRecord(_rId, _sId, _promotionRatio, _amount.sub(differenceAmount));
                buyPlayerDataRecord(_rId, _sId, _amount.sub(differenceAmount));
                
            }else{
                buyStageDataRecord(_rId, _sId, _promotionRatio, _amount);
                buyPlayerDataRecord(_rId, _sId, _amount);
                
            }
        }
    }
    
    
    /**
     * Sets the initial stage parameter. 
     */
    function initStage(uint256 _rId, uint256 _sId)
        private
    {
        uint256 _targetAmount;
        stage[_rId][_sId].start = now;
        stage[_rId][_sId].end = now.add(duration);
        if(_sId > 1){
            stage[_rId][_sId - 1].end = now;
            stage[_rId][_sId - 1].ended = true;
            _targetAmount = (stage[_rId][_sId - 1].targetAmount.mul(amountProportion + 100)) / 100;
        }else
            _targetAmount = initAmount;
            
        stage[_rId][_sId].targetAmount = _targetAmount;
        
    }
    
    /**
     * Execution of antiwhale. 
     */
    function limitAmount(uint256 _rId, uint256 _sId)
        private
        returns(uint256)
    {
        uint256 _amount = msg.value;
        
        if(amountLimit.length > _sId)
            _amount = ((stage[_rId][_sId].targetAmount.mul(amountLimit[_sId])) / 1000).sub(playerStageAmount[_rId][_sId][msg.sender]);
        else
            _amount = ((stage[_rId][_sId].targetAmount.mul(500)) / 1000).sub(playerStageAmount[_rId][_sId][msg.sender]);
            
        if(_amount >= msg.value)
            return msg.value;
        else
            msg.sender.transfer(msg.value.sub(_amount));
        
        return _amount;
    }
    
    /**
     * Record the addresses eligible for promotion links.
     */
    function promotionDataRecord(address _recommendAddr, uint256 _amount)
        private
        returns(uint256)
    {
        uint256 _promotionRatio = promotionRatio;
        
        if(_recommendAddr != 0x0000000000000000000000000000000000000000 
            && _recommendAddr != msg.sender 
            && player[_recommendAddr].active == true
        )
            player[_recommendAddr].promotionAmount = player[_recommendAddr].promotionAmount.add((_amount.mul(_promotionRatio)) / 100);
        else
            _promotionRatio = 0;
        
        return _promotionRatio;
    }
    
    
    /**
     * Records the round data.
     */
    function buyRoundDataRecord(uint256 _rId, uint256 _amount)
        private
    {

        round[_rId].amount = round[_rId].amount.add(_amount);
        developerAddr.transfer(_amount.mul(scientists) / 100);
    }
    
    /**
     * Records the stage data.
     */
    function buyStageDataRecord(uint256 _rId, uint256 _sId, uint256 _promotionRatio, uint256 _amount)
        stageVerify(_rId, _sId, _amount)
        private
    {
        if(_amount <= 0)
            return;
        stage[_rId][_sId].amount = stage[_rId][_sId].amount.add(_amount);
        stage[_rId][_sId].dividendAmount = stage[_rId][_sId].dividendAmount.add((_amount.mul(dividend.sub(_promotionRatio))) / 100);
    }
    
    /**
     * Records the player data.
     */
    function buyPlayerDataRecord(uint256 _rId, uint256 _sId, uint256 _amount)
        private
    {
        if(_amount <= 0)
            return;
            
        if(player[msg.sender].active == false){
            player[msg.sender].active = true;
            player[msg.sender].withdrawRid = _rId;
            player[msg.sender].withdrawSid = _sId;
        }
            
        if(playerRoundAmount[_rId][msg.sender] == 0){
            round[_rId].players++;
            playerRoundSid[_rId][msg.sender] = _sId;
        }
            
        if(playerStageAmount[_rId][_sId][msg.sender] == 0)
            stage[_rId][_sId].players++;
            
        playerRoundAmount[_rId][msg.sender] = playerRoundAmount[_rId][msg.sender].add(_amount);
        playerStageAmount[_rId][_sId][msg.sender] = playerStageAmount[_rId][_sId][msg.sender].add(_amount);
        
        player[msg.sender].amount = player[msg.sender].amount.add(_amount);
        
        if(playerRoundSid[_rId][msg.sender] > 0){
            
            if(playerStageAccAmount[_rId][_sId][msg.sender] == 0){
                
                for(uint256 i = playerRoundSid[_rId][msg.sender]; i < _sId; i++){
                
                    if(playerStageAmount[_rId][i][msg.sender] > 0)
                        playerStageAccAmount[_rId][_sId][msg.sender] = playerStageAccAmount[_rId][_sId][msg.sender].add(playerStageAmount[_rId][i][msg.sender]);
                    
                }
            }
            
            playerStageAccAmount[_rId][_sId][msg.sender] = playerStageAccAmount[_rId][_sId][msg.sender].add(_amount);
        }
    }
    
    /**
     * Execute end of round events.
     */
    function endRound(uint256 _rId, uint256 _sId)
        private
    {
        round[_rId].end = now;
        round[_rId].ended = true;
        round[_rId].endSid = _sId;
        stage[_rId][_sId].end = now;
        stage[_rId][_sId].ended = true;
        
        if(stage[_rId][_sId].players == 0)
            round[_rId + 1].jackpotAmount = round[_rId + 1].jackpotAmount.add(round[_rId].jackpotAmount);
        else
            round[_rId + 1].jackpotAmount = round[_rId + 1].jackpotAmount.add(round[_rId].jackpotAmount.mul(100 - jackpotProportion) / 100);
        
        rId++;
        sId = 1;
        
    }
    
    /**
     * Execute end of stage events.
     */
    function endStage(uint256 _rId, uint256 _sId)
        private
    {
        uint256 _jackpotAmount = stage[_rId][_sId].amount.mul(jackpot) / 100;
        round[_rId].endSid = _sId;
        round[_rId].jackpotAmount = round[_rId].jackpotAmount.add(_jackpotAmount);
        stage[_rId][_sId].end = now;
        stage[_rId][_sId].ended = true;
        if(_sId > 1)
            stage[_rId][_sId].accAmount = stage[_rId][_sId].targetAmount.add(stage[_rId][_sId - 1].accAmount);
        else
            stage[_rId][_sId].accAmount = stage[_rId][_sId].targetAmount;
        
        sId++;
    }
    
    /**
     * Precalculations for withdraws to conserve gas.
     */
    function getPlayerDividendByStage(uint256 _rId, uint256 _sId, address _playerAddr)
        private
        view
        returns(uint256, uint256, uint256, uint256)
    {
        
        uint256 _dividend;
        uint256 _stageNumber;
        uint256 _startSid;
        uint256 _playerAmount;    
        
        for(uint256 i = player[_playerAddr].withdrawRid; i <= _rId; i++){
            
            if(playerRoundAmount[i][_playerAddr] == 0)
                continue;
            
            _playerAmount = 0;    
            _startSid = i == player[_playerAddr].withdrawRid ? player[_playerAddr].withdrawSid : 1;
            for(uint256 j = _startSid; j < round[i].endSid; j++){
                    
                if(playerStageAccAmount[i][j][_playerAddr] > 0)
                    _playerAmount = playerStageAccAmount[i][j][_playerAddr];
                    
                if(_playerAmount == 0)
                    _playerAmount = playerRoundwithdrawAmountFlag[i][_playerAddr];
                    
                if(_playerAmount == 0)
                    continue;
                _dividend = _dividend.add(
                    (
                        _playerAmount.mul(stage[i][j].dividendAmount)
                    ).div(stage[i][j].accAmount)
                );
                
                _stageNumber++;
                if(_stageNumber >= 50)
                    return (_dividend, i, j + 1, _playerAmount);
            }
            
            if(round[i].ended == true
                && stage[i][round[i].endSid].amount > 0
                && playerStageAmount[i][round[i].endSid][_playerAddr] > 0
            ){
                _dividend = _dividend.add(getPlayerJackpot(_playerAddr, i));
                _stageNumber++;
                if(_stageNumber >= 50)
                    return (_dividend, i + 1, 1, 0);
            }
        }
        return (_dividend, _rId, _sId, _playerAmount);
    }
    
    /**
     * Get player current withdrawable dividend.
     */
    function getPlayerDividend(address _playerAddr)
        public
        view
        returns(uint256)
    {
        uint256 _endRid = rId;
        uint256 _startRid = player[_playerAddr].withdrawRid;
        uint256 _startSid;
        uint256 _dividend;
        
        for(uint256 i = _startRid; i <= _endRid; i++){
            
            if(i == _startRid)
                _startSid = player[_playerAddr].withdrawSid;
            else
                _startSid = 1;
            _dividend = _dividend.add(getPlayerDividendByRound(_playerAddr, i, _startSid));
        }
        
        return _dividend;
    }
    
    /**
     * Get player data for rounds and stages.
     */
    function getPlayerDividendByRound(address _playerAddr, uint256 _rId, uint256 _sId)
        public
        view
        returns(uint256)
    {
        uint256 _dividend;
        uint256 _startSid = _sId;
        uint256 _endSid = round[_rId].endSid;
        
        uint256 _playerAmount;
        uint256 _totalAmount;
        for(uint256 i = _startSid; i < _endSid; i++){
            
            if(stage[_rId][i].ended == false)
                continue;
                
            _playerAmount = 0;    
            _totalAmount = 0;
            for(uint256 j = 1; j <= i; j++){
                
                if(playerStageAmount[_rId][j][_playerAddr] > 0)
                    _playerAmount = _playerAmount.add(playerStageAmount[_rId][j][_playerAddr]);
                
                _totalAmount = _totalAmount.add(stage[_rId][j].amount);
            }
            
            if(_playerAmount == 0 || stage[_rId][i].dividendAmount == 0)
                continue;
            _dividend = _dividend.add((_playerAmount.mul(stage[_rId][i].dividendAmount)).div(_totalAmount));
        }
        
        if(round[_rId].ended == true)
            _dividend = _dividend.add(getPlayerJackpot(_playerAddr, _rId));

        return _dividend;
    }
    
    
    /**
     * Get player data for jackpot winnings.
     */
    function getPlayerJackpot(address _playerAddr, uint256 _rId)
        public
        view
        returns(uint256)
    {
        uint256 _dividend;
        
        if(round[_rId].ended == false)
            return _dividend;
        
        uint256 _endSid = round[_rId].endSid;
        uint256 _playerStageAmount = playerStageAmount[_rId][_endSid][_playerAddr];
        uint256 _stageAmount = stage[_rId][_endSid].amount;
        if(_stageAmount <= 0)
            return _dividend;
            
        uint256 _jackpotAmount = round[_rId].jackpotAmount.mul(jackpotProportion) / 100;
        uint256 _stageDividendAmount = stage[_rId][_endSid].dividendAmount;
        uint256 _stageJackpotAmount = (_stageAmount.mul(jackpot) / 100).add(_stageDividendAmount);
        
        _dividend = _dividend.add(((_playerStageAmount.mul(_jackpotAmount)).div(_stageAmount)));
        _dividend = _dividend.add(((_playerStageAmount.mul(_stageJackpotAmount)).div(_stageAmount)));
        
        return _dividend;
    }
    
    /**
     * For frontend.
     */
    function getHeadInfo()
        public
        view
        returns(uint256, uint256, uint256, uint256, uint256, uint256, bool)
    {
        return
            (
                rId,
                sId,
                round[rId].jackpotAmount,
                stage[rId][sId].targetAmount,
                stage[rId][sId].amount,
                stage[rId][sId].end,
                stage[rId][sId].ended
            );
    }
    
    /**
     * For frontend.
     */
    function getPersonalStatus(address _playerAddr)
        public
        view
        returns(uint256, uint256, uint256)
    {
        if (player[_playerAddr].active == true){
            return
            (
                round[rId].jackpotAmount,
                playerRoundAmount[rId][_playerAddr],
                getPlayerDividendByRound(_playerAddr, rId, 1)
            );
        }else{
            return
            (
                round[rId].jackpotAmount,
                0,
                0
            );
        }
    }
    
    /**
     * For frontend.
     */
    function getValueInfo(address _playerAddr)
        public
        view
        returns(uint256, uint256)
    {
        if (player[_playerAddr].active == true){
            return
            (
                getPlayerDividend(_playerAddr),
                player[_playerAddr].promotionAmount
            );
        }else{
            return
            (
                0,
                0
            );
        }
    }
    
}

library Indatasets {
    
    struct Round {
        uint256 start;          // time round started
        uint256 end;            // time round ends/ended
        bool ended;             // has round end function been ran
        uint256 endSid;         // last stage for current round
        uint256 amount;         // Eth recieved for current round
        uint256 jackpotAmount;  // total jackpot for current round
        uint256 players;        // total players for current round
    }
    
    struct Stage {
        uint256 start;          // time stage started
        uint256 end;            // time strage ends/ended
        bool ended;             // has stage end function been ran
        uint256 targetAmount;   // amount needed for current stage
        uint256 amount;         // Eth received for current stage
        uint256 dividendAmount; // total dividend for current stage
        uint256 accAmount;      // total accumulative amount for current stage
        uint256 players;        // total players for current stage
    }
    
    struct Player {
        bool active;                // Activation status of player, if false player has not been activated.
        uint256 amount;             // Total player input.
        uint256 promotionAmount;    // Total promotion amount of the player.
        uint256 withdrawRid;        // Last withdraw round of the player.
        uint256 withdrawSid;        // Last withdraw stage of the player.
    }
}

/**
 * @title SafeMath v0.1.9
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
    
    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) 
        internal 
        pure 
        returns (uint256) 
    {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
    
    /**
    * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) 
        internal 
        pure 
        returns (uint256) 
    {
        assert(b <= a);
        return a - b;
    }

    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    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;
    }
    
    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    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;
    }
    
    /**
     * @dev gives square root of given x.
     */
    function sqrt(uint256 x)
        internal
        pure
        returns (uint256 y) 
    {
        uint256 z = ((add(x,1)) / 2);
        y = x;
        while (z < y) 
        {
            y = z;
            z = ((add((x / z),z)) / 2);
        }
    }
    
    /**
     * @dev gives square. multiplies x by x
     */
    function sq(uint256 x)
        internal
        pure
        returns (uint256)
    {
        return (mul(x,x));
    }
    
    /**
     * @dev x to the power of y 
     */
    function pwr(uint256 x, uint256 y)
        internal 
        pure 
        returns (uint256)
    {
        if (x==0)
            return (0);
        else if (y==0)
            return (1);
        else 
        {
            uint256 z = x;
            for (uint256 i=1; i < y; i++)
                z = mul(z,x);
            return (z);
        }
    }
}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"playerRoundwithdrawAmountFlag","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"activate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"duration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dividend","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"activated","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"scientists","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"playerStageAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddr","type":"address"}],"name":"getPlayerDividend","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"developerAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"stage","outputs":[{"name":"start","type":"uint256"},{"name":"end","type":"uint256"},{"name":"ended","type":"bool"},{"name":"targetAmount","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"dividendAmount","type":"uint256"},{"name":"accAmount","type":"uint256"},{"name":"players","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"round","outputs":[{"name":"start","type":"uint256"},{"name":"end","type":"uint256"},{"name":"ended","type":"bool"},{"name":"endSid","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"jackpotAmount","type":"uint256"},{"name":"players","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"playerRoundAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"player","outputs":[{"name":"active","type":"bool"},{"name":"amount","type":"uint256"},{"name":"promotionAmount","type":"uint256"},{"name":"withdrawRid","type":"uint256"},{"name":"withdrawSid","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"playerStageAccAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"jackpot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"playerRoundSid","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"promotionRatio","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"jackpotProportion","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddr","type":"address"},{"name":"_rId","type":"uint256"},{"name":"_sId","type":"uint256"}],"name":"getPlayerDividendByRound","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"amountProportion","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddr","type":"address"},{"name":"_rId","type":"uint256"}],"name":"getPlayerJackpot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddr","type":"address"}],"name":"getPersonalStatus","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddr","type":"address"}],"name":"getValueInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getHeadInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_recommendAddr","type":"address"}],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"}]

  Contract Creation Code Switch To Opcodes View
60c0604052600860808190527f496e66696e69747900000000000000000000000000000000000000000000000060a090815262000040916000919062000128565b506040805180820190915260038082527f496e6600000000000000000000000000000000000000000000000000000000006020909201918252620000879160019162000128565b50600a805460ff19169055604080516101608101825260008152603260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810191909152620000fc90601590600b620001ad565b503480156200010a57600080fd5b50600a805461010060a860020a031916336101000217905562000210565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200016b57805160ff19168380011785556200019b565b828001600101855582156200019b579182015b828111156200019b5782518255916020019190600101906200017e565b50620001a9929150620001f0565b5090565b8280548282559060005260206000209081019282156200019b579160200282015b828111156200019b578251829060ff16905591602001919060010190620001ce565b6200020d91905b80821115620001a95760008155600101620001f7565b90565b61229580620002206000396000f30060806040526004361061018a5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630177c42d811461028e57806306fdde03146102c45780630f15f4c01461034e5780630fb5a6b4146103635780630ff8cf9b14610378578063186601ca1461038d578063255e444e146103b65780632763ea7f146103cb5780632e1d22b6146103f257806333b6baf51461041357806334aed7a01461044457806334d5f37b146104a05780633ccfd60b146104f05780634480f84e146105055780634c54e1b514610529578063501976461461057757806354999f6d1461058c57806364c4bc49146105a15780636b31ee01146105c8578063774b99dd146105dd5780637a07424e146106015780638090d83c1461061657806395d89b411461062b5780639b8342d414610640578063b055d1bc14610667578063b5554e731461067c578063bb87b5f8146106a0578063bed47ed8146106df578063c62fae5d146106f4578063d571dbac1461072e578063f088d5471461077d575b600a5460ff16151560011461020f576040805160e560020a62461bcd02815260206004820152602960248201527f697473206e6f74207265616479207965742e2020636865636b203f657461206960448201527f6e20646973636f72640000000000000000000000000000000000000000000000606482015290519081900360840190fd5b33321461021b57600080fd5b655af3107a400034101561026f57600a54604051600160a060020a0361010090920491909116903480156108fc02916000818181858888f19350505050158015610269573d6000803e3d6000fd5b5061028c565b655af3107a400034101561028257600080fd5b61028c6000610791565b005b34801561029a57600080fd5b506102b2600435600160a060020a036024351661099e565b60408051918252519081900360200190f35b3480156102d057600080fd5b506102d96109bb565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103135781810151838201526020016102fb565b50505050905090810190601f1680156103405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561035a57600080fd5b5061028c610a49565b34801561036f57600080fd5b506102b2610b44565b34801561038457600080fd5b506102b2610b4a565b34801561039957600080fd5b506103a2610b50565b604080519115158252519081900360200190f35b3480156103c257600080fd5b506102b2610b59565b3480156103d757600080fd5b506102b2600435602435600160a060020a0360443516610b5f565b3480156103fe57600080fd5b506102b2600160a060020a0360043516610b82565b34801561041f57600080fd5b50610428610c0e565b60408051600160a060020a039092168252519081900360200190f35b34801561045057600080fd5b5061045f600435602435610c22565b604080519889526020890197909752941515878701526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b3480156104ac57600080fd5b506104b8600435610c74565b604080519788526020880196909652931515868601526060860192909252608085015260a084015260c0830152519081900360e00190f35b3480156104fc57600080fd5b5061028c610cb5565b34801561051157600080fd5b506102b2600435600160a060020a0360243516610e62565b34801561053557600080fd5b5061054a600160a060020a0360043516610e7f565b60408051951515865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561058357600080fd5b506102b2610eb2565b34801561059857600080fd5b506102b2610eb8565b3480156105ad57600080fd5b506102b2600435602435600160a060020a0360443516610ebe565b3480156105d457600080fd5b506102b2610ee1565b3480156105e957600080fd5b506102b2600435600160a060020a0360243516610ee7565b34801561060d57600080fd5b506102b2610f04565b34801561062257600080fd5b506102b2610f0a565b34801561063757600080fd5b506102d9610f10565b34801561064c57600080fd5b506102b2600160a060020a0360043516602435604435610f6a565b34801561067357600080fd5b506102b2611140565b34801561068857600080fd5b506102b2600160a060020a0360043516602435611146565b3480156106ac57600080fd5b506106c1600160a060020a03600435166112ae565b60408051938452602084019290925282820152519081900360600190f35b3480156106eb57600080fd5b506102b2611346565b34801561070057600080fd5b50610715600160a060020a036004351661134c565b6040805192835260208301919091528051918290030190f35b34801561073a57600080fd5b506107436113af565b604080519788526020880196909652868601949094526060860192909252608085015260a0840152151560c0830152519081900360e00190f35b6102b2600160a060020a0360043516611402565b600b54600c546008546000838152600e6020908152604080832085845290915281206001015434929190421180156107ea57506000858152600e6020908152604080832087845290915290206004810154600390910154115b1561085d576107f9858561150b565b600b54600c546000828152600d60205260409020429055909550935061081f858561163d565b6108298585611718565b92506108358584611863565b61083f86846118f9565b915061084d858584866119c1565b610858858585611ae1565b610996565b6000858152600e6020908152604080832087845290915290206001015442116109965761088a8585611718565b92506108968584611863565b6108a086846118f9565b6000868152600e6020908152604080832088845290915290206003810154600490910154919350906108d29085611df7565b1061097f576000858152600e602090815260408083208784529091529020600481015460039091015461090491611e06565b9050610912858584846119c1565b61091d858583611ae1565b6109278585611e18565b600c549350610936858561163d565b6000858152600d60205260409020600301849055610965858584610960878663ffffffff611e0616565b6119c1565b610858858561097a868563ffffffff611e0616565b611ae1565b61098b858584866119c1565b610996858585611ae1565b505050505050565b601260209081526000928352604080842090915290825290205481565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a415780601f10610a1657610100808354040283529160200191610a41565b820191906000526020600020905b815481529060010190602001808311610a2457829003601f168201915b505050505081565b600a546101009004600160a060020a03163314610a6557600080fd5b600a5460ff1615610ac0576040805160e560020a62461bcd02815260206004820152601a60248201527f496e66696e69747920616c726561647920616374697661746564000000000000604482015290519081900360640190fd5b600a805460ff191660019081178255678ac7230489e800006002908155600383905560466004819055601c60055560065560075560089190915562015180600955600b819055600c8190556000819052600d602052427ffd54ff1ed53f34a900b24c5ba64f85761163b5d82d98a47b9bd80e45466993c555610b42908061163d565b565b60095481565b60045481565b600a5460ff1681565b60075481565b601360209081526000938452604080852082529284528284209052825290205481565b600b54600160a060020a0382166000908152600f60205260408120600301549091908280825b848111610c045783811415610bda57600160a060020a0387166000908152600f60205260409020600401549250610bdf565b600192505b610bfa610bed888386610f6a565b839063ffffffff611df716565b9150600101610ba8565b5095945050505050565b600a546101009004600160a060020a031681565b600e602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600586015460068701546007909701549596949560ff9094169492939192909188565b600d6020526000908152604090208054600182015460028301546003840154600485015460058601546006909601549495939460ff90931693919290919087565b600a5460009081908190819060ff161515600114610d43576040805160e560020a62461bcd02815260206004820152602960248201527f697473206e6f74207265616479207965742e2020636865636b203f657461206960448201527f6e20646973636f72640000000000000000000000000000000000000000000000606482015290519081900360840190fd5b333214610d4f57600080fd5b336000908152600f602052604090205460ff161515600114610d7057600080fd5b600b549350600c549250610d85848433611f51565b336000908152600f6020526040812060048101939093556003909201929092559193509150811115610ddb57336000818152600f6020908152604080832060030154835260128252808320938352929052208190555b336000908152600f60205260408120600201541115610e2e57336000908152600f6020526040902060020154610e1890839063ffffffff611df716565b336000908152600f602052604081206002015591505b604051339083156108fc029084906000818181858888f19350505050158015610e5b573d6000803e3d6000fd5b5050505050565b601060209081526000928352604080842090915290825290205481565b600f602052600090815260409020805460018201546002830154600384015460049094015460ff90931693919290919085565b600b5481565b60025481565b601460209081526000938452604080852082529284528284209052825290205481565b60055481565b601160209081526000928352604080842090915290825290205481565b60085481565b60065481565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a415780601f10610a1657610100808354040283529160200191610a41565b6000828152600d602052604081206003015481908390828083815b848210156111025760008a8152600e6020908152604080832085845290915290206002015460ff161515610fb8576110f7565b506000925082915060015b8181116110725760008a81526013602090815260408083208484528252808320600160a060020a038f168452909152812054111561103a5760008a81526013602090815260408083208484528252808320600160a060020a038f16845290915290205461103790859063ffffffff611df716565b93505b60008a8152600e6020908152604080832084845290915290206004015461106890849063ffffffff611df716565b9250600101610fc3565b831580611099575060008a8152600e60209081526040808320858452909152902060050154155b156110a3576110f7565b60008a8152600e602090815260408083208584529091529020600501546110f4906110e79085906110db90889063ffffffff61220a16565b9063ffffffff61223516565b889063ffffffff611df716565b96505b600190910190610f85565b60008a8152600d602052604090206002015460ff161515600114156111315761112e6110e78c8c611146565b96505b50949998505050505050505050565b60035481565b6000818152600d6020526040812060020154819081908190819081908190819060ff161515611177578697506112a1565b6000898152600d6020908152604080832060030154601383528184208185528352818420600160a060020a038f1685528352818420548d8552600e845282852082865290935290832060040154909850909650945084116111da578697506112a1565b60065460008a8152600d6020526040902060050154606491611202919063ffffffff61220a16565b81151561120b57fe5b049250600e60008a815260200190815260200160002060008781526020019081526020016000206005015491506112698260646112536005548861220a90919063ffffffff16565b81151561125c57fe5b049063ffffffff611df716565b90506112826110e7856110db888763ffffffff61220a16565b965061129b6110e7856110db888563ffffffff61220a16565b96508697505b5050505050505092915050565b600160a060020a0381166000908152600f60205260408120548190819060ff1615156001141561132457600b546000818152600d602090815260408083206005015460108352818420600160a060020a038a1685529092529091205490916113199087906001610f6a565b92509250925061133f565b5050600b546000908152600d60205260408120600501549150805b9193909250565b600c5481565b600160a060020a0381166000908152600f6020526040812054819060ff161515600114156113a35761137d83610b82565b600160a060020a0384166000908152600f602052604090206002015490925090506113aa565b5060009050805b915091565b600b54600c546000828152600d6020908152604080832060050154600e8352818420858552909252909120600381015460048201546001830154600290930154959694959394919390929160ff90911690565b600a5460009060ff16151560011461148a576040805160e560020a62461bcd02815260206004820152602960248201527f697473206e6f74207265616479207965742e2020636865636b203f657461206960448201527f6e20646973636f72640000000000000000000000000000000000000000000000606482015290519081900360840190fd5b33321461149657600080fd5b655af3107a40003410156114ea57600a54604051600160a060020a0361010090920491909116903480156108fc02916000818181858888f193505050501580156114e4573d6000803e3d6000fd5b50611506565b655af3107a40003410156114fd57600080fd5b61150682610791565b919050565b6000828152600d602090815260408083204260018083018290556002808401805460ff1990811684179091556003909401889055600e8652848720888852909552929094208083019490945591830180549092161790556007015415156115b9576000828152600d6020526040808220600590810154600186018452919092209091015461159e9163ffffffff611df716565b600183016000908152600d602052604090206005015561162a565b6006546000838152600d6020526040902060050154611613916064916115e691830363ffffffff61220a16565b8115156115ef57fe5b600185016000908152600d602052604090206005015491900463ffffffff611df716565b600183016000908152600d60205260409020600501555b5050600b80546001908101909155600c55565b6000828152600e602090815260408083208484529091528120429081905560095461166e919063ffffffff611df716565b6000848152600e6020908152604080832086845290915290206001908101919091558211156116f4576000838152600e602090815260408083206000198601845290915290204260018083019190915560028201805460ff19169091179055600380549101546064916116e39190830161220a565b8115156116ec57fe5b0490506116f9565b506002545b6000928352600e60209081526040808520938552929052912060030155565b60155460009034908310156117b45760008481526013602090815260408083208684528252808320338452909152902054601580546117ad92916103e89161179791908890811061176557fe5b60009182526020808320909101548a8352600e825260408084208b85529092529120600301549063ffffffff61220a16565b8115156117a057fe5b049063ffffffff611e0616565b905061180b565b60008481526013602090815260408083208684528252808320338452825280832054878452600e83528184208785529092529091206003015461180891906103e890611797906101f463ffffffff61220a16565b90505b34811061181a5734915061185c565b336108fc61182e348463ffffffff611e0616565b6040518115909202916000818181858888f19350505050158015611856573d6000803e3d6000fd5b505b8091505b5092915050565b6000828152600d6020526040902060040154611885908263ffffffff611df716565b6000838152600d6020526040902060040155600a54600754610100909104600160a060020a0316906108fc906064906118bf90859061220a565b8115156118c857fe5b049081150290604051600060405180830381858888f193505050501580156118f4573d6000803e3d6000fd5b505050565b600854600090600160a060020a038416158015906119205750600160a060020a0384163314155b80156119495750600160a060020a0384166000908152600f602052604090205460ff1615156001145b156119b7576119966064611963858463ffffffff61220a16565b81151561196c57fe5b600160a060020a0387166000908152600f602052604090206002015491900463ffffffff611df716565b600160a060020a0385166000908152600f6020526040902060020155611858565b5060009392505050565b6000848152600e6020908152604080832086845290915290206003810154600490910154859185918491906119f69083611df7565b1115611a0157600080fd5b60008411611a0e57611ad8565b6000878152600e60209081526040808320898452909152902060040154611a3b908563ffffffff611df716565b6000888152600e602090815260408083208a8452909152902060049081019190915554611aba90606490611a8690611a79908963ffffffff611e0616565b879063ffffffff61220a16565b811515611a8f57fe5b60008a8152600e602090815260408083208c845290915290206005015491900463ffffffff611df716565b6000888152600e602090815260408083208a84529091529020600501555b50505050505050565b6000808211611aef57611df1565b336000908152600f602052604090205460ff161515611b3057336000908152600f60205260409020805460ff19166001178155600381018590556004018390555b60008481526010602090815260408083203384529091529020541515611b7e576000848152600d60209081526040808320600601805460010190556011825280832033845290915290208390555b600084815260136020908152604080832086845282528083203384529091529020541515611bca576000848152600e602090815260408083208684529091529020600701805460010190555b6000848152601060209081526040808320338452909152902054611bf4908363ffffffff611df716565b600085815260106020908152604080832033808552908352818420949094558783526013825280832087845282528083209383529290522054611c3d908363ffffffff611df716565b60008581526013602090815260408083208784528252808320338452825280832093909355600f90522060010154611c7b908363ffffffff611df716565b336000818152600f60209081526040808320600101949094558782526011815283822092825291909152908120541115611df157600084815260146020908152604080832086845282528083203384529091529020541515611d9c575060008381526011602090815260408083203384529091529020545b82811015611d9c57600084815260136020908152604080832084845282528083203384529091528120541115611d9457600084815260136020908152604080832084845282528083203380855290835281842054888552601484528285208886528452828520918552925290912054611d719163ffffffff611df716565b600085815260146020908152604080832087845282528083203384529091529020555b600101611cf3565b60008481526014602090815260408083208684528252808320338452909152902054611dce908363ffffffff611df716565b600085815260146020908152604080832087845282528083203384529091529020555b50505050565b60008282018381101561185857fe5b600082821115611e1257fe5b50900390565b6005546000838152600e602090815260408083208584529091528120600401549091606491611e4c9163ffffffff61220a16565b811515611e5557fe5b6000858152600d6020526040902060038101859055600501549190049150611e83908263ffffffff611df716565b6000848152600d6020908152604080832060050193909355600e8152828220858352905220426001808301919091556002909101805460ff191682179055821115611f1e576000838152600e602090815260408083206000198601845290915280822060060154848352912060030154611efc91611df7565b6000848152600e60209081526040808320868452909152902060060155611f43565b6000838152600e60209081526040808320858452909152902060038101546006909101555b5050600c8054600101905550565b600160a060020a0381166000908152600f60205260408120600301548190819081908190819081908190815b8c82116121ee576000828152601060209081526040808320600160a060020a038f1684529091529020541515611fb2576121e3565b600160a060020a038b166000908152600f60205260408120600301549093508214611fde576001611ffb565b600160a060020a038b166000908152600f60205260409020600401545b93508390505b6000828152600d60205260409020600301548110156121225760008281526014602090815260408083208484528252808320600160a060020a038f16845290915281205411156120795760008281526014602090815260408083208484528252808320600160a060020a038f16845290915290205492505b8215156120a6576000828152601260209081526040808320600160a060020a038f16845290915290205492505b8215156120b25761211a565b6000828152600e60209081526040808320848452909152902060068101546005909101546120f6916120e9916110db90879061220a565b879063ffffffff611df716565b95506001909401936032851061211a578582826001018599509950995099506121fb565b600101612001565b6000828152600d602052604090206002015460ff161515600114801561216c57506000828152600e60209081526040808320600d8352818420600301548452909152812060040154115b80156121aa57506000828152601360209081526040808320600d83528184206003015484528252808320600160a060020a038f168452909152812054115b156121e3576121bc6120e98c84611146565b9550600190940193603285106121e3579498506001808201985096506000955088946121fb565b600190910190611f7d565b858d8d8599509950995099505b50505050505093509350935093565b60008083151561221d576000915061185c565b5082820282848281151561222d57fe5b041461185857fe5b60008080831161224157fe5b828481151561224c57fe5b049050828481151561225a57fe5b06818402018414151561185857fe00a165627a7a72305820c491b4fa52ea9260696dea5aea7bcb79914b0e65fee8a5f24dad8ff5c6bdd54e0029

   Swarm Source:
bzzr://c491b4fa52ea9260696dea5aea7bcb79914b0e65fee8a5f24dad8ff5c6bdd54e

 

View All
Block Age transaction Difficulty Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.