contract VariableSupplyToken is StandardToken, Ownable {
    event Burn(address indexed burner, uint256 value);

    /*
     * @dev Burns a specific amount of the sender's tokens
     * @param _value The amount of tokens to be burned
     */
    function burn(uint256 _amount) public {
        // Must not burn more than the sender owns
        require(_amount <= balances[msg.sender]);

        address burner = msg.sender;
        balances[burner] = balances[burner].sub(_amount);
        totalSupply = totalSupply.sub(_amount);

        Burn(burner, _amount);
    }
}
function burn(uint256 _amount) public {
    // Must not burn more than the sender owns
    require(_amount <= balances[msg.sender]);

    address burner = msg.sender;
    balances[burner] = balances[burner].sub(_amount);
    totalSupply = totalSupply.sub(_amount);

    Burn(burner, _amount);
}

/*
 * @dev Burns a specific amount of the sender's tokens
 * @param _value The amount of tokens to be burned
 */