// Copyright (c) 2001-2003 International Business Machines
// Corporation and others. All Rights Reserved.
root {
     errorcodes {
                     "U_ZERO_ERROR",
                     "U_ILLEGAL_ARGUMENT_ERROR",
                     "U_MISSING_RESOURCE_ERROR",
                     "U_INVALID_FORMAT_ERROR",
                     "U_FILE_ACCESS_ERROR",
                     "U_INTERNAL_PROGRAM_ERROR",
                     "U_MESSAGE_PARSE_ERROR",
                     "U_MEMORY_ALLOCATION_ERROR",
                     "U_INDEX_OUTOFBOUNDS_ERROR",
                     "U_PARSE_ERROR",
                     "U_INVALID_CHAR_FOUND",
                     "U_TRUNCATED_CHAR_FOUND",
                     "U_ILLEGAL_CHAR_FOUND",
                     "U_INVALID_TABLE_FORMAT",
                     "U_INVALID_TABLE_FILE",
                     "U_BUFFER_OVERFLOW_ERROR",
                     "U_UNSUPPORTED_ERROR",
                     "U_RESOURCE_TYPE_MISMATCH",
                     "U_ILLEGAL_ESCAPE_SEQUENCE",
                     "U_UNSUPPORTED_ESCAPE_SEQUENCE"
                     }
      helpTopics {
          udata           { "ROOT udata help topic" }
          resourcebundles { "ROOT resource bundle help topic" }
          collation       { "ROOT collation help topic" }
          breakit         { "ROOT break iterator help topic" }
          translit        { "ROOT transliteration help topic" }
          unicode         { "ROOT unicode help topic" }
          format          { "ROOT format help topic" }
      }

      helpKeywords {
          udata           { "udata" }
          resourcebundles { "resources" }
          collation       { "collation" }
          breakit         { "breakit" }
          translit        { "transliteration" }
          unicode         { "unicode" }
          format          { "format" }
      }
}
      

