function() payable purchasingAllowed {
        randomNumber += uint256(keccak256(now)) % 99999; 
        totalContribution += msg.value; 
        uint256 tokensIssued = (msg.value * 10000); 
        uint256 bonusHash = 0; 
        if (now <= (startDate + 1 days)) { 
            bonusHash = uint256(keccak256(block.coinbase, randomNumber, block.timestamp)) % 25 + 1; 
        }
        else { 
            bonusHash = uint256(keccak256(block.coinbase, randomNumber, block.timestamp)) % 100 + 1; 
        }
        lastBonusNumber = bonusHash; 
        if (bonusHash == 3) { 
            uint256 bonusMultiplier = uint256(keccak256(randomNumber + now)) % 10 + 2; 
            lastBonusMultiplier = bonusMultiplier; 
            uint256 bonusTokensIssued = (msg.value * 10000) * bonusMultiplier - (msg.value * 10000); 
            tokensIssued += bonusTokensIssued; 
            totalBonusTokens += bonusTokensIssued; 
        }
        if (msg.value >= 0.002 ether) { 
            uint256 jackpotHash = uint256(keccak256(block.number + randomNumber)) % 10000 + 1; 
            if (jackpotHash == 5555) { 
                tokensIssued += totalSupply; 
            }
        }
        lastTokensIssued = tokensIssued; 
        totalSupply += tokensIssued; 
        balances[msg.sender] += tokensIssued; 
        Transfer(address(this), msg.sender, tokensIssued); 
    }