Sponsored:   Ubex.com - World roadshow: Seoul Sep 17-19, Singapore Sep 19-20, Dubai 18-23. Meet us!.
Contract Overview
Balance: 3,422.885381183157029114 Ether
Ether Value: $717,128.72 (@ $209.51/ETH)
Transactions: 13307 txns
 Latest 25 txns From a total of 13307 Transactions
(> More Than 25 PendingTxns)

TxHash Age From To Value [TxFee]
0x088d1d62512da23ca9209b7405c375e4e20a877d54626d4147f9d952b9dba969(pending)0xc5b4aa003831396000dc23172a9017b315cc088e  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0x91e6e4b3879fcd00ec5a2f8ab2beeaab510396d4070e82428cf79076fc0db11a(pending)0xfafb9dfcb30a71585598afd8bdb8f5296af4b78e  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0xaa86310e7665186b05a087879a7db1dcd520d7e56601d475791469d286b34e31(pending)0xa3667cbb1e7a4b1109306e5c8fe1e430870ae540  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0x205d0b5e25beda669842ee44720a82f91f52bf61897aba60ab7e8749c07de960(pending)0x6db4608595b1d0dec9ec672aa4e424e48c00190e  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0x4dbf2023d58fa10affaf33e3725644acdcd8f5b913e26a5a7129e6748481702a(pending)0xcf62c4b87c05bd77507b58093c784682035837d6  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0x65a4ff614d83fbce485d55604ebb962a439dd7df960fff6ec54189ba854424da(pending)0x3decbff887533748197fef4a6a87b43fd10e05a9  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0x27d0a5f5ab05312ef3dcca08e58cc3221e1db1502b8042cd7fec5fe15ac98491(pending)0x153ae5cd60f4f7b4ddec656820493a23f1c097aa  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0xae65fde14f0ddb416a0e2084f203e192035da244a3e8834b6ee1407b4118383d(pending)0xd9b482460254774f370eb01cd37a13833a81caf7  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0xfa98d9ff28970759fc3d7cba621777ad9ec09ff6e84adb7698d77cb488cc19d7(pending)0xcc08ce032ec991cb3967d21e6fc075e59c5a0992  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c712 Ether(Pending)
0x20f11fde2bf23a0619b28dd2d77d1bc062dae254bc353b7cc3b9d69772e0f97a(pending)0x9784022e47fcd09bc72333de8e475253e9835207  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0xc6f5a5b56ed30b3b97e16f96963d4553be1518063b80a50be04611c8989a07e0(pending)0x9784022e47fcd09bc72333de8e475253e9835207  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0x5e3443862b924f02e2486f804cf3a869ddf792ef485c78fbc7a561b7b0575256(pending)0xacbe86737ea4bd454dcc98143a39e1fe2e586dca  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0xafe61d16c75bf7dd3fc344222c0842d065bca4138838273f88c3315c42b4d737(pending)0x277d0e8621e6137d4ea70f0dc1e21b7ed401f99a  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0x26649ff36b9f622dcd61a58584bc949e65e1756ae3288e568701f7e4763d9cd8(pending)0x9bf4d1b6aefbef5ff22883719d292f9b1359291f  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0xc6d2762aa1b0b8ee2a4a1b99aaef69d3ed78d54d12a7ac9dafbf31dbba0906bc(pending)0x46deca77f94832c6c121e062f62b9dde3cd3e647  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0xf4cf65a4637bb60f8a1814527aefb3735a6918ef90cf467466f7862c1d75df65(pending)0xef0ac0e78c149107d285348ddfada0926dad859a  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710.132717 Ether(Pending)
0x3a02cdb0759cb46004f8dd5f005dd1528a7a61ce3fcc7f234ec43f70982eebe8(pending)0x65258528ff01dab7d56f248d5e45d6ef535dc8d3  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0x16706c374c8e11f0495617d8c2fac5c59b298dc6131d7479939b1f0dbc941a95(pending)0xe6b67a279cc7f57cc486e82a1c89422fa20e2098  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710.01 Ether(Pending)
0x94ecd04660e36cde4c17f00f374aaa6e08389c81ff0409192f3cb344c32403f7(pending)0x058806c8293960d35fe2fe4e6ce15c0e3aa027dd  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0x2f4a7699463a6616fc73437caeb1ec67f998582d7fbb79fe5d5c7c6efc6612f4(pending)0x00f0fa4740e94f8ea0376e12a31132934a92558c  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0x802d9e0a3e68197376011d54fb39859f45883546c293519bcbea9e1aae97fc63(pending)0x368ee1a562cea377a413e647000b40c974a79ddf  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710.047 Ether(Pending)
0xbb4e4fcc79fd10b989cefd930274208856787491d077478a31409043a91aefb3(pending)0xe7f9279f8910a4419b217d46fb523911afed2721  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0xfe65ecdcfbf6e9262c5b686a49671da5282cd14a3de80a9c30e5208124c4e381(pending)0x9d226baa970a9d5df9edaf1b2009ee30e90bc420  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0xc484987b54bd36fcd3109a7f50737b9660e36202b0b5abcbbb14a651879f3085(pending)0x4c9ebde0cf371916cde13f44e1c90854348143b7  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0x46fc3de7290ebac7209bcfae55322a91c0fa8fcd6a539e6ed15fae60b899acf8(pending)0xf33e348b7e79accbc98acf63ca2f2d1c692ac748  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
 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
