typedef struct charmap_char_description_s
{
	unsigned int ascii_code;
	unsigned int uni_code;
	char *char_name;
} charmap_char_description_t, *charmap_char_description_p;

#define	ASCII_LIMIT	0x80

typedef struct charmap_description_s
{
	char *charmap_name;
	charmap_char_description_p charmap_desc;
} charmap_description_t, *charmap_description_p;

#define	MAX_ALIASES		16

typedef struct unicode_alias_list_s
{
	unsigned int uni_code;
	unsigned int num_alias;
	unsigned int alias[MAX_ALIASES];
} unicode_alias_list_t, *unicode_alias_list_p;

V_LOCAL charmap_char_description_t latin1_ccd[] = 
{
	{0x00, 0x0000, "NULL (NUL)"},
	{0x01, 0x0001, "START OF HEADING (SOH)"},
	{0x02, 0x0002, "START OF TEXT (STX)"},
	{0x03, 0x0003, "END OF TEXT (ETX)"},
	{0x04, 0x0004, "END OF TRANSMISSION (EOT)"},
	{0x05, 0x0005, "ENQUIRY (ENQ)"},
	{0x06, 0x0006, "ACKNOWLEDGE (ACK)"},
	{0x07, 0x0007, "BELL (BEL)"},
	{0x08, 0x0008, "BACKSPACE (BS)"},
	{0x09, 0x0009, "CHARACTER TABULATION (HT)"},
	{0x0a, 0x000A, "LINE FEED (LF)"},
	{0x0b, 0x000B, "LINE TABULATION (VT)"},
	{0x0c, 0x000C, "FORM FEED (FF)"},
	{0x0d, 0x000D, "CARRIAGE RETURN (CR)"},
	{0x0e, 0x000E, "SHIFT OUT (SO)"},
	{0x0f, 0x000F, "SHIFT IN (SI)"},
	{0x10, 0x0010, "DATALINK ESCAPE (DLE)"},
	{0x11, 0x0011, "DEVICE CONTROL ONE (DC1)"},
	{0x12, 0x0012, "DEVICE CONTROL TWO (DC2)"},
	{0x13, 0x0013, "DEVICE CONTROL THREE (DC3)"},
	{0x14, 0x0014, "DEVICE CONTROL FOUR (DC4)"},
	{0x15, 0x0015, "NEGATIVE ACKNOWLEDGE (NAK)"},
	{0x16, 0x0016, "SYNCHRONOUS IDLE (SYN)"},
	{0x17, 0x0017, "END OF TRANSMISSION BLOCK (ETB)"},
	{0x18, 0x0018, "CANCEL (CAN)"},
	{0x19, 0x0019, "END OF MEDIUM (EM)"},
	{0x1a, 0x001A, "SUBSTITUTE (SUB)"},
	{0x1b, 0x001B, "ESCAPE (ESC)"},
	{0x1c, 0x001C, "FILE SEPARATOR (IS4)"},
	{0x1d, 0x001D, "GROUP SEPARATOR (IS3)"},
	{0x1e, 0x001E, "RECORD SEPARATOR (IS2)"},
	{0x1f, 0x001F, "UNIT SEPARATOR (IS1)"},
	{0x20, 0x0020, "SPACE"},
	{0x21, 0x0021, "EXCLAMATION MARK"},
	{0x22, 0x0022, "QUOTATION MARK"},
	{0x23, 0x0023, "NUMBER SIGN"},
	{0x24, 0x0024, "DOLLAR SIGN"},
	{0x25, 0x0025, "PERCENT SIGN"},
	{0x26, 0x0026, "AMPERSAND"},
	{0x27, 0x0027, "APOSTROPHE"},
	{0x28, 0x0028, "LEFT PARENTHESIS"},
	{0x29, 0x0029, "RIGHT PARENTHESIS"},
	{0x2a, 0x002A, "ASTERISK"},
	{0x2b, 0x002B, "PLUS SIGN"},
	{0x2c, 0x002C, "COMMA"},
	{0x2d, 0x002D, "HYPHEN-MINUS"},
	{0x2e, 0x002E, "FULL STOP"},
	{0x2f, 0x002F, "SOLIDUS"},
	{0x30, 0x0030, "DIGIT ZERO"},
	{0x31, 0x0031, "DIGIT ONE"},
	{0x32, 0x0032, "DIGIT TWO"},
	{0x33, 0x0033, "DIGIT THREE"},
	{0x34, 0x0034, "DIGIT FOUR"},
	{0x35, 0x0035, "DIGIT FIVE"},
	{0x36, 0x0036, "DIGIT SIX"},
	{0x37, 0x0037, "DIGIT SEVEN"},
	{0x38, 0x0038, "DIGIT EIGHT"},
	{0x39, 0x0039, "DIGIT NINE"},
	{0x3a, 0x003A, "COLON"},
	{0x3b, 0x003B, "SEMICOLON"},
	{0x3c, 0x003C, "LESS-THAN SIGN"},
	{0x3d, 0x003D, "EQUALS SIGN"},
	{0x3e, 0x003E, "GREATER-THAN SIGN"},
	{0x3f, 0x003F, "QUESTION MARK"},
	{0x40, 0x0040, "COMMERCIAL AT"},
	{0x41, 0x0041, "LATIN CAPITAL LETTER A"},
	{0x42, 0x0042, "LATIN CAPITAL LETTER B"},
	{0x43, 0x0043, "LATIN CAPITAL LETTER C"},
	{0x44, 0x0044, "LATIN CAPITAL LETTER D"},
	{0x45, 0x0045, "LATIN CAPITAL LETTER E"},
	{0x46, 0x0046, "LATIN CAPITAL LETTER F"},
	{0x47, 0x0047, "LATIN CAPITAL LETTER G"},
	{0x48, 0x0048, "LATIN CAPITAL LETTER H"},
	{0x49, 0x0049, "LATIN CAPITAL LETTER I"},
	{0x4a, 0x004A, "LATIN CAPITAL LETTER J"},
	{0x4b, 0x004B, "LATIN CAPITAL LETTER K"},
	{0x4c, 0x004C, "LATIN CAPITAL LETTER L"},
	{0x4d, 0x004D, "LATIN CAPITAL LETTER M"},
	{0x4e, 0x004E, "LATIN CAPITAL LETTER N"},
	{0x4f, 0x004F, "LATIN CAPITAL LETTER O"},
	{0x50, 0x0050, "LATIN CAPITAL LETTER P"},
	{0x51, 0x0051, "LATIN CAPITAL LETTER Q"},
	{0x52, 0x0052, "LATIN CAPITAL LETTER R"},
	{0x53, 0x0053, "LATIN CAPITAL LETTER S"},
	{0x54, 0x0054, "LATIN CAPITAL LETTER T"},
	{0x55, 0x0055, "LATIN CAPITAL LETTER U"},
	{0x56, 0x0056, "LATIN CAPITAL LETTER V"},
	{0x57, 0x0057, "LATIN CAPITAL LETTER W"},
	{0x58, 0x0058, "LATIN CAPITAL LETTER X"},
	{0x59, 0x0059, "LATIN CAPITAL LETTER Y"},
	{0x5a, 0x005A, "LATIN CAPITAL LETTER Z"},
	{0x5b, 0x005B, "LEFT SQUARE BRACKET"},
	{0x5c, 0x005C, "REVERSE SOLIDUS"},
	{0x5d, 0x005D, "RIGHT SQUARE BRACKET"},
	{0x5e, 0x005E, "CIRCUMFLEX ACCENT"},
	{0x5f, 0x005F, "LOW LINE"},
	{0x60, 0x0060, "GRAVE ACCENT"},
	{0x61, 0x0061, "LATIN SMALL LETTER A"},
	{0x62, 0x0062, "LATIN SMALL LETTER B"},
	{0x63, 0x0063, "LATIN SMALL LETTER C"},
	{0x64, 0x0064, "LATIN SMALL LETTER D"},
	{0x65, 0x0065, "LATIN SMALL LETTER E"},
	{0x66, 0x0066, "LATIN SMALL LETTER F"},
	{0x67, 0x0067, "LATIN SMALL LETTER G"},
	{0x68, 0x0068, "LATIN SMALL LETTER H"},
	{0x69, 0x0069, "LATIN SMALL LETTER I"},
	{0x6a, 0x006A, "LATIN SMALL LETTER J"},
	{0x6b, 0x006B, "LATIN SMALL LETTER K"},
	{0x6c, 0x006C, "LATIN SMALL LETTER L"},
	{0x6d, 0x006D, "LATIN SMALL LETTER M"},
	{0x6e, 0x006E, "LATIN SMALL LETTER N"},
	{0x6f, 0x006F, "LATIN SMALL LETTER O"},
	{0x70, 0x0070, "LATIN SMALL LETTER P"},
	{0x71, 0x0071, "LATIN SMALL LETTER Q"},
	{0x72, 0x0072, "LATIN SMALL LETTER R"},
	{0x73, 0x0073, "LATIN SMALL LETTER S"},
	{0x74, 0x0074, "LATIN SMALL LETTER T"},
	{0x75, 0x0075, "LATIN SMALL LETTER U"},
	{0x76, 0x0076, "LATIN SMALL LETTER V"},
	{0x77, 0x0077, "LATIN SMALL LETTER W"},
	{0x78, 0x0078, "LATIN SMALL LETTER X"},
	{0x79, 0x0079, "LATIN SMALL LETTER Y"},
	{0x7a, 0x007A, "LATIN SMALL LETTER Z"},
	{0x7b, 0x007B, "LEFT CURLY BRACKET"},
	{0x7c, 0x007C, "VERTICAL LINE"},
	{0x7d, 0x007D, "RIGHT CURLY BRACKET"},
	{0x7e, 0x007E, "TILDE"},
	{0x7f, 0x007F, "DELETE (DEL)"},
	{0x80, 0x0080, "PADDING CHARACTER (PAD)"},
	{0x81, 0x0081, "HIGH OCTET PRESET (HOP)"},
	{0x82, 0x0082, "BREAK PERMITTED HERE (BPH)"},
	{0x83, 0x0083, "NO BREAK HERE (NBH)"},
	{0x84, 0x0084, "INDEX (IND)"},
	{0x85, 0x0085, "NEXT LINE (NEL)"},
	{0x86, 0x0086, "START OF SELECTED AREA (SSA)"},
	{0x87, 0x0087, "END OF SELECTED AREA (ESA)"},
	{0x88, 0x0088, "CHARACTER TABULATION SET (HTS)"},
	{0x89, 0x0089, "CHARACTER TABULATION WITH JUSTIFICATION (HTJ)"},
	{0x8a, 0x008A, "LINE TABULATION SET (VTS)"},
	{0x8b, 0x008B, "PARTIAL LINE FORWARD (PLD)"},
	{0x8c, 0x008C, "PARTIAL LINE BACKWARD (PLU)"},
	{0x8d, 0x008D, "REVERSE LINE FEED (RI)"},
	{0x8e, 0x008E, "SINGLE-SHIFT TWO (SS2)"},
	{0x8f, 0x008F, "SINGLE-SHIFT THREE (SS3)"},
	{0x90, 0x0090, "DEVICE CONTROL STRING (DCS)"},
	{0x91, 0x0091, "PRIVATE USE ONE (PU1)"},
	{0x92, 0x0092, "PRIVATE USE TWO (PU2)"},
	{0x93, 0x0093, "SET TRANSMIT STATE (STS)"},
	{0x94, 0x0094, "CANCEL CHARACTER (CCH)"},
	{0x95, 0x0095, "MESSAGE WAITING (MW)"},
	{0x96, 0x0096, "START OF GUARDED AREA (SPA)"},
	{0x97, 0x0097, "END OF GUARDED AREA (EPA)"},
	{0x98, 0x0098, "START OF STRING (SOS)"},
	{0x99, 0x0099, "SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)"},
	{0x9a, 0x009A, "SINGLE CHARACTER INTRODUCER (SCI)"},
	{0x9b, 0x009B, "CONTROL SEQUENCE INTRODUCER (CSI)"},
	{0x9c, 0x009C, "STRING TERMINATOR (ST)"},
	{0x9d, 0x009D, "OPERATING SYSTEM COMMAND (OSC)"},
	{0x9e, 0x009E, "PRIVACY MESSAGE (PM)"},
	{0x9f, 0x009F, "APPLICATION PROGRAM COMMAND (APC)"},
	{0xa0, 0x00A0, "NO-BREAK SPACE"},
	{0xa1, 0x00A1, "INVERTED EXCLAMATION MARK"},
	{0xa2, 0x00A2, "CENT SIGN"},
	{0xa3, 0x00A3, "POUND SIGN"},
	{0xa4, 0x00A4, "CURRENCY SIGN"},
	{0xa5, 0x00A5, "YEN SIGN"},
	{0xa6, 0x00A6, "BROKEN BAR"},
	{0xa7, 0x00A7, "SECTION SIGN"},
	{0xa8, 0x00A8, "DIAERESIS"},
	{0xa9, 0x00A9, "COPYRIGHT SIGN"},
	{0xaa, 0x00AA, "FEMININE ORDINAL INDICATOR"},
	{0xab, 0x00AB, "LEFT-POINTING DOUBLE ANGLE QUOTATION MARK"},
	{0xac, 0x00AC, "NOT SIGN"},
	{0xad, 0x00AD, "SOFT HYPHEN"},
	{0xae, 0x00AE, "REGISTERED SIGN"},
	{0xaf, 0x00AF, "MACRON"},
	{0xb0, 0x00B0, "DEGREE SIGN"},
	{0xb1, 0x00B1, "PLUS-MINUS SIGN"},
	{0xb2, 0x00B2, "SUPERSCRIPT TWO"},
	{0xb3, 0x00B3, "SUPERSCRIPT THREE"},
	{0xb4, 0x00B4, "ACUTE ACCENT"},
	{0xb5, 0x00B5, "MICRO SIGN"},
	{0xb6, 0x00B6, "PILCROW SIGN"},
	{0xb7, 0x00B7, "MIDDLE DOT"},
	{0xb8, 0x00B8, "CEDILLA"},
	{0xb9, 0x00B9, "SUPERSCRIPT ONE"},
	{0xba, 0x00BA, "MASCULINE ORDINAL INDICATOR"},
	{0xbb, 0x00BB, "RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK"},
	{0xbc, 0x00BC, "VULGAR FRACTION ONE QUARTER"},
	{0xbd, 0x00BD, "VULGAR FRACTION ONE HALF"},
	{0xbe, 0x00BE, "VULGAR FRACTION THREE QUARTERS"},
	{0xbf, 0x00BF, "INVERTED QUESTION MARK"},
	{0xc0, 0x00C0, "LATIN CAPITAL LETTER A WITH GRAVE"},
	{0xc1, 0x00C1, "LATIN CAPITAL LETTER A WITH ACUTE"},
	{0xc2, 0x00C2, "LATIN CAPITAL LETTER A WITH CIRCUMFLEX"},
	{0xc3, 0x00C3, "LATIN CAPITAL LETTER A WITH TILDE"},
	{0xc4, 0x00C4, "LATIN CAPITAL LETTER A WITH DIAERESIS"},
	{0xc5, 0x00C5, "LATIN CAPITAL LETTER A WITH RING ABOVE"},
	{0xc6, 0x00C6, "LATIN CAPITAL LETTER AE"},
	{0xc7, 0x00C7, "LATIN CAPITAL LETTER C WITH CEDILLA"},
	{0xc8, 0x00C8, "LATIN CAPITAL LETTER E WITH GRAVE"},
	{0xc9, 0x00C9, "LATIN CAPITAL LETTER E WITH ACUTE"},
	{0xca, 0x00CA, "LATIN CAPITAL LETTER E WITH CIRCUMFLEX"},
	{0xcb, 0x00CB, "LATIN CAPITAL LETTER E WITH DIAERESIS"},
	{0xcc, 0x00CC, "LATIN CAPITAL LETTER I WITH GRAVE"},
	{0xcd, 0x00CD, "LATIN CAPITAL LETTER I WITH ACUTE"},
	{0xce, 0x00CE, "LATIN CAPITAL LETTER I WITH CIRCUMFLEX"},
	{0xcf, 0x00CF, "LATIN CAPITAL LETTER I WITH DIAERESIS"},
	{0xd0, 0x00D0, "LATIN CAPITAL LETTER ETH (Icelandic)"},
	{0xd1, 0x00D1, "LATIN CAPITAL LETTER N WITH TILDE"},
	{0xd2, 0x00D2, "LATIN CAPITAL LETTER O WITH GRAVE"},
	{0xd3, 0x00D3, "LATIN CAPITAL LETTER O WITH ACUTE"},
	{0xd4, 0x00D4, "LATIN CAPITAL LETTER O WITH CIRCUMFLEX"},
	{0xd5, 0x00D5, "LATIN CAPITAL LETTER O WITH TILDE"},
	{0xd6, 0x00D6, "LATIN CAPITAL LETTER O WITH DIAERESIS"},
	{0xd7, 0x00D7, "MULTIPLICATION SIGN"},
	{0xd8, 0x00D8, "LATIN CAPITAL LETTER O WITH STROKE"},
	{0xd9, 0x00D9, "LATIN CAPITAL LETTER U WITH GRAVE"},
	{0xda, 0x00DA, "LATIN CAPITAL LETTER U WITH ACUTE"},
	{0xdb, 0x00DB, "LATIN CAPITAL LETTER U WITH CIRCUMFLEX"},
	{0xdc, 0x00DC, "LATIN CAPITAL LETTER U WITH DIAERESIS"},
	{0xdd, 0x00DD, "LATIN CAPITAL LETTER Y WITH ACUTE"},
	{0xde, 0x00DE, "LATIN CAPITAL LETTER THORN (Icelandic)"},
	{0xdf, 0x00DF, "LATIN SMALL LETTER SHARP S (German)"},
	{0xe0, 0x00E0, "LATIN SMALL LETTER A WITH GRAVE"},
	{0xe1, 0x00E1, "LATIN SMALL LETTER A WITH ACUTE"},
	{0xe2, 0x00E2, "LATIN SMALL LETTER A WITH CIRCUMFLEX"},
	{0xe3, 0x00E3, "LATIN SMALL LETTER A WITH TILDE"},
	{0xe4, 0x00E4, "LATIN SMALL LETTER A WITH DIAERESIS"},
	{0xe5, 0x00E5, "LATIN SMALL LETTER A WITH RING ABOVE"},
	{0xe6, 0x00E6, "LATIN SMALL LETTER AE"},
	{0xe7, 0x00E7, "LATIN SMALL LETTER C WITH CEDILLA"},
	{0xe8, 0x00E8, "LATIN SMALL LETTER E WITH GRAVE"},
	{0xe9, 0x00E9, "LATIN SMALL LETTER E WITH ACUTE"},
	{0xea, 0x00EA, "LATIN SMALL LETTER E WITH CIRCUMFLEX"},
	{0xeb, 0x00EB, "LATIN SMALL LETTER E WITH DIAERESIS"},
	{0xec, 0x00EC, "LATIN SMALL LETTER I WITH GRAVE"},
	{0xed, 0x00ED, "LATIN SMALL LETTER I WITH ACUTE"},
	{0xee, 0x00EE, "LATIN SMALL LETTER I WITH CIRCUMFLEX"},
	{0xef, 0x00EF, "LATIN SMALL LETTER I WITH DIAERESIS"},
	{0xf0, 0x00F0, "LATIN SMALL LETTER ETH (Icelandic)"},
	{0xf1, 0x00F1, "LATIN SMALL LETTER N WITH TILDE"},
	{0xf2, 0x00F2, "LATIN SMALL LETTER O WITH GRAVE"},
	{0xf3, 0x00F3, "LATIN SMALL LETTER O WITH ACUTE"},
	{0xf4, 0x00F4, "LATIN SMALL LETTER O WITH CIRCUMFLEX"},
	{0xf5, 0x00F5, "LATIN SMALL LETTER O WITH TILDE"},
	{0xf6, 0x00F6, "LATIN SMALL LETTER O WITH DIAERESIS"},
	{0xf7, 0x00F7, "DIVISION SIGN"},
	{0xf8, 0x00F8, "LATIN SMALL LETTER O WITH STROKE"},
	{0xf9, 0x00F9, "LATIN SMALL LETTER U WITH GRAVE"},
	{0xfa, 0x00FA, "LATIN SMALL LETTER U WITH ACUTE"},
	{0xfb, 0x00FB, "LATIN SMALL LETTER U WITH CIRCUMFLEX"},
	{0xfc, 0x00FC, "LATIN SMALL LETTER U WITH DIAERESIS"},
	{0xfd, 0x00FD, "LATIN SMALL LETTER Y WITH ACUTE"},
	{0xfe, 0x00FE, "LATIN SMALL LETTER THORN (Icelandic)"},
	{0xff, 0x00FF, "LATIN SMALL LETTER Y WITH DIAERESIS"},
	{0, 0, NULL}
};

