// *++
//
// Copyright (c) 2006 - 2010, 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
// which 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.
//
// --*/

/=#

#langdef en-US "English"

#string STR_MISC_BASE_BOARD_MANUFACTURER     #language en-US  "Base Board Manufacturer"
#string STR_MISC_BASE_BOARD_PRODUCT_NAME     #language en-US  "Base Board Product Name"
#string STR_MISC_BASE_BOARD_VERSION          #language en-US  "Base Board Version"
#string STR_MISC_BASE_BOARD_SERIAL_NUMBER    #language en-US  "Base Board Serial Number"
#string STR_MISC_BASE_BOARD_ASSET_TAG        #language en-US  "Base Board Asset Tag"
#string STR_MISC_BASE_BOARD_CHASSIS_LOCATION #language en-US  "Base Board Chassis Location"