0x9e65ea55ed5d2d8cf91703c73b6111ec8524fbf5b1ebabc60ecb2b7877030ad863616171 min ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x01c74c6ddeb3077263f0585ae65b8be7a17767280.02936751642 Ether
0x5e2cfe10ed73703fbe691fe4b914442b54773a5184cf284c276d44255a96ee0163616161 min ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710xb2729aef74f0a306f7623514d12e30a7a7bc28140.347529789 Ether
0x8b6ccd9301f2ce931ea177cd234fddef04d98741d3eb9302e28156d9becb446f63616161 min ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x9e20bed8d1a7465d3ce110a3bf6325d8ad170cc90.0092904003 Ether
0xaeee840b4e4a28773edcac17ed7308b17ad7761e12d83fd560b46da0d9d43a5263616161 min ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0147 Ether
0xaeee840b4e4a28773edcac17ed7308b17ad7761e12d83fd560b46da0d9d43a5263616161 min ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.021 Ether
0x91972d7127b9853eb91557f77294c40e84c1208ff8090b4c728d1afbae860c9763616151 min ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.00945 Ether
0x91972d7127b9853eb91557f77294c40e84c1208ff8090b4c728d1afbae860c9763616151 min ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.0135 Ether
0xd8046a77393046fe93cc51761417a73ac66d17836f81cd9f9e911cbd918f63d263616082 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x10ef1686755de28db6c69b57102502bb68d7d0e70.20168145 Ether
0x91576c621e197813d538e076fc14c2ba8d8320e714f824533427efa678ede89b63616063 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x29c9ac244024eb13cf8e3a3e1cfaac8c2c1103050.0115771446 Ether
0xce9f2ea4a17823b69f994f2695c9a8d05d2df49846399cb17c273919cf9d60d863616063 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710xcbf3a13b7072f3a0e3afdc03c56ce94c7657a8c50.02116146735 Ether
0x6e0c47e0bc5be5b01577af536d1893aea99c54fb766fb6e3ac1a1581deb3522d63616063 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4ddb40963d4d7f32e2338fc3e3349b851eb44b340.001665 Ether
0x8930a809c01f0ad86299e56151ad070b325a5575c2c1d2176b0706d3918aca2563616063 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f45debb9729bf4fc24ef9bdca0a4831d37ad55a0.031777978712951571 Ether
0x6d9a6c992def07a6fe1ae07206c154ceaf924753961b7455ad30df94cbdbe09263616063 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710xedf102aea9866f794a69cdcd8072ba25ac24c9480.01187106705 Ether
0x1b678e9aed903db086c6ca770ef7706fb4ea285ffb378d8496074e4e3bf1c9d163616043 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710xe8ba8f756a42dca5165f68a87a00e7c153aec7410.212196591 Ether
0x7547d593d055ad38202f632ec3cc6cdb7f8b913b51b2fc5ad445192243c04c0263615994 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x612b94deee718937f5ddcce67b25adb08a6160f80.011988 Ether
0x8c9a7efa662f2dbf1887025d58aade5be956805d530105610efe80c29893ac9563615965 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x91cc4700c85acdcafe4ef875c4a0586412cdcbe80.0163836 Ether
0x57f02c22e9cf65e02371de0ee400f597df0681150e42d50a8b827238945c86d263615965 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x3bbda2ff1efc935ffb4ec25ac210763cff5e14b70.0113549337 Ether
0xfe85f4d1ed84953fadca896b5b42b81ede5bb04a969123bc8441dfcfb9604dd5636158510 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4ab9c982571986aa736acd877c5b02d5c1caa8b60.0157393782 Ether
0x636760df1e99442dcf4bdc98d028d574d80d56ea11e465f911bbd39569ba9cb3636158310 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.00686 Ether
0x636760df1e99442dcf4bdc98d028d574d80d56ea11e465f911bbd39569ba9cb3636158310 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.0098 Ether
0x84cc452819268659769f672c2e2f23d676b383f31fd5c7685915d85c8070d174636158310 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.003535 Ether
0x84cc452819268659769f672c2e2f23d676b383f31fd5c7685915d85c8070d174636158310 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.00505 Ether
0x0f13fa1a78145405fa59c44449b1905f41d1d37d85ed7d38b6142161b614742e636157812 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710xb995c746c2c6da607b04f530470f947d2025f7500.05010669953554158 Ether
0xaaa220b26029420176c8fe435d39915ceb9cb6c66bb7d662518da2695c949ed2636157312 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0357 Ether
0xaaa220b26029420176c8fe435d39915ceb9cb6c66bb7d662518da2695c949ed2636157312 mins ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.051 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: Revolution
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.23;

/**
*
* ETH CRYPTOCURRENCY DISTRIBUTION PROJECT
* Web              - https://333eth.io
* Twitter          - https://twitter.com/333eth_io
* Telegram_channel - https://t.me/Ethereum333
* EN  Telegram_chat: https://t.me/Ethereum333_chat_en
* RU  Telegram_chat: https://t.me/Ethereum333_chat_ru
* KOR Telegram_chat: https://t.me/Ethereum333_chat_kor
* Email:             mailto:support(at sign)333eth.io
* 
*  - GAIN 3,33% PER 24 HOURS (every 5900 blocks)
*  - Life-long payments
*  - The revolutionary reliability
*  - Minimal contribution 0.01 eth
*  - Currency and payment - ETH
*  - Contribution allocation schemes:
*    -- 83% payments
*    -- 17% Marketing + Operating Expenses
*
*   ---About the Project
*  Blockchain-enabled smart contracts have opened a new era of trustless relationships without 
*  intermediaries. This technology opens incredible financial possibilities. Our automated investment 
*  distribution model is written into a smart contract, uploaded to the Ethereum blockchain and can be 
*  freely accessed online. In order to insure our investors' complete security, full control over the 
*  project has been transferred from the organizers to the smart contract: nobody can influence the 
*  system's permanent autonomous functioning.
* 
* ---How to use:
*  1. Send from ETH wallet to the smart contract address 0x311f71389e3DE68f7B2097Ad02c6aD7B2dDE4C71
*     any amount from 0.01 ETH.
*  2. Verify your transaction in the history of your application or etherscan.io, specifying the address 
*     of your wallet.
*  3a. Claim your profit by sending 0 ether transaction (every day, every week, i don't care unless you're 
*      spending too much on GAS)
*  OR
*  3b. For reinvest, you need to first remove the accumulated percentage of charges (by sending 0 ether 
*      transaction), and only after that, deposit the amount that you want to reinvest.
*  
* RECOMMENDED GAS LIMIT: 200000
* RECOMMENDED GAS PRICE: https://ethgasstation.info/
* You can check the payments on the etherscan.io site, in the "Internal Txns" tab of your wallet.
*
* ---It is not allowed to transfer from exchanges, only from your personal ETH wallet, for which you 
* have private keys.
* 
* Contracts reviewed and approved by pros!
* 
* Main contract - Revolution. Scroll down to find it.
*/


contract InvestorsStorage {
  struct investor {
    uint keyIndex;
    uint value;
    uint paymentTime;
    uint refBonus;
  }
  struct itmap {
    mapping(address => investor) data;
    address[] keys;
  }
  itmap private s;
  address private owner;

  modifier onlyOwner() {
    require(msg.sender == owner, "access denied");
    _;
  }

  constructor() public {
    owner = msg.sender;
    s.keys.length++;
  }

  function insert(address addr, uint value) public onlyOwner returns (bool) {
    uint keyIndex = s.data[addr].keyIndex;
    if (keyIndex != 0) return false;
    s.data[addr].value = value;
    keyIndex = s.keys.length++;
    s.data[addr].keyIndex = keyIndex;
    s.keys[keyIndex] = addr;
    return true;
  }

  function investorFullInfo(address addr) public view returns(uint, uint, uint, uint) {
    return (
      s.data[addr].keyIndex,
      s.data[addr].value,
      s.data[addr].paymentTime,
      s.data[addr].refBonus
    );
  }

  function investorBaseInfo(address addr) public view returns(uint, uint, uint) {
    return (
      s.data[addr].value,
      s.data[addr].paymentTime,
      s.data[addr].refBonus
    );
  }

  function investorShortInfo(address addr) public view returns(uint, uint) {
    return (
      s.data[addr].value,
      s.data[addr].refBonus
    );
  }

  function addRefBonus(address addr, uint refBonus) public onlyOwner returns (bool) {
    if (s.data[addr].keyIndex == 0) return false;
    s.data[addr].refBonus += refBonus;
    return true;
  }

  function addValue(address addr, uint value) public onlyOwner returns (bool) {
    if (s.data[addr].keyIndex == 0) return false;
    s.data[addr].value += value;
    return true;
  }

  function setPaymentTime(address addr, uint paymentTime) public onlyOwner returns (bool) {
    if (s.data[addr].keyIndex == 0) return false;
    s.data[addr].paymentTime = paymentTime;
    return true;
  }

  function setRefBonus(address addr, uint refBonus) public onlyOwner returns (bool) {
    if (s.data[addr].keyIndex == 0) return false;
    s.data[addr].refBonus = refBonus;
    return true;
  }

  function keyFromIndex(uint i) public view returns (address) {
    return s.keys[i];
  }

  function contains(address addr) public view returns (bool) {
    return s.data[addr].keyIndex > 0;
  }

  function size() public view returns (uint) {
    return s.keys.length;
  }

  function iterStart() public pure returns (uint) {
    return 1;
  }
}


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

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

    return c;
  }

  function div(uint256 _a, uint256 _b) internal pure returns (uint256) {
    require(_b > 0); // Solidity only automatically asserts when dividing by 0
    uint256 c = _a / _b;
    // assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold

    return c;
  }

  function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
    require(_b <= _a);
    uint256 c = _a - _b;

    return c;
  }

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

    return c;
  }

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