V_LOCAL charmap_char_description_t koi8_r_ccd[] = 
{
	{0x80, 0x2500, "BOX DRAWINGS LIGHT HORIZONTAL"},
	{0x81, 0x2502, "BOX DRAWINGS LIGHT VERTICAL"},
	{0x82, 0x250C, "BOX DRAWINGS LIGHT DOWN AND RIGHT"},
	{0x83, 0x2510, "BOX DRAWINGS LIGHT DOWN AND LEFT"},
	{0x84, 0x2514, "BOX DRAWINGS LIGHT UP AND RIGHT"},
	{0x85, 0x2518, "BOX DRAWINGS LIGHT UP AND LEFT"},
	{0x86, 0x251C, "BOX DRAWINGS LIGHT VERTICAL AND RIGHT"},
	{0x87, 0x2524, "BOX DRAWINGS LIGHT VERTICAL AND LEFT"},
	{0x88, 0x252C, "BOX DRAWINGS LIGHT DOWN AND HORIZONTAL"},
	{0x89, 0x2534, "BOX DRAWINGS LIGHT UP AND HORIZONTAL"},
	{0x8a, 0x253C, "BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL"},
	{0x8b, 0x2580, "UPPER HALF BLOCK"},
	{0x8c, 0x2584, "LOWER HALF BLOCK"},
	{0x8d, 0x2588, "FULL BLOCK"},
	{0x8e, 0x258C, "LEFT HALF BLOCK"},
	{0x8f, 0x2590, "RIGHT HALF BLOCK"},
	{0x90, 0x2591, "LIGHT SHADE"},
	{0x91, 0x2592, "MEDIUM SHADE"},
	{0x92, 0x2593, "DARK SHADE"},
	{0x93, 0x2320, "TOP HALF INTEGRAL"},
	{0x94, 0x25A0, "BLACK SQUARE"},
	{0x95, 0x2219, "BULLET OPERATOR"},
	{0x96, 0x221A, "SQUARE ROOT"},
	{0x97, 0x2248, "ALMOST EQUAL TO"},
	{0x98, 0x2264, "LESS-THAN OR EQUAL TO"},
	{0x99, 0x2265, "GREATER-THAN OR EQUAL TO"},
	{0x9a, 0x00A0, "NO-BREAK SPACE"},
	{0x9b, 0x2321, "BOTTOM HALF INTEGRAL"},
	{0x9c, 0x00B0, "DEGREE SIGN"},
	{0x9d, 0x00B2, "SUPERSCRIPT TWO"},
	{0x9e, 0x00B7, "MIDDLE DOT"},
	{0x9f, 0x00F7, "DIVISION SIGN"},
	{0xa0, 0x2550, "BOX DRAWINGS DOUBLE HORIZONTAL"},
	{0xa1, 0x2551, "BOX DRAWINGS DOUBLE VERTICAL"},
	{0xa2, 0x2552, "BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE"},
	{0xa3, 0x0451, "CYRILLIC SMALL LETTER IO"},
	{0xa4, 0x2553, "BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE"},
	{0xa5, 0x2554, "BOX DRAWINGS DOUBLE DOWN AND RIGHT"},
	{0xa6, 0x2555, "BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE"},
	{0xa7, 0x2556, "BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE"},
	{0xa8, 0x2557, "BOX DRAWINGS DOUBLE DOWN AND LEFT"},
	{0xa9, 0x2558, "BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE"},
	{0xaa, 0x2559, "BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE"},
	{0xab, 0x255A, "BOX DRAWINGS DOUBLE UP AND RIGHT"},
	{0xac, 0x255B, "BOX DRAWINGS UP SINGLE AND LEFT DOUBLE"},
	{0xad, 0x255C, "BOX DRAWINGS UP DOUBLE AND LEFT SINGLE"},
	{0xae, 0x255D, "BOX DRAWINGS DOUBLE UP AND LEFT"},
	{0xaf, 0x255E, "BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE"},
	{0xb0, 0x255F, "BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE"},
	{0xb1, 0x2560, "BOX DRAWINGS DOUBLE VERTICAL AND RIGHT"},
	{0xb2, 0x2561, "BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE"},
	{0xb3, 0x0401, "CYRILLIC CAPITAL LETTER IO"},
	{0xb4, 0x2562, "BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE"},
	{0xb5, 0x2563, "BOX DRAWINGS DOUBLE VERTICAL AND LEFT"},
	{0xb6, 0x2564, "BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE"},
	{0xb7, 0x2565, "BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE"},
	{0xb8, 0x2566, "BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL"},
	{0xb9, 0x2567, "BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE"},
	{0xba, 0x2568, "BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE"},
	{0xbb, 0x2569, "BOX DRAWINGS DOUBLE UP AND HORIZONTAL"},
	{0xbc, 0x256A, "BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE"},
	{0xbd, 0x256B, "BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE"},
	{0xbe, 0x256C, "BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL"},
	{0xbf, 0x00A9, "COPYRIGHT SIGN"},
	{0xc0, 0x044E, "CYRILLIC SMALL LETTER YU"},
	{0xc1, 0x0430, "CYRILLIC SMALL LETTER A"},
	{0xc2, 0x0431, "CYRILLIC SMALL LETTER BE"},
	{0xc3, 0x0446, "CYRILLIC SMALL LETTER TSE"},
	{0xc4, 0x0434, "CYRILLIC SMALL LETTER DE"},
	{0xc5, 0x0435, "CYRILLIC SMALL LETTER IE"},
	{0xc6, 0x0444, "CYRILLIC SMALL LETTER EF"},
	{0xc7, 0x0433, "CYRILLIC SMALL LETTER GHE"},
	{0xc8, 0x0445, "CYRILLIC SMALL LETTER HA"},
	{0xc9, 0x0438, "CYRILLIC SMALL LETTER I"},
	{0xca, 0x0439, "CYRILLIC SMALL LETTER SHORT I"},
	{0xcb, 0x043A, "CYRILLIC SMALL LETTER KA"},
	{0xcc, 0x043B, "CYRILLIC SMALL LETTER EL"},
	{0xcd, 0x043C, "CYRILLIC SMALL LETTER EM"},
	{0xce, 0x043D, "CYRILLIC SMALL LETTER EN"},
	{0xcf, 0x043E, "CYRILLIC SMALL LETTER O"},
	{0xd0, 0x043F, "CYRILLIC SMALL LETTER PE"},
	{0xd1, 0x044F, "CYRILLIC SMALL LETTER YA"},
	{0xd2, 0x0440, "CYRILLIC SMALL LETTER ER"},
	{0xd3, 0x0441, "CYRILLIC SMALL LETTER ES"},
	{0xd4, 0x0442, "CYRILLIC SMALL LETTER TE"},
	{0xd5, 0x0443, "CYRILLIC SMALL LETTER U"},
	{0xd6, 0x0436, "CYRILLIC SMALL LETTER ZHE"},
	{0xd7, 0x0432, "CYRILLIC SMALL LETTER VE"},
	{0xd8, 0x044C, "CYRILLIC SMALL LETTER SOFT SIGN"},
	{0xd9, 0x044B, "CYRILLIC SMALL LETTER YERU"},
	{0xda, 0x0437, "CYRILLIC SMALL LETTER ZE"},
	{0xdb, 0x0448, "CYRILLIC SMALL LETTER SHA"},
	{0xdc, 0x044D, "CYRILLIC SMALL LETTER E"},
	{0xdd, 0x0449, "CYRILLIC SMALL LETTER SHCHA"},
	{0xde, 0x0447, "CYRILLIC SMALL LETTER CHE"},
	{0xdf, 0x044A, "CYRILLIC SMALL LETTER HARD SIGN"},
	{0xe0, 0x042E, "CYRILLIC CAPITAL LETTER YU"},
	{0xe1, 0x0410, "CYRILLIC CAPITAL LETTER A"},
	{0xe2, 0x0411, "CYRILLIC CAPITAL LETTER BE"},
	{0xe3, 0x0426, "CYRILLIC CAPITAL LETTER TSE"},
	{0xe4, 0x0414, "CYRILLIC CAPITAL LETTER DE"},
	{0xe5, 0x0415, "CYRILLIC CAPITAL LETTER IE"},
	{0xe6, 0x0424, "CYRILLIC CAPITAL LETTER EF"},
	{0xe7, 0x0413, "CYRILLIC CAPITAL LETTER GHE"},
	{0xe8, 0x0425, "CYRILLIC CAPITAL LETTER HA"},
	{0xe9, 0x0418, "CYRILLIC CAPITAL LETTER I"},
	{0xea, 0x0419, "CYRILLIC CAPITAL LETTER SHORT I"},
	{0xeb, 0x041A, "CYRILLIC CAPITAL LETTER KA"},
	{0xec, 0x041B, "CYRILLIC CAPITAL LETTER EL"},
	{0xed, 0x041C, "CYRILLIC CAPITAL LETTER EM"},
	{0xee, 0x041D, "CYRILLIC CAPITAL LETTER EN"},
	{0xef, 0x041E, "CYRILLIC CAPITAL LETTER O"},
	{0xf0, 0x041F, "CYRILLIC CAPITAL LETTER PE"},
	{0xf1, 0x042F, "CYRILLIC CAPITAL LETTER YA"},
	{0xf2, 0x0420, "CYRILLIC CAPITAL LETTER ER"},
	{0xf3, 0x0421, "CYRILLIC CAPITAL LETTER ES"},
	{0xf4, 0x0422, "CYRILLIC CAPITAL LETTER TE"},
	{0xf5, 0x0423, "CYRILLIC CAPITAL LETTER U"},
	{0xf6, 0x0416, "CYRILLIC CAPITAL LETTER ZHE"},
	{0xf7, 0x0412, "CYRILLIC CAPITAL LETTER VE"},
	{0xf8, 0x042C, "CYRILLIC CAPITAL LETTER SOFT SIGN"},
	{0xf9, 0x042B, "CYRILLIC CAPITAL LETTER YERU"},
	{0xfa, 0x0417, "CYRILLIC CAPITAL LETTER ZE"},
	{0xfb, 0x0428, "CYRILLIC CAPITAL LETTER SHA"},
	{0xfc, 0x042D, "CYRILLIC CAPITAL LETTER E"},
	{0xfd, 0x0429, "CYRILLIC CAPITAL LETTER SHCHA"},
	{0xfe, 0x0427, "CYRILLIC CAPITAL LETTER CHE"},
	{0xff, 0x042A, "CYRILLIC CAPITAL LETTER HARD SIGN"},
	{0, 0, NULL}
};

