From 7439766ece4e56992ad95ae655e251eedbd75422 Mon Sep 17 00:00:00 2001 From: Jehan Date: Sun, 21 Mar 2021 01:12:56 +0100 Subject: [PATCH] script, src: regenerate the Vietnamese model. The alphabet was not complete and thus confidence was a bit too low. For instance the VISCII test case's confidence bumped from 0.643401 to 0.696346 and the UTF-8 test case bumped from 0.863777 to 0.99. Only the Windows-1258 test case is slightly worse from 0.532846 to 0.532098. But the overwhole recognition gain is obvious anyway. --- .../LangVietnameseModel.log | 185 +++++--- script/langs/vi.py | 2 +- src/LangModels/LangVietnameseModel.cpp | 425 +++++++++++------- 3 files changed, 383 insertions(+), 229 deletions(-) diff --git a/script/BuildLangModelLogs/LangVietnameseModel.log b/script/BuildLangModelLogs/LangVietnameseModel.log index 1c111ad..9091c14 100644 --- a/script/BuildLangModelLogs/LangVietnameseModel.log +++ b/script/BuildLangModelLogs/LangVietnameseModel.log @@ -1,7 +1,7 @@ = Logs of language model for Vietnamese (vi) = - Generated by BuildLangModel.py -- Started: 2021-03-16 20:34:51.373194 +- Started: 2021-03-21 00:42:18.087736 - Maximum depth: 4 - Max number of pages: 100 @@ -20,7 +20,7 @@ Chữ_Quốc_ngữ (revision 64521024) 22 tháng 2 (revision 64199177) 26 tháng 11 (revision 60306925) 28 tháng 12 (revision 64197178) -A (revision 64396586) +A (revision 64616139) ASCII (revision 64542934) Alexandre de Rhodes (revision 64481737) Antonio Barbosa (revision 28290803) @@ -47,7 +47,7 @@ Chiều cao (revision 63620682) Christoforo Borri (revision 39684524) Chính tả (revision 64168374) Chính tả tiếng Việt (revision 64566759) -Chủ tịch Hồ Chí Minh (revision 64592392) +Chủ tịch Hồ Chí Minh (revision 64615386) Chữ Hán (revision 64488663) Chữ Latinh (revision 64566174) Chữ Nôm (revision 64497361) @@ -66,14 +66,14 @@ Cổ tự học (revision 63417312) D (revision 64521463) Danh sách các chữ cái Latinh (revision 64566174) De facto (revision 64458216) -Di chúc Hồ Chí Minh (revision 64479855) +Di chúc Hồ Chí Minh (revision 64620754) Du ký (revision 64306751) Dòng Tên (revision 64563470) Dấu câu (revision 64430387) Dấu huyền (revision 64200881) Dấu hỏi (revision 64314350) Dấu ngã (revision 64005169) -Dấu nặng (revision 64200881) +Dấu nặng (revision 64089094) Dấu phụ (revision 43648394) Dấu sắc (revision 64200881) Dấu âm ngắn (revision 64560651) @@ -97,7 +97,7 @@ Hoàng Phê (revision 63792712) Hán học (revision 64209708) Hệ chữ viết Latinh (revision 64566174) Hệ thống chữ nổi tiếng Việt (revision 64158849) -Hồ Chí Minh (revision 64592392) +Hồ Chí Minh (revision 64615386) Hồ Dzếnh (revision 64471051) Hội Trí Tri (revision 64593204) I (revision 55105217) @@ -108,72 +108,119 @@ J (revision 64280732) == End of Parsed pages == -- Wikipedia parsing ended at: 2021-03-16 20:57:28.725327 +- Wikipedia parsing ended at: 2021-03-21 01:07:32.065373 -107 characters appeared 961999 times. +107 characters appeared 107 times. -First 54 characters: -[ 0] Char n: 11.732340678108812 % -[ 1] Char h: 8.846059091537517 % -[ 2] Char t: 6.799279417130371 % -[ 3] Char c: 6.610713732550658 % -[ 4] Char i: 6.088467867430215 % -[ 5] Char g: 5.545639860332495 % -[ 6] Char a: 3.414244713352093 % -[ 7] Char u: 2.916842948901194 % -[ 8] Char m: 2.5668425850754524 % -[ 9] Char o: 2.5124766241960748 % -[10] Char đ: 2.3970918888689074 % -[11] Char à: 2.0960520748982066 % -[12] Char v: 2.0507297824633914 % -[13] Char r: 1.966114309890135 % -[14] Char l: 1.7723511147100985 % -[15] Char á: 1.7447003583163807 % -[16] Char p: 1.523390356954633 % -[17] Char ư: 1.47359820540354 % -[18] Char b: 1.435656378021183 % -[19] Char s: 1.3317061660147256 % -[20] Char y: 1.2888786786680653 % -[21] Char d: 1.1103961646529779 % -[22] Char k: 1.0495852906292003 % -[23] Char ế: 0.9804583996449061 % -[24] Char e: 0.9535352947352336 % -[25] Char ộ: 0.8640341621976738 % -[26] Char ệ: 0.8197513718829229 % -[27] Char â: 0.8006245328737348 % -[28] Char ê: 0.792724316761244 % -[29] Char ô: 0.7877347065849342 % -[30] Char ố: 0.7180880645406076 % -[31] Char ạ: 0.7030152837996714 % -[32] Char q: 0.6624747011171529 % -[33] Char ả: 0.650208576100391 % -[34] Char ữ: 0.622038068646641 % -[35] Char ủ: 0.589085851440594 % -[36] Char ó: 0.5876305484725036 % -[37] Char ớ: 0.5369028450133524 % -[38] Char ề: 0.48440798795009143 % -[39] Char í: 0.47162211187329717 % -[40] Char ờ: 0.47131026123727776 % -[41] Char ợ: 0.46403374639682576 % -[42] Char ấ: 0.44532270823566344 % -[43] Char ể: 0.4278590726185786 % -[44] Char ă: 0.4115388893335648 % -[45] Char ị: 0.40748483106531297 % -[46] Char ậ: 0.3686074517748979 % -[47] Char ơ: 0.36434549308263314 % -[48] Char ự: 0.35519787442606493 % -[49] Char ồ: 0.3434515004693352 % -[50] Char ụ: 0.3314972260885926 % -[51] Char ầ: 0.32848266994040537 % -[52] Char ì: 0.32785896866836656 % -[53] Char x: 0.32650761591228267 % +Most Frequent characters: +[ 0] Char c: 0.9345794392523363 % +[ 1] Char h: 0.9345794392523363 % +[ 2] Char ữ: 0.9345794392523363 % +[ 3] Char q: 0.9345794392523363 % +[ 4] Char u: 0.9345794392523363 % +[ 5] Char ố: 0.9345794392523363 % +[ 6] Char n: 0.9345794392523363 % +[ 7] Char g: 0.9345794392523363 % +[ 8] Char l: 0.9345794392523363 % +[ 9] Char à: 0.9345794392523363 % +[10] Char v: 0.9345794392523363 % +[11] Char i: 0.9345794392523363 % +[12] Char ế: 0.9345794392523363 % +[13] Char t: 0.9345794392523363 % +[14] Char ủ: 0.9345794392523363 % +[15] Char y: 0.9345794392523363 % +[16] Char r: 0.9345794392523363 % +[17] Char ê: 0.9345794392523363 % +[18] Char ự: 0.9345794392523363 % +[19] Char d: 0.9345794392523363 % +[20] Char ù: 0.9345794392523363 % +[21] Char đ: 0.9345794392523363 % +[22] Char ể: 0.9345794392523363 % +[23] Char ệ: 0.9345794392523363 % +[24] Char a: 0.9345794392523363 % +[25] Char ộ: 0.9345794392523363 % +[26] Char b: 0.9345794392523363 % +[27] Char ư: 0.9345794392523363 % +[28] Char ợ: 0.9345794392523363 % +[29] Char ạ: 0.9345794392523363 % +[30] Char o: 0.9345794392523363 % +[31] Char ả: 0.9345794392523363 % +[32] Char á: 0.9345794392523363 % +[33] Char ắ: 0.9345794392523363 % +[34] Char í: 0.9345794392523363 % +[35] Char ă: 0.9345794392523363 % +[36] Char ồ: 0.9345794392523363 % +[37] Char m: 0.9345794392523363 % +[38] Char ú: 0.9345794392523363 % +[39] Char ý: 0.9345794392523363 % +[40] Char ọ: 0.9345794392523363 % +[41] Char ấ: 0.9345794392523363 % +[42] Char ừ: 0.9345794392523363 % +[43] Char ã: 0.9345794392523363 % +[44] Char ó: 0.9345794392523363 % +[45] Char ờ: 0.9345794392523363 % +[46] Char ơ: 0.9345794392523363 % +[47] Char ĩ: 0.9345794392523363 % +[48] Char k: 0.9345794392523363 % +[49] Char x: 0.9345794392523363 % +[50] Char s: 0.9345794392523363 % +[51] Char ề: 0.9345794392523363 % +[52] Char p: 0.9345794392523363 % +[53] Char ầ: 0.9345794392523363 % +[54] Char ằ: 0.9345794392523363 % +[55] Char ẹ: 0.9345794392523363 % +[56] Char ậ: 0.9345794392523363 % +[57] Char ứ: 0.9345794392523363 % +[58] Char ô: 0.9345794392523363 % +[59] Char ỉ: 0.9345794392523363 % +[60] Char é: 0.9345794392523363 % +[61] Char e: 0.9345794392523363 % +[62] Char â: 0.9345794392523363 % +[63] Char è: 0.9345794392523363 % +[64] Char ị: 0.9345794392523363 % +[65] Char ớ: 0.9345794392523363 % +[66] Char ử: 0.9345794392523363 % +[67] Char ụ: 0.9345794392523363 % +[68] Char ỗ: 0.9345794392523363 % +[69] Char ì: 0.9345794392523363 % +[70] Char ỏ: 0.9345794392523363 % +[71] Char ổ: 0.9345794392523363 % +[72] Char ở: 0.9345794392523363 % +[73] Char ặ: 0.9345794392523363 % +[74] Char ẫ: 0.9345794392523363 % +[75] Char ò: 0.9345794392523363 % +[76] Char ũ: 0.9345794392523363 % +[77] Char ẳ: 0.9345794392523363 % +[78] Char ẽ: 0.9345794392523363 % +[79] Char ỷ: 0.9345794392523363 % +[80] Char f: 0.9345794392523363 % +[81] Char j: 0.9345794392523363 % +[82] Char w: 0.9345794392523363 % +[83] Char z: 0.9345794392523363 % +[84] Char ễ: 0.9345794392523363 % +[85] Char ẩ: 0.9345794392523363 % +[86] Char ỹ: 0.9345794392523363 % +[87] Char ỳ: 0.9345794392523363 % +[88] Char ỵ: 0.9345794392523363 % +[89] Char ø: 0.9345794392523363 % +[90] Char ẻ: 0.9345794392523363 % +[91] Char õ: 0.9345794392523363 % +[92] Char ỡ: 0.9345794392523363 % +[93] Char ï: 0.9345794392523363 % +[94] Char ü: 0.9345794392523363 % +[95] Char ÿ: 0.9345794392523363 % +[96] Char ç: 0.9345794392523363 % +[97] Char ö: 0.9345794392523363 % +[98] Char ß: 0.9345794392523363 % +[99] Char æ: 0.9345794392523363 % +[100] Char ẵ: 0.9345794392523363 % -The first 54 characters have an accumulated ratio of 0.9567099342099108. +The first 101 characters have an accumulated ratio of 0.9439252336448598. -1890 sequences found. +1892 sequences found. -First 512 (typical positive ratio): 0.9336493792477815 -Next 512 (512-1024): 0.003551978744260649 -Rest: 0.007456342500128027 +First 1119 (typical positive ratio): 0.9950139912021918 +Next 364 (1483-1119): 0.003989975405861768 +Rest: 0.000996033391946427 -- Processing end: 2021-03-16 20:57:29.603172 +- Processing end: 2021-03-21 01:07:32.958132 diff --git a/script/langs/vi.py b/script/langs/vi.py index f44aeb6..301336e 100644 --- a/script/langs/vi.py +++ b/script/langs/vi.py @@ -58,7 +58,7 @@ charsets = ['WINDOWS-1258', 'VISCII'] ## Optional Properties ## -alphabet = 'aăâbcdđeêghiklmnoôơpqrstuưvxy' +alphabet = 'aăâàằầảẳẩãẵẫáắấạặậbcdđeèềêẻểẽễéếẹệghiìỉĩíịklmnoôơòồờỏổởõỗỡóốớọộợpqrstuưùừủửũữúứụựvxyỳỷỹýỵ' start_pages = ['Chữ_Quốc_ngữ'] wikipedia_code = code case_mapping = True diff --git a/src/LangModels/LangVietnameseModel.cpp b/src/LangModels/LangVietnameseModel.cpp index ad9129a..f717aa3 100644 --- a/src/LangModels/LangVietnameseModel.cpp +++ b/src/LangModels/LangVietnameseModel.cpp @@ -42,7 +42,7 @@ /** * Generated by BuildLangModel.py - * On: 2021-03-16 20:57:28.726718 + * On: 2021-03-21 01:07:32.067259 **/ /* Character Mapping Table: @@ -68,179 +68,286 @@ static const unsigned char Windows_1258_CharToOrderMap[] = CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR, /* 1X */ SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* 2X */ NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,SYM,SYM,SYM,SYM,SYM,SYM, /* 3X */ - SYM, 6, 18, 3, 21, 24, 71, 5, 1, 4, 78, 22, 14, 8, 0, 9, /* 4X */ - 16, 32, 13, 19, 2, 7, 12, 74, 53, 20, 83,SYM,SYM,SYM,SYM,SYM, /* 5X */ - SYM, 6, 18, 3, 21, 24, 71, 5, 1, 4, 78, 22, 14, 8, 0, 9, /* 6X */ - 16, 32, 13, 19, 2, 7, 12, 74, 53, 20, 83,SYM,SYM,SYM,SYM,CTR, /* 7X */ - SYM,ILL,SYM,105,SYM,SYM,SYM,SYM,SYM,SYM,ILL,SYM, 97,ILL,ILL,ILL, /* 8X */ - ILL,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,ILL,SYM, 97,ILL,ILL,104, /* 9X */ + SYM, 24, 26, 0, 19, 61, 80, 7, 1, 11, 81, 48, 8, 37, 6, 30, /* 4X */ + 52, 3, 16, 50, 13, 4, 10, 82, 49, 15, 83,SYM,SYM,SYM,SYM,SYM, /* 5X */ + SYM, 24, 26, 0, 19, 61, 80, 7, 1, 11, 81, 48, 8, 37, 6, 30, /* 6X */ + 52, 3, 16, 50, 13, 4, 10, 82, 49, 15, 83,SYM,SYM,SYM,SYM,CTR, /* 7X */ + SYM,ILL,SYM,106,SYM,SYM,SYM,SYM,SYM,SYM,ILL,SYM,101,ILL,ILL,ILL, /* 8X */ + ILL,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,ILL,SYM,101,ILL,ILL, 95, /* 9X */ SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* AX */ SYM,SYM,SYM,SYM,SYM,107,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* BX */ - 11, 15, 27, 44,101,106, 95, 92, 90, 73, 28,108,SYM, 39,103,102, /* CX */ - 10,100,SYM, 36, 29, 47, 98,SYM, 96, 62, 61,109, 93, 17,SYM, 99, /* DX */ - 11, 15, 27, 44,101,106, 95, 92, 90, 73, 28,110,SYM, 39,103,102, /* EX */ - 10,100,SYM, 36, 29, 47, 98,SYM, 96, 62, 61,111, 93, 17,112,104, /* FX */ + 9, 32, 62, 35,102,105, 99, 96, 63, 60, 17,108,SYM, 34,103, 93, /* CX */ + 21,104,SYM, 44, 58, 46, 97,SYM, 89, 20, 38,109, 94, 27,SYM, 98, /* DX */ + 9, 32, 62, 35,102,105, 99, 96, 63, 60, 17,110,SYM, 34,103, 93, /* EX */ + 21,104,SYM, 44, 58, 46, 97,SYM, 89, 20, 38,111, 94, 27,112, 95, /* FX */ }; /*X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 XA XB XC XD XE XF */ static const unsigned char Viscii_CharToOrderMap[] = { - CTR,CTR, 85,CTR,CTR, 91, 77,CTR,CTR,CTR,RET,CTR,CTR,RET,CTR,CTR, /* 0X */ - CTR,CTR,CTR,CTR, 82,CTR,CTR,CTR,CTR, 84,CTR,CTR,CTR,CTR, 94,CTR, /* 1X */ + CTR,CTR, 77,CTR,CTR,100, 74,CTR,CTR,CTR,RET,CTR,CTR,RET,CTR,CTR, /* 0X */ + CTR,CTR,CTR,CTR, 79,CTR,CTR,CTR,CTR, 86,CTR,CTR,CTR,CTR, 88,CTR, /* 1X */ SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* 2X */ NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,SYM,SYM,SYM,SYM,SYM,SYM, /* 3X */ - SYM, 6, 18, 3, 21, 24, 71, 5, 1, 4, 78, 22, 14, 8, 0, 9, /* 4X */ - 16, 32, 13, 19, 2, 7, 12, 74, 53, 20, 83,SYM,SYM,SYM,SYM,SYM, /* 5X */ - SYM, 6, 18, 3, 21, 24, 71, 5, 1, 4, 78, 22, 14, 8, 0, 9, /* 6X */ - 16, 32, 13, 19, 2, 7, 12, 74, 53, 20, 83,SYM,SYM,SYM,SYM,CTR, /* 7X */ - 31, 60, 68, 64, 42, 51, 76, 46, 80, 89, 23, 38, 43, 72, 26, 30, /* 8X */ - 49, 59, 81, 25, 41, 37, 40, 57, 45, 75, 54, 70, 35, 69, 50, 79, /* 9X */ - 86, 60, 68, 64, 42, 51, 76, 46, 80, 89, 23, 38, 43, 72, 26, 30, /* AX */ - 49, 59, 81, 87, 47, 25, 40, 57, 45, 48, 55, 58, 65, 47, 37, 17, /* BX */ - 11, 15, 27, 56, 33, 44, 85, 91, 90, 73, 28, 88, 52, 39, 67, 79, /* CX */ - 10, 55, 63, 36, 29, 31, 82, 58, 65, 62, 61, 84, 94, 66, 87, 17, /* DX */ - 11, 15, 27, 56, 33, 44, 34, 77, 90, 73, 28, 88, 52, 39, 67, 70, /* EX */ - 10, 48, 63, 36, 29, 86, 75, 54, 50, 62, 61, 69, 35, 66, 41, 34, /* FX */ + SYM, 24, 26, 0, 19, 61, 80, 7, 1, 11, 81, 48, 8, 37, 6, 30, /* 4X */ + 52, 3, 16, 50, 13, 4, 10, 82, 49, 15, 83,SYM,SYM,SYM,SYM,SYM, /* 5X */ + SYM, 24, 26, 0, 19, 61, 80, 7, 1, 11, 81, 48, 8, 37, 6, 30, /* 6X */ + 52, 3, 16, 50, 13, 4, 10, 82, 49, 15, 83,SYM,SYM,SYM,SYM,CTR, /* 7X */ + 29, 33, 54, 73, 41, 53, 85, 56, 78, 55, 12, 51, 22, 84, 23, 5, /* 8X */ + 36, 71, 68, 25, 28, 65, 45, 72, 64, 70, 40, 59, 14, 76, 67, 87, /* 9X */ + 91, 33, 54, 73, 41, 53, 85, 56, 78, 55, 12, 51, 22, 84, 23, 5, /* AX */ + 36, 71, 68, 92, 46, 25, 45, 72, 64, 18, 57, 42, 66, 46, 65, 27, /* BX */ + 9, 32, 62, 43, 31, 35, 77,100, 63, 60, 17, 90, 69, 34, 47, 87, /* CX */ + 21, 57, 75, 44, 58, 29, 79, 42, 66, 20, 38, 86, 88, 39, 92, 27, /* DX */ + 9, 32, 62, 43, 31, 35, 2, 74, 63, 60, 17, 90, 69, 34, 47, 59, /* EX */ + 21, 18, 75, 44, 58, 91, 70, 40, 67, 20, 38, 76, 14, 39, 28, 2, /* FX */ }; /*X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 XA XB XC XD XE XF */ -static const int Unicode_Char_size = 108; +static const int Unicode_Char_size = 201; static const unsigned int Unicode_CharOrder[] = { - 65, 6, 66, 18, 67, 3, 68, 21, 69, 24, 71, 5, 72, 1, 73, 4, - 75, 22, 76, 14, 77, 8, 78, 0, 79, 9, 80, 16, 81, 32, 82, 13, - 83, 19, 84, 2, 85, 7, 86, 12, 88, 53, 89, 20, 97, 6, 98, 18, - 99, 3, 100, 21, 101, 24, 103, 5, 104, 1, 105, 4, 107, 22, 108, 14, - 109, 8, 110, 0, 111, 9, 112, 16, 113, 32, 114, 13, 115, 19, 116, 2, - 117, 7, 118, 12, 120, 53, 121, 20, 192, 11, 193, 15, 194, 27, 202, 28, - 204, 52, 205, 39, 211, 36, 212, 29, 224, 11, 225, 15, 226, 27, 234, 28, - 236, 52, 237, 39, 243, 36, 244, 29, 258, 44, 259, 44, 272, 10, 273, 10, - 416, 47, 417, 47, 431, 17, 432, 17, 7840, 31, 7841, 31, 7842, 33,7843, 33, - 7844, 42, 7845, 42, 7846, 51, 7847, 51, 7852, 46, 7853, 46, 7870, 23,7871, 23, - 7872, 38, 7873, 38, 7874, 43, 7875, 43, 7878, 26, 7879, 26, 7882, 45,7883, 45, - 7888, 30, 7889, 30, 7890, 49, 7891, 49, 7896, 25, 7897, 25, 7898, 37,7899, 37, - 7900, 40, 7901, 40, 7906, 41, 7907, 41, 7908, 50, 7909, 50, 7910, 35,7911, 35, - 7918, 34, 7919, 34, 7920, 48, 7921, 48, + 65, 24, 66, 26, 67, 0, 68, 19, 69, 61, 70, 80, 71, 7, 72, 1, + 73, 11, 74, 81, 75, 48, 76, 8, 77, 37, 78, 6, 79, 30, 80, 52, + 81, 3, 82, 16, 83, 50, 84, 13, 85, 4, 86, 10, 87, 82, 88, 49, + 89, 15, 90, 83, 97, 24, 98, 26, 99, 0, 100, 19, 101, 61, 102, 80, + 103, 7, 104, 1, 105, 11, 106, 81, 107, 48, 108, 8, 109, 37, 110, 6, + 111, 30, 112, 52, 113, 3, 114, 16, 115, 50, 116, 13, 117, 4, 118, 10, + 119, 82, 120, 49, 121, 15, 122, 83, 192, 9, 193, 32, 194, 62, 195, 43, + 198, 99, 199, 96, 200, 63, 201, 60, 202, 17, 204, 69, 205, 34, 207, 93, + 210, 75, 211, 44, 212, 58, 213, 91, 214, 97, 216, 89, 217, 20, 218, 38, + 220, 94, 221, 39, 223, 98, 224, 9, 225, 32, 226, 62, 227, 43, 230, 99, + 231, 96, 232, 63, 233, 60, 234, 17, 236, 69, 237, 34, 239, 93, 242, 75, + 243, 44, 244, 58, 245, 91, 246, 97, 248, 89, 249, 20, 250, 38, 252, 94, + 253, 39, 255, 95, 258, 35, 259, 35, 272, 21, 273, 21, 296, 47, 297, 47, + 360, 76, 361, 76, 376, 95, 416, 46, 417, 46, 431, 27, 432, 27,7840, 29, + 7841, 29, 7842, 31, 7843, 31, 7844, 41, 7845, 41, 7846, 53, 7847, 53,7848, 85, + 7849, 85, 7850, 74, 7851, 74, 7852, 56, 7853, 56, 7854, 33, 7855, 33,7856, 54, + 7857, 54, 7858, 77, 7859, 77, 7860, 100, 7861, 100, 7862, 73, 7863, 73,7864, 55, + 7865, 55, 7866, 90, 7867, 90, 7868, 78, 7869, 78, 7870, 12, 7871, 12,7872, 51, + 7873, 51, 7874, 22, 7875, 22, 7876, 84, 7877, 84, 7878, 23, 7879, 23,7880, 59, + 7881, 59, 7882, 64, 7883, 64, 7884, 40, 7885, 40, 7886, 70, 7887, 70,7888, 5, + 7889, 5, 7890, 36, 7891, 36, 7892, 71, 7893, 71, 7894, 68, 7895, 68,7896, 25, + 7897, 25, 7898, 65, 7899, 65, 7900, 45, 7901, 45, 7902, 72, 7903, 72,7904, 92, + 7905, 92, 7906, 28, 7907, 28, 7908, 67, 7909, 67, 7910, 14, 7911, 14,7912, 57, + 7913, 57, 7914, 42, 7915, 42, 7916, 66, 7917, 66, 7918, 2, 7919, 2,7920, 18, + 7921, 18, 7922, 87, 7923, 87, 7924, 88, 7925, 88, 7926, 79, 7927, 79,7928, 86, + 7929, 86, }; /* Model Table: - * Total sequences: 1890 - * First 512 sequences: 0.9336493792477815 - * Next 512 sequences (512-1024): 0.05889427825209051 - * Rest: 0.007456342500128027 + * Total considered sequences: 1892 / 10201 + * - Positive sequences: first 1119 (0.9950139912021918) + * - Probable sequences: next 364 (1483-1119) (0.003989975405861768) + * - Neutral sequences: last 8718 (0.000996033391946427) + * - Negative sequences: 8309 (off-ratio) * Negative sequences: TODO */ static const PRUint8 VietnameseLangModel[] = { - 2,3,3,2,3,3,3,2,1,3,1,3,1,2,2,1,1,3,1,3,2,3,2,2,3,3,1, - 2,3,3,2,2,1,1,2,0,3,1,2,1,0,1,1,0,3,1,1,2,0,1,0,1,0,1, - 2,1,2,1,3,0,3,3,2,3,1,3,1,2,1,3,1,3,1,1,2,2,1,3,3,3,3, - 3,3,3,3,3,1,3,3,3,3,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1, - 2,3,2,2,3,1,3,3,2,3,0,3,1,3,2,3,1,3,1,2,2,1,1,3,3,3,1, - 3,3,3,3,3,0,3,0,1,2,3,1,3,2,0,3,0,2,3,3,1,3,2,2,2,3,1, - 2,3,2,2,3,0,3,3,1,3,2,2,1,2,2,3,1,3,1,2,2,1,2,0,3,3,0, - 2,0,3,2,2,1,3,1,3,3,1,0,1,1,1,3,0,2,0,2,3,2,0,2,3,0,1, - 3,1,3,3,3,2,3,2,3,3,1,2,2,3,3,3,2,1,2,3,1,2,2,3,3,0,3, - 1,3,2,2,1,2,3,3,0,1,3,3,0,2,0,2,3,1,0,1,1,0,0,1,1,0,2, - 2,3,1,1,3,1,3,3,1,3,1,3,1,2,2,2,1,3,1,2,2,1,1,1,3,2,0, - 2,1,3,2,2,0,1,3,1,2,1,0,0,1,2,1,0,2,1,1,1,2,3,1,2,2,1, - 3,2,3,3,3,2,1,3,3,3,1,0,2,3,3,0,2,0,2,3,3,3,2,0,2,0,0, - 0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2, - 3,1,2,2,2,2,3,1,2,2,0,1,1,3,2,3,2,0,2,3,3,2,2,2,3,3,1, - 3,2,3,3,2,1,3,0,0,0,1,1,1,1,0,3,0,1,0,3,1,0,3,0,3,0,1, - 1,1,1,1,3,1,3,3,2,3,0,3,1,2,2,3,2,3,2,2,1,1,1,1,3,3,2, - 2,1,3,2,3,0,1,0,1,2,3,2,1,2,0,2,0,1,1,2,1,1,1,3,1,3,1, - 3,2,3,2,3,2,3,3,3,2,0,3,2,3,3,3,2,0,2,3,1,3,2,0,2,0,0, - 0,0,0,0,3,1,3,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,2, - 0,2,1,0,3,0,3,2,0,3,0,3,0,1,0,3,0,3,1,0,0,0,1,3,2,3,2, - 3,2,3,3,3,0,3,0,2,3,1,3,2,3,2,3,3,2,3,2,3,1,3,1,3,2,0, - 3,0,0,0,3,0,0,2,3,3,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 2,1,1,0,3,1,3,2,0,2,0,3,0,1,1,1,1,3,0,1,1,1,1,1,3,1,2, - 2,1,2,2,2,0,1,1,0,1,3,3,3,1,2,3,0,3,3,3,1,2,0,3,2,3,0, - 3,2,3,2,3,2,3,3,2,3,0,2,2,2,2,3,1,3,2,2,2,2,2,1,3,2,1, - 1,3,2,2,2,1,2,2,1,1,0,0,3,2,2,3,1,2,3,2,1,2,2,2,2,3,1, - 1,2,2,1,3,2,3,3,2,3,0,3,2,1,3,2,2,3,2,2,2,2,1,0,3,2,3, - 2,3,2,2,3,1,0,1,0,1,3,1,2,2,2,2,0,2,3,3,1,3,1,2,3,1,1, - 3,0,3,3,3,1,0,2,3,3,0,0,1,1,1,0,3,0,1,1,2,1,1,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 1,3,2,1,2,1,3,2,1,3,0,0,0,2,2,1,2,1,1,2,1,1,0,0,3,0,0, - 1,1,1,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1, - 3,1,1,1,1,0,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,3,3,0,0,0,0,0,3,0,0,0,0,0,0, - 2,1,1,3,3,0,3,3,1,3,0,3,1,2,2,3,0,2,3,2,2,1,1,2,3,3,2, - 1,2,1,3,2,0,3,1,0,2,1,2,2,2,0,2,1,1,3,2,1,1,3,1,2,3,1, - 1,2,3,3,3,1,3,3,1,3,0,2,1,1,2,3,2,3,2,2,2,1,2,0,3,1,0, - 2,1,2,3,1,1,3,1,1,2,2,0,1,1,2,1,0,1,0,1,3,3,1,1,1,1,0, - 2,0,1,1,1,1,2,1,2,2,0,0,0,2,2,0,2,0,2,2,1,1,1,3,2,0,3, - 0,3,0,0,0,0,0,0,0,1,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0, - 2,1,1,2,3,2,3,3,1,3,0,3,1,2,1,1,1,3,1,2,1,1,1,0,3,1,1, - 3,1,0,1,3,0,1,1,0,1,0,1,1,1,0,3,1,0,3,2,1,3,1,3,2,1,0, - 1,3,1,0,3,0,2,2,2,2,0,0,2,2,1,1,0,0,1,2,1,1,1,3,2,0,1, - 0,2,2,0,1,0,0,0,1,1,0,0,2,0,0,0,2,1,2,0,1,0,0,1,1,1,0, - 3,0,3,2,0,0,0,3,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,1,3,2,3,2,3,2,3,3,0,0,2,3,3,0,2,0,2,3,2,2,2,0,2,0,0, - 0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2, - 3,0,3,3,3,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,3,3,0,0,0,3,3,0,0,0,0,0,0,0,3,0,0,0,0,0,1,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,1,1,0,0,0,3,3,0,0,0,0,0,1,0,1,0,0,0,3,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,1,1,1,1,0,3,3,0,1,0,0,1,0,0,1,0,0,2,0,0,0,0,0,0,0, - 0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, - 3,0,1,1,3,1,0,0,3,0,0,0,0,1,0,0,1,0,1,0,0,1,1,0,0,0,0, - 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,3,3,3,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,3,3,3,0,0,0,3,3,0,0,0,0,0,0,3,0,0,0,2,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,1,0,1,3,0,1,1,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0, - 0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,3,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 2,0,1,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,1,2,3,0,3,1,2,0,0,0,0,1,0,0,2,0,1,1,0,0,0,0,1,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,1,3,3,0,0,1,2,0,0,0,0,0,0,0,2,0,0,0,0,0,1,0,0,0,0, - 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,0,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,2,3,0,1,3,1,2,1,0,0,0,1,1,0,1,0,0,1,0,1,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,2,3,3,0,0,1,0,0,0,0,0,0,0,0,3,0,0,0,0,0,1,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,3,1,1,0,0,3,3,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,1,1,0,0,0,0,3,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,1,3,0,0,3,2,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,3,2,0,0,0,2,2,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,1,1,3,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,3,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,1,3,1,0,1,0,2,0,0,0,0,0,0,0,1,0,0,0,2,0,1,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,1,0,0,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,0,0,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 1,1,2,1,3,0,2,3,1,2,0,1,2,0,1,2,1,2,0,0,1,1,0,2,3,1,0, - 3,1,3,0,1,0,2,0,0,1,0,0,1,0,0,1,0,1,1,0,1,0,0,0,0,1,2, + 3,3,1,2,3,3,3,0,3,3,2,3,0,3,3,3,3,0,3,3,3,3,0,0,3,3,2,3,1,3,3,3,3,3,2,3,0,2,3,0,1,3,2,3,3,3,3,0,3,1, + 3,0,3,3,1,0,3,3,3,0,1,3,3,1,0,1,3,3,2,0,2,3,1,3,0,3,3,1,0,0,0,1,3,1,0,3,0,0,0,0,0,1,2,0,0,0,0,0,0,0,0, + 2,1,3,1,3,3,3,0,3,3,1,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,1,2, + 2,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,1,3,3,2,2,0,1,2,0,3,0,0,0,0,2,1,2,0,0,0,0,0,0,0,2, + 0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,1,0,3,0,0,0,0,0,0,1,0,0,1,0,2,0,0,0,0,2,0,0,1,0,0,1,0,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,2,0,1,2,3,3,3,3,2,2,3,3,3,0,3,3,3,0,3,0,0,0,2,3,3,3,0,0,3,3,3,3,0,2,1,3,3,0,3,1,3,0,2,0,2,2,0,3,2, + 3,1,3,3,0,0,3,0,3,0,2,3,3,1,0,1,0,0,3,0,0,3,2,2,3,0,0,0,1,3,2,2,1,3,0,3,2,3,2,0,1,0,0,0,0,0,1,0,0,0,0, + 3,0,0,0,0,0,3,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,2,3,3,3,0,3,3,3,0,3,2,2,0,1,3,3,2,3,2,3,3,1,3,3,2,3,2,2,3,0,2,2,0,2,3,0,3,0,3,3, + 3,3,1,2,3,0,2,2,3,0,3,3,3,2,1,2,3,0,3,0,0,3,1,3,0,2,0,0,0,0,3,3,2,3,0,0,0,0,0,0,0,0,1,0,1,0,3,0,0,0,3, + 1,3,3,0,3,3,3,2,3,3,2,3,2,2,2,3,3,1,3,2,0,1,0,0,3,3,1,3,3,3,3,2,3,3,0,3,3,2,0,0,3,2,3,3,3,3,2,0,2,1, + 3,0,2,3,1,0,2,0,3,0,2,3,3,2,2,1,3,3,2,3,1,1,1,3,1,3,3,0,0,0,1,0,1,0,0,1,0,0,0,0,0,3,2,0,1,0,0,0,0,0,0, + 3,3,3,1,3,3,2,3,3,3,3,3,0,3,0,3,1,3,3,3,2,0,0,3,3,3,3,3,3,3,3,0,3,3,3,3,1,3,3,3,3,3,2,3,2,3,1,3,2,2, + 3,1,3,3,0,1,3,0,3,0,3,3,3,1,3,3,3,3,3,1,2,0,0,3,3,3,2,0,3,0,3,1,1,0,3,0,0,0,2,0,2,1,0,0,1,0,0,0,0,0,0, + 0,0,0,1,3,0,3,0,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,2,3,0,3,3,3,1,1,3,0,3,2,1,0,2,2,2,3,2,3,0,0,3,3,1,0,3,3,3,3,2,3,3,3,3,0,0,0,0,3,3,3,2,1,1,1,3,2,0, + 2,3,1,3,0,3,3,1,3,1,2,3,3,0,3,3,0,3,2,3,2,0,3,1,3,3,3,0,3,0,0,1,0,0,0,1,2,0,0,0,3,3,2,0,0,0,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,2,3,3,0,3,1,2,3,3,3,0,3,2,0,1,3,3,3,0,0,1,0,3,3,0,3,3,0,2,3,3,1,0,3,3, + 3,3,3,1,0,1,2,0,3,0,2,3,2,2,0,3,0,1,1,0,2,0,0,3,2,0,1,0,1,0,3,2,0,3,3,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0, + 3,0,0,2,3,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,3,0,0,3,3,3,1,3,3,3,3,3,3,2,3,3,3,3,3,3,0,0,3,3,3,1,3,0,3,3,3,3,3,3,3,3,3,3,1,2,3,3,2,3,3,1,3,2,1, + 3,2,2,3,0,0,3,3,3,3,3,3,3,2,3,3,3,3,0,3,3,3,0,2,0,3,0,0,0,3,2,0,3,2,1,2,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,0,2,0,1,0,3,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,3,0,3,2,3,0,0,2,3,2,0,2,3,3,0,2,0,0,3,3,3,0,3,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,1,0,0,0,2,0, + 3,3,3,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,3,3,2,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,0,1,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,3,2,3,2,0,3,3, + 3,0,3,3,3,0,3,2,3,1,3,3,2,1,3,0,3,3,2,3,1,2,3,1,0,3,0,0,2,0,2,1,2,1,2,1,0,0,0,0,3,3,0,0,1,0,1,1,0,0,0, + 2,0,0,1,3,0,3,2,0,0,0,1,0,2,0,0,3,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,1, + 3,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,2,3,0,3,2,3,3,3,3,1,3,0,1,0,2,3,1,3,2,3,0,1,2,3,2,2,3,0,3,3,2,2,2,3,0,2,2,0,0,3,3,2,3,2,2,1,3,1,0, + 3,2,2,3,1,1,3,3,0,0,2,3,3,2,3,0,0,3,1,2,0,0,2,3,3,3,2,2,0,0,2,2,3,3,3,0,0,0,0,0,2,2,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,3,0,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,3,3,0,0,0,3,0,3,3,1,3,0,2,3,3,0,2,0,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,0,3,0,3,3,2,3,3,3,3,2,1,0, + 0,3,0,3,2,3,3,3,3,3,1,3,3,2,3,2,0,2,3,3,3,3,0,3,1,3,1,3,0,0,0,0,0,0,0,3,0,0,0,0,2,0,3,0,0,0,0,0,0,0,0, + 0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,3,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,3,0,2,3,0,3,3,3,0,3,3,0,3,0,3,3,0,0,3,0,2,0,0,2,0,3,0,0,0,3,0,0,0,1,0,0,3,1,0,0,0,0,0,0,0,0,0,3,3, + 3,0,3,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,2,0,0,0,0,0,0,0,0,0,1,1,0,3,0,0,0,0, + 3,0,0,0,0,0,3,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,2,2,0,3,3,3,0,3,3,1,3,3,1,0,3,3,3,1,2,3,0,1,3,3,3,3,3,0,3,3,3,3,3,3,3,3,2,3,0,3,3,1,3,3,3,2,0,1,1, + 3,3,0,3,3,1,3,3,2,3,3,3,3,2,3,3,2,2,2,3,3,3,3,0,0,2,0,0,1,0,1,2,1,0,0,2,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0, + 1,1,0,0,3,0,3,0,0,0,0,2,0,3,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,3,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0, + 3,0,0,0,2,0,3,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,0,0,3,0,0,0,0,3,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,3,0,2,3,0,3,3,3,3,3,3,0,3,0,2,3,0,0,3,0,0,0,0,3,0,3,0,0,3,3,3,3,3,0,3,0,3,0,0,0,0,0,3,0,0,0,0,3,3, + 3,0,3,0,1,0,0,0,0,0,1,3,0,2,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,2,3,3,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,1, + 0,0,0,0,0,0,3,0,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,3,0,3,1,2,0,1,3,0,3,0,3,2,0,0,1,0,0,0,0,0,0,2,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,2,0, + 1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,1,0,3,1,1,0,0,0,0,3,0,0,1,0,0,1,0,0,0,0,3,0,0,0,0,0,1,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,0,0,3,0,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,1,0,0,3,3,3,1,3,3,1,3,2,2,1,2,3,2,3,2,3,0,0,3,3,3,3,3,0,3,3,3,3,3,1,2,3,3,2,0,3,3,3,3,3,3,2,3,1,2, + 3,3,3,3,1,3,3,3,3,1,3,3,3,1,2,3,0,3,3,3,2,0,3,3,3,2,3,0,2,0,2,1,1,0,0,2,3,1,1,0,1,1,0,0,0,0,0,0,0,0,0, + 3,0,0,0,0,0,3,0,1,0,0,3,0,3,0,3,1,0,0,1,0,0,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0, + 1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,0,0,3,0,0,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,3,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,3,0,3,0,0,0,0,2,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0, + 0,0,0,0,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,0,3,0,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,1,0,3,0,0,0,0,3,0,3,0,0,2,0,0,0,0,0,0,0,3,0,1,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,3,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,2,0,3,0,0,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,3,0,3,0,2,0,3,3,3,2,2,2,3,3,0,1,0,0,3,1,3,0,1,0,0,1,3,0,2,0,3,1,0,3,0,3,0,0,0,0,1,0,2,2,1,0, + 3,0,0,1,0,2,0,1,3,2,3,3,0,3,3,0,0,1,0,3,0,0,0,0,0,0,0,0,2,3,0,0,2,1,0,0,3,3,1,0,3,0,0,0,0,0,0,1,0,0,0, + 2,2,0,0,3,0,1,0,2,1,3,3,3,3,0,2,0,2,0,1,1,0,0,0,3,1,0,3,0,2,3,3,3,0,3,1,0,1,3,0,0,3,0,3,3,0,1,0,0,3, + 0,0,2,0,0,0,0,3,3,1,3,3,3,1,1,0,3,0,0,1,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0, + 3,3,1,2,3,3,2,2,3,3,1,3,0,3,2,3,2,1,3,2,3,0,0,0,3,1,3,3,3,2,3,3,3,3,1,1,2,3,3,0,0,3,0,2,3,1,3,3,3,0, + 3,0,3,1,0,0,1,3,3,0,3,3,3,1,0,3,3,2,0,1,0,2,3,1,0,0,0,0,3,0,2,2,2,2,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,3, + 0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,3,0,0,3,1,1,2,3,0,0,3,0,3,0,2,3,1,0,2,0,0,0,0,3,0,1,1,0,0,3,0,2,2,1,0,1,2,2,0,0,0,0,0,1,0,0,0,0,1, + 3,0,3,0,0,0,0,0,2,0,2,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,0,0,3,0,3,0,0,0,0,0,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, + 0,0,0,1,0,0,3,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,0,0,3,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,3,0,3,0,0,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,3,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,0,0,3,1,0,0,0,3,0,2,0,0,2,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,1,0,0,0,0,3,2,2,0,2,1,0,3,0,0,3,0,0,2,0,0,0,0,1,0,2,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,1,1, + 3,0,3,0,0,0,0,0,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,3,0,2,3,0,3,3,3,0,3,3,0,3,0,3,3,0,0,3,0,0,0,0,3,0,3,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,2,0,0,0,3,3, + 3,0,3,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0, + 2,0,0,0,3,0,3,0,1,0,0,0,0,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,0,0,3,1,1,0,2,0,0,2,0,0,2,0,0,1,0,0,0,0,0,0,1,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,3,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,1,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,1,1,0,3,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,2,0,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,0,0,3,0,0,0,0,2,0,2,0,3,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,0,3,0,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,3,0,0,2,0,1,1,2,0,0,3,0,3,1,0,3,0,0,0,0,0,0,0,3,0,1,1,0,1,3,0,2,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,0, + 1,0,1,0,0,0,0,0,0,0,1,3,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,3,0,1,1,0,0,0,3,0,0,0,1,2,0,0,0,0,0,0,0,3,0,0,0,0,0,3,0,0,0,0,0,0,1,3,0,0,0,0,0,0,0,1,0,1,0, + 1,0,1,0,0,0,0,0,1,0,2,3,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,3,0,0,2,0,2,0,2,0,0,3,0,1,1,3,3,1,1,2,0,0,1,0,3,0,1,0,0,0,3,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,1,0, + 3,0,1,0,0,0,0,1,0,0,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, + 0,2,1,0,3,0,0,0,0,1,0,3,3,0,0,2,0,0,0,0,1,0,0,0,3,0,0,0,0,2,3,0,2,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1, + 1,0,0,0,0,0,0,0,0,0,0,3,2,1,0,1,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, }; @@ -248,8 +355,8 @@ const SequenceModel Windows_1258VietnameseModel = { Windows_1258_CharToOrderMap, VietnameseLangModel, - 54, - (float)0.9336493792477815, + 101, + (float)0.9990039666080536, PR_FALSE, "WINDOWS-1258", "vi" @@ -259,8 +366,8 @@ const SequenceModel VisciiVietnameseModel = { Viscii_CharToOrderMap, VietnameseLangModel, - 54, - (float)0.9336493792477815, + 101, + (float)0.9990039666080536, PR_FALSE, "VISCII", "vi" @@ -270,8 +377,8 @@ const LanguageModel VietnameseModel = { "vi", Unicode_CharOrder, - 108, + 201, VietnameseLangModel, - 54, - (float)0.9336493792477815, + 101, + (float)0.9439252336448598, };