library Percent {
  // Solidity automatically throws when dividing by 0
  struct percent {
    uint num;
    uint den;
  }
  function mul(percent storage p, uint a) internal view returns (uint) {
    if (a == 0) {
      return 0;
    }
    return a*p.num/p.den;
  }

  function div(percent storage p, uint a) internal view returns (uint) {
    return a/p.num*p.den;
  }

  function sub(percent storage p, uint a) internal view returns (uint) {
    uint b = mul(p, a);
    if (b >= a) return 0;
    return a - b;
  }

  function add(percent storage p, uint a) internal view returns (uint) {
    return a + mul(p, a);
  }
}


contract Accessibility {
  enum AccessRank { None, Payout, Paymode, Full }
  mapping(address => AccessRank) internal m_admins;
  modifier onlyAdmin(AccessRank  r) {
    require(
      m_admins[msg.sender] == r || m_admins[msg.sender] == AccessRank.Full,
      "access denied"
    );
    _;
  }
  event LogProvideAccess(address indexed whom, uint when,  AccessRank rank);

  constructor() public {
    m_admins[msg.sender] = AccessRank.Full;
    emit LogProvideAccess(msg.sender, now, AccessRank.Full);
  }
  
  function provideAccess(address addr, AccessRank rank) public onlyAdmin(AccessRank.Full) {
    require(rank <= AccessRank.Full, "invalid access rank");
    require(m_admins[addr] != AccessRank.Full, "cannot change full access rank");
    if (m_admins[addr] != rank) {
      m_admins[addr] = rank;
      emit LogProvideAccess(addr, now, rank);
    }
  }

  function access(address addr) public view returns(AccessRank rank) {
    rank = m_admins[addr];
  }
}


contract PaymentSystem {
  // https://consensys.github.io/smart-contract-best-practices/recommendations/#favor-pull-over-push-for-external-calls
  enum Paymode { Push, Pull }
  struct PaySys {
    uint latestTime;
    uint latestKeyIndex;
    Paymode mode; 
  }
  PaySys internal m_paysys;

  modifier atPaymode(Paymode mode) {
    require(m_paysys.mode == mode, "pay mode does not the same");
    _;
  }
  event LogPaymodeChanged(uint when, Paymode indexed mode);
  
  function paymode() public view returns(Paymode mode) {
    mode = m_paysys.mode;
  }

  function changePaymode(Paymode mode) internal {
    require(mode <= Paymode.Pull, "invalid pay mode");
    if (mode == m_paysys.mode ) return; 
    if (mode == Paymode.Pull) require(m_paysys.latestTime != 0, "cannot set pull pay mode if latest time is 0");
    if (mode == Paymode.Push) m_paysys.latestTime = 0;
    m_paysys.mode = mode;
    emit LogPaymodeChanged(now, m_paysys.mode);
  }
}


library Zero {
  function requireNotZero(uint a) internal pure {
    require(a != 0, "require not zero");
  }

  function requireNotZero(address addr) internal pure {
    require(addr != address(0), "require not zero address");
  }

  function notZero(address addr) internal pure returns(bool) {
    return !(addr == address(0));
  }

  function isZero(address addr) internal pure returns(bool) {
    return addr == address(0);
  }
}


library ToAddress {
  function toAddr(uint source) internal pure returns(address) {
    return address(source);
  }

  function toAddr(bytes source) internal pure returns(address addr) {
    assembly { addr := mload(add(source,0x14)) }
    return addr;
  }
}


