// /** @file
// Boot Maintenance Manager Library used by UiApp.
//
// Boot Maintenance Manager Library used by UiApp.
//
// Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
//
// This program and the accompanying materials are licensed and made available under
// the terms and conditions of the BSD License that accompanies this distribution.
// The full text of the license may be found at
// http://opensource.org/licenses/bsd-license.php.
//
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
//
// **/

#string STR_MODULE_ABSTRACT
#language en-US
"Boot Maintenance Manager Library used by UiApp."

#string STR_MODULE_DESCRIPTION
#language en-US
"Boot Maintenance Manager Library used by UiApp."