V_LOCAL charmap_char_description_t cp866_ccd[] = 
{
	{0x80, 0x0410, "CYRILLIC CAPITAL LETTER A"},
	{0x81, 0x0411, "CYRILLIC CAPITAL LETTER BE"},
	{0x82, 0x0412, "CYRILLIC CAPITAL LETTER VE"},
	{0x83, 0x0413, "CYRILLIC CAPITAL LETTER GHE"},
	{0x84, 0x0414, "CYRILLIC CAPITAL LETTER DE"},
	{0x85, 0x0415, "CYRILLIC CAPITAL LETTER IE"},
	{0x86, 0x0416, "CYRILLIC CAPITAL LETTER ZHE"},
	{0x87, 0x0417, "CYRILLIC CAPITAL LETTER ZE"},
	{0x88, 0x0418, "CYRILLIC CAPITAL LETTER I"},
	{0x89, 0x0419, "CYRILLIC CAPITAL LETTER SHORT I"},
	{0x8a, 0x041A, "CYRILLIC CAPITAL LETTER KA"},
	{0x8b, 0x041B, "CYRILLIC CAPITAL LETTER EL"},
	{0x8c, 0x041C, "CYRILLIC CAPITAL LETTER EM"},
	{0x8d, 0x041D, "CYRILLIC CAPITAL LETTER EN"},
	{0x8e, 0x041E, "CYRILLIC CAPITAL LETTER O"},
	{0x8f, 0x041F, "CYRILLIC CAPITAL LETTER PE"},
	{0x90, 0x0420, "CYRILLIC CAPITAL LETTER ER"},
	{0x91, 0x0421, "CYRILLIC CAPITAL LETTER ES"},
	{0x92, 0x0422, "CYRILLIC CAPITAL LETTER TE"},
	{0x93, 0x0423, "CYRILLIC CAPITAL LETTER U"},
	{0x94, 0x0424, "CYRILLIC CAPITAL LETTER EF"},
	{0x95, 0x0425, "CYRILLIC CAPITAL LETTER HA"},
	{0x96, 0x0426, "CYRILLIC CAPITAL LETTER TSE"},
	{0x97, 0x0427, "CYRILLIC CAPITAL LETTER CHE"},
	{0x98, 0x0428, "CYRILLIC CAPITAL LETTER SHA"},
	{0x99, 0x0429, "CYRILLIC CAPITAL LETTER SHCHA"},
	{0x9a, 0x042A, "CYRILLIC CAPITAL LETTER HARD SIGN"},
	{0x9b, 0x042B, "CYRILLIC CAPITAL LETTER YERU"},
	{0x9c, 0x042C, "CYRILLIC CAPITAL LETTER SOFT SIGN"},
	{0x9d, 0x042D, "CYRILLIC CAPITAL LETTER E"},
	{0x9e, 0x042E, "CYRILLIC CAPITAL LETTER YU"},
	{0x9f, 0x042F, "CYRILLIC CAPITAL LETTER YA"},
	{0xa0, 0x0430, "CYRILLIC SMALL LETTER A"},
	{0xa1, 0x0431, "CYRILLIC SMALL LETTER BE"},
	{0xa2, 0x0432, "CYRILLIC SMALL LETTER VE"},
	{0xa3, 0x0433, "CYRILLIC SMALL LETTER GHE"},
	{0xa4, 0x0434, "CYRILLIC SMALL LETTER DE"},
	{0xa5, 0x0435, "CYRILLIC SMALL LETTER IE"},
	{0xa6, 0x0436, "CYRILLIC SMALL LETTER ZHE"},
	{0xa7, 0x0437, "CYRILLIC SMALL LETTER ZE"},
	{0xa8, 0x0438, "CYRILLIC SMALL LETTER I"},
	{0xa9, 0x0439, "CYRILLIC SMALL LETTER SHORT I"},
	{0xaa, 0x043A, "CYRILLIC SMALL LETTER KA"},
	{0xab, 0x043B, "CYRILLIC SMALL LETTER EL"},
	{0xac, 0x043C, "CYRILLIC SMALL LETTER EM"},
	{0xad, 0x043D, "CYRILLIC SMALL LETTER EN"},
	{0xae, 0x043E, "CYRILLIC SMALL LETTER O"},
	{0xaf, 0x043F, "CYRILLIC SMALL LETTER PE"},
	{0xb0, 0x2591, "LIGHT SHADE"},
	{0xb1, 0x2592, "MEDIUM SHADE"},
	{0xb2, 0x2593, "DARK SHADE"},
	{0xb3, 0x2502, "BOX DRAWINGS LIGHT VERTICAL"},
	{0xb4, 0x2524, "BOX DRAWINGS LIGHT VERTICAL AND LEFT"},
	{0xb5, 0x2561, "BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE"},
	{0xb6, 0x2562, "BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE"},
	{0xb7, 0x2556, "BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE"},
	{0xb8, 0x2555, "BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE"},
	{0xb9, 0x2563, "BOX DRAWINGS DOUBLE VERTICAL AND LEFT"},
	{0xba, 0x2551, "BOX DRAWINGS DOUBLE VERTICAL"},
	{0xbb, 0x2557, "BOX DRAWINGS DOUBLE DOWN AND LEFT"},
	{0xbc, 0x255D, "BOX DRAWINGS DOUBLE UP AND LEFT"},
	{0xbd, 0x255C, "BOX DRAWINGS UP DOUBLE AND LEFT SINGLE"},
	{0xbe, 0x255B, "BOX DRAWINGS UP SINGLE AND LEFT DOUBLE"},
	{0xbf, 0x2510, "BOX DRAWINGS LIGHT DOWN AND LEFT"},
	{0xc0, 0x2514, "BOX DRAWINGS LIGHT UP AND RIGHT"},
	{0xc1, 0x2534, "BOX DRAWINGS LIGHT UP AND HORIZONTAL"},
	{0xc2, 0x252C, "BOX DRAWINGS LIGHT DOWN AND HORIZONTAL"},
	{0xc3, 0x251C, "BOX DRAWINGS LIGHT VERTICAL AND RIGHT"},
	{0xc4, 0x2500, "BOX DRAWINGS LIGHT HORIZONTAL"},
	{0xc5, 0x253C, "BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL"},
	{0xc6, 0x255E, "BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE"},
	{0xc7, 0x255F, "BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE"},
	{0xc8, 0x255A, "BOX DRAWINGS DOUBLE UP AND RIGHT"},
	{0xc9, 0x2554, "BOX DRAWINGS DOUBLE DOWN AND RIGHT"},
	{0xca, 0x2569, "BOX DRAWINGS DOUBLE UP AND HORIZONTAL"},
	{0xcb, 0x2566, "BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL"},
	{0xcc, 0x2560, "BOX DRAWINGS DOUBLE VERTICAL AND RIGHT"},
	{0xcd, 0x2550, "BOX DRAWINGS DOUBLE HORIZONTAL"},
	{0xce, 0x256C, "BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL"},
	{0xcf, 0x2567, "BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE"},
	{0xd0, 0x2568, "BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE"},
	{0xd1, 0x2564, "BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE"},
	{0xd2, 0x2565, "BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE"},
	{0xd3, 0x2559, "BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE"},
	{0xd4, 0x2558, "BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE"},
	{0xd5, 0x2552, "BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE"},
	{0xd6, 0x2553, "BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE"},
	{0xd7, 0x256B, "BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE"},
	{0xd8, 0x256A, "BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE"},
	{0xd9, 0x2518, "BOX DRAWINGS LIGHT UP AND LEFT"},
	{0xda, 0x250C, "BOX DRAWINGS LIGHT DOWN AND RIGHT"},
	{0xdb, 0x2588, "FULL BLOCK"},
	{0xdc, 0x2584, "LOWER HALF BLOCK"},
	{0xdd, 0x258C, "LEFT HALF BLOCK"},
	{0xde, 0x2590, "RIGHT HALF BLOCK"},
	{0xdf, 0x2580, "UPPER HALF BLOCK"},
	{0xe0, 0x0440, "CYRILLIC SMALL LETTER ER"},
	{0xe1, 0x0441, "CYRILLIC SMALL LETTER ES"},
	{0xe2, 0x0442, "CYRILLIC SMALL LETTER TE"},
	{0xe3, 0x0443, "CYRILLIC SMALL LETTER U"},
	{0xe4, 0x0444, "CYRILLIC SMALL LETTER EF"},
	{0xe5, 0x0445, "CYRILLIC SMALL LETTER HA"},
	{0xe6, 0x0446, "CYRILLIC SMALL LETTER TSE"},
	{0xe7, 0x0447, "CYRILLIC SMALL LETTER CHE"},
	{0xe8, 0x0448, "CYRILLIC SMALL LETTER SHA"},
	{0xe9, 0x0449, "CYRILLIC SMALL LETTER SHCHA"},
	{0xea, 0x044A, "CYRILLIC SMALL LETTER HARD SIGN"},
	{0xeb, 0x044B, "CYRILLIC SMALL LETTER YERU"},
	{0xec, 0x044C, "CYRILLIC SMALL LETTER SOFT SIGN"},
	{0xed, 0x044D, "CYRILLIC SMALL LETTER E"},
	{0xee, 0x044E, "CYRILLIC SMALL LETTER YU"},
	{0xef, 0x044F, "CYRILLIC SMALL LETTER YA"},
	{0xf0, 0x0401, "CYRILLIC CAPITAL LETTER IO"},
	{0xf1, 0x0451, "CYRILLIC SMALL LETTER IO"},
	{0xf2, 0x0404, "CYRILLIC CAPITAL LETTER UKRAINIAN IE"},
	{0xf3, 0x0454, "CYRILLIC SMALL LETTER UKRAINIAN IE"},
	{0xf4, 0x0407, "CYRILLIC CAPITAL LETTER YI"},
	{0xf5, 0x0457, "CYRILLIC SMALL LETTER YI"},
	{0xf6, 0x040E, "CYRILLIC CAPITAL LETTER SHORT U"},
	{0xf7, 0x045E, "CYRILLIC SMALL LETTER SHORT U"},
	{0xf8, 0x00B0, "DEGREE SIGN"},
	{0xf9, 0x2219, "BULLET OPERATOR"},
	{0xfa, 0x00B7, "MIDDLE DOT"},
	{0xfb, 0x221A, "SQUARE ROOT"},
	{0xfc, 0x2116, "NUMERO SIGN"},
	{0xfd, 0x00A4, "CURRENCY SIGN"},
	{0xfe, 0x25A0, "BLACK SQUARE"},
	{0xff, 0x00A0, "NO-BREAK SPACE"},
	{0, 0, NULL}
};

