Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 38 txns
Token Tracker: Mineral (ORE)
 Latest 25 txns From a total of 38 Transactions

TxHash Age From To Value [TxFee]
0x96db22bb3d28766af5fcb25fc4c3cf2cd256a710b0dae0d29f0ce79da38e2e3d3 days 12 hrs ago0x54ca1ab5250e30399447b66f96d8f6c2bdbd65cc  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60 Ether0.001752639
0x1e01b5987395d0a33beaa68b5c41e01e2ed5170c7f975a824a0b7335443f89833 days 15 hrs ago0x54ca1ab5250e30399447b66f96d8f6c2bdbd65cc  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60.035 Ether0.002072248
0x664d257f35d59605fa1dd03f99ec987f381980d824a7b5030c5b0f2f5ece6eb43 days 15 hrs ago0xa3eb13b03ec8818cfec675a273fecbaaace39c6e  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60 Ether0.00100331
0x3465763edad218c011fb7b1d45bddad9c28eafaa3f1462e1be629a0d3193099c3 days 15 hrs ago0xa3eb13b03ec8818cfec675a273fecbaaace39c6e  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60 Ether0.00100331
0x79bdda17d78e2507e2095e8ea7c39318919116e5a8859562b80bd24d6749dbcd3 days 16 hrs ago0x54ca1ab5250e30399447b66f96d8f6c2bdbd65cc  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60 Ether0.000217348
0xb0843dba40a455feb082cd04f581e0b08b47feaf1c8cd20eaeba174f4ff55c943 days 16 hrs ago0xa3eb13b03ec8818cfec675a273fecbaaace39c6e  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60 Ether0.00133331
0x59dea0b59bfe7c60ee2cb9750dc3480752161c95c8bb66900bd6311a3ffd1d653 days 16 hrs ago0x54ca1ab5250e30399447b66f96d8f6c2bdbd65cc  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60 Ether0.000172212
0x76a98bafcb139349b201474ff82b886b2c0a12b6d8b3ce4f394ca00728ea9cd43 days 18 hrs ago0x00f92b50a424c486466581e00e9f5faf64ffb10e  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60.0005 Ether0.000382256
0x676152bf1859a44a4bdfa8f8c04157abc0a04552ab139ab01a4746f9d746829c3 days 18 hrs ago0xa3eb13b03ec8818cfec675a273fecbaaace39c6e  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60 Ether0.001329614
0x12ef24cef54239718da9edf3aa6b81f48a4cc334495ebc5e7b55297c400a7ecc3 days 18 hrs ago0x54ca1ab5250e30399447b66f96d8f6c2bdbd65cc  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60 Ether0.000626035
0x1046fcd27f18a4e55c32c2ebcd5a5306968dcecf479cea4d58f8dd73ec7507db3 days 19 hrs ago0x54ca1ab5250e30399447b66f96d8f6c2bdbd65cc  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60 Ether0.000482148
0x8ef88899857016fb3b4fc0b0c40a8e189a6c5e8d83737fa53bb53cbf8423d5bf3 days 21 hrs ago0x54ca1ab5250e30399447b66f96d8f6c2bdbd65cc  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60.01 Ether0.000522672
0xfc42612d1413a7c6499277d889ba1bc7af199816742316a4985197d53aae39974 days 8 hrs ago0x0049a0527e0950911f5a080a8dda9be0f67f1546  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60.0025 Ether0.000530364
0xeb6a53e1396933d294a54a88f8075b725986063ebffa2051c85add67df16d9dc4 days 8 hrs ago0x0049a0527e0950911f5a080a8dda9be0f67f1546  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60 Ether0.000221676
0xdbf429812adaa62bbdc03804bc8542b4f4e5a33cca97e2cc492018c95c31e9ba4 days 10 hrs ago0x0049a0527e0950911f5a080a8dda9be0f67f1546  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60.001 Ether0.00191215
0x1f7beb735fc95a68cd4050d026cad4aaeae0af7096d622dd362a25d623edbfb04 days 10 hrs ago0xa3eb13b03ec8818cfec675a273fecbaaace39c6e  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60 Ether0.001328382
0x510f8bf99462a0b8e5382311f5dbfacc7a35dc825d0a43b5df1a4068b083653f4 days 12 hrs ago0x54ca1ab5250e30399447b66f96d8f6c2bdbd65cc  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60 Ether0.000815103
0x106a9b64d1c34241873eb7cccc758103348355d4aff421dae5aa2acfeb8b7c254 days 18 hrs ago0x54ca1ab5250e30399447b66f96d8f6c2bdbd65cc  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60.0005 Ether0.001174816
0x18051d1296b1d191e16c2908bcd54d7a6bce7588477cdf999d524b2cde7311374 days 19 hrs ago0x54ca1ab5250e30399447b66f96d8f6c2bdbd65cc  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60.04 Ether0.001123594
0x2667ed82615713d7f347e09dfc396934e793f7b62092b2c8989d9c65ec468d2a4 days 19 hrs ago0x54ca1ab5250e30399447b66f96d8f6c2bdbd65cc  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60 Ether0.000732875
0xb19058c0ee35f8c158d6dcf0f48beb882824371de669c03cd28672c407397d4f5 days 5 hrs ago0x54ca1ab5250e30399447b66f96d8f6c2bdbd65cc  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60 Ether0.00018008
0x7d7a03667eccb05315a21ac33f024c70b94887e91c0b072b74082694931a22d15 days 8 hrs ago0x0b3b40bb590f850e04d96e827a1c4328e6bbbd1d  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60 Ether0.001405548
0x67b9f520b9049198cde9f5a1c35bbe61cc26598cb6aa657d881aa87095765d775 days 11 hrs ago0x54ca1ab5250e30399447b66f96d8f6c2bdbd65cc  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60 Ether0.000366832
0x31ff9fca51de00db6aa49957f4309aefbe401877ac7c839bf7645b1a7c452f155 days 11 hrs ago0x54ca1ab5250e30399447b66f96d8f6c2bdbd65cc  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60 Ether0.000588122
0x576ff1fb5e89683838abb13262ebe731cfea9bc9efd17f0c71671bd2512aff435 days 12 hrs ago0x0b3b40bb590f850e04d96e827a1c4328e6bbbd1d  IN   0xe78987de1d10eea074c463ce24747e24e4c567a60.01 Ether0.001721511
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 10 Internal Transactions

ParentTxHash Block Age From To Value
0x1e01b5987395d0a33beaa68b5c41e01e2ed5170c7f975a824a0b7335443f898365184183 days 15 hrs ago0xe78987de1d10eea074c463ce24747e24e4c567a60x780b6e67925e35b98b6ff8a1b2653572af73b8f90.035 Ether
0x76a98bafcb139349b201474ff82b886b2c0a12b6d8b3ce4f394ca00728ea9cd465175233 days 18 hrs ago0xe78987de1d10eea074c463ce24747e24e4c567a60x780b6e67925e35b98b6ff8a1b2653572af73b8f90.0005 Ether
0x8ef88899857016fb3b4fc0b0c40a8e189a6c5e8d83737fa53bb53cbf8423d5bf65168903 days 21 hrs ago0xe78987de1d10eea074c463ce24747e24e4c567a60x780b6e67925e35b98b6ff8a1b2653572af73b8f90.01 Ether
0xfc42612d1413a7c6499277d889ba1bc7af199816742316a4985197d53aae399765140524 days 8 hrs ago0xe78987de1d10eea074c463ce24747e24e4c567a60x780b6e67925e35b98b6ff8a1b2653572af73b8f90.0025 Ether
0xdbf429812adaa62bbdc03804bc8542b4f4e5a33cca97e2cc492018c95c31e9ba65134984 days 10 hrs ago0xe78987de1d10eea074c463ce24747e24e4c567a60x780b6e67925e35b98b6ff8a1b2653572af73b8f90.001 Ether
0x106a9b64d1c34241873eb7cccc758103348355d4aff421dae5aa2acfeb8b7c2565114484 days 18 hrs ago0xe78987de1d10eea074c463ce24747e24e4c567a60x780b6e67925e35b98b6ff8a1b2653572af73b8f90.0005 Ether
0x18051d1296b1d191e16c2908bcd54d7a6bce7588477cdf999d524b2cde73113765110234 days 19 hrs ago0xe78987de1d10eea074c463ce24747e24e4c567a60x780b6e67925e35b98b6ff8a1b2653572af73b8f90.04 Ether
0x576ff1fb5e89683838abb13262ebe731cfea9bc9efd17f0c71671bd2512aff4365067995 days 12 hrs ago0xe78987de1d10eea074c463ce24747e24e4c567a60x780b6e67925e35b98b6ff8a1b2653572af73b8f90.01 Ether
0x43355acfcf8574037124a493ee5a58d55f8a7419a353bc757a57dd91ba30711a65063045 days 14 hrs ago0xe78987de1d10eea074c463ce24747e24e4c567a60x780b6e67925e35b98b6ff8a1b2653572af73b8f90.045 Ether
0x22e4020d2744f5d20b1c771fb9b131d1e619abf1e6d3a0165ad741456d36dcf265062415 days 14 hrs ago0xe78987de1d10eea074c463ce24747e24e4c567a60x780b6e67925e35b98b6ff8a1b2653572af73b8f90.005 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: Mineral
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.18;




