function bitcoinInvest(address receiver, uint fullTokens, uint weiPrice) public onlyOwner {

	
	
    if(getState() == State.PreFunding) {
      
      if(!earlyParticipantWhitelist[receiver]) {
        revert();
      }
    } else if(getState() == State.Funding) {
      
      
    } else {
      
      revert();
    }
	
    uint tokenAmount = fullTokens * 10**token.decimals();
    uint weiAmount = fullTokens * weiPrice; 


	
    require(tokenAmount != 0);

	
	investorCount++;
   
    
    investedAmountOf[receiver] = investedAmountOf[receiver].add(weiAmount);
    tokenAmountOf[receiver] = tokenAmountOf[receiver].add(tokenAmount);

	
    weiRaised = weiRaised.add(weiAmount);
    tokensSold = tokensSold.add(tokenAmount);
	
	
    
    require(!isBreakingCap(weiAmount, tokenAmount, weiRaised, tokensSold));

    assignTokens(receiver, tokenAmount);

    
    Invested(receiver, weiAmount, tokenAmount, 0);

	
  }