V_LOCAL charmap_char_description_t win1251_ccd[] = 
{
	{0x80, 0x0402, "CYRILLIC CAPITAL LETTER DJE (Serbocroatian)"},
	{0x81, 0x0403, "CYRILLIC CAPITAL LETTER GJE"},
	{0x82, 0x201A, "SINGLE LOW-9 QUOTATION MARK"},
	{0x83, 0x0453, "CYRILLIC SMALL LETTER GJE"},
	{0x84, 0x201E, "DOUBLE LOW-9 QUOTATION MARK"},
	{0x85, 0x2026, "HORIZONTAL ELLIPSIS"},
	{0x86, 0x2020, "DAGGER"},
	{0x87, 0x2021, "DOUBLE DAGGER"},
	{0x88, 0x20AC, "EURO SIGN"},
	{0x89, 0x2030, "PER MILLE SIGN"},
	{0x8a, 0x0409, "CYRILLIC CAPITAL LETTER LJE"},
	{0x8b, 0x2039, "SINGLE LEFT-POINTING ANGLE QUOTATION MARK"},
	{0x8c, 0x040A, "CYRILLIC CAPITAL LETTER NJE"},
	{0x8d, 0x040C, "CYRILLIC CAPITAL LETTER KJE"},
	{0x8e, 0x040B, "CYRILLIC CAPITAL LETTER TSHE (Serbocroatian)"},
	{0x8f, 0x040F, "CYRILLIC CAPITAL LETTER DZHE"},
	{0x90, 0x0452, "CYRILLIC SMALL LETTER DJE (Serbocroatian)"},
	{0x91, 0x2018, "LEFT SINGLE QUOTATION MARK"},
	{0x92, 0x2019, "RIGHT SINGLE QUOTATION MARK"},
	{0x93, 0x201C, "LEFT DOUBLE QUOTATION MARK"},
	{0x94, 0x201D, "RIGHT DOUBLE QUOTATION MARK"},
	{0x95, 0x2022, "BULLET"},
	{0x96, 0x2013, "EN DASH"},
	{0x97, 0x2014, "EM DASH"},
	{0x98, 0x2588, "FULL BLOCK"},
	{0x99, 0x2122, "TRADE MARK SIGN"},
	{0x9a, 0x0459, "CYRILLIC SMALL LETTER LJE"},
	{0x9b, 0x203A, "SINGLE RIGHT-POINTING ANGLE QUOTATION MARK"},
	{0x9c, 0x045A, "CYRILLIC SMALL LETTER NJE"},
	{0x9d, 0x045C, "CYRILLIC SMALL LETTER KJE"},
	{0x9e, 0x045B, "CYRILLIC SMALL LETTER TSHE (Serbocroatian)"},
	{0x9f, 0x045F, "CYRILLIC SMALL LETTER DZHE"},
	{0xa0, 0x00A0, "NO-BREAK SPACE"},
	{0xa1, 0x040E, "CYRILLIC CAPITAL LETTER SHORT U (Byelorussian)"},
	{0xa2, 0x045E, "CYRILLIC SMALL LETTER SHORT U (Byelorussian)"},
	{0xa3, 0x0408, "CYRILLIC CAPITAL LETTER JE"},
	{0xa4, 0x00A4, "CURRENCY SIGN"},
	{0xa5, 0x0490, "CYRILLIC CAPITAL LETTER GHE WITH UPTURN"},
	{0xa6, 0x00A6, "BROKEN BAR"},
	{0xa7, 0x00A7, "SECTION SIGN"},
	{0xa8, 0x0401, "CYRILLIC CAPITAL LETTER IO"},
	{0xa9, 0x00A9, "COPYRIGHT SIGN"},
	{0xaa, 0x0404, "CYRILLIC CAPITAL LETTER UKRAINIAN IE"},
	{0xab, 0x00AB, "LEFT-POINTING DOUBLE ANGLE QUOTATION MARK"}, /* fixme */
	{0xac, 0x00AC, "NOT SIGN"},
	{0xad, 0x00AD, "SOFT HYPHEN"},
	{0xae, 0x00AE, "REGISTERED SIGN"},
	{0xaf, 0x0407, "CYRILLIC CAPITAL LETTER YI (Ukrainian)"},
	{0xb0, 0x00B0, "DEGREE SIGN"},
	{0xb1, 0x00B1, "PLUS-MINUS SIGN"},
	{0xb2, 0x0406, "CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I"},
	{0xb3, 0x0456, "CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I"},
	{0xb4, 0x0491, "CYRILLIC SMALL LETTER GHE WITH UPTURN"},
	{0xb5, 0x00B5, "MICRO SIGN"},
	{0xb6, 0x00B6, "PILCROW SIGN"},
	{0xb7, 0x00B7, "MIDDLE DOT"},
	{0xb8, 0x0451, "CYRILLIC SMALL LETTER IO"},
	{0xb9, 0x2116, "NUMERO SIGN"},
	{0xba, 0x0454, "CYRILLIC SMALL LETTER UKRAINIAN IE"},
	{0xbb, 0x00BB, "RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK"},
	{0xbc, 0x0458, "CYRILLIC SMALL LETTER JE"},
	{0xbd, 0x0405, "CYRILLIC CAPITAL LETTER DZE"},
	{0xbe, 0x0455, "CYRILLIC SMALL LETTER DZE"},
	{0xbf, 0x0457, "CYRILLIC SMALL LETTER YI (Ukrainian)"},
	{0xc0, 0x0410, "CYRILLIC CAPITAL LETTER A"},
	{0xc1, 0x0411, "CYRILLIC CAPITAL LETTER BE"},
	{0xc2, 0x0412, "CYRILLIC CAPITAL LETTER VE"},
	{0xc3, 0x0413, "CYRILLIC CAPITAL LETTER GHE"},
	{0xc4, 0x0414, "CYRILLIC CAPITAL LETTER DE"},
	{0xc5, 0x0415, "CYRILLIC CAPITAL LETTER IE"},
	{0xc6, 0x0416, "CYRILLIC CAPITAL LETTER ZHE"},
	{0xc7, 0x0417, "CYRILLIC CAPITAL LETTER ZE"},
	{0xc8, 0x0418, "CYRILLIC CAPITAL LETTER I"},
	{0xc9, 0x0419, "CYRILLIC CAPITAL LETTER SHORT I"},
	{0xca, 0x041A, "CYRILLIC CAPITAL LETTER KA"},
	{0xcb, 0x041B, "CYRILLIC CAPITAL LETTER EL"},
	{0xcc, 0x041C, "CYRILLIC CAPITAL LETTER EM"},
	{0xcd, 0x041D, "CYRILLIC CAPITAL LETTER EN"},
	{0xce, 0x041E, "CYRILLIC CAPITAL LETTER O"},
	{0xcf, 0x041F, "CYRILLIC CAPITAL LETTER PE"},
	{0xd0, 0x0420, "CYRILLIC CAPITAL LETTER ER"},
	{0xd1, 0x0421, "CYRILLIC CAPITAL LETTER ES"},
	{0xd2, 0x0422, "CYRILLIC CAPITAL LETTER TE"},
	{0xd3, 0x0423, "CYRILLIC CAPITAL LETTER U"},
	{0xd4, 0x0424, "CYRILLIC CAPITAL LETTER EF"},
	{0xd5, 0x0425, "CYRILLIC CAPITAL LETTER HA"},
	{0xd6, 0x0426, "CYRILLIC CAPITAL LETTER TSE"},
	{0xd7, 0x0427, "CYRILLIC CAPITAL LETTER CHE"},
	{0xd8, 0x0428, "CYRILLIC CAPITAL LETTER SHA"},
	{0xd9, 0x0429, "CYRILLIC CAPITAL LETTER SHCHA"},
	{0xda, 0x042A, "CYRILLIC CAPITAL LETTER HARD SIGN"},
	{0xdb, 0x042B, "CYRILLIC CAPITAL LETTER YERU"},
	{0xdc, 0x042C, "CYRILLIC CAPITAL LETTER SOFT SIGN"},
	{0xdd, 0x042D, "CYRILLIC CAPITAL LETTER E"},
	{0xde, 0x042E, "CYRILLIC CAPITAL LETTER YU"},
	{0xdf, 0x042F, "CYRILLIC CAPITAL LETTER YA"},
	{0xe0, 0x0430, "CYRILLIC SMALL LETTER A"},
	{0xe1, 0x0431, "CYRILLIC SMALL LETTER BE"},
	{0xe2, 0x0432, "CYRILLIC SMALL LETTER VE"},
	{0xe3, 0x0433, "CYRILLIC SMALL LETTER GHE"},
	{0xe4, 0x0434, "CYRILLIC SMALL LETTER DE"},
	{0xe5, 0x0435, "CYRILLIC SMALL LETTER IE"},
	{0xe6, 0x0436, "CYRILLIC SMALL LETTER ZHE"},
	{0xe7, 0x0437, "CYRILLIC SMALL LETTER ZE"},
	{0xe8, 0x0438, "CYRILLIC SMALL LETTER I"},
	{0xe9, 0x0439, "CYRILLIC SMALL LETTER SHORT I"},
	{0xea, 0x043A, "CYRILLIC SMALL LETTER KA"},
	{0xeb, 0x043B, "CYRILLIC SMALL LETTER EL"},
	{0xec, 0x043C, "CYRILLIC SMALL LETTER EM"},
	{0xed, 0x043D, "CYRILLIC SMALL LETTER EN"},
	{0xee, 0x043E, "CYRILLIC SMALL LETTER O"},
	{0xef, 0x043F, "CYRILLIC SMALL LETTER PE"},
	{0xf0, 0x0440, "CYRILLIC SMALL LETTER ER"},
	{0xf1, 0x0441, "CYRILLIC SMALL LETTER ES"},
	{0xf2, 0x0442, "CYRILLIC SMALL LETTER TE"},
	{0xf3, 0x0443, "CYRILLIC SMALL LETTER U"},
	{0xf4, 0x0444, "CYRILLIC SMALL LETTER EF"},
	{0xf5, 0x0445, "CYRILLIC SMALL LETTER HA"},
	{0xf6, 0x0446, "CYRILLIC SMALL LETTER TSE"},
	{0xf7, 0x0447, "CYRILLIC SMALL LETTER CHE"},
	{0xf8, 0x0448, "CYRILLIC SMALL LETTER SHA"},
	{0xf9, 0x0449, "CYRILLIC SMALL LETTER SHCHA"},
	{0xfa, 0x044A, "CYRILLIC SMALL LETTER HARD SIGN"},
	{0xfb, 0x044B, "CYRILLIC SMALL LETTER YERU"},
	{0xfc, 0x044C, "CYRILLIC SMALL LETTER SOFT SIGN"},
	{0xfd, 0x044D, "CYRILLIC SMALL LETTER E"},
	{0xfe, 0x044E, "CYRILLIC SMALL LETTER YU"},
	{0xff, 0x044F, "CYRILLIC SMALL LETTER YA"},
	{0, 0, NULL}
};