/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    
    uint256 c = a / b;
    
    return c;
  }

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

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





/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}








/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public view returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}









/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256 balance) {
    return balances[_owner];
  }

}









/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) internal allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public view returns (uint256) {
    return allowed[_owner][_spender];
  }

  /**
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}




/**
 * @title Math
 * @dev Assorted math operations
 */

library Math {
  function max64(uint64 a, uint64 b) internal pure returns (uint64) {
    return a >= b ? a : b;
  }

  function min64(uint64 a, uint64 b) internal pure returns (uint64) {
    return a < b ? a : b;
  }

  function max256(uint256 a, uint256 b) internal pure returns (uint256) {
    return a >= b ? a : b;
  }

  function min256(uint256 a, uint256 b) internal pure returns (uint256) {
    return a < b ? a : b;
  }
}






/**
 * @title Burnable Token
 * @dev Token that can be irreversibly burned (destroyed).
 */
contract BurnableToken is StandardToken {

    event Burn(address indexed burner, uint256 value);

    /**
     * @dev Burns a specific amount of tokens.
     * @param _value The amount of token to be burned.
     */
    function burn(uint256 _value) public {
        require(_value > 0);
        require(_value <= balances[msg.sender]);
        
        

        address burner = msg.sender;
        balances[burner] = balances[burner].sub(_value);
        totalSupply = totalSupply.sub(_value);
        Burn(burner, _value);
    }
}





/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


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


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


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


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

}









contract Jewel {
    function incise(address owner, uint256 value) external returns (uint);
}

contract DayQualitys {
    function getAreaQualityByDay(uint32 time, uint32 area) external returns (uint32);
}

