contract BurnableToken is StandardToken{

  event Burn(address indexed burner, uint256 value);
    
    /**
    * @dev Burns a specific amount of tokens.
    * @param _from address from which the tokens are burned
    * @param _value The amount of token to be burned.
    */
    function burnFrom(address _from, uint256 _value) public onlyOwner{
    
        require(_value <= balances[_from]);
        // no need to require value <= totalSupply, since that would imply the
        // sender's balance is greater than the totalSupply, which *should* be an assertion failure
        
        balances[_from] = balances[_from].sub(_value);
        totalSupply_ = totalSupply_.sub(_value);
        emit Burn(_from, _value);
        emit Transfer(_from, address(0), _value);
    }
}
//taken from OpenZeppelin in August 2018
function burnFrom(address _from, uint256 _value) public onlyOwner{
    
    require(_value <= balances[_from]);
    // no need to require value <= totalSupply, since that would imply the
    // sender's balance is greater than the totalSupply, which *should* be an assertion failure
        
    balances[_from] = balances[_from].sub(_value);
    totalSupply_ = totalSupply_.sub(_value);
    emit Burn(_from, _value);
    emit Transfer(_from, address(0), _value);
}

/**
 * @dev Burns a specific amount of tokens.
 * @param _from address from which the tokens are burned
 * @param _value The amount of token to be burned.
 */