V_LOCAL unicode_alias_list_t uni_aliases[] =
{
	{
		0x2500, /* "BOX DRAWINGS LIGHT HORIZONTAL" */
		1,
		{ '-' }
	},
	{
		0x2502, /* "BOX DRAWINGS LIGHT VERTICAL" */
		1,
		{ '|' }
	},
	{
		0x250C, /* "BOX DRAWINGS LIGHT DOWN AND RIGHT" */
		1,
		{ '/' }
	},
	{
		0x2510, /* "BOX DRAWINGS LIGHT DOWN AND LEFT" */
		1,
		{ '\\' }
	},
	{
		0x2514, /* "BOX DRAWINGS LIGHT UP AND RIGHT" */
		1,
		{ '\\' }
	},
	{
		0x2518, /* "BOX DRAWINGS LIGHT UP AND LEFT" */
		1,
		{ '/' }
	},
	{
		0x251C, /* "BOX DRAWINGS LIGHT VERTICAL AND RIGHT" */
		1,
		{ '+' }
	},
	{
		0x2524, /* "BOX DRAWINGS LIGHT VERTICAL AND LEFT" */
		1,
		{ '+' }
	},
	{
		0x252C, /* "BOX DRAWINGS LIGHT DOWN AND HORIZONTAL" */
		1,
		{ '+' }
	},
	{
		0x2534, /* "BOX DRAWINGS LIGHT UP AND HORIZONTAL" */
		1,
		{ '+' }
	},
	{
		0x253C, /* "BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL" */
		1,
		{ '+' }
	},
	{
		0x2550, /* "BOX DRAWINGS DOUBLE HORIZONTAL" */
		1,
		{ '-' }
	},
	{
		0x2551, /* "BOX DRAWINGS DOUBLE VERTICAL" */
		1,
		{ '|' }
	},
	{
		0x2552, /* "BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE" */
		1,
		{ '/' }
	},
	{
		0x2553, /* "BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE" */
		1,
		{ '/' }
	},
	{
		0x2554, /* "BOX DRAWINGS DOUBLE DOWN AND RIGHT" */
		1,
		{ '/' }
	},
	{
		0x2555, /* "BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE" */
		1,
		{ '\\' }
	},
	{
		0x2556, /* "BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE" */
		1,
		{ '\\' }
	},
	{
		0x2557, /* "BOX DRAWINGS DOUBLE DOWN AND LEFT" */
		1,
		{ '\\' }
	},
	{
		0x2558, /* "BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE" */
		1,
		{ '\\' }
	},
	{
		0x2559, /* "BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE" */
		1,
		{ '\\' }
	},
	{
		0x255A, /* "BOX DRAWINGS DOUBLE UP AND RIGHT" */
		1,
		{ '\\' }
	},
	{
		0x255B, /* "BOX DRAWINGS UP SINGLE AND LEFT DOUBLE" */
		1,
		{ '/' }
	},
	{
		0x255C, /* "BOX DRAWINGS UP DOUBLE AND LEFT SINGLE" */
		1,
		{ '/' }
	},
	{
		0x255D, /* "BOX DRAWINGS DOUBLE UP AND LEFT" */
		1,
		{ '/' }
	},
	{
		0x255E, /* "BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE" */
		1,
		{ '+' }
	},
	{
		0x255F, /* "BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE" */
		1,
		{ '+' }
	},
	{
		0x2560, /* "BOX DRAWINGS DOUBLE VERTICAL AND RIGHT" */
		1,
		{ '+' }
	},
	{
		0x2561, /* "BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE" */
		1,
		{ '+' }
	},
	{
		0x2562, /* "BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE" */
		1,
		{ '+' }
	},
	{
		0x2563, /* "BOX DRAWINGS DOUBLE VERTICAL AND LEFT" */
		1,
		{ '+' }
	},
	{
		0x2564, /* "BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE" */
		1,
		{ '+' }
	},
	{
		0x2565, /* "BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE" */
		1,
		{ '+' }
	},
	{
		0x2566, /* "BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL" */
		1,
		{ '+' }
	},
	{
		0x2567, /* "BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE" */
		1,
		{ '+' }
	},
	{
		0x2568, /* "BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE" */
		1,
		{ '+' }
	},
	{
		0x2569, /* "BOX DRAWINGS DOUBLE UP AND HORIZONTAL" */
		1,
		{ '+' }
	},
	{
		0x256A, /* "BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE" */
		1,
		{ '+' }
	},
	{
		0x256B, /* "BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE" */
		1,
		{ '+' }
	},
	{
		0x256C, /* "BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL" */
		1,
		{ '+' }
	},

	{
		0x2580, /* "UPPER HALF BLOCK" */
		1,
		{ '~' }
	},
	{
		0x2584, /* "LOWER HALF BLOCK" */
		1,
		{ '_' }
	},
	{
		0x2588, /* "FULL BLOCK" */
		1,
		{ 'N' }
	},
	{
		0x258C, /* "LEFT HALF BLOCK" */
		1,
		{ '[' }
	},
	{
		0x2590, /* "RIGHT HALF BLOCK" */
		1,
		{ ']' }
	},
	{
		0x2591, /* "LIGHT SHADE" */
		1,
		{ '+' }
	},
	{
		0x2592, /* "MEDIUM SHADE" */
		1,
		{ '%' }
	},
	{
		0x2593, /* "DARK SHADE" */
		1,
		{ '@' }
	},
	{
		0x2320, /* "TOP HALF INTEGRAL" */
		1,
		{ '[' }
	},
	{
		0x2321, /* "BOTTOM HALF INTEGRAL" */
		1,
		{ ']' }
	},
	{
		0x25A0, /* "BLACK SQUARE" */
		1,
		{ '#' }
	},
	{
		0x2219, /* "BULLET OPERATOR" */
		5,
		{
			0x00B7, /* "MIDDLE DOT" */
			0x2022, /* "BULLET" */
			0x25E6, /* "WHITE BULLET" */
			0x25CF, /* "BLACK CIRCLE" */
			'*'
		}
	},
	{
		0x00B7, /* "MIDDLE DOT" */
		5,
		{
			0x2219, /* "BULLET OPERATOR" */
			0x2022, /* "BULLET" */
			0x25E6, /* "WHITE BULLET" */
			0x25CF, /* "BLACK CIRCLE" */
			'*'
		}
	},
	{
		0x2022, /* "BULLET" */
		5,
		{
			0x2219, /* "BULLET OPERATOR" */
			0x00B7, /* "MIDDLE DOT" */
			0x25E6, /* "WHITE BULLET" */
			0x25CF, /* "BLACK CIRCLE" */
			'*'
		}
	},
	{
		0x221A, /* "SQUARE ROOT" */
		1,
		{ 'V' }
	},
	{
		0x2248, /* "ALMOST EQUAL TO" */
		1,
		{ '~' }
	},
	{
		0x2264, /* "LESS-THAN OR EQUAL TO" */
		1,
		{ '<' }
	},
	{
		0x2265, /* "GREATER-THAN OR EQUAL TO" */
		1,
		{ '>' }
	},
	{
		0x00B2, /* "SUPERSCRIPT TWO" */
		1,
		{ '2' },
	},
	{
		0x00B3, /* "SUPERSCRIPT THREE" */
		1,
		{ '3' },
	},
	{
		0x00F7, /* "DIVISION SIGN" */
		1,
		{ '/' }
		
	},
	{
		0x00AB, /* "LEFT-POINTING DOUBLE ANGLE QUOTATION MARK" */
		1,
		{ '"' }
	},
	{
		0x00AB, /* "LEFT-POINTING DOUBLE ANGLE QUOTATION MARK" */
		1,
		{ '"' }
	},
	{
		0x201E, /* "DOUBLE LOW-9 QUOTATION MARK" */
		1,
		{ '"' }
	},
	{
		0x201C, /* "LEFT DOUBLE QUOTATION MARK" */
		1,
		{ '"' }
	},
	{
		0x201D, /* "RIGHT DOUBLE QUOTATION MARK" */
		1,
		{ '"' }
	},
	{
		0x00AB, /* "LEFT-POINTING DOUBLE ANGLE QUOTATION MARK" */
		1,
		{ '"' }
	},
	{
		0x00BB, /* "RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK" */
		1,
		{ '"' }
	},
	{
		0x201A, /* "SINGLE LOW-9 QUOTATION MARK" */
		1,
		{ '\'' }
	},
	{
		0x2039, /* "SINGLE LEFT-POINTING ANGLE QUOTATION MARK" */
		1,
		{ '\'' }
	},
	{
		0x2018, /* "LEFT SINGLE QUOTATION MARK" */
		1,
		{ '\'' }
	},
	{
		0x2019, /* "RIGHT SINGLE QUOTATION MARK" */
		1,
		{ '\'' }
	},
	{
		0x203A, /* "SINGLE RIGHT-POINTING ANGLE QUOTATION MARK" */
		1,
		{ '\'' }
	},
	{
		0x2013, /* "EN DASH" */
		1,
		{ '-' }
	},
	{
		0x2014, /* "EM DASH" */
		1,
		{ '-' }
	},
	{
		0x00B6, /* "PILCROW SIGN" */
		1,
		{ '|' }
	},
	{
		0x2116, /* "NUMERO SIGN" */
		1,
		{ '#' }
	},
	{
		0x00A9, /* "COPYRIGHT SIGN" */
		1,
		{ 'R' }
	},
	{
		0x0402, /* "CYRILLIC CAPITAL LETTER DJE (Serbocroatian)" */
		2,
		{
			0x0411, /* "CYRILLIC CAPITAL LETTER BE" */
			'J'
		}
	},
	{
		0x0403, /* "CYRILLIC CAPITAL LETTER GJE" */
		2,
		{
			0x0413, /* "CYRILLIC CAPITAL LETTER GHE" */
			'G'
		}
	},
	{
		0x0404, /* "CYRILLIC CAPITAL LETTER UKRAINIAN IE" */
		2,
		{
			0x0415, /* "CYRILLIC CAPITAL LETTER IE" */
			'E'
		}
	},
	{
		0x0405, /* "CYRILLIC CAPITAL LETTER DZE" */
		1,
		{ 'S' }
	},
	{
		0x0455, /* "CYRILLIC SMALL LETTER DZE" */
		1,
		{ 's' }
	},
	{
		0x0408, /* "CYRILLIC CAPITAL LETTER JE" */
		1,
		{ 'J' }
	},
	{
		0x0458, /* "CYRILLIC SMALL LETTER JE" */
		1,
		{ 'j' }
	},
	{
		0x0453, /* "CYRILLIC SMALL LETTER GJE" */
		2,
		{
			0x0433, /* "CYRILLIC SMALL LETTER GHE" */
			'g'
		}
	},
	{
		0x2026, /* "HORIZONTAL ELLIPSIS" */
		1,
		{ '_' }
	},


	{
		0x2020, /* "DAGGER" */
		1,
		{ '+' }
	},
	{
		0x2021, /* "DOUBLE DAGGER" */
		1,
		{ '#' }
	},
	{
		0x20AC, /* "EURO SIGN" */
		1,
		{ 'E' }
	},
	{
		0x2030, /* "PER MILLE SIGN" */
		1,
		{ '%' }
	},
	{
		0x0409, /* "CYRILLIC CAPITAL LETTER LJE" */
		2,
		{
			0x041B, /* "CYRILLIC CAPITAL LETTER EL" */
			'L'
		}
	},
	{
		0x040A, /* "CYRILLIC CAPITAL LETTER NJE" */
		2,
		{
			0x041D, /* "CYRILLIC CAPITAL LETTER EN" */
			'N'
		},

	},
	{
		0x040B, /* "CYRILLIC CAPITAL LETTER TSHE (Serbocroatian)" */
		2,
		{
			0x0422, /* "CYRILLIC CAPITAL LETTER TE" */
			'T'
		}
	},
	{
		0x040C, /* "CYRILLIC CAPITAL LETTER KJE" */
		2,
		{
			0x041A, /* "CYRILLIC CAPITAL LETTER KA" */
			'K'
		}
	},
	{
		0x040F, /* "CYRILLIC CAPITAL LETTER DZHE" */
		2,
		{
			0x0426, /* "CYRILLIC CAPITAL LETTER TSE" */
			'C'
		}
	},
	{
		0x0452, /* "CYRILLIC SMALL LETTER DJE (Serbocroatian)" */
		1,
		{ 'h' }
	},
	{
		0x2122, /* "TRADE MARK SIGN" */
		1,
		{ 'T' }
	},
	{
		0x0459, /* "CYRILLIC SMALL LETTER LJE" */
		2,
		{
			0x041B, /* "CYRILLIC CAPITAL LETTER EL" */
			'L'
		}
	},
	{
		0x045A, /* "CYRILLIC SMALL LETTER NJE" */
		2,
		{
			0x043D, /* "CYRILLIC SMALL LETTER EN" */
			'n'
		},
	},
	{
		0x045B, /* "CYRILLIC SMALL LETTER TSHE (Serbocroatian)" */
		2,
		{
			0x0442, /* "CYRILLIC SMALL LETTER TE" */
			't'
		}
	},
	{
		0x045C, /* "CYRILLIC SMALL LETTER KJE" */
		2,
		{
			0x043A, /* "CYRILLIC SMALL LETTER KA" */
			'k'
		}
	},
	{
		0x045F, /* "CYRILLIC SMALL LETTER DZHE" */
		2,
		{
			0x0446, /* "CYRILLIC SMALL LETTER TSE" */
			'c'
		}
	},
	{
		0x040E, /* "CYRILLIC CAPITAL LETTER SHORT U (Byelorussian)" */
		2,
		{
			0x0423, /* "CYRILLIC CAPITAL LETTER U" */
			'U'
		}
	},
	{
		0x045E, /* "CYRILLIC SMALL LETTER SHORT U (Byelorussian)" */
		2,
		{
			0x0443, /* "CYRILLIC SMALL LETTER U" */
			'u'
		}
	},
	{
		0x00A4, /* "CURRENCY SIGN" */
		1,
		{ '$' }
	},
	{
		0x0490, /* "CYRILLIC CAPITAL LETTER GHE WITH UPTURN" */
		2,
		{
			0x0413, /* "CYRILLIC CAPITAL LETTER GHE" */
			'G'
		}
	},
	{
		0x0491, /* "CYRILLIC SMALL LETTER GHE WITH UPTURN" */
		2,
		{
			0x0433, /* "CYRILLIC SMALL LETTER GHE" */
			'g'
		}
	},
	{
		0x00A6, /* "BROKEN BAR" */
		1,
		{ '|' }
	},
	{
		0x00A7, /* "SECTION SIGN" */
		1,
		{ '$' }
	},
	{
		0x00AC, /* "NOT SIGN" */
		1,
		{ '-' }
	},
	{
		0x00AD, /* "SOFT HYPHEN" */
		1,
		{ '-' }
	},
	{
		0x00AE, /* "REGISTERED SIGN" */
		1,
		{ 'R' }
	},
	{
		0x0407, /* "CYRILLIC CAPITAL LETTER YI (Ukrainian)" */
		1,
		{ 'I' }
	},
	{
		0x0457, /* "CYRILLIC SMALL LETTER YI (Ukrainian)" */
		1,
		{ 'i' }
	},
	{
		0x00B0, /* "DEGREE SIGN" */
		1,
		{ 'd' }
	},
	{
		0x00B1, /* "PLUS-MINUS SIGN" */
		1,
		{ '~' }
	},
	{
		0x0406, /* "CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I" */
		1,
		{ 'I' }
	},
	{
		0x0456, /* "CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I" */
		1,
		{ 'i' }
	},
	{
		0x00B5, /* "MICRO SIGN" */
		2,
		{
			0x03BC, /* "GREEK SMALL LETTER MU" */
			'm'
		}
	},
	{
		0x0454, /* "CYRILLIC SMALL LETTER UKRAINIAN IE" */
		2,
		{
			0x0435, /* "CYRILLIC SMALL LETTER IE" */
			'e'
		}
	},
	{
		0x0410, /* "CYRILLIC CAPITAL LETTER A" */
		1,
		{ 'A' }
	},
	{
		0x0411, /* "CYRILLIC CAPITAL LETTER BE" */
		1,
		{ 'B' }
	},
	{
		0x0412, /* "CYRILLIC CAPITAL LETTER VE" */
		1,
		{ 'V' }
	},
	{
		0x0413, /* "CYRILLIC CAPITAL LETTER GHE" */
		1,
		{ 'G' }
	},
	{
		0x0414, /* "CYRILLIC CAPITAL LETTER DE" */
		1,
		{ 'D' }
	},
	{
		0x0415, /* "CYRILLIC CAPITAL LETTER IE" */
		1,
		{ 'E' }
	},
	{
		0x0416, /* "CYRILLIC CAPITAL LETTER ZHE" */
		1,
		{ 'J' }
	},
	{
		0x0417, /* "CYRILLIC CAPITAL LETTER ZE" */
		1,
		{ 'Z' }
	},
	{
		0x0418, /* "CYRILLIC CAPITAL LETTER I" */
		1,
		{ 'I' }
	},
	{
		0x0419, /* "CYRILLIC CAPITAL LETTER SHORT I" */
		1,
		{ 'Y' }
	},
	{
		0x041A, /* "CYRILLIC CAPITAL LETTER KA" */
		1,
		{ 'K' }
	},
	{
		0x041B, /* "CYRILLIC CAPITAL LETTER EL" */
		1,
		{ 'L' }
	},
	{
		0x041C, /* "CYRILLIC CAPITAL LETTER EM" */
		1,
		{ 'M' }
	},
	{
		0x041D, /* "CYRILLIC CAPITAL LETTER EN" */
		1,
		{ 'N' }
	},
	{
		0x041E, /* "CYRILLIC CAPITAL LETTER O" */
		1,
		{ 'O' }
	},
	{
		0x041F, /* "CYRILLIC CAPITAL LETTER PE" */
		1,
		{ 'P' }
	},
	{
		0x0420, /* "CYRILLIC CAPITAL LETTER ER" */
		1,
		{ 'R' }
	},
	{
		0x0421, /* "CYRILLIC CAPITAL LETTER ES" */
		1,
		{ 'S' }
	},
	{
		0x0422, /* "CYRILLIC CAPITAL LETTER TE" */
		1,
		{ 'T' }
	},
	{
		0x0423, /* "CYRILLIC CAPITAL LETTER U" */
		1,
		{ 'U' }
	},
	{
		0x0424, /* "CYRILLIC CAPITAL LETTER EF" */
		1,
		{ 'F' }
	},
	{
		0x0425, /* "CYRILLIC CAPITAL LETTER HA" */
		1,
		{ 'H' }
	},
	{
		0x0426, /* "CYRILLIC CAPITAL LETTER TSE" */
		1,
		{ 'C' }
	},
	{
		0x0427, /* "CYRILLIC CAPITAL LETTER CHE" */
		1,
		{ 'C' }
	},
	{
		0x0428, /* "CYRILLIC CAPITAL LETTER SHA" */
		1,
		{ 'S' }
	},
	{
		0x0429, /* "CYRILLIC CAPITAL LETTER SHCHA" */
		1,
		{ 'S' }
	},
	{
		0x042A, /* "CYRILLIC CAPITAL LETTER HARD SIGN" */
		1,
		{ '\'' }
	},
	{
		0x042B, /* "CYRILLIC CAPITAL LETTER YERU" */
		1,
		{ 'I' }
	},
	{
		0x042C, /* "CYRILLIC CAPITAL LETTER SOFT SIGN" */
		1,
		{ '\'' }
	},
	{
		0x042D, /* "CYRILLIC CAPITAL LETTER E" */
		1,
		{ 'E' }
	},
	{
		0x042E, /* "CYRILLIC CAPITAL LETTER YU" */
		1,
		{ 'U' }
	},
	{
		0x042F, /* "CYRILLIC CAPITAL LETTER YA" */
		1,
		{ 'A' }
	},
	{
		0x0430, /* "CYRILLIC SMALL LETTER A" */
		1,
		{ 'a' }
	},
	{
		0x0431, /* "CYRILLIC SMALL LETTER BE" */
		1,
		{ 'b' }
	},
	{
		0x0432, /* "CYRILLIC SMALL LETTER VE" */
		1,
		{ 'v' }
	},
	{
		0x0433, /* "CYRILLIC SMALL LETTER GHE" */
		1,
		{ 'g' }
	},
	{
		0x0434, /* "CYRILLIC SMALL LETTER DE" */
		1,
		{ 'd' }
	},
	{
		0x0435, /* "CYRILLIC SMALL LETTER IE" */
		1,
		{ 'e' }
	},
	{
		0x0436, /* "CYRILLIC SMALL LETTER ZHE" */
		1,
		{ 'z' }
	},
	{
		0x0437, /* "CYRILLIC SMALL LETTER ZE" */
		1,
		{ 'z' }
	},
	{
		0x0438, /* "CYRILLIC SMALL LETTER I" */
		1,
		{ 'i' }
	},
	{
		0x0439, /* "CYRILLIC SMALL LETTER SHORT I" */
		1,
		{ 'y' }
	},
	{
		0x043A, /* "CYRILLIC SMALL LETTER KA" */
		1,
		{ 'k' }
	},
	{
		0x043B, /* "CYRILLIC SMALL LETTER EL" */
		1,
		{ 'l' }
	},
	{
		0x043C, /* "CYRILLIC SMALL LETTER EM" */
		1,
		{ 'm' }
	},
	{
		0x043D, /* "CYRILLIC SMALL LETTER EN" */
		1,
		{ 'n' }
	},
	{
		0x043E, /* "CYRILLIC SMALL LETTER O" */
		1,
		{ 'o' }
	},
	{
		0x043F, /* "CYRILLIC SMALL LETTER PE" */
		1,
		{ 'p' }
	},
	{
		0x0440, /* "CYRILLIC SMALL LETTER ER" */
		1,
		{ 'r' }
	},
	{
		0x0441, /* "CYRILLIC SMALL LETTER ES" */
		1,
		{ 's' }
	},
	{
		0x0442, /* "CYRILLIC SMALL LETTER TE" */
		1,
		{ 't' }
	},
	{
		0x0443, /* "CYRILLIC SMALL LETTER U" */
		1,
		{ 'u' }
	},
	{
		0x0444, /* "CYRILLIC SMALL LETTER EF" */
		1,
		{ 'f' }
	},
	{
		0x0445, /* "CYRILLIC SMALL LETTER HA" */
		1,
		{ 'h' }
	},
	{
		0x0446, /* "CYRILLIC SMALL LETTER TSE" */
		1,
		{ 'c' }
	},
	{
		0x0447, /* "CYRILLIC SMALL LETTER CHE" */
		1,
		{ 'c' }
	},
	{
		0x0448, /* "CYRILLIC SMALL LETTER SHA" */
		1,
		{ 's' }
	},
	{
		0x0449, /* "CYRILLIC SMALL LETTER SHCHA" */
		1,
		{ 's' }
	},
	{
		0x044A, /* "CYRILLIC SMALL LETTER HARD SIGN" */
		1,
		{ '\'' }
	},
	{
		0x044B, /* "CYRILLIC SMALL LETTER YERU" */
		1,
		{ 'i' }
	},
	{
		0x044C, /* "CYRILLIC SMALL LETTER SOFT SIGN" */
		1,
		{ '\'' }
	},
	{
		0x044D, /* "CYRILLIC SMALL LETTER E" */
		1,
		{ 'e' }
	},
	{
		0x044E, /* "CYRILLIC SMALL LETTER YU" */
		1,
		{ 'u' }
	},
	{
		0x044F, /* "CYRILLIC SMALL LETTER YA" */
		1,
		{ 'a' }
	},
	{
		0x0401, /* "CYRILLIC CAPITAL LETTER IO" */
		2,
		{
			0x0415, /* "CYRILLIC CAPITAL LETTER IE" */
			'E'
		}
		
	},
	{
		0x0451, /* "CYRILLIC SMALL LETTER IO" */
		2,
		{
			0x0435, /* "CYRILLIC SMALL LETTER IE" */
			'e'
		}
	},
	{0,0,{0}}
};