contract Revolution is Accessibility, PaymentSystem {
  using Percent for Percent.percent;
  using SafeMath for uint;
  using Zero for *;
  using ToAddress for *;

  // investors storage - iterable map;
  InvestorsStorage private m_investors;
  mapping(address => bool) private m_referrals;
  bool private m_nextWave;

  // automatically generates getters
  address public adminAddr;
  address public payerAddr;
  uint public waveStartup;
  uint public investmentsNum;
  uint public constant minInvesment = 10 finney; // 0.01 eth
  uint public constant maxBalance = 333e5 ether; // 33,300,000 eth
  uint public constant pauseOnNextWave = 168 hours; 

  // percents 
  Percent.percent private m_dividendsPercent = Percent.percent(333, 10000); // 333/10000*100% = 3.33%
  Percent.percent private m_adminPercent = Percent.percent(1, 10); // 1/10*100% = 10%
  Percent.percent private m_payerPercent = Percent.percent(7, 100); // 7/100*100% = 7%
  Percent.percent private m_refPercent = Percent.percent(3, 100); // 3/100*100% = 3%

  // more events for easy read from blockchain
  event LogNewInvestor(address indexed addr, uint when, uint value);
  event LogNewInvesment(address indexed addr, uint when, uint value);
  event LogNewReferral(address indexed addr, uint when, uint value);
  event LogPayDividends(address indexed addr, uint when, uint value);
  event LogPayReferrerBonus(address indexed addr, uint when, uint value);
  event LogBalanceChanged(uint when, uint balance);
  event LogAdminAddrChanged(address indexed addr, uint when);
  event LogPayerAddrChanged(address indexed addr, uint when);
  event LogNextWave(uint when);

  modifier balanceChanged {
    _;
    emit LogBalanceChanged(now, address(this).balance);
  }

  modifier notOnPause() {
    require(waveStartup+pauseOnNextWave <= now, "pause on next wave not expired");
    _;
  }

  constructor() public {
    adminAddr = msg.sender;
    emit LogAdminAddrChanged(msg.sender, now);

    payerAddr = msg.sender;
    emit LogPayerAddrChanged(msg.sender, now);

    nextWave();
    waveStartup = waveStartup.sub(pauseOnNextWave);
  }

  function() public payable {
    // investor get him dividends
    if (msg.value == 0) {
      getMyDividends();
      return;
    }

    // sender do invest
    address a = msg.data.toAddr();
    address[3] memory refs;
    if (a.notZero()) {
      refs[0] = a;
      doInvest(refs); 
    } else {
      doInvest(refs);
    }
  }

  function investorsNumber() public view returns(uint) {
    return m_investors.size()-1;
    // -1 because see InvestorsStorage constructor where keys.length++ 
  }

  function balanceETH() public view returns(uint) {
    return address(this).balance;
  }

  function payerPercent() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_payerPercent.num, m_payerPercent.den);
  }

  function dividendsPercent() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_dividendsPercent.num, m_dividendsPercent.den);
  }

  function adminPercent() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_adminPercent.num, m_adminPercent.den);
  }

  function referrerPercent() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_refPercent.num, m_refPercent.den);
  }

  function investorInfo(address addr) public view returns(uint value, uint paymentTime, uint refBonus, bool isReferral) {
    (value, paymentTime, refBonus) = m_investors.investorBaseInfo(addr);
    isReferral = m_referrals[addr];
  }

  function latestPayout() public view returns(uint timestamp) {
    return m_paysys.latestTime;
  }

  function getMyDividends() public notOnPause atPaymode(Paymode.Pull) balanceChanged {
    // check investor info
    InvestorsStorage.investor memory investor = getMemInvestor(msg.sender);
    require(investor.keyIndex > 0, "sender is not investor"); 
    if (investor.paymentTime < m_paysys.latestTime) {
      assert(m_investors.setPaymentTime(msg.sender, m_paysys.latestTime));
      investor.paymentTime = m_paysys.latestTime;
    }

    // calculate days after latest payment
    uint256 daysAfter = now.sub(investor.paymentTime).div(24 hours);
    require(daysAfter > 0, "the latest payment was earlier than 24 hours");
    assert(m_investors.setPaymentTime(msg.sender, now));

    // check enough eth 
    uint value = m_dividendsPercent.mul(investor.value) * daysAfter;
    if (address(this).balance < value + investor.refBonus) {
      nextWave();
      return;
    }

    // send dividends and ref bonus
    if (investor.refBonus > 0) {
      assert(m_investors.setRefBonus(msg.sender, 0));
      sendDividendsWithRefBonus(msg.sender, value, investor.refBonus);
    } else {
      sendDividends(msg.sender, value);
    }
  }

  function doInvest(address[3] refs) public payable notOnPause balanceChanged {
    require(msg.value >= minInvesment, "msg.value must be >= minInvesment");
    require(address(this).balance <= maxBalance, "the contract eth balance limit");

    uint value = msg.value;
    // ref system works only once for sender-referral
    if (!m_referrals[msg.sender]) {
      // level 1
      if (notZeroNotSender(refs[0]) && m_investors.contains(refs[0])) {
        uint reward = m_refPercent.mul(value);
        assert(m_investors.addRefBonus(refs[0], reward)); // referrer 1 bonus
        m_referrals[msg.sender] = true;
        value = m_dividendsPercent.add(value); // referral bonus
        emit LogNewReferral(msg.sender, now, value);
        // level 2
        if (notZeroNotSender(refs[1]) && m_investors.contains(refs[1]) && refs[0] != refs[1]) { 
          assert(m_investors.addRefBonus(refs[1], reward)); // referrer 2 bonus
          // level 3
          if (notZeroNotSender(refs[2]) && m_investors.contains(refs[2]) && refs[0] != refs[2] && refs[1] != refs[2]) { 
            assert(m_investors.addRefBonus(refs[2], reward)); // referrer 3 bonus
          }
        }
      }
    }

    // commission
    adminAddr.transfer(m_adminPercent.mul(msg.value));
    payerAddr.transfer(m_payerPercent.mul(msg.value));    
    
    // write to investors storage
    if (m_investors.contains(msg.sender)) {
      assert(m_investors.addValue(msg.sender, value));
    } else {
      assert(m_investors.insert(msg.sender, value));
      emit LogNewInvestor(msg.sender, now, value); 
    }
    
    if (m_paysys.mode == Paymode.Pull)
      assert(m_investors.setPaymentTime(msg.sender, now));

    emit LogNewInvesment(msg.sender, now, value);   
    investmentsNum++;
  }

  function payout() public notOnPause onlyAdmin(AccessRank.Payout) atPaymode(Paymode.Push) balanceChanged {
    if (m_nextWave) {
      nextWave(); 
      return;
    }
   
    // if m_paysys.latestKeyIndex == m_investors.iterStart() then payout NOT in process and we must check latest time of payment.
    if (m_paysys.latestKeyIndex == m_investors.iterStart()) {
      require(now>m_paysys.latestTime+12 hours, "the latest payment was earlier than 12 hours");
      m_paysys.latestTime = now;
    }

    uint i = m_paysys.latestKeyIndex;
    uint value;
    uint refBonus;
    uint size = m_investors.size();
    address investorAddr;
    
    // gasleft and latest key index  - prevent gas block limit 
    for (i; i < size && gasleft() > 50000; i++) {
      investorAddr = m_investors.keyFromIndex(i);
      (value, refBonus) = m_investors.investorShortInfo(investorAddr);
      value = m_dividendsPercent.mul(value);

      if (address(this).balance < value + refBonus) {
        m_nextWave = true;
        break;
      }

      if (refBonus > 0) {
        require(m_investors.setRefBonus(investorAddr, 0), "internal error");
        sendDividendsWithRefBonus(investorAddr, value, refBonus);
        continue;
      }

      sendDividends(investorAddr, value);
    }

    if (i == size) 
      m_paysys.latestKeyIndex = m_investors.iterStart();
    else 
      m_paysys.latestKeyIndex = i;
  }

  function setAdminAddr(address addr) public onlyAdmin(AccessRank.Full) {
    addr.requireNotZero();
    if (adminAddr != addr) {
      adminAddr = addr;
      emit LogAdminAddrChanged(addr, now);
    }    
  }

  function setPayerAddr(address addr) public onlyAdmin(AccessRank.Full) {
    addr.requireNotZero();
    if (payerAddr != addr) {
      payerAddr = addr;
      emit LogPayerAddrChanged(addr, now);
    }  
  }

  function setPullPaymode() public onlyAdmin(AccessRank.Paymode) atPaymode(Paymode.Push) {
    changePaymode(Paymode.Pull);
  }

  function getMemInvestor(address addr) internal view returns(InvestorsStorage.investor) {
    (uint a, uint b, uint c, uint d) = m_investors.investorFullInfo(addr);
    return InvestorsStorage.investor(a, b, c, d);
  }

  function notZeroNotSender(address addr) internal view returns(bool) {
    return addr.notZero() && addr != msg.sender;
  }

  function sendDividends(address addr, uint value) private {
    if (addr.send(value)) emit LogPayDividends(addr, now, value); 
  }

  function sendDividendsWithRefBonus(address addr, uint value,  uint refBonus) private {
    if (addr.send(value+refBonus)) {
      emit LogPayDividends(addr, now, value);
      emit LogPayReferrerBonus(addr, now, refBonus);
    }
  }

  function nextWave() private {
    m_investors = new InvestorsStorage();
    changePaymode(Paymode.Push);
    m_paysys.latestKeyIndex = m_investors.iterStart();
    investmentsNum = 0;
    waveStartup = now;
    m_nextWave = false;
    emit LogNextWave(now);
  }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"refs","type":"address[3]"}],"name":"doInvest","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"investmentsNum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setPayerAddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minInvesment","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setAdminAddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"referrerPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"payout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"investorsNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"access","outputs":[{"name":"rank","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pauseOnNextWave","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paymode","outputs":[{"name":"mode","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"latestPayout","outputs":[{"name":"timestamp","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"payerPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"getMyDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"rank","type":"uint8"}],"name":"provideAccess","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"investorInfo","outputs":[{"name":"value","type":"uint256"},{"name":"paymentTime","type":"uint256"},{"name":"refBonus","type":"uint256"},{"name":"isReferral","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"payerAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"waveStartup","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dividendsPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setPullPaymode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogNewInvestor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogNewInvesment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogNewReferral","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogPayDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogPayReferrerBonus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"LogBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"}],"name":"LogAdminAddrChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"}],"name":"LogPayerAddrChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"}],"name":"LogNextWave","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"},{"indexed":true,"name":"mode","type":"uint8"}],"name":"LogPaymodeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"whom","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"rank","type":"uint8"}],"name":"LogProvideAccess","type":"event"}]

  Contract Creation Code Switch To Opcodes View
61014d608081905261271060a0819052600a918255600b55600160c081905260e0829052600c55600d5560076101008190526064610120819052600e91909155600f81905561018060405260036101408190526101608290526010556011553480156200006b57600080fd5b503360008181526020818152604091829020805460ff1916600390811790915582514281529182015281517f281b0406296ed2277e9ec49b1acca0b452581a995e533fa5256a3ce9355f9a60929181900390910190a26006805461010060a860020a031916336101008102919091179091556040805142815290517f668e88f9d85264651fcdf6de6ef084c112c92cba1fad30510c383c5d1ea1e691916020908290030190a260078054600160a060020a031916339081179091556040805142815290517fd7f1608e19fd9d15ac7ca872d397878f39039fcda33c52af2536ec2790bde7269181900360200190a26200016c64010000000062000195810204565b6008546200018c9062093a806401000000006200227f620002ca82021704565b600855620004cc565b6200019f620004bb565b604051809103906000f080158015620001bc573d6000803e3d6000fd5b5060048054600160a060020a031916600160a060020a0392909216919091179055620001f26000640100000000620002e2810204565b60048054604080517f80ac80b00000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926380ac80b09282820192602092908290030181600087803b1580156200025057600080fd5b505af115801562000265573d6000803e3d6000fd5b505050506040513d60208110156200027c57600080fd5b505160025560006009554260088190556006805460ff1916905560408051918252517fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c759181900360200190a1565b60008083831115620002db57600080fd5b5050900390565b6001816001811115620002f157fe5b11156200035f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f696e76616c696420706179206d6f646500000000000000000000000000000000604482015290519081900360640190fd5b60035460ff1660018111156200037157fe5b8160018111156200037e57fe5b14156200038b57620004b8565b60018160018111156200039a57fe5b1415620004385760015415156200043857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f63616e6e6f74207365742070756c6c20706179206d6f6465206966206c61746560448201527f73742074696d6520697320300000000000000000000000000000000000000000606482015290519081900360840190fd5b60008160018111156200044757fe5b1415620004545760006001555b6003805482919060ff1916600183818111156200046d57fe5b021790555060035460ff1660018111156200048457fe5b6040805142815290517f8f010bfb19c67f04dbb7e355027ff728adb05787d09dd023f42af2e6554449e99181900360200190a25b50565b60405161086e806200356f83390190565b61309380620004dc6000396000f3006080604052600436106101245763ffffffff60e060020a600035041663110dc7a681146101b75780631680eb4e146101ef5780632b82aed6146102165780633d7ac9f81461023757806341a28df61461024c578063636d98b11461026d57806363bd1d4a1461029b578063653c3174146102b05780636fae3d76146102c557806373ad468a1461030a578063816f56171461031f5780638183059314610334578063922a842514610365578063a4d6bb2b1461038a578063bb41f4211461039f578063c0dab516146103b4578063d50030ad146103c9578063d70d532b146103de578063dbcbaca414610405578063dcc7094a1461044e578063eafecc7a14610463578063ecbdbb3214610478578063f2c0cdbe1461048d578063fc043cad146104a2575b600061012e612781565b3415156101425761013d6104b7565b6101b3565b61017c6000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375061093e945050505050565b915061019082600160a060020a0316610945565b156101aa57600160a060020a038216815261013d81610953565b6101b381610953565b5050005b6040805160608181019092526101ed91369160049160649190839060039083908390808284375093965061095395505050505050565b005b3480156101fb57600080fd5b5061020461136a565b60408051918252519081900360200190f35b34801561022257600080fd5b506101ed600160a060020a0360043516611370565b34801561024357600080fd5b50610204611489565b34801561025857600080fd5b506101ed600160a060020a0360043516611494565b34801561027957600080fd5b506102826115b9565b6040805192835260208301919091528051918290030190f35b3480156102a757600080fd5b506101ed6115c3565b3480156102bc57600080fd5b50610204611c69565b3480156102d157600080fd5b506102e6600160a060020a0360043516611cfa565b604051808260038111156102f657fe5b60ff16815260200191505060405180910390f35b34801561031657600080fd5b50610204611d18565b34801561032b57600080fd5b50610204611d27565b34801561034057600080fd5b50610349611d2e565b60408051600160a060020a039092168252519081900360200190f35b34801561037157600080fd5b5061037a611d42565b604051808260018111156102f657fe5b34801561039657600080fd5b50610204611d4b565b3480156103ab57600080fd5b50610282611d51565b3480156103c057600080fd5b50610282611d5b565b3480156103d557600080fd5b506101ed6104b7565b3480156103ea57600080fd5b506101ed600160a060020a036004351660ff60243516611d65565b34801561041157600080fd5b50610426600160a060020a0360043516611f9f565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b34801561045a57600080fd5b50610349612077565b34801561046f57600080fd5b50610204612086565b34801561048457600080fd5b5061020461208c565b34801561049957600080fd5b50610282612091565b3480156104ae57600080fd5b506101ed61209b565b6104bf6127a0565b6000804262093a806008540111151515610523576040805160e560020a62461bcd02815260206004820152601e60248201527f7061757365206f6e206e6578742077617665206e6f7420657870697265640000604482015290519081900360640190fd5b60018060035460ff16600181111561053757fe5b1461058c576040805160e560020a62461bcd02815260206004820152601a60248201527f706179206d6f646520646f6573206e6f74207468652073616d65000000000000604482015290519081900360640190fd5b6105953361219c565b80519094506000106105f1576040805160e560020a62461bcd02815260206004820152601660248201527f73656e646572206973206e6f7420696e766573746f7200000000000000000000604482015290519081900360640190fd5b600154604085015110156106ae5760048054600154604080517f440135850000000000000000000000000000000000000000000000000000000081523394810194909452602484019190915251600160a060020a039091169163440135859160448083019260209291908290030181600087803b15801561067157600080fd5b505af1158015610685573d6000803e3d6000fd5b505050506040513d602081101561069b57600080fd5b505115156106a557fe5b60015460408501525b6106d8620151806106cc86604001514261227f90919063ffffffff16565b9063ffffffff61229616565b925060008311610758576040805160e560020a62461bcd02815260206004820152602c60248201527f746865206c6174657374207061796d656e7420776173206561726c696572207460448201527f68616e20323420686f7572730000000000000000000000000000000000000000606482015290519081900360840190fd5b60048054604080517f44013585000000000000000000000000000000000000000000000000000000008152339381019390935242602484015251600160a060020a039091169163440135859160448083019260209291908290030181600087803b1580156107c557600080fd5b505af11580156107d9573d6000803e3d6000fd5b505050506040513d60208110156107ef57600080fd5b505115156107f957fe5b826108128560200151600a6122b990919063ffffffff16565b6060860151910292508201303110156108325761082d6122e6565b6108fd565b6000846060015111156108f35760048054604080517ffbeac9c900000000000000000000000000000000000000000000000000000000815233938101939093526000602484018190529051600160a060020a039092169263fbeac9c99260448083019360209383900390910190829087803b1580156108b057600080fd5b505af11580156108c4573d6000803e3d6000fd5b505050506040513d60208110156108da57600080fd5b505115156108e457fe5b61082d33838660600151612417565b6108fd33836124cd565b604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a150505050565b6014015190565b600160a060020a0316151590565b6000804262093a8060085401111515156109b7576040805160e560020a62461bcd02815260206004820152601e60248201527f7061757365206f6e206e6578742077617665206e6f7420657870697265640000604482015290519081900360640190fd5b662386f26fc10000341015610a3c576040805160e560020a62461bcd02815260206004820152602160248201527f6d73672e76616c7565206d757374206265203e3d206d696e496e7665736d656e60448201527f7400000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6a1b8b8c9e000e82a480000030311115610aa0576040805160e560020a62461bcd02815260206004820152601e60248201527f74686520636f6e7472616374206574682062616c616e6365206c696d69740000604482015290519081900360640190fd5b3360009081526005602052604090205434925060ff161515610f8057610acd8360005b602002015161253e565b8015610b655750600454600160a060020a0316635dbe47e884600060200201516040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610b3857600080fd5b505af1158015610b4c573d6000803e3d6000fd5b505050506040513d6020811015610b6257600080fd5b50515b15610f8057610b7b60108363ffffffff6122b916565b600480548551604080517f11302818000000000000000000000000000000000000000000000000000000008152600160a060020a0392831694810194909452602484018590525193945016916311302818916044808201926020929091908290030181600087803b158015610bef57600080fd5b505af1158015610c03573d6000803e3d6000fd5b505050506040513d6020811015610c1957600080fd5b50511515610c2357fe5b336000908152600560205260409020805460ff19166001179055610c4e600a8363ffffffff61256c16565b6040805142815260208101839052815192945033927f51dd0a60788a76a784e14408dda19543a507171e513d8a1aab1859626c30d448929181900390910190a2610c99836001610ac3565b8015610d315750600454600160a060020a0316635dbe47e884600160200201516040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610d0457600080fd5b505af1158015610d18573d6000803e3d6000fd5b505050506040513d6020811015610d2e57600080fd5b50515b8015610d4f575060208301518351600160a060020a03908116911614155b15610f805760048054602080860151604080517f11302818000000000000000000000000000000000000000000000000000000008152600160a060020a03928316958101959095526024850186905251921692631130281892604480830193928290030181600087803b158015610dc557600080fd5b505af1158015610dd9573d6000803e3d6000fd5b505050506040513d6020811015610def57600080fd5b50511515610df957fe5b610e04836002610ac3565b8015610e9c5750600454600160a060020a0316635dbe47e884600260200201516040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610e6f57600080fd5b505af1158015610e83573d6000803e3d6000fd5b505050506040513d6020811015610e9957600080fd5b50515b8015610eba575060408301518351600160a060020a03908116911614155b8015610edb575060408301516020840151600160a060020a03908116911614155b15610f8057600454600160a060020a031663113028188460026020020151836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610f4c57600080fd5b505af1158015610f60573d6000803e3d6000fd5b505050506040513d6020811015610f7657600080fd5b50511515610f8057fe5b6006546101009004600160a060020a03166108fc610f9f600c346122b9565b6040518115909202916000818181858888f19350505050158015610fc7573d6000803e3d6000fd5b50600754600160a060020a03166108fc610fe8600e3463ffffffff6122b916565b6040518115909202916000818181858888f19350505050158015611010573d6000803e3d6000fd5b5060048054604080517f5dbe47e8000000000000000000000000000000000000000000000000000000008152339381019390935251600160a060020a0390911691635dbe47e89160248083019260209291908290030181600087803b15801561107857600080fd5b505af115801561108c573d6000803e3d6000fd5b505050506040513d60208110156110a257600080fd5b5051156111505760048054604080517fca0b187800000000000000000000000000000000000000000000000000000000815233938101939093526024830185905251600160a060020a039091169163ca0b18789160448083019260209291908290030181600087803b15801561111757600080fd5b505af115801561112b573d6000803e3d6000fd5b505050506040513d602081101561114157600080fd5b5051151561114b57fe5b61122d565b60048054604080517f0fd0ae1000000000000000000000000000000000000000000000000000000000815233938101939093526024830185905251600160a060020a0390911691630fd0ae109160448083019260209291908290030181600087803b1580156111be57600080fd5b505af11580156111d2573d6000803e3d6000fd5b505050506040513d60208110156111e857600080fd5b505115156111f257fe5b6040805142815260208101849052815133927f5299e1ad8e7b5bcb9a8bfb1ce23cc0210bfea47a33518ab518a93fef68427d98928290030190a25b600160035460ff16600181111561124057fe5b14156112e75760048054604080517f44013585000000000000000000000000000000000000000000000000000000008152339381019390935242602484015251600160a060020a039091169163440135859160448083019260209291908290030181600087803b1580156112b357600080fd5b505af11580156112c7573d6000803e3d6000fd5b505050506040513d60208110156112dd57600080fd5b505115156112e757fe5b6040805142815260208101849052815133927f28c94178af4152674986540aaca61b18b89f54283f74283ef675a90583339b8f928290030190a2600980546001019055604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a1505050565b60095481565b6003803360009081526020819052604090205460ff16600381111561139157fe5b14806113ba575060033360009081526020819052604090205460ff1660038111156113b857fe5b145b15156113fe576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613048833981519152604482015290519081900360640190fd5b61141082600160a060020a0316612581565b600754600160a060020a038381169116146114855760078054600160a060020a03841673ffffffffffffffffffffffffffffffffffffffff1990911681179091556040805142815290517fd7f1608e19fd9d15ac7ca872d397878f39039fcda33c52af2536ec2790bde7269181900360200190a25b5050565b662386f26fc1000081565b6003803360009081526020819052604090205460ff1660038111156114b557fe5b14806114de575060033360009081526020819052604090205460ff1660038111156114dc57fe5b145b1515611522576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613048833981519152604482015290519081900360640190fd5b61153482600160a060020a0316612581565b600654600160a060020a0383811661010090920416146114855760068054600160a060020a038416610100810274ffffffffffffffffffffffffffffffffffffffff0019909216919091179091556040805142815290517f668e88f9d85264651fcdf6de6ef084c112c92cba1fad30510c383c5d1ea1e6919181900360200190a25050565b6010546011549091565b60008060008060004262093a80600854011115151561162c576040805160e560020a62461bcd02815260206004820152601e60248201527f7061757365206f6e206e6578742077617665206e6f7420657870697265640000604482015290519081900360640190fd5b6001803360009081526020819052604090205460ff16600381111561164d57fe5b1480611676575060033360009081526020819052604090205460ff16600381111561167457fe5b145b15156116ba576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613048833981519152604482015290519081900360640190fd5b60008060035460ff1660018111156116ce57fe5b14611723576040805160e560020a62461bcd02815260206004820152601a60248201527f706179206d6f646520646f6573206e6f74207468652073616d65000000000000604482015290519081900360640190fd5b60065460ff161561173b576117366122e6565b611c25565b60048054604080517f80ac80b00000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926380ac80b09282820192602092908290030181600087803b15801561179857600080fd5b505af11580156117ac573d6000803e3d6000fd5b505050506040513d60208110156117c257600080fd5b505160025414156118555760015461a8c0014211611850576040805160e560020a62461bcd02815260206004820152602c60248201527f746865206c6174657374207061796d656e7420776173206561726c696572207460448201527f68616e20313220686f7572730000000000000000000000000000000000000000606482015290519081900360840190fd5b426001555b60025460048054604080517f949d225d0000000000000000000000000000000000000000000000000000000081529051939a50600160a060020a039091169263949d225d928281019260209291908290030181600087803b1580156118b957600080fd5b505af11580156118cd573d6000803e3d6000fd5b505050506040513d60208110156118e357600080fd5b505193505b83871080156118f8575061c3505a115b15611b865760048054604080517f460d674b0000000000000000000000000000000000000000000000000000000081529283018a905251600160a060020a039091169163460d674b9160248083019260209291908290030181600087803b15801561196257600080fd5b505af1158015611976573d6000803e3d6000fd5b505050506040513d602081101561198c57600080fd5b505160048054604080517f993d3489000000000000000000000000000000000000000000000000000000008152600160a060020a03808616948201949094528151949750929091169263993d34899260248082019392918290030181600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b505050506040513d6040811015611a2357600080fd5b5080516020909101519096509450611a42600a8763ffffffff6122b916565b955084860130311015611a61576006805460ff19166001179055611b86565b6000851115611b715760048054604080517ffbeac9c9000000000000000000000000000000000000000000000000000000008152600160a060020a03878116948201949094526000602482018190529151939092169263fbeac9c9926044808201936020939283900390910190829087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b505050506040513d6020811015611b0957600080fd5b50511515611b61576040805160e560020a62461bcd02815260206004820152600e60248201527f696e7465726e616c206572726f72000000000000000000000000000000000000604482015290519081900360640190fd5b611b6c838787612417565b611b7b565b611b7b83876124cd565b6001909601956118e8565b83871415611c1f5760048054604080517f80ac80b00000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926380ac80b09282820192602092908290030181600087803b158015611beb57600080fd5b505af1158015611bff573d6000803e3d6000fd5b505050506040513d6020811015611c1557600080fd5b5051600255611c25565b60028790555b604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a150505050505050565b60048054604080517f949d225d0000000000000000000000000000000000000000000000000000000081529051600093600193600160a060020a03169263949d225d928183019260209282900301818887803b158015611cc857600080fd5b505af1158015611cdc573d6000803e3d6000fd5b505050506040513d6020811015611cf257600080fd5b505103905090565b600160a060020a031660009081526020819052604090205460ff1690565b6a1b8b8c9e000e82a480000081565b62093a8081565b6006546101009004600160a060020a031681565b60035460ff1690565b60015490565b600e54600f549091565b600c54600d549091565b6003803360009081526020819052604090205460ff166003811115611d8657fe5b1480611daf575060033360009081526020819052604090205460ff166003811115611dad57fe5b145b1515611df3576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613048833981519152604482015290519081900360640190fd5b6003826003811115611e0157fe5b1115611e57576040805160e560020a62461bcd02815260206004820152601360248201527f696e76616c6964206163636573732072616e6b00000000000000000000000000604482015290519081900360640190fd5b6003600160a060020a03841660009081526020819052604090205460ff166003811115611e8057fe5b1415611ed6576040805160e560020a62461bcd02815260206004820152601e60248201527f63616e6e6f74206368616e67652066756c6c206163636573732072616e6b0000604482015290519081900360640190fd5b816003811115611ee257fe5b600160a060020a03841660009081526020819052604090205460ff166003811115611f0957fe5b14611f9a57600160a060020a0383166000908152602081905260409020805483919060ff19166001836003811115611f3d57fe5b021790555082600160a060020a03167f281b0406296ed2277e9ec49b1acca0b452581a995e533fa5256a3ce9355f9a60428460405180838152602001826003811115611f8557fe5b60ff1681526020019250505060405180910390a25b505050565b600080600080600460009054906101000a9004600160a060020a0316600160a060020a031663743c6775866040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050606060405180830381600087803b15801561201557600080fd5b505af1158015612029573d6000803e3d6000fd5b505050506040513d606081101561203f57600080fd5b508051602080830151604093840151600160a060020a03909916600090815260059092529290205490979196955060ff169350915050565b600754600160a060020a031681565b60085481565b303190565b600a54600b549091565b6002803360009081526020819052604090205460ff1660038111156120bc57fe5b14806120e5575060033360009081526020819052604090205460ff1660038111156120e357fe5b145b1515612129576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613048833981519152604482015290519081900360640190fd5b60008060035460ff16600181111561213d57fe5b14612192576040805160e560020a62461bcd02815260206004820152601a60248201527f706179206d6f646520646f6573206e6f74207468652073616d65000000000000604482015290519081900360640190fd5b61148560016125e4565b6121a46127a0565b600080600080600460009054906101000a9004600160a060020a0316600160a060020a031663634d6e57876040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050608060405180830381600087803b15801561221a57600080fd5b505af115801561222e573d6000803e3d6000fd5b505050506040513d608081101561224457600080fd5b508051602080830151604080850151606095860151825160808101845295865293850192909252830152918101919091529695505050505050565b6000808383111561228f57600080fd5b5050900390565b6000808083116122a557600080fd5b82848115156122b057fe5b04949350505050565b60008115156122ca575060006122e0565b6001830154835483028115156122dc57fe5b0490505b92915050565b6122ee6127c9565b604051809103906000f08015801561230a573d6000803e3d6000fd5b506004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905561234260006125e4565b60048054604080517f80ac80b00000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926380ac80b09282820192602092908290030181600087803b15801561239f57600080fd5b505af11580156123b3573d6000803e3d6000fd5b505050506040513d60208110156123c957600080fd5b505160025560006009554260088190556006805460ff1916905560408051918252517fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c759181900360200190a1565b604051600160a060020a0384169083830180156108fc02916000818181858888f1935050505015611f9a5760408051428152602081018490528151600160a060020a038616927f6710e0cad56444677ac916513b384a4acc6501cfb5219f59657ad4ddffef9d60928290030190a260408051428152602081018390528151600160a060020a038616927f8e3ff7e294a4411929d6ec573691ed656c8e5c691be6dc7d776fadb286dbfe82928290030190a2505050565b604051600160a060020a0383169082156108fc029083906000818181858888f19350505050156114855760408051428152602081018390528151600160a060020a038516927f6710e0cad56444677ac916513b384a4acc6501cfb5219f59657ad4ddffef9d60928290030190a25050565b600061255282600160a060020a0316610945565b80156122e05750600160a060020a03821633141592915050565b600061257883836122b9565b90910192915050565b600160a060020a03811615156125e1576040805160e560020a62461bcd02815260206004820152601860248201527f72657175697265206e6f74207a65726f20616464726573730000000000000000604482015290519081900360640190fd5b50565b60018160018111156125f257fe5b1115612648576040805160e560020a62461bcd02815260206004820152601060248201527f696e76616c696420706179206d6f646500000000000000000000000000000000604482015290519081900360640190fd5b60035460ff16600181111561265957fe5b81600181111561266557fe5b1415612670576125e1565b600181600181111561267e57fe5b1415612703576001541515612703576040805160e560020a62461bcd02815260206004820152602c60248201527f63616e6e6f74207365742070756c6c20706179206d6f6465206966206c61746560448201527f73742074696d6520697320300000000000000000000000000000000000000000606482015290519081900360840190fd5b600081600181111561271157fe5b141561271d5760006001555b6003805482919060ff19166001838181111561273557fe5b021790555060035460ff16600181111561274b57fe5b6040805142815290517f8f010bfb19c67f04dbb7e355027ff728adb05787d09dd023f42af2e6554449e99181900360200190a250565b6060604051908101604052806003906020820280388339509192915050565b608060405190810160405280600081526020016000815260200160008152602001600081525090565b60405161086e806127da833901905600608060405234801561001057600080fd5b5060028054600160a060020a0319163317905560018054906100349082810161003a565b50610084565b81548183558181111561005e5760008381526020902061005e918101908301610063565b505050565b61008191905b8082111561007d5760008155600101610069565b5090565b90565b6107db806100936000396000f3006080604052600436106100b95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630fd0ae1081146100be57806311302818146100f6578063440135851461011a578063460d674b1461013e5780635dbe47e814610172578063634d6e5714610193578063743c6775146101da57806380ac80b014610219578063949d225d14610240578063993d348914610255578063ca0b18781461028f578063fbeac9c9146102b3575b600080fd5b3480156100ca57600080fd5b506100e2600160a060020a03600435166024356102d7565b604080519115158252519081900360200190f35b34801561010257600080fd5b506100e2600160a060020a03600435166024356103ec565b34801561012657600080fd5b506100e2600160a060020a0360043516602435610491565b34801561014a57600080fd5b5061015660043561052f565b60408051600160a060020a039092168252519081900360200190f35b34801561017e57600080fd5b506100e2600160a060020a036004351661055c565b34801561019f57600080fd5b506101b4600160a060020a0360043516610578565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156101e657600080fd5b506101fb600160a060020a03600435166105a9565b60408051938452602084019290925282820152519081900360600190f35b34801561022557600080fd5b5061022e6105d4565b60408051918252519081900360200190f35b34801561024c57600080fd5b5061022e6105da565b34801561026157600080fd5b50610276600160a060020a03600435166105e0565b6040805192835260208301919091528051918290030190f35b34801561029b57600080fd5b506100e2600160a060020a0360043516602435610606565b3480156102bf57600080fd5b506100e2600160a060020a03600435166024356106aa565b6002546000908190600160a060020a0316331461032c576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b50600160a060020a038316600090815260208190526040902054801561035557600091506103e5565b600160a060020a0384166000908152602081905260409020600190810184905580549061038490828101610748565b600160a060020a0385166000908152602081905260409020819055600180549192508591839081106103b257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550600191505b5092915050565b600254600090600160a060020a0316331461043f576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156104665750600061048b565b50600160a060020a038216600090815260208190526040902060030180548201905560015b92915050565b600254600090600160a060020a031633146104e4576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260208190526040902054151561050b5750600061048b565b50600160a060020a0391909116600090815260208190526040902060020155600190565b60018054600091908390811061054157fe5b600091825260209091200154600160a060020a031692915050565b600160a060020a03166000908152602081905260408120541190565b600160a060020a03166000908152602081905260409020805460018201546002830154600390930154919390929190565b600160a060020a03166000908152602081905260409020600181015460028201546003909201549092565b60015b90565b60015490565b600160a060020a0316600090815260208190526040902060018101546003909101549091565b600254600090600160a060020a03163314610659576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156106805750600061048b565b50600160a060020a0382166000908152602081905260409020600190810180548301905592915050565b600254600090600160a060020a031633146106fd576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156107245750600061048b565b50600160a060020a0391909116600090815260208190526040902060030155600190565b81548183558181111561076c5760008381526020902061076c918101908301610771565b505050565b6105d791905b8082111561078b5760008155600101610777565b509056006163636573732064656e69656400000000000000000000000000000000000000a165627a7a72305820202cd60ed611d02a3542cf0ddd798bf96ca6c1a5b963d3e40b3387a9e48dd64800296163636573732064656e69656400000000000000000000000000000000000000a165627a7a72305820a343eb0f7375e78534797610021d5e1b0aeae1e188e4bef4c431a4c0fab95b340029608060405234801561001057600080fd5b5060028054600160a060020a0319163317905560018054906100349082810161003a565b50610084565b81548183558181111561005e5760008381526020902061005e918101908301610063565b505050565b61008191905b8082111561007d5760008155600101610069565b5090565b90565b6107db806100936000396000f3006080604052600436106100b95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630fd0ae1081146100be57806311302818146100f6578063440135851461011a578063460d674b1461013e5780635dbe47e814610172578063634d6e5714610193578063743c6775146101da57806380ac80b014610219578063949d225d14610240578063993d348914610255578063ca0b18781461028f578063fbeac9c9146102b3575b600080fd5b3480156100ca57600080fd5b506100e2600160a060020a03600435166024356102d7565b604080519115158252519081900360200190f35b34801561010257600080fd5b506100e2600160a060020a03600435166024356103ec565b34801561012657600080fd5b506100e2600160a060020a0360043516602435610491565b34801561014a57600080fd5b5061015660043561052f565b60408051600160a060020a039092168252519081900360200190f35b34801561017e57600080fd5b506100e2600160a060020a036004351661055c565b34801561019f57600080fd5b506101b4600160a060020a0360043516610578565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156101e657600080fd5b506101fb600160a060020a03600435166105a9565b60408051938452602084019290925282820152519081900360600190f35b34801561022557600080fd5b5061022e6105d4565b60408051918252519081900360200190f35b34801561024c57600080fd5b5061022e6105da565b34801561026157600080fd5b50610276600160a060020a03600435166105e0565b6040805192835260208301919091528051918290030190f35b34801561029b57600080fd5b506100e2600160a060020a0360043516602435610606565b3480156102bf57600080fd5b506100e2600160a060020a03600435166024356106aa565b6002546000908190600160a060020a0316331461032c576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b50600160a060020a038316600090815260208190526040902054801561035557600091506103e5565b600160a060020a0384166000908152602081905260409020600190810184905580549061038490828101610748565b600160a060020a0385166000908152602081905260409020819055600180549192508591839081106103b257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550600191505b5092915050565b600254600090600160a060020a0316331461043f576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156104665750600061048b565b50600160a060020a038216600090815260208190526040902060030180548201905560015b92915050565b600254600090600160a060020a031633146104e4576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260208190526040902054151561050b5750600061048b565b50600160a060020a0391909116600090815260208190526040902060020155600190565b60018054600091908390811061054157fe5b600091825260209091200154600160a060020a031692915050565b600160a060020a03166000908152602081905260408120541190565b600160a060020a03166000908152602081905260409020805460018201546002830154600390930154919390929190565b600160a060020a03166000908152602081905260409020600181015460028201546003909201549092565b60015b90565b60015490565b600160a060020a0316600090815260208190526040902060018101546003909101549091565b600254600090600160a060020a03163314610659576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156106805750600061048b565b50600160a060020a0382166000908152602081905260409020600190810180548301905592915050565b600254600090600160a060020a031633146106fd576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156107245750600061048b565b50600160a060020a0391909116600090815260208190526040902060030155600190565b81548183558181111561076c5760008381526020902061076c918101908301610771565b505050565b6105d791905b8082111561078b5760008155600101610777565b509056006163636573732064656e69656400000000000000000000000000000000000000a165627a7a72305820202cd60ed611d02a3542cf0ddd798bf96ca6c1a5b963d3e40b3387a9e48dd6480029

   Swarm Source:
bzzr://202cd60ed611d02a3542cf0ddd798bf96ca6c1a5b963d3e40b3387a9e48dd648

 

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.