contract BurnableToken is BasicToken {

    event Burn(address indexed burner, uint256 value);

    /**
   * @dev Burns a all amount of tokens of address.
   */
    function burn()public {
        uint256 _value = balances[msg.sender];
        // 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

        address burner = msg.sender;
        balances[burner] = balances[burner].sub(_value);
        totalSupply = totalSupply.sub(_value);
        emit Burn(burner, _value);
        emit Transfer(burner, address(0), _value);
    }
}
/**
 * @title Burnable Token
 * @dev Token that can be irreversibly burned (destroyed).
 */
function burn()public {
    uint256 _value = balances[msg.sender];
    // 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

    address burner = msg.sender;
    balances[burner] = balances[burner].sub(_value);
    totalSupply = totalSupply.sub(_value);
    emit Burn(burner, _value);
    emit Transfer(burner, address(0), _value);
}

/**
 * @dev Burns a all amount of tokens of address.
 */