V_LOCAL charmap_description_t known_charmaps[] =
{
	{"latin1",latin1_ccd}, /* should be first */
	{"koi8-r",koi8_r_ccd},
	{"cp866",cp866_ccd},
	{"win1251",win1251_ccd},
	{NULL,NULL}
};

/*
 * Searches for ASCII 'code' in charmap_char_description
 */
V_LOCAL charmap_char_description_p
find_char_desc_by_ascii(charmap_char_description_p head,unsigned int code)
{
	for(;head->char_name;head++)
		if(head->ascii_code == code)
			return head;
	return NULL;
}

/*
 * Searches for UNICODE 'code' in charmap_char_description
 */
V_LOCAL charmap_char_description_p
find_char_desc_by_uni(charmap_char_description_p head,unsigned int code)
{
	for(;head->char_name;head++)
		if(head->uni_code == code)
			return head;
	return NULL;
}

/*
 * Searches for UNICODE 'orig' in (currently, thin) list of aliases.
 */
V_LOCAL charmap_char_description_p
find_uni_alias(charmap_char_description_p dest_map,unsigned int orig)
{
	unsigned int i;
	unicode_alias_list_p alist;
	charmap_char_description_p dest;
	alist = uni_aliases;
	for(;alist->num_alias;alist++)
	{
		if(alist->uni_code == orig)
		{
			for(i = 0;i < alist->num_alias;i++)
			{
				if(alist->alias[i] < ASCII_LIMIT)
					dest = find_char_desc_by_uni(latin1_ccd,alist->alias[i]);
				else
					dest = find_char_desc_by_uni(dest_map,alist->alias[i]);
				if(dest)
					return dest;
			}
		}
	}
	return NULL;
}

char_p	V_GLOBAL
ucCharName(unsigned uc)
{
	int i;
	charmap_char_description_p cd;
	static char *noname = "UNKNOWN";
	if(uc < ASCII_LIMIT)
	{
		cd = find_char_desc_by_uni(latin1_ccd,uc);
		if(!cd)
			return noname;
		return cd->char_name;
	}
	for(i = 1;known_charmaps[i].charmap_name;i++)
	{
		cd = find_char_desc_by_uni(known_charmaps[i].charmap_desc,uc);
		if(cd)
			return cd->char_name;
	}
	return noname;
}
