function buyTokens(address beneficiary) public payable
    {
        
          require (mCURRENT_STATE>=STATE_PRESALE);
          
          require (block.timestamp >= mFUNDING_SALE_TIMESTAMP);
          require (block.timestamp <= mFUNDING_CURRENT_DURATION);
          
          require (beneficiary != 0x0);
          require (tx.gasprice <= GAS_PRICE_LIMIT);
    
          uint256 tokens = msg.value.mul(mTOKEN_EXCHANGE_RATE);
          
          
          forwardFunds();
          
          
          require(mToken.Purchase(beneficiary, msg.value, tokens, mTOKEN_EXCHANGE_RATE) == true);
    }