contract Mineral is BurnableToken, Ownable {

    string public name = "Mineral";
    string public symbol = "ORE";
    uint8 public decimals = 18;

    uint256 public constant INITIAL_SUPPLY = 800 * 1000 * 1000 * (10 ** uint256(decimals));

    uint public constant MINER_4_HOURS = 0.0005 ether;
    uint public constant MINER_8_HOURS = 0.001 ether;
    uint public constant MINER_24_HOURS = 0.003 ether;

    mapping(address => uint[][72]) public deployRange;

    
    
    uint public timeScale = 1; 

    
    
    mapping(uint32 => uint32[3][72]) private areaHourDeployed;

    
    struct AreaHourDeployed {
        uint32[72] lastCollectHour;
        
        mapping(uint32 => uint32[3][72]) hour; 
    }
    
    
    mapping(address => AreaHourDeployed) private userAreaHourDeployed;

    
    uint8 public constant CHECK_POINT_HOUR = 4;

    
    
    mapping(uint32 => uint32[72]) private areaCheckPoints;

    
    mapping(uint32 => uint) private dayAverageOutput;

    
    struct AreaCheckPoint {
        
        mapping(uint32 => uint32[72]) hour;
    }

    
    
    mapping(address => AreaCheckPoint) private userAreaCheckPoints;

    uint256 amountEther;

    
    mapping (address => uint) public remainEther;

    uint32 public constractDeployTime = uint32(now) / 1 hours * 1 hours;

    mapping(address => uint) activeArea; 
    
    bool enableWhiteList = true;
    mapping(address => bool) whiteUserList;    
    address serverAddress;

    address coldWallet;

    bool enableCheckArea = true;

    Jewel public jewelContract;
    DayQualitys public dayQualitysContract;

    event Pause();
    event Unpause();

    bool public paused = false;

    function Mineral() public {
        totalSupply = INITIAL_SUPPLY;
        balances[this] = 300 * 1000 * 1000 * (10 ** uint256(decimals));
        balances[msg.sender] = INITIAL_SUPPLY - balances[this];
        dayAverageOutput[0] = 241920 * 10 ** uint256(decimals);
    }

    /*
    function setTimeScale(uint scale) public onlyOwner {
        timeScale = scale;
    }

    
    function setConstractDeployTime(uint32 time) public onlyOwner {
        constractDeployTime = time;
    }*/

    function setColdWallet(address _coldWallet) public onlyOwner {
        coldWallet = _coldWallet;
    }

    function disableWhiteUserList() public onlyOwner {
        enableWhiteList = false;
    }

    function disableCheckArea() public onlyOwner {
        enableCheckArea = false;
    }

    modifier checkWhiteList() {
        if (enableWhiteList) {
            require(whiteUserList[msg.sender]);
        }
        _;
    }

    function setServerAddress(address addr) public onlyOwner {
        serverAddress = addr;
    }

    function authUser(string addr) public {
        require(msg.sender == serverAddress || msg.sender == owner);
        address s = bytesToAddress(bytes(addr));
        whiteUserList[s] = true;
    }

    function bytesToAddress (bytes b) internal view returns (address) {
        uint result = 0;
        for (uint i = 0; i < b.length; i++) {
            uint c = uint(b[i]);
            if (c >= 48 && c <= 57) {
                result = result * 16 + (c - 48);
            }
            if(c >= 65 && c <= 90) {
                result = result * 16 + (c - 55);
            }
            if(c >= 97 && c <= 122) {
                result = result * 16 + (c - 87);
            }
        }
        return address(result);
    }

    function setDayQualitys(address dayQualitys) public onlyOwner {
        dayQualitysContract = DayQualitys(dayQualitys);
    }

    function getMyDeployAt(uint32 area, uint32 hour) public view returns (uint32[3]) {
        return userAreaHourDeployed[msg.sender].hour[hour][area];
    }

    function getMyMinersAt(uint32 area, uint32 hour) public view returns (uint32) {
        return _getUserMinersAt(msg.sender, area, hour);
    }

    function _getUserMinersAt(address user, uint32 area, uint32 hour) internal view returns(uint32) {
        //now start from start's nearest check point
        uint32 nc = hour/CHECK_POINT_HOUR*CHECK_POINT_HOUR;
        if (userAreaCheckPoints[user].hour[nc][area] == 0 && userAreaCheckPoints[user].hour[nc + CHECK_POINT_HOUR][area] == 0) {
            return 0;
        }
        uint32 h = 0;
        int64 userInc = 0;
        uint32[3] storage ptUser;
        AreaHourDeployed storage _userAreaHourDeployed = userAreaHourDeployed[user];
        
        for (h = nc; h <= hour; ++h) {
            
            
            
            ptUser = _userAreaHourDeployed.hour[h][area];
            userInc += ptUser[0] + ptUser[1] + ptUser[2] - _userAreaHourDeployed.hour[h - 4][area][0] - 
                _userAreaHourDeployed.hour[h - 8][area][1] - _userAreaHourDeployed.hour[h - 24][area][2];
        }
        return userAreaCheckPoints[user].hour[nc][area] + uint32(userInc);
    }

    function getDeployAt(uint32 area, uint32 hour) public view returns (uint32[3]) {
        return areaHourDeployed[hour][area];
    }


    function getMinersAt(uint32 area, uint32 hour) public view returns (uint32) {
        return _getMinersAt(area, hour);
    }

    function _getMinersAt(uint32 area, uint32 hour) internal view returns (uint32) {
        //now start from start's nearest check point
        uint32 nc = hour/CHECK_POINT_HOUR*CHECK_POINT_HOUR;
        uint32 h = 0;
        int64 userInc = 0;
        int64 totalInc = 0;
        uint32[3] storage ptArea;
        
        for (h = nc; h <= hour; ++h) {
            
            
            
            ptArea = areaHourDeployed[h][area];
            totalInc += ptArea[0] + ptArea[1] + ptArea[2] - areaHourDeployed[h - 4][area][0] - areaHourDeployed[h - 8][area][1] - areaHourDeployed[h - 24][area][2];
        }

        return areaCheckPoints[nc][area] + uint32(totalInc);
    }

    function updateArea(uint areaId) internal pure returns (uint) {
        
        uint row = areaId / 8;
        uint colum = areaId % 8;

        uint result = uint(1) << areaId;
        if (row-1 >= 0) {
            result |= uint(1) << ((row-1)*8+colum);
        }
        if (row+1 < 9) {
            result |= uint(1) << ((row+1)*8+colum);
        }
        if (colum-1 >= 0) {
            result |= uint(1) << (row*8+colum-1);
        }
        if (colum+1 < 8) {
            result |= uint(1) << (row*8+colum+1);
        }
        
        return result;
    }

    function checkArea(uint32[] area, address user) internal {
        if (enableCheckArea) {
            uint[] memory distinctArea = new uint[](area.length);
            uint distinctAreaLength = 0;
        
            for (uint i = 0; i < area.length; i++) {
                bool find = false;
                for (uint j = 0; j < distinctAreaLength; j++) {
                    if (distinctArea[j] == area[i]) {
                        find = true;
                        break;
                    }
                }     
                if (!find) {
                    distinctArea[distinctAreaLength] = area[i];
                    distinctAreaLength += 1;
                }
            }

            if (activeArea[user] == 0) {
                require(distinctAreaLength == 1);
                activeArea[user] = updateArea(distinctArea[0]);
            } else {
                uint userActiveArea = activeArea[user];
                uint updateActiveArea = userActiveArea;
                for (i = 0; i < distinctAreaLength; i++) {
                    require(userActiveArea & uint(1) << distinctArea[i] > 0);
                    updateActiveArea = updateActiveArea | updateArea(distinctArea[i]);
                }

                activeArea[user] = updateActiveArea;
            }
        }
    }

    function deployMiners(address user, uint32[] area, uint32[] period, uint32[] count) public checkWhiteList whenNotPaused payable {
        require(area.length > 0);
        require(area.length == period.length);
        require(area.length == count.length);
        address _user = user;
        if (_user == address(0)) {
            _user = msg.sender;
        }
        
        uint32 _hour = uint32((now - constractDeployTime) * timeScale / 1 hours);

        checkArea(area, user);
        
        uint payment = _deployMiners(_user, _hour, area, period, count);
        _updateCheckPoints(_user, _hour, area, period, count);

        require(payment <= msg.value);
        remainEther[msg.sender] += (msg.value - payment);
        if (coldWallet != address(0)) {
            coldWallet.transfer(payment);
        } else {
            amountEther += payment;
        }
        
    }

    /*function deployMinersTest(uint32 _hour, address user, uint32[] area, uint32[] period, uint32[] count) public checkWhiteList payable {
        require(area.length > 0);
        require(area.length == period.length);
        require(area.length == count.length);
        address _user = user;
        if (_user == address(0)) {
            _user = msg.sender;
        }
        

        checkArea(area, user);
        
        uint payment = _deployMiners(_user, _hour, area, period, count);
        _updateCheckPoints(_user, _hour, area, period, count);

        require(payment <= msg.value);
        remainEther[msg.sender] += (msg.value - payment);
        amountEther += payment;
    }*/

    function _deployMiners(address _user, uint32 _hour, uint32[] memory area, uint32[] memory period, uint32[] memory count) internal returns(uint){
        uint payment = 0;
        uint32 minerCount = 0;
        uint32[3][72] storage _areaDeployed = areaHourDeployed[_hour];
        uint32[3][72] storage _userAreaDeployed = userAreaHourDeployed[_user].hour[_hour];
        
        
        for (uint index = 0; index < area.length; ++index) {
            require (period[index] == 4 || period[index] == 8 || period[index] == 24);
            if (period[index] == 4) {
                _areaDeployed[area[index]][0] += count[index];
                _userAreaDeployed[area[index]][0] += count[index];
                payment += count[index] * MINER_4_HOURS;
            } else if (period[index] == 8) {
                _areaDeployed[area[index]][1] += count[index];
                _userAreaDeployed[area[index]][1] += count[index];
                payment += count[index] * MINER_8_HOURS;
            } else if (period[index] == 24) {
                _areaDeployed[area[index]][2] += count[index];
                _userAreaDeployed[area[index]][2] += count[index];
                payment += count[index] * MINER_24_HOURS;
            }
            minerCount += count[index];
            DeployMiner(_user, area[index], _hour, _hour + period[index], count[index]);

            adjustDeployRange(area[index], _hour, _hour + period[index]);
        }
        return payment;
    }   

    function adjustDeployRange(uint area, uint start, uint end) internal {
        uint len = deployRange[msg.sender][area].length;
        if (len == 0) {
            deployRange[msg.sender][area].push(start | (end << 128));
        } else {
            uint s = uint128(deployRange[msg.sender][area][len - 1]);
            uint e = uint128(deployRange[msg.sender][area][len - 1] >> 128);
            
            if (start >= s && start < e) {
                end = e > end ? e : end;
                deployRange[msg.sender][area][len - 1] = s | (end << 128);
            } else {
                deployRange[msg.sender][area].push(start | (end << 128));
            }
        }
    }

    function getDeployArrayLength(uint area) public view returns (uint) {
        return deployRange[msg.sender][area].length;
    }
    
    function getDeploy(uint area, uint index) public view returns (uint,uint) {
        uint s = uint128(deployRange[msg.sender][area][index]);
        uint e = uint128(deployRange[msg.sender][area][index] >> 128);
        return (s, e);
    }

    function _updateCheckPoints(address _user, uint32 _hour, uint32[] memory area, uint32[] memory period, uint32[] memory count) internal {
        uint32 _area = 0;
        uint32 _count = 0;
        uint32 ce4 = _hour + 4;
        uint32 ce8 = _hour + 8;
        uint32 ce24 = _hour + 24;
        uint32 cs = (_hour/CHECK_POINT_HOUR+1)*CHECK_POINT_HOUR;
        AreaCheckPoint storage _userAreaCheckPoints = userAreaCheckPoints[_user];
        uint32 cp = 0;
        for (uint index = 0; index < area.length; ++index) {
            _area = area[index];
            _count = count[index];
            if (period[index] == 4) {
                for (cp = cs; cp <= ce4; cp += CHECK_POINT_HOUR) {
                    areaCheckPoints[cp][_area] += _count;
                    _userAreaCheckPoints.hour[cp][_area] += _count;
                }
            } else if (period[index] == 8) {
                for (cp = cs; cp <= ce8; cp += CHECK_POINT_HOUR) {
                    areaCheckPoints[cp][_area] += _count;
                    _userAreaCheckPoints.hour[cp][_area] += _count;
                }
            } else if (period[index] == 24) {
                for (cp = cs; cp <= ce24; cp += CHECK_POINT_HOUR) {
                    areaCheckPoints[cp][_area] += _count;
                    _userAreaCheckPoints.hour[cp][_area] += _count;
                }
            }
        }
    }

    

    event DeployMiner(address addr, uint32 area, uint32 start, uint32 end, uint32 count);

    event Collect(address addr, uint32 area, uint32 start, uint32 end, uint areaCount);

    function getMyLastCollectHour(uint32 area) public view returns (uint32){
        return userAreaHourDeployed[msg.sender].lastCollectHour[area];
    }

    
    
    function collect(address user, uint32[] area) public  checkWhiteList whenNotPaused {
        require(address(dayQualitysContract) != address(0));
        uint32 current = uint32((now - constractDeployTime) * timeScale / 1 hours);
        require(area.length > 0);
        address _user = user;
        if (_user == address(0)) {
            _user = msg.sender;
        }
        uint total = 0;
        
        for (uint a = 0; a < area.length; ++a) {
            uint len = deployRange[msg.sender][area[a]].length;
            bool finish = true;
            for (uint i = 0; i < len; i += 1) {
                uint s = uint128(deployRange[msg.sender][area[a]][i]);
                uint e = uint128(deployRange[msg.sender][area[a]][i] >> 128);
                if (current < e && current >= s ) {
                    total += _collect(_user, uint32(s), current, area[a]);
                    
                    deployRange[msg.sender][area[a]][i] = current | (e << 128);
                    finish = false;
                } else if (current >= e) {
                    total += _collect(_user, uint32(s), uint32(e), area[a]);
                }
            }
            
            if (finish) {
                deployRange[msg.sender][area[a]].length = 0;
            } else {
                deployRange[msg.sender][area[a]][0] = deployRange[msg.sender][area[a]][len - 1];
                deployRange[msg.sender][area[a]].length = 1;
            }
        }    

        ERC20(this).transfer(_user, total);
    }

    function _collect(address _user, uint32 start, uint32 end, uint32 area) internal returns (uint) {
        uint result = 0;
        uint32 writeCount = 1;
        uint income = 0;
        uint32[] memory totalMiners = new uint32[](CHECK_POINT_HOUR);
        uint32[] memory userMiners = new uint32[](CHECK_POINT_HOUR);
        uint32 ps = start/CHECK_POINT_HOUR*CHECK_POINT_HOUR+CHECK_POINT_HOUR;
        if (ps >= end) {
            
            (income, writeCount) = _collectMinersByCheckPoints(_user, area, start, end, totalMiners, userMiners, writeCount);
            result += income;
        } else {
            
            (income, writeCount) = _collectMinersByCheckPoints(_user, area, start, ps, totalMiners, userMiners, writeCount);
            result += income;

            while (ps < end) {
                (income, writeCount) = _collectMinersByCheckPoints(_user, area, ps, uint32(Math.min64(end, ps + CHECK_POINT_HOUR)), totalMiners, userMiners, writeCount);
                result += income;

                ps += CHECK_POINT_HOUR;
            }
        }
        Collect(_user, area, start, end, result);
        return result;
    }

    function _collectMinersByCheckPoints(address _user, uint32 area, uint32 start, uint32 end, uint32[] memory totalMiners, uint32[] memory userMiners, uint32 _writeCount) internal returns (uint income, uint32 writeCount) {
        //now start from start's nearest check point
        writeCount = _writeCount;
        income = 0;
        
        
        if (userAreaCheckPoints[_user].hour[start/CHECK_POINT_HOUR*CHECK_POINT_HOUR][area] == 0 && userAreaCheckPoints[_user].hour[start/CHECK_POINT_HOUR*CHECK_POINT_HOUR + CHECK_POINT_HOUR][area] == 0) {
            return;
        }
        _getMinersByCheckPoints(_user, area, start, end, totalMiners, userMiners);
        uint ao = dayAverageOutput[start / 24];
        if (ao == 0) {
            uint32 d = start / 24;
            for (; d >= 0; --d) {
                if (dayAverageOutput[d] != 0) {
                    break;
                }
            } 
            ao = dayAverageOutput[d];
            for (d = d+1; d <= start / 24; ++d) {
                ao = ao*9996/10000;
                if ((start / 24 - d) < writeCount) {
                    dayAverageOutput[d] = ao;
                }
            }
            if (writeCount > (start / 24 - d - 1)) {
                writeCount = writeCount - (start / 24 - d - 1);
            } else {
                writeCount = 0;
            }
        }

        uint week = dayQualitysContract.getAreaQualityByDay(uint32(start * 1 hours + constractDeployTime), area);
        require(week > 0);

        ao = week * ao / 10 / 24 / 72;
        
        income = _getTotalIncomeAt(end - start, userMiners, totalMiners, ao, week);

        if (week == 10) { 
            income = income * 8 / 10;
        } else if (week == 5) { 
            income = income * 6 / 10;
        } 
    }

    function _getTotalIncomeAt(uint32 hourLength, uint32[] memory userMiners, uint32[] memory totalMiners, uint areaOutput, uint week) internal view returns(uint) {
        uint income = 0;
        for (uint i = 0; i < hourLength; ++i) {
            if (userMiners[i] != 0 && totalMiners[i] != 0) {
                income += (Math.min256(10 ** uint256(decimals), areaOutput / totalMiners[i]) * userMiners[i]);
            }
        }
        return income;
    } 

    function _getMinersByCheckPoints(address _user, uint32 area, uint32 start, uint32 end, uint32[] memory totalMiners, uint32[] memory userMiners) internal view {
        require((end - start) <= CHECK_POINT_HOUR);
        //now start from start's nearest check point
        uint32 h = 0;
        int64 userInc = 0;
        int64 totalInc = 0;
        uint32[3] storage ptUser;
        uint32[3] storage ptArea;
        AreaHourDeployed storage _userAreaHourDeployed = userAreaHourDeployed[_user];
        
        for (h = start/CHECK_POINT_HOUR*CHECK_POINT_HOUR; h <= start; ++h) {
            
            
            
            ptUser = _userAreaHourDeployed.hour[h][area];
            ptArea = areaHourDeployed[h][area];
            totalInc += ptArea[0] + ptArea[1] + ptArea[2] - areaHourDeployed[h - 4][area][0] - areaHourDeployed[h - 8][area][1] - areaHourDeployed[h - 24][area][2];
            userInc += ptUser[0] + ptUser[1] + ptUser[2] - _userAreaHourDeployed.hour[h - 4][area][0] - _userAreaHourDeployed.hour[h - 8][area][1] - _userAreaHourDeployed.hour[h - 24][area][2];
        }

        totalMiners[0] = areaCheckPoints[start/CHECK_POINT_HOUR*CHECK_POINT_HOUR][area] + uint32(totalInc);
        userMiners[0] = userAreaCheckPoints[_user].hour[start/CHECK_POINT_HOUR*CHECK_POINT_HOUR][area] + uint32(userInc);

        uint32 i = 1;
        for (h = start + 1; h < end; ++h) {
            
            
            
            ptUser = _userAreaHourDeployed.hour[h][area];
            ptArea = areaHourDeployed[h][area];
            totalMiners[i] = totalMiners[i-1] + ptArea[0] + ptArea[1] + ptArea[2] - areaHourDeployed[h - 4][area][0] - areaHourDeployed[h - 8][area][1] - areaHourDeployed[h - 24][area][2];
            userMiners[i] = userMiners[i-1] + ptUser[0] + ptUser[1] + ptUser[2] - _userAreaHourDeployed.hour[h - 4][area][0] - _userAreaHourDeployed.hour[h - 8][area][1] - _userAreaHourDeployed.hour[h - 24][area][2];
            ++i;
        }
    }

    
    function withdraw() public {
        uint remain = remainEther[msg.sender]; 
        require(remain > 0);
        remainEther[msg.sender] = 0;

        msg.sender.transfer(remain);
    }

    
    function withdrawMinerFee() public onlyOwner {
        require(amountEther > 0);
        owner.transfer(amountEther);
        amountEther = 0;
    }

    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    modifier whenPaused() {
        require(paused);
        _;
    }

    function pause() onlyOwner whenNotPaused public {
        paused = true;
        Pause();
    }

    function unpause() onlyOwner whenPaused public {
        paused = false;
        Unpause();
    }

    function transfer(address _to, uint256 _value) public whenNotPaused returns (bool) {
        return super.transfer(_to, _value);
    }

    function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool) {
        return super.transferFrom(_from, _to, _value);
    }

    function setJewelContract(address jewel) public onlyOwner {
        jewelContract = Jewel(jewel);
    }

    function incise(uint256 value) public returns (uint) {
        require(jewelContract != address(0));

        uint256 balance = balances[msg.sender];
        require(balance >= value);
        uint256 count = (value / (10 ** uint256(decimals)));
        require(count >= 1);

        uint ret = jewelContract.incise(msg.sender, count);

        burn(count * 10 ** uint256(decimals));

        return ret;
    }
}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"remainEther","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_coldWallet","type":"address"}],"name":"setColdWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableWhiteUserList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CHECK_POINT_HOUR","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawMinerFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint32"},{"name":"hour","type":"uint32"}],"name":"getMyDeployAt","outputs":[{"name":"","type":"uint32[3]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint256"}],"name":"getDeployArrayLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint32"},{"name":"hour","type":"uint32"}],"name":"getDeployAt","outputs":[{"name":"","type":"uint32[3]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint32"},{"name":"hour","type":"uint32"}],"name":"getMyMinersAt","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setServerAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"area","type":"uint32[]"}],"name":"collect","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MINER_8_HOURS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint256"},{"name":"index","type":"uint256"}],"name":"getDeploy","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"string"}],"name":"authUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINER_4_HOURS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"incise","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","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":"MINER_24_HOURS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dayQualitysContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"deployRange","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":false,"inputs":[{"name":"jewel","type":"address"}],"name":"setJewelContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"constractDeployTime","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint32"}],"name":"getMyLastCollectHour","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disableCheckArea","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"jewelContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"area","type":"uint32"},{"name":"hour","type":"uint32"}],"name":"getMinersAt","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"area","type":"uint32[]"},{"name":"period","type":"uint32[]"},{"name":"count","type":"uint32[]"}],"name":"deployMiners","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"dayQualitys","type":"address"}],"name":"setDayQualitys","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"timeScale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"area","type":"uint32"},{"indexed":false,"name":"start","type":"uint32"},{"indexed":false,"name":"end","type":"uint32"},{"indexed":false,"name":"count","type":"uint32"}],"name":"DeployMiner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"area","type":"uint32"},{"indexed":false,"name":"start","type":"uint32"},{"indexed":false,"name":"end","type":"uint32"},{"indexed":false,"name":"areaCount","type":"uint256"}],"name":"Collect","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":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60c0604052600760808190527f4d696e6572616c0000000000000000000000000000000000000000000000000060a0908152620000409160049190620001ac565b506040805180820190915260038082527f4f5245000000000000000000000000000000000000000000000000000000000060209092019182526200008791600591620001ac565b506006805460ff191660121790556001600855610e1063ffffffff42166010805463ffffffff191692909104610e100263ffffffff169190911790556012805460ff19166001179055601580547401000000000000000000000000000000000000000060a060020a60ff0219918216179091556017805490911690553480156200011057600080fd5b5060038054600160a060020a0319163390811790915560068054632faf080060ff918216600a90810a82810260009081553081526001602090815260408083206311e1a3009094029384905587549883528220978616840a909402919091039095559254938052600c90526203b1009216900a027f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e85562000251565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001ef57805160ff19168380011785556200021f565b828001600101855582156200021f579182015b828111156200021f57825182559160200191906001019062000202565b506200022d92915062000231565b5090565b6200024e91905b808211156200022d576000815560010162000238565b90565b613d5280620002616000396000f30060806040526004361061023a5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630433df85811461023f57806306087e5b1461027257806306fdde0314610295578063095ea7b31461031f57806314dacf5b146103575780631813aea51461036c57806318160ddd1461039757806323b872dd146103ac57806328ce5cdb146103d65780632b048f77146103eb5780632c027eb9146104475780632ff2e9dc1461045f578063313ce567146104745780633b404266146104895780633ccfd60b146104ad5780633dd00c42146104c25780633f4ba83a146104ff57806342966c681461051457806347b64eb01461052c5780634d6a7d331461054d5780634dbd71eb146105b057806350beb835146105c55780635a589fc9146105f95780635c975abb1461065257806363c2558a14610667578063661884631461067c57806370a08231146106a057806382281104146106c15780638456cb59146106d95780638da5cb5b146106ee5780638e73d8571461071f5780638ffdbf0b1461073457806390ce34ec1461074957806395d89b411461077057806395ddb3a614610785578063a7d53800146107a6578063a9059cbb146107bb578063a949f3af146107df578063b74d13a5146107fd578063cc99ece114610812578063d6387a3e14610827578063d73dd6231461084b578063dd62ed3e1461086f578063eea0d16814610896578063f0a7975f1461095e578063f2fde38b1461097f578063f32b85e8146109a0575b600080fd5b34801561024b57600080fd5b50610260600160a060020a03600435166109b5565b60408051918252519081900360200190f35b34801561027e57600080fd5b50610293600160a060020a03600435166109c7565b005b3480156102a157600080fd5b506102aa610a0d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102e45781810151838201526020016102cc565b50505050905090810190601f1680156103115780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561032b57600080fd5b50610343600160a060020a0360043516602435610a9b565b604080519115158252519081900360200190f35b34801561036357600080fd5b50610293610b01565b34801561037857600080fd5b50610381610b24565b6040805160ff9092168252519081900360200190f35b3480156103a357600080fd5b50610260610b29565b3480156103b857600080fd5b50610343600160a060020a0360043581169060243516604435610b2f565b3480156103e257600080fd5b50610293610b5c565b3480156103f757600080fd5b5061040f63ffffffff60043581169060243516610bc6565b6040518082606080838360005b8381101561043457818101518382015260200161041c565b5050505090500191505060405180910390f35b34801561045357600080fd5b50610260600435610c64565b34801561046b57600080fd5b50610260610c86565b34801561048057600080fd5b50610381610c98565b34801561049557600080fd5b5061040f63ffffffff60043581169060243516610ca1565b3480156104b957600080fd5b50610293610ccc565b3480156104ce57600080fd5b506104e663ffffffff60043581169060243516610d27565b6040805163ffffffff9092168252519081900360200190f35b34801561050b57600080fd5b50610293610d3b565b34801561052057600080fd5b50610293600435610db3565b34801561053857600080fd5b50610293600160a060020a0360043516610e71565b34801561055957600080fd5b50604080516020600460248035828101358481028087018601909752808652610293968435600160a060020a031696369660449591949091019291829185019084908082843750949750610eb79650505050505050565b3480156105bc57600080fd5b50610260611381565b3480156105d157600080fd5b506105e060043560243561138c565b6040805192835260208301919091528051918290030190f35b34801561060557600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102939436949293602493928401919081908401838280828437509497506114399650505050505050565b34801561065e57600080fd5b50610343611499565b34801561067357600080fd5b506102606114a9565b34801561068857600080fd5b50610343600160a060020a03600435166024356114b4565b3480156106ac57600080fd5b50610260600160a060020a03600435166115a4565b3480156106cd57600080fd5b506102606004356115bf565b3480156106e557600080fd5b506102936116d2565b3480156106fa57600080fd5b5061070361174f565b60408051600160a060020a039092168252519081900360200190f35b34801561072b57600080fd5b5061026061175e565b34801561074057600080fd5b50610703611769565b34801561075557600080fd5b50610260600160a060020a0360043516602435604435611778565b34801561077c57600080fd5b506102aa6117b4565b34801561079157600080fd5b50610293600160a060020a036004351661180f565b3480156107b257600080fd5b506104e6611855565b3480156107c757600080fd5b50610343600160a060020a0360043516602435611861565b3480156107eb57600080fd5b506104e663ffffffff60043516611885565b34801561080957600080fd5b506102936118c8565b34801561081e57600080fd5b506107036118ff565b34801561083357600080fd5b506104e663ffffffff6004358116906024351661190e565b34801561085757600080fd5b50610343600160a060020a036004351660243561191a565b34801561087b57600080fd5b50610260600160a060020a03600435811690602435166119b3565b604080516020600460248035828101358481028087018601909752808652610293968435600160a060020a031696369660449591949091019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506119de9650505050505050565b34801561096a57600080fd5b50610293600160a060020a0360043516611b2c565b34801561098b57600080fd5b50610293600160a060020a0360043516611b72565b3480156109ac57600080fd5b50610260611c07565b600f6020526000908152604090205481565b600354600160a060020a031633146109de57600080fd5b6015805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6004805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a935780601f10610a6857610100808354040283529160200191610a93565b820191906000526020600020905b815481529060010190602001808311610a7657829003601f168201915b505050505081565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b600354600160a060020a03163314610b1857600080fd5b6012805460ff19169055565b600481565b60005481565b60175460009060a060020a900460ff1615610b4957600080fd5b610b54848484611c0d565b949350505050565b600354600160a060020a03163314610b7357600080fd5b600e54600010610b8257600080fd5b600354600e54604051600160a060020a039092169181156108fc0291906000818181858888f19350505050158015610bbe573d6000803e3d6000fd5b506000600e55565b610bce613cbd565b336000908152600a6020908152604080832063ffffffff8087168552600990910190925290912090841660488110610c0257fe5b604080516060810191829052929190910190600390826000855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610c1c57509498975050505050505050565b3360009081526007602052604081208260488110610c7e57fe5b015492915050565b60065460ff16600a0a632faf08000281565b60065460ff1681565b610ca9613cbd565b63ffffffff808316600090815260096020526040902090841660488110610c0257fe5b336000908152600f6020526040812054908111610ce857600080fd5b336000818152600f60205260408082208290555183156108fc0291849190818181858888f19350505050158015610d23573d6000803e3d6000fd5b5050565b6000610d34338484611d86565b9392505050565b600354600160a060020a03163314610d5257600080fd5b60175460a060020a900460ff161515610d6a57600080fd5b6017805474ff0000000000000000000000000000000000000000191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b6000808211610dc157600080fd5b33600090815260016020526040902054821115610ddd57600080fd5b5033600081815260016020526040902054610dfe908363ffffffff61200516565b600160a060020a03821660009081526001602052604081209190915554610e2b908363ffffffff61200516565b600055604080518381529051600160a060020a038316917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b600354600160a060020a03163314610e8857600080fd5b6014805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000806000806000806000806000601260009054906101000a900460ff1615610ef8573360009081526013602052604090205460ff161515610ef857600080fd5b60175460a060020a900460ff1615610f0f57600080fd5b601754600160a060020a03161515610f2657600080fd5b600854601054610e109163ffffffff90911642030204985060008a51111515610f4e57600080fd5b8a9750600160a060020a0388161515610f65573397505b60009650600095505b89518610156112e0573360009081526007602052604090208a518b9088908110610f9457fe5b6020908102909101015163ffffffff1660488110610fae57fe5b0154945060019350600092505b84831015611198573360009081526007602052604090208a518b9088908110610fe057fe5b6020908102909101015163ffffffff1660488110610ffa57fe5b0180548490811061100757fe5b90600052602060002001546fffffffffffffffffffffffffffffffff16915060806007600033600160a060020a0316600160a060020a031681526020019081526020016000208b8881518110151561105b57fe5b6020908102909101015163ffffffff166048811061107557fe5b0180548590811061108257fe5b90600052602060002001549060020a90046fffffffffffffffffffffffffffffffff169050808963ffffffff161080156110c25750818963ffffffff1610155b15611167576110ea88838b8d8a8151811015156110db57fe5b90602001906020020151612017565b3360009081526007602052604090208b51919098019763ffffffff8b16700100000000000000000000000000000000840217918c908990811061112957fe5b6020908102909101015163ffffffff166048811061114357fe5b0180548590811061115057fe5b90600052602060002001819055506000935061118d565b63ffffffff8916811161118d576111888883838d8a8151811015156110db57fe5b870196505b600183019250610fbb565b83156111e6573360009081526007602052604081208b518c90899081106111bb57fe5b6020908102909101015163ffffffff16604881106111d557fe5b6111e0910182613cdc565b506112d5565b3360009081526007602052604090208a518b908890811061120357fe5b6020908102909101015163ffffffff166048811061121d57fe5b018054600019870190811061122e57fe5b6000918252602080832090910154338352600790915260409091208b518c908990811061125757fe5b6020908102909101015163ffffffff166048811061127157fe5b018054600090811061127f57fe5b60009182526020808320909101929092553381526007909152604090208a51600191908c90899081106112ae57fe5b6020908102909101015163ffffffff16604881106112c857fe5b6112d3910182613cdc565b505b856001019550610f6e565b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038a166004820152602481018990529051309163a9059cbb9160448083019260209291908290030181600087803b15801561134857600080fd5b505af115801561135c573d6000803e3d6000fd5b505050506040513d602081101561137257600080fd5b50505050505050505050505050565b66038d7ea4c6800081565b33600090815260076020526040812081908190819086604881106113ac57fe5b018054869081106113b957fe5b6000918252602080832090910154338352600790915260409091206fffffffffffffffffffffffffffffffff909116925060809087604881106113f857fe5b0180548790811061140557fe5b90600052602060002001549060020a90046fffffffffffffffffffffffffffffffff16905081819350935050509250929050565b601454600090600160a060020a031633148061145f5750600354600160a060020a031633145b151561146a57600080fd5b61147382612172565b600160a060020a03166000908152601360205260409020805460ff191660011790555050565b60175460a060020a900460ff1681565b6601c6bf5263400081565b336000908152600260209081526040808320600160a060020a03861684529091528120548083111561150957336000908152600260209081526040808320600160a060020a038816845290915281205561153e565b611519818463ffffffff61200516565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160a060020a031660009081526001602052604090205490565b601654600090819081908190600160a060020a031615156115df57600080fd5b336000908152600160205260409020549250848310156115fe57600080fd5b60065460ff16600a0a8581151561161157fe5b049150600182101561162257600080fd5b601654604080517f833eaa8b000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a039092169163833eaa8b916044808201926020929091908290030181600087803b15801561168f57600080fd5b505af11580156116a3573d6000803e3d6000fd5b505050506040513d60208110156116b957600080fd5b5051600654909150610b549060ff16600a0a8302610db3565b600354600160a060020a031633146116e957600080fd5b60175460a060020a900460ff161561170057600080fd5b6017805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b600354600160a060020a031681565b660aa87bee53800081565b601754600160a060020a031681565b6007602052600083815260409020826048811061179157fe5b0180548290811061179e57fe5b9060005260206000200160009250925050505481565b6005805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a935780601f10610a6857610100808354040283529160200191610a93565b600354600160a060020a0316331461182657600080fd5b6016805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60105463ffffffff1681565b60175460009060a060020a900460ff161561187b57600080fd5b610d34838361223b565b336000908152600a6020526040812063ffffffff8316604881106118a557fe5b600891828204019190066004029054906101000a900463ffffffff169050919050565b600354600160a060020a031633146118df57600080fd5b6015805474ff000000000000000000000000000000000000000019169055565b601654600160a060020a031681565b6000610d34838361231e565b336000908152600260209081526040808320600160a060020a038616845290915281205461194e908363ffffffff61249516565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b6012546000908190819060ff1615611a0e573360009081526013602052604090205460ff161515611a0e57600080fd5b60175460a060020a900460ff1615611a2557600080fd5b8551600010611a3357600080fd5b8451865114611a4157600080fd5b8351865114611a4f57600080fd5b869250600160a060020a0383161515611a66573392505b600854601054610e109163ffffffff909116420302049150611a8886886124a4565b611a9583838888886126b5565b9050611aa48383888888612c16565b34811115611ab157600080fd5b336000908152600f60205260409020805434839003019055601554600160a060020a031615611b1a57601554604051600160a060020a039091169082156108fc029083906000818181858888f19350505050158015611b14573d6000803e3d6000fd5b50611b23565b600e8054820190555b50505050505050565b600354600160a060020a03163314611b4357600080fd5b6017805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600354600160a060020a03163314611b8957600080fd5b600160a060020a0381161515611b9e57600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60085481565b6000600160a060020a0383161515611c2457600080fd5b600160a060020a038416600090815260016020526040902054821115611c4957600080fd5b600160a060020a0384166000908152600260209081526040808320338452909152902054821115611c7957600080fd5b600160a060020a038416600090815260016020526040902054611ca2908363ffffffff61200516565b600160a060020a038086166000908152600160205260408082209390935590851681522054611cd7908363ffffffff61249516565b600160a060020a038085166000908152600160209081526040808320949094559187168152600282528281203382529091522054611d1b908363ffffffff61200516565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b6000808080808060048063ffffffff8916600160a060020a038c166000908152600d60209081526040808320949093049490940263ffffffff81811683529390945220919650891660488110611dd857fe5b60088104919091015460079091166004026101000a900463ffffffff16158015611e565750600160a060020a0389166000908152600d6020908152604080832063ffffffff60048a0181168552925290912090891660488110611e3757fe5b60088104919091015460079091166004026101000a900463ffffffff16155b15611e645760009550611ff9565b50600160a060020a0388166000908152600a602052604081208594509092505b63ffffffff80881690851611611fa15763ffffffff8085166000908152600983016020526040902090891660488110611eb957fe5b63ffffffff6017198701811660009081526009850160205260409020929091019350891660488110611ee757fe5b015463ffffffff600719860181166000908152600984016020526040902068010000000000000000909204811691908a1660488110611f2257fe5b015463ffffffff6003198701811660009081526009850160205260409020640100000000909204811691908b1660488110611f5957fe5b015484546001979097019663ffffffff918216818316640100000000830484160168010000000000000000909204831691909101039190910391909103169290920191611e84565b600160a060020a0389166000908152600d6020908152604080832063ffffffff808a168552925290912084918a1660488110611fd957fe5b600891828204019190066004029054906101000a900463ffffffff160195505b50505050509392505050565b60008282111561201157fe5b50900390565b60408051600480825260a08201909252600091829160019183916060918291849160208201608080388339505060408051600480825260a082019092529295509050602082016080803883390190505091506004808063ffffffff8d16040201905063ffffffff808a16908216106120a5576120988b898c8c87878b612f75565b9681019695509350612105565b6120b48b898c8487878b612f75565b96810196955093505b8863ffffffff168163ffffffff161015612105576120f58b89836120ed63ffffffff808f169060048401166132b5565b87878b612f75565b96810196955093506004016120bd565b60408051600160a060020a038d16815263ffffffff808b166020830152808d16828401528b1660608201526080810188905290517feb20d87b6aef9216f658e1fcee101a026ada2f53b25e6fc37e6ed979b8d9f44f9181900360a00190a150939998505050505050505050565b60008080805b845182101561223257848281518110151561218f57fe5b01602001517f0100000000000000000000000000000000000000000000000000000000000000908190048102049050603081108015906121d0575060398111155b156121e15760308103836010020192505b604181101580156121f35750605a8111155b156122045760378103836010020192505b606181101580156122165750607a8111155b156122275760578103836010020192505b600190910190612178565b50909392505050565b6000600160a060020a038316151561225257600080fd5b3360009081526001602052604090205482111561226e57600080fd5b3360009081526001602052604090205461228e908363ffffffff61200516565b3360009081526001602052604080822092909255600160a060020a038516815220546122c0908363ffffffff61249516565b600160a060020a0384166000818152600160209081526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b6000600463ffffffff831681900402808280805b63ffffffff808816908516116124475763ffffffff80851660009081526009602052604090209089166048811061236557fe5b63ffffffff60171987018116600090815260096020526040902092909101925089166048811061239157fe5b015463ffffffff60071986018116600090815260096020526040902068010000000000000000909204811691908a16604881106123ca57fe5b015463ffffffff600319870181166000908152600960205260409020640100000000909204811691908b16604881106123ff57fe5b015483546001979097019663ffffffff918216818316640100000000830484160168010000000000000000909204831691909101039190910391909103169190910190612332565b63ffffffff8086166000908152600b6020526040902083918a166048811061246b57fe5b600891828204019190066004029054906101000a900463ffffffff16019550505050505092915050565b600082820183811015610d3457fe5b6060600080600080600080601560149054906101000a900460ff16156126aa5788516040519080825280602002602001820160405280156124ef578160200160208202803883390190505b50965060009550600094505b88518510156125b55760009350600092505b8583101561256557888581518110151561252357fe5b9060200190602002015163ffffffff16878481518110151561254157fe5b90602001906020020151141561255a5760019350612565565b60019092019161250d565b8315156125aa57888581518110151561257a57fe5b9060200190602002015163ffffffff16878781518110151561259857fe5b60209081029091010152600195909501945b6001909401936124fb565b600160a060020a038816600090815260116020526040902054151561262057600186146125e157600080fd5b6126028760008151811015156125f357fe5b906020019060200201516132df565b600160a060020a0389166000908152601160205260409020556126aa565b5050600160a060020a038616600090815260116020526040812054909350805b8585101561268e576000878681518110151561265857fe5b6020908102909101015160020a83161161267157600080fd5b61268287868151811015156125f357fe5b60019095019417612640565b600160a060020a03881660009081526011602052604090208190555b505050505050505050565b63ffffffff84166000818152600960208181526040808420600160a060020a038b168552600a8352818520958552949092019052812090918291829190825b8851811015612c0757878181518110151561270b57fe5b9060200190602002015163ffffffff16600414806127465750878181518110151561273257fe5b9060200190602002015163ffffffff166008145b8061276e5750878181518110151561275a57fe5b9060200190602002015163ffffffff166018145b151561277957600080fd5b878181518110151561278757fe5b9060200190602002015163ffffffff166004141561288e5786818151811015156127ad57fe5b90602001906020020151838a838151811015156127c657fe5b6020908102909101015163ffffffff16604881106127e057fe5b01805463ffffffff19811663ffffffff9182169390930116919091179055865187908290811061280c57fe5b90602001906020020151828a8381518110151561282557fe5b6020908102909101015163ffffffff166048811061283f57fe5b01805463ffffffff19811663ffffffff918216939093011691909117905586516601c6bf526340009088908390811061287457fe5b9060200190602002015163ffffffff160285019450612ae8565b878181518110151561289c57fe5b9060200190602002015163ffffffff16600814156129a85786818151811015156128c257fe5b90602001906020020151838a838151811015156128db57fe5b6020908102909101015163ffffffff16604881106128f557fe5b01805463ffffffff6401000000008083048216949094011690920267ffffffff0000000019909216919091179055865187908290811061293157fe5b90602001906020020151828a8381518110151561294a57fe5b6020908102909101015163ffffffff166048811061296457fe5b01805463ffffffff64010000000080830482169094011690920267ffffffff0000000019909216919091179055865166038d7ea4c680009088908390811061287457fe5b87818151811015156129b657fe5b9060200190602002015163ffffffff1660181415612ae85786818151811015156129dc57fe5b90602001906020020151838a838151811015156129f557fe5b6020908102909101015163ffffffff1660488110612a0f57fe5b01805463ffffffff68010000000000000000808304821694909401169092026bffffffff0000000000000000199092169190911790558651879082908110612a5357fe5b90602001906020020151828a83815181101515612a6c57fe5b6020908102909101015163ffffffff1660488110612a8657fe5b01805463ffffffff680100000000000000008083048216909401169092026bffffffff0000000000000000199092169190911790558651660aa87bee53800090889083908110612ad257fe5b9060200190602002015163ffffffff1602850194505b8681815181101515612af657fe5b90602001906020020151840193507f66412e9e4538ab9be49dd3e9c38afd30dc90b3bfdfe105047cf5cc945c311af68b8a83815181101515612b3457fe5b906020019060200201518c8b85815181101515612b4d57fe5b906020019060200201518e018b86815181101515612b6757fe5b602090810290910181015160408051600160a060020a03909716875263ffffffff9586169287019290925292841685820152908316606085015291166080830152519081900360a00190a1612bff8982815181101515612bc357fe5b9060200190602002015163ffffffff168b63ffffffff168a84815181101515612be857fe5b906020019060200201518d0163ffffffff1661335d565b6001016126f4565b50929998505050505050505050565b600160a060020a0385166000908152600d602052604081208190600487810191600889019160188a0191600163ffffffff8c16839004019091029085805b8b51811015612f65578b81815181101515612c6b57fe5b9060200190602002015198508981815181101515612c8557fe5b9060200190602002015197508a81815181101515612c9f57fe5b9060200190602002015163ffffffff1660041415612d83578391505b63ffffffff80881690831611612d7e5763ffffffff8083166000908152600b6020526040902089918b1660488110612cef57fe5b6008810491909101805460079092166004026101000a63ffffffff81810219841693829004811694909401841602919091179055828116600090815260208590526040902089918b1660488110612d4257fe5b60088104909101805463ffffffff6004600790941684026101000a80830482169095018116850294021916929092179091559190910190612cbb565b612f5d565b8a81815181101515612d9157fe5b9060200190602002015163ffffffff1660081415612e70578391505b63ffffffff80871690831611612d7e5763ffffffff8083166000908152600b6020526040902089918b1660488110612de157fe5b6008810491909101805460079092166004026101000a63ffffffff81810219841693829004811694909401841602919091179055828116600090815260208590526040902089918b1660488110612e3457fe5b60088104909101805463ffffffff6004600790941684026101000a80830482169095018116850294021916929092179091559190910190612dad565b8a81815181101515612e7e57fe5b9060200190602002015163ffffffff1660181415612f5d578391505b63ffffffff80861690831611612f5d5763ffffffff8083166000908152600b6020526040902089918b1660488110612ece57fe5b6008810491909101805460079092166004026101000a63ffffffff81810219841693829004811694909401841602919091179055828116600090815260208590526040902089918b1660488110612f2157fe5b60088104909101805463ffffffff6004600790941684026101000a80830482169095018116850294021916929092179091559190910190612e9a565b600101612c54565b5050505050505050505050505050565b600160a060020a0387166000908152600d60209081526040808320600463ffffffff8a811682900490910281168552925282208391839182918291908c1660488110612fbd57fe5b60088104919091015460079091166004026101000a900463ffffffff161580156130445750600160a060020a038c166000908152600d60209081526040808320600463ffffffff8f81168290048202909101811685529252909120908c166048811061302557fe5b60088104919091015460079091166004026101000a900463ffffffff16155b1561304e576132a6565b61305c8c8c8c8c8c8c613539565b601863ffffffff8b811691909104166000908152600c6020526040902054925082151561319d57601863ffffffff8b160491505b600063ffffffff8316106130ca5763ffffffff82166000908152600c6020526040902054156130be576130ca565b60001990910190613090565b63ffffffff82166000908152600c602052604090205492506001909101905b601863ffffffff8b160463ffffffff168263ffffffff1611151561315e5761271061270c84020492508363ffffffff168260188c63ffffffff1681151561312c57fe5b040363ffffffff1610156131535763ffffffff82166000908152600c602052604090208390555b8160010191506130e9565b600182601863ffffffff8d1604030363ffffffff168463ffffffff16111561319857600182601863ffffffff8d160403038403935061319d565b600093505b601754601054604080517f0eb3f993000000000000000000000000000000000000000000000000000000008152610e108e0263ffffffff9384160183166004820152918e16602483015251600160a060020a0390921691630eb3f993916044808201926020929091908290030181600087803b15801561321c57600080fd5b505af1158015613230573d6000803e3d6000fd5b505050506040513d602081101561324657600080fd5b505163ffffffff1690506000811161325d57600080fd5b60486018600a838602040404925061327a8a8a03888a8685613bd4565b945080600a141561329357600a600886020494506132a6565b80600514156132a657600a600686020494505b50505097509795505050505050565b60008167ffffffffffffffff168367ffffffffffffffff16106132d85781610d34565b5090919050565b60006008820460078316600284900a60001983018411613308576008600019840102820160020a175b60098360010110156133225760086001840102820160020a175b600060001983011061333d576000196008840283010160020a175b6008826001011015610b54576008929092020160010160020a1792915050565b33600090815260076020526040812081908190866048811061337b57fe5b015492508215156133d15733600090815260076020526040902086604881106133a057fe5b0180546001810182556000918252602090912070010000000000000000000000000000000086028717910155613531565b33600090815260076020526040902086604881106133eb57fe5b01805460001985019081106133fc57fe5b6000918252602080832090910154338352600790915260409091206fffffffffffffffffffffffffffffffff9091169250608090876048811061343b57fe5b018054600019860190811061344c57fe5b90600052602060002001549060020a90046fffffffffffffffffffffffffffffffff16905081851015801561348057508085105b156134ea578381116134925783613494565b805b336000908152600760205260409020909450700100000000000000000000000000000000850283179087604881106134c857fe5b01805460001986019081106134d957fe5b600091825260209091200155613531565b336000908152600760205260409020866048811061350457fe5b01805460018101825560009182526020909120700100000000000000000000000000000000860287179101555b505050505050565b6000808080808080600463ffffffff8c8c0316111561355757600080fd5b600160a060020a038d166000908152600a60205260408120600463ffffffff8e1681900402985090965086955091505b63ffffffff808c169088161161379c5763ffffffff80881660009081526009840160205260409020908d16604881106135bc57fe5b63ffffffff808a1660009081526009602052604090209290910195508d16604881106135e457fe5b63ffffffff6017198a01811660009081526009602052604090209290910194508d166048811061361057fe5b015463ffffffff60071989018116600090815260096020526040902068010000000000000000909204811691908e166048811061364957fe5b015463ffffffff6003198a0181166000908152600960205260409020640100000000909204811691908f166048811061367e57fe5b015485546017198b0163ffffffff90811660009081526009880160205260409020928116828216640100000000840483160168010000000000000000909304821692909201919091039290920392909203811696909601958d16604881106136e257fe5b015463ffffffff600719890181166000908152600985016020526040902068010000000000000000909204811691908e166048811061371d57fe5b015463ffffffff6003198a01811660009081526009860160205260409020640100000000909204811691908f166048811061375457fe5b0154865460019a909a019963ffffffff918216818316640100000000830484160168010000000000000000909204831691909101039190910391909103169590950194613587565b84600b6000600460ff16600460ff168f63ffffffff168115156137bb57fe5b040263ffffffff1663ffffffff1681526020019081526020016000208d63ffffffff166048811015156137ea57fe5b600891828204019190066004029054906101000a900463ffffffff160189600081518110151561381657fe5b9060200190602002019063ffffffff16908163ffffffff168152505085600d60008f600160a060020a0316600160a060020a031681526020019081526020016000206000016000600460ff16600460ff168f63ffffffff1681151561387757fe5b040263ffffffff1663ffffffff1681526020019081526020016000208d63ffffffff166048811015156138a657fe5b600891828204019190066004029054906101000a900463ffffffff16018860008151811015156138d257fe5b63ffffffff9092166020928302909101909101525060018a810196505b8963ffffffff168763ffffffff1610156113725763ffffffff80881660009081526009840160205260409020908d166048811061392857fe5b63ffffffff808a1660009081526009602052604090209290910195508d166048811061395057fe5b63ffffffff6017198a01811660009081526009602052604090209290910194508d166048811061397c57fe5b015463ffffffff60071989018116600090815260096020526040902068010000000000000000909204811691908e16604881106139b557fe5b015463ffffffff6003198a0181166000908152600960205260409020640100000000909204811691908f16604881106139ea57fe5b01600060088104919091015460079091166004026101000a900463ffffffff1685600260088104919091015460079091166004026101000a900463ffffffff1686600160088104919091015460079091166004026101000a900463ffffffff16876000600891828204019190066004029054906101000a900463ffffffff168e6001880363ffffffff16815181101515613a8057fe5b90602001906020020151010101030303898263ffffffff16815181101515613aa457fe5b63ffffffff92831660209182029092018101919091526017198901821660009081526009850190915260409020908d1660488110613ade57fe5b015463ffffffff600719890181166000908152600985016020526040902068010000000000000000909204811691908e1660488110613b1957fe5b015463ffffffff6003198a01811660009081526009860160205260409020640100000000909204811691908f1660488110613b5057fe5b015486548b5163ffffffff928316926801000000000000000083048116926401000000008104821692908216918f916000198a01909116908110613b9057fe5b90602001906020020151010101030303888263ffffffff16815181101515613bb457fe5b63ffffffff909216602092830290910190910152600196870196016138ef565b600080805b8763ffffffff16811015613ca3578681815181101515613bf557fe5b9060200190602002015163ffffffff16600014158015613c3357508581815181101515613c1e57fe5b9060200190602002015163ffffffff16600014155b15613c9b578681815181101515613c4657fe5b60209081029091010151600654875163ffffffff90921691613c959160ff16600a0a90899085908110613c7557fe5b9060200190602002015163ffffffff1688811515613c8f57fe5b04613cae565b02820191505b600101613bd9565b509695505050505050565b60008183106132d85781610d34565b6060604051908101604052806003906020820280388339509192915050565b815481835581811115613d0057600083815260209020613d00918101908301613d05565b505050565b613d2391905b80821115613d1f5760008155600101613d0b565b5090565b905600a165627a7a72305820d8cb369479822f27de29dcf334bbf681b82560b00d654f288f9d98cc4d9144270029

   Swarm Source:
bzzr://d8cb369479822f27de29dcf334bbf681b82560b00d654f288f9d98cc4d914427

 

View All
Block Age transaction Difficulty GasUsed 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.